Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles')
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.equinox/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.equinox/.settings/org.eclipse.jdt.core.prefs37
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.equinox/META-INF/MANIFEST.MF7
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.equinox/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EclipseLauncherParser.java18
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxBundlesState.java16
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxConstants.java4
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwAdminImpl.java8
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwConfigFileParser.java2
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxLauncherData.java2
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxManipulatorImpl.java37
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/Log.java2
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/ParserUtils.java13
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/utils/FileUtils.java8
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/META-INF/MANIFEST.MF7
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/pom.xml20
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/AbstractFwkAdminTest.java99
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/Activator.java4
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/AllTests.java75
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/Bug196525.java44
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/Bug258370.java60
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/CleanupTest.java75
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/FrameworkExtensionTest.java12
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/FwkAdminAndSimpleConfiguratorTest.java40
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/LauncherConfigLocationTest.java22
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/LauncherDataTest.java68
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/MacOSLikeSetup.java75
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ManipulatorTests.java57
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/NoConfigurationValueInEclipseIni.java9
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/NoRenamingLauncherIni.java8
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/OSGiVersionChange.java22
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ParserUtilsTest.java39
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest1.java11
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest2.java26
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest3.java10
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest4.java27
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest5.java31
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTestBug267850.java8
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTestBug285935.java10
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/RelativePathTest.java98
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/RemovingABundle.java29
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/RemovingAllBundles.java30
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/RenamingLauncherIni.java12
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/SharedConfigurationTest.java107
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/SimpleConfiguratorComingAndGoing.java24
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/SimpleConfiguratorTest.java37
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/TestEclipseDataArea.java16
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/TestRunningInstance.java19
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/TestVMArg.java50
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/UtilsTest.java30
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxManipulatorImplTest.java53
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin/.settings/org.eclipse.jdt.core.prefs37
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.checksums.bouncycastle/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.checksums.bouncycastle/.settings/org.eclipse.jdt.core.prefs10
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.checksums.bouncycastle/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.checksums.bouncycastle/pom.xml7
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.optimizers/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.optimizers/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.optimizers/.settings/org.eclipse.jdt.core.prefs37
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.optimizers/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.optimizers/pom.xml7
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.optimizers/src/org/eclipse/equinox/internal/p2/artifact/optimizers/pack200/Application.java7
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.optimizers/src/org/eclipse/equinox/internal/p2/artifact/optimizers/pack200/Messages.java9
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.optimizers/src/org/eclipse/equinox/internal/p2/artifact/optimizers/pack200/Optimizer.java7
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.optimizers/src/org/eclipse/equinox/internal/p2/artifact/optimizers/pack200/Pack200OptimizerStep.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.processors/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.processors/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.processors/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.processors/META-INF/MANIFEST.MF5
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.processors/pom.xml7
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.processors/src/org/eclipse/equinox/internal/p2/artifact/processors/AbstractDeltaProcessorStep.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.processors/src/org/eclipse/equinox/internal/p2/artifact/processors/BundleInfo.java (renamed from bundles/org.eclipse.equinox.p2.artifact.processors/src/org/eclipse/equinox/internal/p2/artifact/processors/Activator.java)20
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.processors/src/org/eclipse/equinox/internal/p2/artifact/processors/jardelta/JarDeltaProcessorStep.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/META-INF/MANIFEST.MF13
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/plugin.xml11
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/schema/artifactChecksums.exsd8
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/checksum/ChecksumUtilities.java26
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/checksum/ChecksumVerifier.java7
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/md5/MD5Verifier.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/md5/Messages.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/md5/messages.properties1
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pack200/Pack200ProcessorStep.java19
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/Messages.java36
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/PGPPublicKeyStore.java127
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/PGPSignatureVerifier.java275
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/messages.properties16
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/Activator.java15
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/Messages.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/MirrorRequest.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/RawMirrorRequest.java13
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/messages.properties5
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/Mapper.java48
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepository.java51
-rw-r--r--bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/UniversalUniqueIdentifier.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.console/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.console/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.console/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.console/Provisioning console.launch22
-rw-r--r--bundles/org.eclipse.equinox.p2.console/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.console/src/org/eclipse/equinox/internal/p2/console/ProvCommandProvider.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.core/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.core/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.core/META-INF/MANIFEST.MF16
-rw-r--r--bundles/org.eclipse.equinox.p2.core/META-INF/p2.inf5
-rw-r--r--bundles/org.eclipse.equinox.p2.core/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/Activator.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/EventBusComponent.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/CollectionUtils.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/FileUtils.java3
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/LogHelper.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/Messages.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/SecureXMLUtil.java10
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/ServiceHelper.java10
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/StringHelper.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/TarEntry.java24
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/TarException.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/TarFile.java47
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/provisional/p2/core/eventbus/IProvisioningEventBus.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/IAgentLocation.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/IPool.java12
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/IProvisioningAgent.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/IProvisioningAgentProvider.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/ProvisionException.java26
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/StrongPool.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/UIServices.java155
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/WeakPool.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/spi/Constants.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/spi/IAgentService.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/spi/IAgentServiceFactory.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.director.app/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.director.app/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.director.app/META-INF/MANIFEST.MF9
-rw-r--r--bundles/org.eclipse.equinox.p2.director.app/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/Activator.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/DirectorApplication.java45
-rw-r--r--bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/ILog.java12
-rw-r--r--bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/IUListFormatter.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/Messages.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.director.app/src_ant/org/eclipse/equinox/p2/director/app/ant/DirectorTask.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.director/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.director/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--bundles/org.eclipse.equinox.p2.director/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.director/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/ApplicablePatchQuery.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/AttachmentHelper.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/DirectorActivator.java10
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Explanation.java5
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/InfiniteProgress.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Messages.java3
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/OperationGenerator.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/OptimizationFunction.java19
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/PlannerComponent.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/ProfileChangeRequest.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Projector.java38
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/QueryableArray.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/SimpleDirector.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Slicer.java11
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/UserDefinedOptimizationFunction.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/messages.properties1
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/rollback/FormerState.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/IDirector.java22
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/PlanExecutionHelper.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/PlannerStatus.java16
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/RequestStatus.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/IPlanner.java16
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/IProfileChangeRequest.java26
-rw-r--r--bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/ProfileInclusionRules.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.directorywatcher/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.directorywatcher/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.directorywatcher/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.directorywatcher/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/RepositoryListener.java3
-rw-r--r--bundles/org.eclipse.equinox.p2.discovery.compatibility/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.discovery.compatibility/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.discovery.compatibility/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.discovery.compatibility/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/DirectoryParser.java3
-rw-r--r--bundles/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/JarDiscoverySource.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.discovery/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.discovery/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.discovery/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.discovery/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.engine/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.engine/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.engine/META-INF/MANIFEST.MF11
-rw-r--r--bundles/org.eclipse.equinox.p2.engine/plugin.xml1
-rw-r--r--bundles/org.eclipse.equinox.p2.engine/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.engine/schema/pgp.exsd107
-rw-r--r--bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/DebugHelper.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/DownloadManager.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/InstallableUnitOperand.java9
-rw-r--r--bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/Phase.java3
-rw-r--r--bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/PhaseSet.java3
-rw-r--r--bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/Profile.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/ProfileWriter.java17
-rw-r--r--bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SimpleProfileRegistry.java35
-rw-r--r--bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SurrogateProfileHandler.java15
-rw-r--r--bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/messages.properties2
-rw-r--r--bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/phases/CertificateChecker.java522
-rw-r--r--bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/phases/CheckTrust.java23
-rw-r--r--bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/p2/engine/spi/Memento.java14
-rw-r--r--bundles/org.eclipse.equinox.p2.extensionlocation/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.extensionlocation/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.extensionlocation/META-INF/MANIFEST.MF6
-rw-r--r--bundles/org.eclipse.equinox.p2.extensionlocation/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/BundlePoolFilteredListener.java5
-rw-r--r--bundles/org.eclipse.equinox.p2.garbagecollector/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.garbagecollector/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.garbagecollector/META-INF/MANIFEST.MF5
-rw-r--r--bundles/org.eclipse.equinox.p2.garbagecollector/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/Application.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/CoreGarbageCollector.java18
-rw-r--r--bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GarbageCollector.java12
-rw-r--r--bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GarbageCollectorComponent.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GarbageCollectorHelper.java (renamed from bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GCActivator.java)23
-rw-r--r--bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/MarkSetProvider.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.installer/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.installer/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.installer/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.installer/installer.product15
-rw-r--r--bundles/org.eclipse.equinox.p2.installer/installer.properties4
-rw-r--r--bundles/org.eclipse.equinox.p2.installer/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.installer/src/org/eclipse/equinox/internal/p2/installer/ui/ProxiesDialog.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.jarprocessor/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.jarprocessor/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.jarprocessor/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.jarprocessor/forceQualifierUpdate.txt9
-rw-r--r--bundles/org.eclipse.equinox.p2.jarprocessor/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/Main.java15
-rw-r--r--bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/PackStep.java36
-rw-r--r--bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/PackUnpackStep.java7
-rw-r--r--bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/UnpackStep.java14
-rw-r--r--bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/Utils.java184
-rw-r--r--bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/ZipProcessor.java31
-rw-r--r--bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/verifier/Verifier.java24
-rw-r--r--bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/internal/provisional/equinox/p2/jarprocessor/JarProcessor.java96
-rw-r--r--bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/internal/provisional/equinox/p2/jarprocessor/JarProcessorExecutor.java32
-rw-r--r--bundles/org.eclipse.equinox.p2.jarprocessor/src_ant/org/eclipse/equinox/internal/p2/jarprocessor/ant/JarProcessorTask.java16
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata.repository/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata.repository/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata.repository/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata.repository/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/LocalMetadataRepository.java14
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/io/MetadataWriter.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/InstallableUnit.java15
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/RequiredPropertiesMatch.java30
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/TouchpointInstruction.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/TranslationSupport.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/VersionFormatParser.java20
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/And.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/CollectionFilter.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/CurryedLambdaExpression.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Expression.java36
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Member.java131
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/NAry.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Or.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Pipe.java3
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/SetFunction.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/p2/metadata/MetadataFactory.java442
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/p2/metadata/expression/SimplePattern.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/p2/query/Collector.java48
-rw-r--r--bundles/org.eclipse.equinox.p2.operations/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.operations/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.operations/META-INF/MANIFEST.MF6
-rw-r--r--bundles/org.eclipse.equinox.p2.operations/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/RequestFlexer.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/ResolutionResult.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/ProvisioningJob.java40
-rw-r--r--bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/UpdateOperation.java37
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher.eclipse/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher.eclipse/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher.eclipse/.settings/org.eclipse.jdt.ui.prefs2
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher.eclipse/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher.eclipse/forceQualifierUpdate.txt1
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher.eclipse/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/compatibility/IGeneratorConstants.java7
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/BrandingIron.java159
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ExecutablesDescriptor.java23
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/BundlesAction.java392
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/ConfigCUsAction.java54
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/EquinoxExecutableAction.java9
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/EquinoxLauncherCUAction.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/FeaturesAction.java15
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/ProductFileAdvice.java161
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/pde/internal/swt/tools/IconExe.java249
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher.eclipse/src_ant/org/eclipse/equinox/internal/p2/publisher/ant/AbstractPublishTask.java29
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher/.settings/.api_filters11
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher/.settings/org.eclipse.jdt.core.prefs39
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher/.settings/org.eclipse.jdt.ui.prefs4
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher/META-INF/MANIFEST.MF6
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher/build.properties1
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/AbstractPublisherAction.java248
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/AbstractPublisherApplication.java78
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/AdviceFileParser.java213
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/IPublisherInfo.java26
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/Publisher.java167
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/actions/JREAction.java146
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/spi/p2/publisher/LocalizationHelper.java42
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/spi/p2/publisher/PublisherHelper.java49
-rw-r--r--bundles/org.eclipse.equinox.p2.reconciler.dropins/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.reconciler.dropins/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.reconciler.dropins/Bootstrap.product12
-rw-r--r--bundles/org.eclipse.equinox.p2.reconciler.dropins/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.reconciler.dropins/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/PlatformXmlListener.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/ProfileSynchronizer.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.repository.tools/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.repository.tools/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--bundles/org.eclipse.equinox.p2.repository.tools/.settings/org.eclipse.jdt.ui.prefs65
-rw-r--r--bundles/org.eclipse.equinox.p2.repository.tools/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.repository.tools/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/JarComparator.java7
-rw-r--r--bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/java/ClassFileReader.java13
-rw-r--r--bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/java/Disassembler.java66
-rw-r--r--bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/java/Utility.java18
-rw-r--r--bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/mirroring/FileMirrorLog.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/mirroring/Mirroring.java80
-rw-r--r--bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/AbstractApplication.java83
-rw-r--r--bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/Activator.java22
-rw-r--r--bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/MirrorApplication.java52
-rw-r--r--bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/RecreateRepositoryApplication.java21
-rw-r--r--bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/Repo2Runnable.java19
-rw-r--r--bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/XZCompressor.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/messages.properties4
-rw-r--r--bundles/org.eclipse.equinox.p2.repository.tools/src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/ProcessRepoTask.java10
-rw-r--r--bundles/org.eclipse.equinox.p2.repository/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.repository/.options3
-rw-r--r--bundles/org.eclipse.equinox.p2.repository/.settings/org.eclipse.jdt.core.prefs14
-rw-r--r--bundles/org.eclipse.equinox.p2.repository/META-INF/MANIFEST.MF21
-rw-r--r--bundles/org.eclipse.equinox.p2.repository/OSGI-INF/pgpPublicKeyService.xml8
-rw-r--r--bundles/org.eclipse.equinox.p2.repository/build.properties3
-rw-r--r--bundles/org.eclipse.equinox.p2.repository/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/persistence/XMLWriter.java38
-rw-r--r--bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/CacheManager.java47
-rw-r--r--bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/Credentials.java19
-rw-r--r--bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/Messages.java3
-rw-r--r--bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/PGPKeyServiceComponent.java22
-rw-r--r--bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/RepositoryPreferences.java33
-rw-r--r--bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/AbstractRepositoryManager.java16
-rw-r--r--bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/ChecksumHelper.java7
-rw-r--r--bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/DebugHelper.java7
-rw-r--r--bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/messages.properties1
-rw-r--r--bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/provisional/p2/repository/DefaultPGPPublicKeyService.java869
-rw-r--r--bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/artifact/IArtifactDescriptor.java47
-rw-r--r--bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/artifact/spi/IArtifactUIServices.java96
-rw-r--r--bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/spi/PGPPublicKeyService.java243
-rw-r--r--bundles/org.eclipse.equinox.p2.sar/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.sar/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--bundles/org.eclipse.equinox.p2.sar/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.sar/pom.xml7
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.discovery/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.discovery/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.discovery/META-INF/MANIFEST.MF6
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.discovery/plugin.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.discovery/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.optimizers/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.optimizers/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.optimizers/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.optimizers/pom.xml5
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.optimizers/src/org/eclipse/equinox/p2/tests/artifact/processors/AllTests.java7
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.optimizers/src/org/eclipse/equinox/p2/tests/optimizers/AutomatedTests.java10
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.optimizers/src/org/eclipse/equinox/p2/tests/sar/AllTests.java5
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.reconciler.product/forceQualifierUpdate.txt1
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.reconciler.product/pom.xml2
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.reconciler.product/reconciler.product22
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.ui/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.ui/.settings/org.eclipse.jdt.core.prefs37
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.ui/All p2 UI tests.launch494
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.ui/META-INF/MANIFEST.MF6
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.ui/build.properties1
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.ui/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/importexport/ImportExportRemoteTests.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/importexport/ImportExportTests.java14
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/actions/ElementUtilsTest.java18
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/dialogs/AllTests.java3
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/dialogs/EECompatibilityTest.java166
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/dialogs/InstallWithRemediationTest.java300
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/dialogs/InstallWizardTest.java29
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/operations/InstallOperationTests.java52
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/operations/UpdateOperationTests.java114
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/query/AbstractQueryTest.java7
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/query/QueryProviderTests.java21
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/query/QueryableArtifactRepositoryManagerTest.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.verifier/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.verifier/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.verifier/META-INF/MANIFEST.MF8
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.verifier/OSGI-INF/l10n/bundle.properties3
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.verifier/build.properties5
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.verifier/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests.verifier/src/org/eclipse/equinox/internal/p2/tests/verifier/VerifierApplication.java19
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/META-INF/MANIFEST.MF18
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/Test Director SDK.launch2
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/build.properties1
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/plugin.xml6
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/pom.xml70
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractAntProvisioningTest.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractProvisioningTest.java19
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AdditionalCoreMatchers.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AutomatedTests.java88
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ManualTests.java15
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ReducedCUDFParser.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/TestData.java40
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/TestLicenseConsistency.java17
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ant/AllTests.java19
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ant/MirrorTaskTest.java14
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ant/Repo2RunnableTaskTests.java14
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/AllTests.java20
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/ChecksumUtilitiesTest.java9
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/ChecksumVerifierTest.java54
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/PGPSignatureVerifierTest.java176
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/Pack200ProcessorTest.java10
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/ZipVerifierProcessorTest.java23
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/private_signer1.pgp84
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/private_signer2.pgp84
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/public_signer1.pgp41
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/public_signer2.pgp41
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/signed_by_signer_114
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/signed_by_signer_1_otherArtifact14
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/signed_by_signer_1_tampered14
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/signed_by_signer_214
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/testArtifact1
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/AllTests.java42
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/CompositeArtifactRepositoryTest.java31
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/FoldersRepositoryTest.java30
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/JarURLArtifactRepositoryTest.java36
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/MD5Tests.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/MirrorRequestTest.java37
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/MirrorSelectorTest.java98
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/PGPVerifierTest.java132
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/SimpleArtifactRepositoryTest.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/TransferTest.java7
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/processing/AllTests.java18
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/processing/ProcessingStepHandlerTest.java95
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/processing/ProcessingStepTest.java29
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/AggregateQueryTest.java30
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/AllTests.java28
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/BackupTest.java384
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/CollectorTest.java21
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/CompoundQueryableTest.java41
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/ProvisioningAgentTest.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/QueryTest.java21
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/StringHelperTest.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/AllTests.java31
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/DirectorApplicationTest.java22
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/IUListFormatterTest.java60
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/OperationGenerationTest.java30
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/directorywatcher/AbstractDirectoryWatcherTest.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/directorywatcher/AllTests.java17
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/AllTests.java45
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/CertificateCheckerTest.java245
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/DebugHelperTest.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/DownloadManagerTest.java13
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/PhaseSetTest.java1
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ProfileRegistryTest.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ProfileTest.java22
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ProvisioningEventTest.java39
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/extensionlocation/AllTests.java17
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/full/End2EndTest35.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/full/End2EndTest36.java7
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/full/End2EndTest37.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/gc/AllTests.java17
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/gc/GCCleanTest.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/generator/AllTests.java17
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/generator/GeneratorTests.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/jarprocessor/AllTests.java15
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/jarprocessor/JarProcessorTests.java10
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/AllTests.java34
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/ArtifactKeyParsingTest.java40
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/FragmentMethodTest.java37
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/IUPatchPersistenceTest.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/IUPersistenceTest.java23
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/LicenseTest.java9
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/RequirementToString.java10
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/expression/AllTests.java19
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/expression/FilterTest.java12
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/AllTests.java33
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/MetadataRepositoryManagerExceptionsTest.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/MetadataRepositoryManagerTest.java35
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/ResumeDownloadTest.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/SiteIndexFileTest.java16
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/StandaloneSerializationTest.java80
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/AllTests.java27
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/ArtifactMirrorApplicationTest.java31
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/MetadataMirrorApplicationTest.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/MirrorApplicationTest.java16
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/NewMirrorApplicationArtifactTest.java19
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/NewMirrorApplicationMetadataTest.java12
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/AllTests.java40
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/CommonPatternsTest.java16
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatATest.java135
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatArrayTest.java33
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatDTest.java58
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatNTest.java65
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatPTest.java9
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatProcessingTest.java211
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatQTest.java259
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatRTest.java33
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatRangeTest.java25
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatSTest.java115
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatTest.java11
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/IntersectionTest.java19
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/MultiplicityTest.java214
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/OSGiRangeTest.java28
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/OSGiVersionTest.java105
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/PerformanceTest.java17
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/RawRangeTest.java36
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/RawRangeWithOriginalTest.java103
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/RawVersionTest.java367
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/RawWithOriginalTest.java93
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/VersionTesting.java15
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AbsolutePlanTest.java1
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AbstractPlannerTest.java10
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllExplanation.java32
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllMetaReqTests.java17
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllOrbit.java10
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllRequestFlexerTests.java33
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllTests.java203
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug300572.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug309717.java15
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug362692.java23
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/EPPPackageInstallStability_bug323322.java7
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/NonMinimalState.java21
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/TychoUsage.java34
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/AllTests.java80
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/ChecksumGenerationTest.java5
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/GeneralPublisherTests.java17
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/TestArtifactRepository.java3
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ANYConfigCUsActionTest.java22
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/AccumulateConfigDataActionTest.java28
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ActionTest.java47
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/AdviceFileParserTest.java62
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/AdviceMatcher.java54
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/BundlesActionTest.java211
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/CaptureList.java39
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ConfigCUsActionTest.java21
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/EquinoxExecutableActionTest.java57
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/EquinoxLauncherCUActionTest.java26
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/FeaturesActionTest.java249
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/JREActionTest.java68
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/LocalUpdateSiteActionTest.java25
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/MultiCapture.java96
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionCapturingTest.java55
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionTest.java172
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionTestMac.java45
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionWithJRELocationTest.java15
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductContentTypeTest.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductFileAdviceTest.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductFileTest.java80
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/RootFilesActionTest.java34
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/RootIUActionTest.java57
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/StatusMatchers.java10
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/VersionAdviceTest.java16
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/AllTests.java19
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/PerformanceTest.java19
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/AbstractReconcilerTest.java75
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/AbstractSharedBundleProductTest.java22
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/ConfigurationTests.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/AllTests.java23
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/CacheManagerTest.java24
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/FileReaderTest2.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/RepositoryExtensionPointTest.java11
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/RepositoryHelperTest.java13
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/sat4j/smoke/AllTests.java16
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/sharedinstall/AbstractSharedInstallTest.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/sharedinstall/Cancellation.java3
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/manipulator/AllTests.java19
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/testserver/helper/AbstractTestServerClientCase.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/AllTests.java55
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/CheckTrustActionTest.java12
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/SetLauncherNameActionTest.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/natives/AllTests.java32
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/natives/BackupStoreTest.java167
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/natives/ChmodActionTest.java9
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/natives/SimpleBackupStoreTest.java166
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatechecker/AllTests.java15
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatesite/AllTests.java23
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatesite/SiteXMLActionTest.java27
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatesite/UpdateSiteTest.java12
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/CertificateChecker/selfsigned/artifacts.xml16
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/CertificateChecker/selfsigned/content.xml49
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/CertificateChecker/selfsigned/plugins/blah_1.0.0.123456.jarbin0 -> 2101 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/corruptedJarRepo/artifacts.xml2
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/corruptedJarRepo/content.xml6
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/corruptedJarRepo/plugins/org.eclipse.equinox.common_3.15.0.v20210428-1632.jarbin0 -> 142656 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/corruptedJarRepo/plugins/org.eclipse.equinox.common_3.5.0.corrupted.jarbin98786 -> 0 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/bug271067/profileRegistry/bootProfile.profile/1239159926745.profile65
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/bug300104/p2/org.eclipse.equinox.p2.engine/profileRegistry/SDKProfile.profile/1263582400033.profile199
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/bug309717/p2/org.eclipse.equinox.p2.engine/profileRegistry/PlatformProfile.profile/1271699173550.profile197
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/bug362692/shared/artifacts.xml22
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/eclipseTouchpoint/features/org.eclipse.rcp_3.3.0.v20070607-8y8eE8NEbsN3X_fjWS8HPNG/feature.xml7
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/extensionlocation/features/org.eclipse.rcp_3.3.0.v20070607-8y8eE8NEbsN3X_fjWS8HPNG/feature.xml7
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/generator/Europa/site.xml2
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/generator/eclipse3.3/features/org.eclipse.platform.source_3.3.0.v20070612-_19UEkLEzwsdF9jSqQ-G/feature.xml6
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/generator/eclipse3.3/features/org.eclipse.platform_3.3.0.v20070612-_19UEkLEzwsdF9jSqQ-G/feature.xml6
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/generator/eclipse3.3/features/org.eclipse.rcp_3.3.0.v20070607-8y8eE8NEbsN3X_fjWS8HPNG/feature.xml7
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/generator/eclipse3.3/features/org.eclipse.sdk_3.3.0.v20070607-7M7J-BIolz-OcxWxvWAPSfLPqevO/feature.xml6
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/importexport/unknownformat.p2f2
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/unencodedreporeferences/content.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/mirror/mirrorSourceRepoWithRefs/content.xml8
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pausefeature/artifacts.xml10
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoMissingPublicKey/artifacts.xml36
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoMissingPublicKey/content.xml49
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoMissingPublicKey/plugins/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoMissingPublicKey/plugins/blah_1.0.0.123456.jarbin0 -> 408 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoMissingPublicKey/plugins/blah_1.0.0.123456.jar.asc14
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoNoPGP/artifacts.xml16
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoNoPGP/content.xml49
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoNoPGP/plugins/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoNoPGP/plugins/blah_1.0.0.123456.jarbin0 -> 408 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoNoPGP/plugins/blah_1.0.0.123456.jar.asc14
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK/artifacts.xml78
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK/content.xml49
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK/plugins/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK/plugins/blah_1.0.0.123456.jarbin0 -> 408 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK/plugins/blah_1.0.0.123456.jar.asc14
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK_encoded/artifacts.xml25
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK_encoded/content.xml49
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK_encoded/plugins/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK_encoded/plugins/blah_1.0.0.123456.jarbin0 -> 408 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK_encoded/plugins/blah_1.0.0.123456.jar.asc14
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoSignatureDoesntMatchContent/artifacts.xml78
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoSignatureDoesntMatchContent/content.xml49
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoSignatureDoesntMatchContent/plugins/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoSignatureDoesntMatchContent/plugins/blah_1.0.0.123456.jarbin0 -> 408 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoSignatureDoesntMatchContent/plugins/blah_1.0.0.123456.jar.asc14
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoTamperedInvalidSignature/artifacts.xml78
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoTamperedInvalidSignature/content.xml49
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoTamperedInvalidSignature/plugins/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoTamperedInvalidSignature/plugins/blah_1.0.0.123456.jarbin0 -> 408 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoTamperedInvalidSignature/plugins/blah_1.0.0.123456.jar.asc14
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/pgp/signer2-publickey.asc29
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/sat4j/Bug247638.opb68
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/artifacts.jarbin654 -> 658 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/content.jarbin1553 -> 1682 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/Verifier_1.0.0.201310141350.jarbin421 -> 0 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/Verifier_1.0.0.202002240518.jarbin0 -> 427 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/p2TestFeature1_1.0.0.201310141350.jarbin402 -> 0 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/p2TestFeature1_1.0.0.202002240518.jarbin0 -> 407 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/p2TestFeature2_1.0.0.201310141350.jarbin401 -> 0 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/p2TestFeature2_1.0.0.202002240518.jarbin0 -> 407 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/org.eclipse.equinox.p2.tests.verifier_1.1.0.201310141350.jarbin41868 -> 0 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/org.eclipse.equinox.p2.tests.verifier_1.2.500.202002240518.jarbin0 -> 23005 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/p2TestBundle1_1.0.0.201310141350.jarbin535 -> 0 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/p2TestBundle1_1.0.0.202002240518.jarbin0 -> 536 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/p2TestBundle2_1.0.0.201310141350.jarbin534 -> 0 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/p2TestBundle2_1.0.0.202002240518.jarbin0 -> 535 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/updatesite/CategoryXMLActionTest/associateSites.xml2
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/updatesite/SiteXMLActionTest/associateSites.xml2
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/updatesite/SiteXMLActionTest/site.xml2
-rw-r--r--bundles/org.eclipse.equinox.p2.testserver/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.testserver/.settings/org.eclipse.jdt.core.prefs38
-rw-r--r--bundles/org.eclipse.equinox.p2.testserver/META-INF/MANIFEST.MF6
-rw-r--r--bundles/org.eclipse.equinox.p2.testserver/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.testserver/src/org/eclipse/equinox/p2/testserver/Activator.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.testserver/webfiles/index.html8
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.eclipse/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.eclipse/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.eclipse/META-INF/MANIFEST.MF6
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.eclipse/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/AgentFromInstall.java7
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/ActionConstants.java1
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/AddJVMArgumentAction.java9
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/CheckTrustAction.java20
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/SetJvmAction.java44
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/update/XMLWriter.java26
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.natives/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.natives/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.natives/META-INF/MANIFEST.MF13
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.natives/META-INF/p2.inf35
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.natives/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/BackupStore.java828
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/LazyBackupStore.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/Messages.java13
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/NativeTouchpoint.java49
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/SimpleBackupStore.java895
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/Util.java72
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CheckAndPromptNativePackage.java36
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CheckAndPromptNativePackageWindowsRegistry.java41
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupcopyAction.java9
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupzipAction.java10
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CopyAction.java47
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/UnzipAction.java24
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/messages.properties13
-rw-r--r--bundles/org.eclipse.equinox.p2.transport.ecf/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.transport.ecf/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.transport.ecf/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.transport.ecf/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/Activator.java49
-rw-r--r--bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/FileInfoReader.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/FileReader.java114
-rw-r--r--bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/RepositoryTransport.java12
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin.rcp/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin.rcp/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin.rcp/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin.rcp/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin.rcp/rcp.product64
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.admin/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.discovery/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.discovery/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.discovery/META-INF/MANIFEST.MF13
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.discovery/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/operations/DiscoveryInstallOperation.java7
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/repository/RepositoryDiscoveryStrategy.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/util/PatternFilter.java41
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/util/SelectionProviderAdapter.java20
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/wizards/CatalogViewer.java7
-rwxr-xr-xbundles/org.eclipse.equinox.p2.ui.importexport/.classpath2
-rwxr-xr-xbundles/org.eclipse.equinox.p2.ui.importexport/.settings/org.eclipse.jdt.core.prefs13
-rwxr-xr-xbundles/org.eclipse.equinox.p2.ui.importexport/META-INF/MANIFEST.MF5
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.importexport/P2 Replication.launch444
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.importexport/forceQualifierUpdate.txt1
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.importexport/icons/obj16/install-handler.pngbin0 -> 764 bytes
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.importexport/icons/obj16/install-handler@2x.pngbin0 -> 1605 bytes
-rwxr-xr-xbundles/org.eclipse.equinox.p2.ui.importexport/plugin.xml6
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.importexport/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/IUDetail.java16
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/ImportExportActivator.java33
-rwxr-xr-xbundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ExportWizard.java16
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportFromInstallationPage.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportFromInstallationWizard.java17
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportPage.java31
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportWizard.java39
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/META-INF/MANIFEST.MF7
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatePlugin.java11
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdateScheduler.java126
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdater.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatesPopup.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatesPreferencePage.java40
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/PreviousConfigurationFinder.java77
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/migration/MigrationPage.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/migration/MigrationWizard.java7
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/migration/messages.properties2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk/META-INF/MANIFEST.MF11
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk/plugin.properties2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk/plugin.xml12
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/PreloadingRepositoryHandler.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKMessages.java32
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKUIActivator.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/SimpleLicenseManager.java33
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/TrustPreferencePage.java491
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/messages.properties36
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/PreferenceConstants.java3
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/PreferenceInitializer.java3
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/ProvisioningPreferencePage.java15
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/.settings/org.eclipse.jdt.core.prefs14
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/META-INF/MANIFEST.MF25
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/forceQualifierUpdate.txt1
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/plugin.xml7
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ElementQueryDescriptor.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ElementWrapper.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/IProvHelpContextIds.java24
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/KeySigningInfoFactory.java184
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/MessageDialogWithLink.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUI.java121
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIActivator.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIAdapterFactory.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java36
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIProvisioningListener.java22
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvisioningOperationRunner.java14
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/QueryProvider.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/QueryableRepositoryManager.java12
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/RepositoryLocationQuery.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/RepositoryOperationBeginningEvent.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/RepositoryOperationEndingEvent.java14
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ServiceUIComponent.java7
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/UpdateManagerCompatibility.java23
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ValidationDialogServiceUI.java412
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/ColocatedRepositoryAction.java10
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/ExistingIUInProfileAction.java14
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/ProfileModificationAction.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/PropertyDialogAction.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/RefreshAction.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/UpdateAction.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ApplyProfileChangesDialog.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUGroup.java39
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUPatternFilter.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUsPage.java16
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ComboAutoCompleteField.java12
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ContainerCheckedTreeViewer.java12
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/CopyUtils.java30
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/DelayedFilterCheckboxTree.java18
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ILayoutConstants.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IPreFilterJobProvider.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IRepositoryManipulationHook.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IRepositorySelectionListener.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IResolutionErrorReportingPage.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ISelectableIUsPage.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUCopyrightPropertyPage.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUDetailsGroup.java19
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUGeneralInfoPropertyPage.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IULicensePropertyPage.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUPropertyPage.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IViewMenuProvider.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstallWizard.java84
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstallWizardPage.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstalledIUGroup.java118
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/PGPPublicKeyViewDialog.java248
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/PreselectedIUInstallWizard.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ProvisioningOperationWizard.java84
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ProvisioningWizardDialog.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RemediationGroup.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RemediationPage.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositoryManipulatorDropTarget.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositoryNameAndLocationDialog.java14
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositorySelectionGroup.java114
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ResolutionResultsWizardPage.java14
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ResolutionStatusPage.java57
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/SizeComputingWizardPage.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/StructuredIUGroup.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/TrustCertificateDialog.java831
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/URLDropAdapter.java10
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/UninstallWizardPage.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/UpdateWizardPage.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/UserValidationDialog.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties44
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/misc/StringMatcher.java449
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/ElementUtils.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/EmptyElementExplanation.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/IIUElement.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/IRepositoryElement.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/InstalledIUElement.java28
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/QueriedElement.java22
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/QueriedElementWrapper.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/RemedyElementCategory.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/RollbackProfileElement.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/RootElement.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/ArtifactKeyWrapper.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/ArtifactRepositoryElementWrapper.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/AvailableIUWrapper.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/CategoryElementWrapper.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/InstalledIUElementWrapper.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/MetadataRepositoryElementWrapper.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/ProfileElementWrapper.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/RequiredIUsQuery.java10
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/CertificateLabelProvider.java33
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/DeferredQueryContentProvider.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IDeferredQueryTreeListener.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IInputChangeListener.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IUColumnConfig.java34
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IUComparator.java20
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IUDetailsLabelProvider.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IUDragAdapter.java10
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/MetadataRepositoryElementComparator.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/ProvElementContentProvider.java8
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/ProvElementLabelProvider.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/RepositoryContentProvider.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/RepositoryDetailsLabelProvider.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/StructuredViewerProvisioningListener.java20
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/AcceptLicensesWizardPage.java33
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/ICopyable.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/InstalledSoftwarePage.java18
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/LicenseManager.java22
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/Policy.java345
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/ProvisioningUI.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java34
-rw-r--r--bundles/org.eclipse.equinox.p2.updatechecker/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.updatechecker/.settings/org.eclipse.jdt.core.prefs12
-rw-r--r--bundles/org.eclipse.equinox.p2.updatechecker/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.updatechecker/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.updatechecker/src/org/eclipse/equinox/internal/p2/updatechecker/UpdateChecker.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.updatesite/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.p2.updatesite/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.p2.updatesite/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.p2.updatesite/build.properties1
-rw-r--r--bundles/org.eclipse.equinox.p2.updatesite/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/DefaultSiteParser.java668
-rw-r--r--bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/SiteBundle.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/SiteModel.java41
-rw-r--r--bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/SiteXMLAction.java10
-rw-r--r--bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/artifact/UpdateSiteArtifactRepositoryFactory.java23
-rw-r--r--bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/metadata/UpdateSiteMetadataRepositoryFactory.java9
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator.manipulator/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator.manipulator/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator.manipulator/META-INF/MANIFEST.MF4
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator.manipulator/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator.manipulator/src/org/eclipse/equinox/internal/simpleconfigurator/manipulator/SimpleConfiguratorManipulatorImpl.java56
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator.manipulator/src/org/eclipse/equinox/internal/simpleconfigurator/manipulator/SimpleConfiguratorManipulatorUtils.java2
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator.manipulator/src/org/eclipse/equinox/simpleconfigurator/manipulator/SimpleConfiguratorManipulator.java14
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator/.classpath2
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator/.settings/org.eclipse.jdt.core.prefs13
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator/META-INF/MANIFEST.MF5
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator/pom.xml4
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/provisional/configurator/Configurator.java36
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/Activator.java24
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/ConfigApplier.java96
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/SimpleConfiguratorImpl.java10
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/console/ConfiguratorCommandProvider.java6
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/BundleInfo.java2
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/EquinoxUtils.java2
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorConstants.java16
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java18
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/URIUtil.java6
-rw-r--r--bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/Utils.java4
920 files changed, 18574 insertions, 11840 deletions
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.equinox/.classpath b/bundles/org.eclipse.equinox.frameworkadmin.equinox/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.equinox/.classpath
+++ b/bundles/org.eclipse.equinox.frameworkadmin.equinox/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.equinox/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.frameworkadmin.equinox/.settings/org.eclipse.jdt.core.prefs
index e90eac15c..1819d992f 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.equinox/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.frameworkadmin.equinox/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -36,6 +36,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -89,6 +90,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -125,9 +127,11 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -135,20 +139,23 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -238,11 +245,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -273,6 +281,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -297,13 +307,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -351,6 +365,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -387,9 +403,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -425,10 +444,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.equinox/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.frameworkadmin.equinox/META-INF/MANIFEST.MF
index 8b150f619..5ad6e58c5 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.equinox/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.frameworkadmin.equinox/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.frameworkadmin.equinox;singleton:=true
-Bundle-Version: 1.1.200.qualifier
+Bundle-Version: 1.2.200.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Import-Package: org.eclipse.equinox.frameworkadmin;version="[2.0.0,3.0.0)",
@@ -14,13 +14,14 @@ Import-Package: org.eclipse.equinox.frameworkadmin;version="[2.0.0,3.0.0)",
org.eclipse.osgi.service.resolver;version="1.1.0";resolution:=optional,
org.eclipse.osgi.util;version="1.1.0",
org.osgi.framework;version="1.3.0",
+ org.osgi.framework.startlevel;version="1.0.0",
org.osgi.service.log;version="1.3.0",
org.osgi.service.startlevel;version="1.0.0",
org.osgi.util.tracker;version="1.3.0"
Export-Package: org.eclipse.equinox.internal.frameworkadmin.equinox;x-friends:="org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.simpleconfigurator.manipulator",
org.eclipse.equinox.internal.frameworkadmin.equinox.utils;x-friends:="org.eclipse.equinox.p2.publisher.eclipse"
-Require-Bundle: org.eclipse.equinox.common
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.equinox.common;bundle-version="3.16.000"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Service-Component: OSGI-INF/fwadmin.xml
Bundle-ActivationPolicy: lazy
Automatic-Module-Name: org.eclipse.equinox.frameworkadmin.equinox
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.equinox/pom.xml b/bundles/org.eclipse.equinox.frameworkadmin.equinox/pom.xml
index 1042552b1..c3ecc7ec9 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.equinox/pom.xml
+++ b/bundles/org.eclipse.equinox.frameworkadmin.equinox/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.frameworkadmin.equinox</artifactId>
- <version>1.1.200-SNAPSHOT</version>
+ <version>1.2.200-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EclipseLauncherParser.java b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EclipseLauncherParser.java
index 4d264f86d..829753a25 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EclipseLauncherParser.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EclipseLauncherParser.java
@@ -34,7 +34,7 @@ public class EclipseLauncherParser {
//this figures out the location of the data area on partial data read from the <eclipse>.ini
private URI getOSGiInstallArea(List<String> lines, URI base, LauncherData launcherData) {
//does the eclipse.ini say anything for osgi.install.area?
- File osgiInstallArea = ParserUtils.getOSGiInstallArea(lines, null, base);
+ File osgiInstallArea = ParserUtils.getOSGiInstallArea(lines, null, launcherData.getLauncher(), base);
if (osgiInstallArea == null) {
//otherwise use the launcherData to figure it out
osgiInstallArea = ParserUtils.getOSGiInstallArea(lines, null, launcherData);
@@ -49,12 +49,13 @@ public class EclipseLauncherParser {
ParserUtils.removeArgument(EquinoxConstants.OPTION_INSTALL, lines);
return;
}
+ File folder = ParserUtils.fromOSGiJarToOSGiInstallArea(launcherData.getFwJar().getAbsolutePath());
if (Constants.OS_MACOSX.equals(launcherData.getOS())) {
- if (!new File(ParserUtils.fromOSGiJarToOSGiInstallArea(launcherData.getFwJar().getAbsolutePath()), "../MacOS").equals(launcherFolder)) {
- ParserUtils.setValueForArgument(EquinoxConstants.OPTION_INSTALL, launcherFolder.getAbsolutePath().replace('\\', '/'), lines);
- }
- } else if (!ParserUtils.fromOSGiJarToOSGiInstallArea(launcherData.getFwJar().getAbsolutePath()).equals(launcherFolder)) {
- ParserUtils.setValueForArgument(EquinoxConstants.OPTION_INSTALL, launcherFolder.getAbsolutePath().replace('\\', '/'), lines);
+ folder = new File(folder, "../MacOS");
+ }
+ if (!folder.equals(launcherFolder)) {
+ // Launcher will replace "@launcher.dir" with actual path. See bug 572890.
+ ParserUtils.setValueForArgument(EquinoxConstants.OPTION_INSTALL, "@launcher.dir/", lines);
}
}
@@ -316,7 +317,7 @@ public class EclipseLauncherParser {
//append jvm args
setJVMArgs(newlines, launcherData);
- // backup file if exists.
+ // backup file if exists.
if (backup)
if (launcherConfigFile.exists()) {
File dest = Utils.getSimpleDataFormattedFile(launcherConfigFile);
@@ -328,8 +329,7 @@ public class EclipseLauncherParser {
//only write the file if we actually have content
if (newlines.size() > 0) {
try (BufferedWriter bw = new BufferedWriter(new FileWriter(launcherConfigFile));) {
- for (int j = 0; j < newlines.size(); j++) {
- String arg = newlines.get(j);
+ for (String arg : newlines) {
if (arg == null)
continue;
bw.write(arg);
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxBundlesState.java b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxBundlesState.java
index 68ecb28e3..0d602bb32 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxBundlesState.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxBundlesState.java
@@ -50,7 +50,7 @@ public class EquinoxBundlesState implements BundlesState {
/**
* eclipse.exe will launch a fw where plugins/org.eclipse.osgi_*.*.*.*.jar is an
* implementation of fw.
- *
+ *
* @param launcherData
* @param configData
* @return File of fwJar to be used.
@@ -238,7 +238,7 @@ public class EquinoxBundlesState implements BundlesState {
/**
* If useFwPersistentData flag equals false, this constructor will not take a
* framework persistent data into account. Otherwise, it will.
- *
+ *
* @param context
* @param fwAdmin
* @param manipulator
@@ -260,7 +260,7 @@ public class EquinoxBundlesState implements BundlesState {
/**
* This constructor does NOT take a framework persistent data into account. It
* will create State object based on the specified platformProperties.
- *
+ *
* @param context
* @param fwAdmin
* @param manipulator
@@ -286,7 +286,7 @@ public class EquinoxBundlesState implements BundlesState {
/**
* compose new state without reading framework persistent data. The
* configData.getFwDependentProps() is used for the composition.
- *
+ *
* @param launcherData
* @param configData
* @param bInfos
@@ -299,7 +299,7 @@ public class EquinoxBundlesState implements BundlesState {
* compose new state without reading framework persistent data. The given
* properties is used for the composition. If system bundle is not included in
* the given bInfos, the fw jar launcherData contains will be used.
- *
+ *
* @param launcherData
* @param configData
* @param properties
@@ -317,7 +317,7 @@ public class EquinoxBundlesState implements BundlesState {
/**
* compose state. If it cannot compose it by somehow, false is returned.
- *
+ *
* @param bInfos
* @param props
* @param fwPersistentDataLocation
@@ -641,7 +641,7 @@ public class EquinoxBundlesState implements BundlesState {
/**
* get platforme properties from the given state.
- *
+ *
* @param state
*/
private void setPlatformProperties(State state) {
@@ -662,7 +662,7 @@ public class EquinoxBundlesState implements BundlesState {
/**
* set platfromProperties required to compose state object into
* platformProperties of this state.
- *
+ *
* @param props
*/
private void setPlatformPropertiesToState(Dictionary<Object, Object> props) {
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxConstants.java b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxConstants.java
index 09f4c9fab..601ac8bd8 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxConstants.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxConstants.java
@@ -16,7 +16,7 @@ package org.eclipse.equinox.internal.frameworkadmin.equinox;
public class EquinoxConstants {
/**
- * If BundleContext#getProperty(PROP_KEY_USE_REFERENCE) does not equal "false",
+ * If BundleContext#getProperty(PROP_KEY_USE_REFERENCE) does not equal "false",
* Manipulator#save() will add "reference:" to any bundle location specified osgi.bundles in order to avoid
* caching its bundle jar. Otherwise, it will add nothing to any bundle location.
*/
@@ -51,7 +51,7 @@ public class EquinoxConstants {
public static final String PROP_OSGI_FW = "osgi.framework"; //$NON-NLS-1$
public static final String PROP_OSGI_SYSPATH = "osgi.syspath"; //$NON-NLS-1$
public static final String PROP_LAUNCHER_NAME = "osgi.launcherIni"; //$NON-NLS-1$
- public static final String PROP_SHARED_CONFIGURATION_AREA = "osgi.sharedConfiguration.area"; //$NON-NLS-1$
+ public static final String PROP_SHARED_CONFIGURATION_AREA = "osgi.sharedConfiguration.area"; //$NON-NLS-1$
public static final String INI_EXTENSION = ".ini"; //$NON-NLS-1$
public static final String EXE_EXTENSION = ".exe"; //$NON-NLS-1$
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwAdminImpl.java b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwAdminImpl.java
index 6362f6c5d..29e5ec29f 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwAdminImpl.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwAdminImpl.java
@@ -98,10 +98,10 @@ public class EquinoxFwAdminImpl implements FrameworkAdmin {
}
/**
- * If both the vendor and the Bundle-Version in the manifest match,
+ * If both the vendor and the Bundle-Version in the manifest match,
* return true. Otherwise false.
- *
- * @return flag true if the ManipulatorAdmin object can handle currently running fw launch.
+ *
+ * @return flag true if the ManipulatorAdmin object can handle currently running fw launch.
*/
boolean isRunningFw() {
//TODO implementation for Eclipse.exe and for Equinox
@@ -116,7 +116,7 @@ public class EquinoxFwAdminImpl implements FrameworkAdmin {
if (value > 0) {
return true;
}
- // TODO need to identify the version of eclipse.exe used for this launch, if used.
+ // TODO need to identify the version of eclipse.exe used for this launch, if used.
return false;
}
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwConfigFileParser.java b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwConfigFileParser.java
index 3cead4796..48e5e5d3d 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwConfigFileParser.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwConfigFileParser.java
@@ -364,7 +364,7 @@ public class EquinoxFwConfigFileParser {
return null;
}
}
- File sharedConfigurationFolder = new File(sharedConfigurationURL.getPath());
+ File sharedConfigurationFolder = EquinoxManipulatorImpl.toFile(sharedConfigurationURL);
if (!sharedConfigurationFolder.isDirectory()) {
Log.log(LogService.LOG_WARNING, NLS.bind(Messages.log_shared_config_file_missing, sharedConfigurationFolder));
return null;
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxLauncherData.java b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxLauncherData.java
index 61ad927dc..b8e9c5b2a 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxLauncherData.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxLauncherData.java
@@ -8,7 +8,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/
package org.eclipse.equinox.internal.frameworkadmin.equinox;
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxManipulatorImpl.java b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxManipulatorImpl.java
index f982e3f25..8e16a04c8 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxManipulatorImpl.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxManipulatorImpl.java
@@ -28,6 +28,7 @@ import org.eclipse.osgi.service.datalocation.Location;
import org.eclipse.osgi.service.resolver.PlatformAdmin;
import org.eclipse.osgi.util.NLS;
import org.osgi.framework.*;
+import org.osgi.framework.startlevel.BundleStartLevel;
import org.osgi.service.log.LogService;
import org.osgi.service.startlevel.StartLevel;
import org.osgi.util.tracker.ServiceTracker;
@@ -211,7 +212,22 @@ public class EquinoxManipulatorImpl implements Manipulator {
URL url = location.getURL();
if (!url.getProtocol().equals("file")) //$NON-NLS-1$
return null;
- return new File(url.getFile());
+ return toFile(url);
+ }
+
+ static File toFile(URL url) {
+ try {
+ URI uri = URIUtil.toURI(url);
+ File file = URIUtil.toFile(uri);
+ if (file == null) {
+ // fall back to path of URL in catch block
+ throw new URISyntaxException(uri.toString(), "file URL does not represent a local file");
+ }
+ return file;
+ } catch (URISyntaxException e) {
+ Log.log(LogService.LOG_WARNING, "URL is not a valid URI, using only path for file", e); //$NON-NLS-1$
+ return new File(url.getFile());
+ }
}
private File getRunningLauncherFile() {
@@ -308,26 +324,23 @@ public class EquinoxManipulatorImpl implements Manipulator {
}
// 2. Create a Manipulator object fully initialized to the current running fw.
- ServiceReference<StartLevel> reference = context.getServiceReference(StartLevel.class);
- StartLevel startLevel = context.getService(reference);
Bundle[] bundles = context.getBundles();
BundleInfo[] bInfos = new BundleInfo[bundles.length];
for (int i = 0; i < bundles.length; i++) {
// System.out.println("bundles[" + i + "]=" + bundles[i]);
- try {
+ Optional<File> bundleFile = FileLocator.getBundleFileLocation(bundles[i]);
+ if (bundleFile.isPresent()) {
if (bundles[i].getBundleId() == 0) // SystemBundle
bInfos[i] = new BundleInfo(bundles[i].getSymbolicName(),
bundles[i].getHeaders("").get(Constants.BUNDLE_VERSION), //$NON-NLS-1$
- FileLocator.getBundleFile(bundles[i]).getAbsoluteFile().toURI(), -1, true);
+ bundleFile.get().getAbsoluteFile().toURI(), -1, true);
else {
bInfos[i] = new BundleInfo(bundles[i].getSymbolicName(),
bundles[i].getHeaders("").get(Constants.BUNDLE_VERSION), //$NON-NLS-1$
- FileLocator.getBundleFile(bundles[i]).getAbsoluteFile().toURI(),
- startLevel.getBundleStartLevel(bundles[i]),
- startLevel.isBundlePersistentlyStarted(bundles[i]));
+ bundleFile.get().getAbsoluteFile().toURI(),
+ bundles[i].adapt(BundleStartLevel.class).getStartLevel(),
+ bundles[i].adapt(BundleStartLevel.class).isPersistentlyStarted());
}
- } catch (IOException e) {
- e.printStackTrace();
}
}
configData.setBundles(bInfos);
@@ -615,7 +628,7 @@ public class EquinoxManipulatorImpl implements Manipulator {
done = true;
}
}
- if (url == null || !new File(url.getFile()).isAbsolute())
+ if (url == null || !toFile(url).isAbsolute())
return urlString;
String rootString = rootURL.toExternalForm();
@@ -690,7 +703,7 @@ public class EquinoxManipulatorImpl implements Manipulator {
done = true;
}
}
- if (url == null || new File(url.getFile()).isAbsolute())
+ if (url == null || toFile(url).isAbsolute())
return urlString;
return urlString.substring(0, index - 5) + makeAbsolute(urlString.substring(index), rootURL.toExternalForm());
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/Log.java b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/Log.java
index 2bd81aa39..86da5dffc 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/Log.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/Log.java
@@ -19,7 +19,7 @@ import org.osgi.service.log.LogService;
import org.osgi.util.tracker.ServiceTracker;
/**
- * Utility class with static methods for logging to LogService, if available
+ * Utility class with static methods for logging to LogService, if available
*/
@SuppressWarnings({"rawtypes", "unchecked"})
public class Log {
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/ParserUtils.java b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/ParserUtils.java
index 1c17cbfc4..a0a72fb01 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/ParserUtils.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/ParserUtils.java
@@ -28,6 +28,7 @@ import org.osgi.service.log.LogService;
public class ParserUtils {
private static final String FILE_PROTOCOL = "file:"; //$NON-NLS-1$
+ private static final String LAUNCHER_DIR = "@launcher.dir"; //$NON-NLS-1$
public static File getOSGiInstallArea(List<String> programArgs, Properties properties, LauncherData launcherData) {
if (launcherData == null)
@@ -38,7 +39,7 @@ public class ParserUtils {
base = launcherData.getLauncher().getParentFile().toURI();
else if (launcherData.getHome() != null)
base = launcherData.getHome().toURI();
- File result = getOSGiInstallArea(programArgs, properties, base);
+ File result = getOSGiInstallArea(programArgs, properties, launcherData.getLauncher(), base);
if (result != null)
return result;
@@ -84,7 +85,7 @@ public class ParserUtils {
}
//This method should only be used to determine the osgi install area when reading the eclipse.ini
- public static File getOSGiInstallArea(List<String> args, Properties properties, URI base) {
+ public static File getOSGiInstallArea(List<String> args, Properties properties, File launcherFile, URI base) {
if (args == null)
return null;
String install = getValueForArgument(EquinoxConstants.OPTION_INSTALL, args);
@@ -94,6 +95,8 @@ public class ParserUtils {
if (install != null) {
if (install.startsWith(FILE_PROTOCOL))
install = install.substring(FILE_PROTOCOL.length() + 1);
+ if (install.startsWith(LAUNCHER_DIR))
+ install = install.replace(LAUNCHER_DIR, launcherFile.getParent().toString());
File installFile = new File(install);
if (installFile.isAbsolute())
return installFile;
@@ -131,10 +134,10 @@ public class ParserUtils {
public static boolean isArgumentSet(String arg, List<String> args) {
if (arg == null || args == null)
return false;
- for (int i = 0; i < args.size(); i++) {
- if (args.get(i) == null)
+ for (String arg2 : args) {
+ if (arg2 == null)
continue;
- if ((args.get(i)).equalsIgnoreCase(arg)) {
+ if ((arg2).equalsIgnoreCase(arg)) {
return true;
}
}
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/utils/FileUtils.java b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/utils/FileUtils.java
index ae1764f90..1372b8b03 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/utils/FileUtils.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/utils/FileUtils.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Pascal Rapicault - Support for bundled macosx http://bugs.eclipse.org/57349
@@ -108,10 +108,10 @@ public class FileUtils {
}
/**
- * If a bundle of the specified location is in the Eclipse plugin format (either plugin-name_version.jar
+ * If a bundle of the specified location is in the Eclipse plugin format (either plugin-name_version.jar
* or as a folder named plugin-name_version ), return version string.Otherwise, return null;
- *
- * @return version string. If invalid format, return null.
+ *
+ * @return version string. If invalid format, return null.
*/
private static Version getVersion(String version) {
if (version.length() == 0)
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/.classpath b/bundles/org.eclipse.equinox.frameworkadmin.test/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/.classpath
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.frameworkadmin.test/.settings/org.eclipse.jdt.core.prefs
index 1794e8d27..d3982a2b0 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -88,6 +89,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -123,7 +125,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -137,7 +140,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -258,7 +260,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -329,7 +330,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -474,7 +474,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.frameworkadmin.test/META-INF/MANIFEST.MF
index 568179e4d..0cb1f4139 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/META-INF/MANIFEST.MF
@@ -2,16 +2,17 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.equinox.frameworkadmin.test
-Bundle-Version: 1.2.300.qualifier
+Bundle-Version: 1.3.0.qualifier
Bundle-Vendor: %Bundle-Vendor
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.equinox.frameworkadmin,
org.eclipse.equinox.frameworkadmin.equinox;bundle-version="1.0.100",
- org.junit;bundle-version="3.8.0"
+ org.junit;bundle-version="3.8.0",
+ org.eclipse.equinox.simpleconfigurator.manipulator
Bundle-Activator: org.eclipse.equinox.frameworkadmin.tests.Activator
Import-Package: org.osgi.framework;version="1.4.0"
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.equinox.frameworkadmin.tests
Eclipse-BundleShape: dir
Automatic-Module-Name: org.eclipse.equinox.frameworkadmin.test
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/pom.xml b/bundles/org.eclipse.equinox.frameworkadmin.test/pom.xml
index bc95f7425..d48775cd2 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/pom.xml
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/pom.xml
@@ -4,11 +4,25 @@
<parent>
<artifactId>org.eclipse.equinox.p2.tests-parent</artifactId>
<groupId>org.eclipse</groupId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../../org.eclipse.equinox.p2.releng/org.eclipse.equinox.p2.tests-parent</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.frameworkadmin.test</artifactId>
- <version>1.2.300-SNAPSHOT</version>
- <packaging>eclipse-plugin</packaging>
+ <version>1.3.0-SNAPSHOT</version>
+ <packaging>eclipse-test-plugin</packaging>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-surefire-plugin</artifactId>
+ <version>${tycho.version}</version>
+ <configuration>
+ <!-- Test execution not compatible with Tycho at the moment -->
+ <skipTests>true</skipTests>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
</project>
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/AbstractFwkAdminTest.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/AbstractFwkAdminTest.java
index fc71707bf..cd726da8c 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/AbstractFwkAdminTest.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/AbstractFwkAdminTest.java
@@ -7,36 +7,31 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.fail;
+
import java.io.*;
import java.net.URI;
import java.net.URL;
-import java.util.Arrays;
-import java.util.List;
import java.util.Properties;
-import junit.framework.TestCase;
import org.eclipse.core.runtime.*;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
-import org.eclipse.equinox.internal.frameworkadmin.equinox.ParserUtils;
-import org.eclipse.equinox.internal.frameworkadmin.equinox.utils.FileUtils;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
import org.eclipse.osgi.service.datalocation.Location;
+import org.junit.After;
+import org.junit.Before;
import org.osgi.framework.*;
import org.osgi.util.tracker.ServiceTracker;
-public abstract class AbstractFwkAdminTest extends TestCase {
+public abstract class AbstractFwkAdminTest {
private ServiceTracker<Object, FrameworkAdmin> fwAdminTracker;
private File testFolder;
- public AbstractFwkAdminTest(String name) {
- super(name);
- }
-
/**
* Copy an input stream to an output stream.
* Optionally close the streams when done.
@@ -106,7 +101,7 @@ public abstract class AbstractFwkAdminTest extends TestCase {
protected File getTestFolder(String name) {
return getTestFolder(name, true);
}
-
+
protected File getTestFolder(String name, boolean clean) {
Location instanceLocation = Platform.getInstanceLocation();
URL url = instanceLocation != null ? instanceLocation.getURL() : null;
@@ -122,10 +117,8 @@ public abstract class AbstractFwkAdminTest extends TestCase {
return testFolder;
}
- @Override
- protected void runTest() throws Throwable {
- super.runTest();
-
+ @Before
+ public void runTest() throws Throwable {
//clean up after success
if (testFolder != null && testFolder.exists()) {
delete(testFolder);
@@ -133,33 +126,13 @@ public abstract class AbstractFwkAdminTest extends TestCase {
}
}
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
+ @After
+ public void tearDown() throws Exception {
if (fwAdminTracker != null) {
fwAdminTracker.close();
}
}
- public void assertIsFile(File file) {
- if (!file.exists())
- fail("File: " + file.toString() + " can't be found.");
- if (!file.isFile())
- fail("File: " + file.toString() + " is expected to be a file.");
- }
-
- public void assertIsDirectory(File file) {
- if (!file.exists())
- fail("Directory: " + file.toString() + " can't be found.");
- if (!file.isDirectory())
- fail("Directory: " + file.toString() + " is expected to be a directory.");
- }
-
- public void assertNothing(File file) {
- if (file.exists())
- fail("No file or directory should be there: " + file);
- }
-
public void assertNotContent(File file, String search) {
assertNotContent(null, file, search);
}
@@ -190,24 +163,10 @@ public abstract class AbstractFwkAdminTest extends TestCase {
}
}
- public void assertIniFileNotContain(File file, String argument, String value) {
- List<String> args = null;
- try {
- args = FileUtils.loadFile(file);
- } catch (IOException e) {
- fail("Can't read file " + file);
- }
- String tmp = ParserUtils.getValueForArgument(argument, args);
- if (tmp == null)
- return;
-
- assertTrue(tmp.indexOf(value) == -1);
- }
-
private String getProperty(File file, String property) {
Properties p = new Properties();
try (FileInputStream fis = new FileInputStream(file)) {
- p.load(fis);
+ p.load(fis);
} catch (FileNotFoundException e) {
fail("Can't find file " + file);
} catch (IOException e) {
@@ -215,12 +174,12 @@ public abstract class AbstractFwkAdminTest extends TestCase {
}
return p.getProperty(property);
}
-
+
public void assertPropertyContains(File file, String property, String text) {
String value = getProperty(file, property);
if (value == null)
fail("property: " + property + " not found in: " +file);
-
+
int index = value.indexOf(text);
if (index == -1)
fail(text + " not found in property:" + property + " for file: " +file);
@@ -230,24 +189,12 @@ public abstract class AbstractFwkAdminTest extends TestCase {
String value = getProperty(file, property);
if (value == null)
return;
-
+
int index = value.indexOf(text);
if (index != -1)
fail(text + " found in property:" + property + " for file: " +file);
}
- public void assertEquals(String[] array1, String[] array2) {
- if (array1 == null || array2 == null) {
- if (array1 == array2)
- return;
- fail(Arrays.toString(array1) + " not equal to " + Arrays.toString(array2));
- }
- assertEquals(array1.length, array2.length);
- for (int i = 0; i < array1.length; i++) {
- assertEquals(array1[i], array2[i]);
- }
- }
-
public void assertContent(File file, String... search) {
assertContent(null, file, search);
}
@@ -288,18 +235,6 @@ public abstract class AbstractFwkAdminTest extends TestCase {
}
}
- public void stopSimpleConfiguratorManipulator() {
- final String SIMPLECONFIGURATOR_MANIPULATOR = "org.eclipse.equinox.simpleconfigurator.manipulator";
- Bundle manipulatorBundle = Platform.getBundle(SIMPLECONFIGURATOR_MANIPULATOR);
- if (manipulatorBundle == null)
- return;
- try {
- manipulatorBundle.stop();
- } catch (BundleException e) {
- fail("Exception while starting up " + SIMPLECONFIGURATOR_MANIPULATOR + ' ' + e.getMessage());
- }
- }
-
/*
* Copy
* - if we have a file, then copy the file
@@ -320,7 +255,7 @@ public abstract class AbstractFwkAdminTest extends TestCase {
}
return;
}
- try (InputStream input = new BufferedInputStream(new FileInputStream(source));
+ try (InputStream input = new BufferedInputStream(new FileInputStream(source));
OutputStream output = new BufferedOutputStream(new FileOutputStream(target))) {
byte[] buffer = new byte[8192];
@@ -370,7 +305,7 @@ public abstract class AbstractFwkAdminTest extends TestCase {
protected void writeEclipseIni(File location, String[] lines) {
location.getParentFile().mkdirs();
try (BufferedWriter bw = new BufferedWriter(new FileWriter(location))){
-
+
for (String line : lines) {
bw.write(line);
bw.newLine();
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/Activator.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/Activator.java
index ff24d5df4..bfe9b23fc 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/Activator.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/Activator.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -21,7 +21,7 @@ public class Activator implements BundleActivator {
@Override
public void start(BundleContext context) throws Exception {
- ctx = context;
+ ctx = context;
}
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/AllTests.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/AllTests.java
index 8ad205090..715501feb 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/AllTests.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/AllTests.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Ericsson AB - ongoing development
@@ -15,45 +15,44 @@
package org.eclipse.equinox.frameworkadmin.tests;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all automated director tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(Bug196525.class);
- suite.addTestSuite(Bug258370.class);
- suite.addTestSuite(CleanupTest.class);
- suite.addTestSuite(FrameworkExtensionTest.class);
- suite.addTestSuite(LauncherConfigLocationTest.class);
- suite.addTestSuite(LauncherDataTest.class);
- suite.addTestSuite(ManipulatorTests.class);
- suite.addTestSuite(NoConfigurationValueInEclipseIni.class);
- suite.addTestSuite(NoRenamingLauncherIni.class);
- suite.addTestSuite(OSGiVersionChange.class);
- suite.addTestSuite(ParserUtilsTest.class);
- suite.addTestSuite(ReaderTest1.class);
- suite.addTestSuite(ReaderTest2.class);
- suite.addTestSuite(ReaderTest3.class);
- suite.addTestSuite(ReaderTest4.class);
- suite.addTestSuite(ReaderTest5.class);
- suite.addTestSuite(ReaderTestBug267850.class);
- suite.addTestSuite(ReaderTestBug285935.class);
- suite.addTestSuite(RelativePathTest.class);
- suite.addTestSuite(RemovingABundle.class);
- suite.addTestSuite(RemovingAllBundles.class);
- suite.addTestSuite(RenamingLauncherIni.class);
- suite.addTestSuite(SharedConfigurationTest.class);
- suite.addTestSuite(SimpleConfiguratorComingAndGoing.class);
- suite.addTestSuite(SimpleConfiguratorTest.class);
- suite.addTestSuite(TestEclipseDataArea.class);
- suite.addTestSuite(TestRunningInstance.class);
- suite.addTestSuite(TestVMArg.class);
- suite.addTestSuite(UtilsTest.class);
- return suite;
- }
-
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ Bug196525.class,
+ Bug258370.class,
+ CleanupTest.class,
+ FrameworkExtensionTest.class,
+ LauncherConfigLocationTest.class,
+ LauncherDataTest.class,
+ ManipulatorTests.class,
+ NoConfigurationValueInEclipseIni.class,
+ NoRenamingLauncherIni.class,
+ OSGiVersionChange.class,
+ ParserUtilsTest.class,
+ ReaderTest1.class,
+ ReaderTest2.class,
+ ReaderTest3.class,
+ ReaderTest4.class,
+ ReaderTest5.class,
+ ReaderTestBug267850.class,
+ ReaderTestBug285935.class,
+ RelativePathTest.class,
+ RemovingABundle.class,
+ RemovingAllBundles.class,
+ RenamingLauncherIni.class,
+ SharedConfigurationTest.class,
+ SimpleConfiguratorComingAndGoing.class,
+ SimpleConfiguratorTest.class,
+ TestEclipseDataArea.class,
+ TestRunningInstance.class,
+ TestVMArg.class,
+ UtilsTest.class
+})
+public class AllTests {
+ // SuiteClasses
} \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/Bug196525.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/Bug196525.java
index 7e237713b..d6f25bf60 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/Bug196525.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/Bug196525.java
@@ -20,6 +20,8 @@ import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
+import org.junit.Before;
+import org.junit.Test;
import org.osgi.framework.BundleException;
public class Bug196525 extends AbstractFwkAdminTest {
@@ -29,14 +31,10 @@ public class Bug196525 extends AbstractFwkAdminTest {
private File bundleTXT;
private File configINI;
- public Bug196525(String name) {
- super(name);
- }
-
- @Override
- protected void setUp() throws Exception {
+ @Before
+ public void setUp() throws Exception {
startSimpleConfiguratorManipulator();
- //create a configuration with osgi and simpleconfigurator in it
+ // create a configuration with osgi and simpleconfigurator in it
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
Manipulator manipulator = fwkAdmin.getManipulator();
@@ -53,11 +51,17 @@ public class Bug196525 extends AbstractFwkAdminTest {
try {
manipulator.load();
} catch (IllegalStateException e) {
- //TODO We ignore the framework JAR location not set exception
+ // TODO We ignore the framework JAR location not set exception
}
- BundleInfo osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1", URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar"))), 0, true);
- BundleInfo configuratorBi = new BundleInfo("org.eclipse.equinox.simpleconfigurator", "1.0.0", URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar"))), 1, true);
+ BundleInfo osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1",
+ URIUtil.toURI(FileLocator
+ .resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar"))),
+ 0, true);
+ BundleInfo configuratorBi = new BundleInfo(
+ "org.eclipse.equinox.simpleconfigurator", "1.0.0", URIUtil.toURI(FileLocator.resolve(Activator
+ .getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar"))),
+ 1, true);
manipulator.getConfigData().addBundle(osgiBi);
manipulator.getConfigData().addBundle(configuratorBi);
@@ -65,7 +69,9 @@ public class Bug196525 extends AbstractFwkAdminTest {
manipulator.save(false);
}
- public void testConfigContent() throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException, URISyntaxException {
+ @Test
+ public void testConfigContent() throws IllegalStateException, FrameworkAdminRuntimeException, IOException,
+ BundleException, URISyntaxException {
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
Manipulator manipulator = fwkAdmin.getManipulator();
@@ -75,16 +81,16 @@ public class Bug196525 extends AbstractFwkAdminTest {
try {
manipulator.load();
} catch (IllegalStateException e) {
- //TODO We ignore the framework JAR location not set exception
+ // TODO We ignore the framework JAR location not set exception
}
- try {
- assertContains("1.0", manipulator.getConfigData().getBundles(), URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar"))));
- assertContains("2.0", manipulator.getConfigData().getBundles(), URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar"))));
- } catch (URISyntaxException e) {
- fail("Unexpected failure while creating URI");
- }
- BundleInfo bundle1Bi = new BundleInfo("bundle_1", "1.0.0", URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/bundle_1"))), 2, true);
+ assertContains("1.0", manipulator.getConfigData().getBundles(), URIUtil.toURI(
+ FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar"))));
+ assertContains("2.0", manipulator.getConfigData().getBundles(), URIUtil.toURI(FileLocator.resolve(
+ Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar"))));
+ BundleInfo bundle1Bi = new BundleInfo("bundle_1", "1.0.0",
+ URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/bundle_1"))), 2,
+ true);
manipulator.getConfigData().addBundle(bundle1Bi);
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/Bug258370.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/Bug258370.java
index 2c13e900e..e8edb8ca2 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/Bug258370.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/Bug258370.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -20,21 +20,14 @@ import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
+import org.junit.Test;
import org.osgi.framework.BundleException;
public class Bug258370 extends FwkAdminAndSimpleConfiguratorTest {
- public Bug258370(String name) {
- super(name);
- // TODO Auto-generated constructor stub
- }
- public void testComma() {
- FrameworkAdmin fwkAdmin = null;
- try {
- fwkAdmin = getEquinoxFrameworkAdmin();
- } catch (BundleException e1) {
- fail("0.0");
- }
+ @Test
+ public void testComma() throws FrameworkAdminRuntimeException, IOException, URISyntaxException, BundleException {
+ FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
Manipulator manipulator = fwkAdmin.getManipulator();
File installFolder = Activator.getContext().getDataFile(SimpleConfiguratorTest.class.getName());
@@ -45,46 +38,31 @@ public class Bug258370 extends FwkAdminAndSimpleConfiguratorTest {
launcherData.setFwConfigLocation(configurationFolder);
launcherData.setLauncher(new File(installFolder, launcherName));
try {
- try {
- manipulator.load();
- } catch (FrameworkAdminRuntimeException e) {
- fail("1.0");
- } catch (IOException e) {
- fail("2.0");
- }
+ manipulator.load();
} catch (IllegalStateException e) {
- //TODO We ignore the framework JAR location not set exception
+ // TODO We ignore the framework JAR location not set exception
}
- BundleInfo osgiBi = null;
- BundleInfo bundle1Bi = null;
- BundleInfo bundle2Bi = null;
-
- try {
- osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1", URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar"))), 0, true);
- bundle1Bi = new BundleInfo("bundle_1", "1.0.0", URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/bundle_1"))), 2, true);
- bundle2Bi = new BundleInfo("bundle_2", "1.0.0", URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/bundle_2"))), 2, true);
- } catch (URISyntaxException e) {
- fail("3.0");
- } catch (IOException e) {
- fail("4.0");
- }
+ BundleInfo osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1",
+ URIUtil.toURI(FileLocator
+ .resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar"))),
+ 0, true);
+ BundleInfo bundle1Bi = new BundleInfo("bundle_1", "1.0.0",
+ URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/bundle_1"))), 2,
+ true);
+ BundleInfo bundle2Bi = new BundleInfo("bundle_2", "1.0.0",
+ URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/bundle_2"))), 2,
+ true);
manipulator.getConfigData().addBundle(osgiBi);
manipulator.getConfigData().addBundle(bundle1Bi);
manipulator.getConfigData().addBundle(bundle2Bi);
- try {
- manipulator.save(false);
- } catch (FrameworkAdminRuntimeException e) {
- fail("5.0");
- } catch (IOException e) {
- fail("6.0");
- }
+ manipulator.save(false);
File configINI = new File(configurationFolder, "config.ini");
assertContent(configINI, "org.eclipse.osgi");
assertContent(configINI, "bundle_1");
assertContent(configINI, "bundle_2");
- assertContent(configINI, "start,reference"); //This test for the presence of the comma.
+ assertContent(configINI, "start,reference"); // This test for the presence of the comma.
}
}
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/CleanupTest.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/CleanupTest.java
index 878c6310b..f5f0b7656 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/CleanupTest.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/CleanupTest.java
@@ -13,74 +13,72 @@
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
+import org.eclipse.equinox.internal.provisional.frameworkadmin.FrameworkAdminRuntimeException;
import org.eclipse.equinox.internal.provisional.frameworkadmin.Manipulator;
+import org.junit.Before;
+import org.junit.Test;
public class CleanupTest extends FwkAdminAndSimpleConfiguratorTest {
- public CleanupTest(String name) {
- super(name);
- }
-
Manipulator m = null;
@Override
- protected void setUp() throws Exception {
+ @Before
+ public void setUp() throws Exception {
super.setUp();
m = createMinimalConfiguration(CleanupTest.class.getName());
}
- public void testSimpleConfiguratorRemoval() {
+ @Test
+ public void testSimpleConfiguratorRemoval() throws FrameworkAdminRuntimeException, IOException {
BundleInfo[] bis = m.getConfigData().getBundles();
for (BundleInfo bi : bis) {
if (bi.getSymbolicName().equals("org.eclipse.equinox.simpleconfigurator")) {
m.getConfigData().removeBundle(bi);
}
}
- try {
- m.save(false);
- } catch (IOException e) {
- fail("Error while saving");
- }
- assertNothing(new File(getConfigurationFolder(), "org.eclipse.equinox.simpleconfigurator"));
- assertIsDirectory(getConfigurationFolder());
+ m.save(false);
+ assertFalse(new File(getConfigurationFolder(), "org.eclipse.equinox.simpleconfigurator").exists());
+ assertTrue(getConfigurationFolder().exists());
+ assertTrue(getConfigurationFolder().isDirectory());
- //Now remove osgi
+ // Now remove osgi
bis = m.getConfigData().getBundles();
for (BundleInfo bi : bis) {
if (bi.getSymbolicName().equals("org.eclipse.osgi")) {
m.getConfigData().removeBundle(bi);
}
}
- try {
- m.save(false);
- } catch (IOException e) {
- fail("Error while saving");
- }
- assertNothing(getConfigurationFolder());
- assertNothing(new File(getInstallFolder(), getLauncherName() + ".ini"));
+ m.save(false);
+ assertFalse(getConfigurationFolder().exists());
+ assertFalse(new File(getInstallFolder(), getLauncherName() + ".ini").exists());
}
- public void testOSGiRemoval() {
+ @Test
+ public void testOSGiRemoval() throws FrameworkAdminRuntimeException, IOException {
BundleInfo[] bis = m.getConfigData().getBundles();
for (BundleInfo bi : bis) {
if (bi.getSymbolicName().equals("org.eclipse.osgi")) {
m.getConfigData().removeBundle(bi);
}
}
- try {
- m.save(false);
- } catch (IOException e) {
- fail("Error while saving");
- }
- assertIsDirectory(new File(getConfigurationFolder(), "org.eclipse.equinox.simpleconfigurator"));
- assertIsDirectory(getConfigurationFolder());
- assertNotContent(new File(getConfigurationFolder(), "org.eclipse.equinox.simpleconfigurator/bundles.info"), "org.eclipse.osgi");
+ m.save(false);
+ File confFile = new File(getConfigurationFolder(), "org.eclipse.equinox.simpleconfigurator");
+ assertTrue(confFile.exists());
+ assertTrue(confFile.isDirectory());
+ assertTrue(getConfigurationFolder().exists());
+ assertTrue(getConfigurationFolder().isDirectory());
+ assertNotContent(new File(getConfigurationFolder(), "org.eclipse.equinox.simpleconfigurator/bundles.info"),
+ "org.eclipse.osgi");
bis = m.getConfigData().getBundles();
for (BundleInfo bi : bis) {
@@ -88,17 +86,16 @@ public class CleanupTest extends FwkAdminAndSimpleConfiguratorTest {
m.getConfigData().removeBundle(bi);
}
}
- try {
- m.save(false);
- } catch (IOException e) {
- fail("Error while saving");
- }
- assertNothing(getConfigurationFolder());
- assertNothing(new File(getInstallFolder(), getLauncherName() + ".ini"));
+ m.save(false);
+ assertFalse(getConfigurationFolder().exists());
+ assertFalse(new File(getInstallFolder(), getLauncherName() + ".ini").exists());
}
+ @Test
public void testWithMutipleBundles() throws IOException, URISyntaxException {
- BundleInfo bi = new BundleInfo(URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/bundle_1"))), 2, false);
+ BundleInfo bi = new BundleInfo(
+ URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/bundle_1"))), 2,
+ false);
m.getConfigData().addBundle(bi);
m.save(false);
@@ -110,7 +107,7 @@ public class CleanupTest extends FwkAdminAndSimpleConfiguratorTest {
}
m.save(false);
- assertNothing(getBundleTxt());
+ assertFalse(getBundleTxt().exists());
assertContent(getConfigIni(), "bundle_1");
}
}
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/FrameworkExtensionTest.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/FrameworkExtensionTest.java
index 2bab07edb..27704419e 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/FrameworkExtensionTest.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/FrameworkExtensionTest.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -17,14 +17,12 @@ import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.provisional.frameworkadmin.Manipulator;
+import org.junit.Test;
import org.osgi.framework.Constants;
public class FrameworkExtensionTest extends FwkAdminAndSimpleConfiguratorTest {
- public FrameworkExtensionTest(String name) {
- super(name);
- }
-
+ @Test
public void testAddRemoveFrameworkExtension() throws Exception {
Manipulator manipulator = createMinimalConfiguration(FrameworkExtensionTest.class.getName());
BundleInfo bundleInfo = new BundleInfo("dummy.frameworkextension", "1.0.0", URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/dummy.frameworkextension_1.0.0.jar"))), 4, false);
@@ -34,10 +32,10 @@ public class FrameworkExtensionTest extends FwkAdminAndSimpleConfiguratorTest {
assertContent(getBundleTxt(), "dummy.frameworkextension");
assertPropertyContains(getConfigIni(),"osgi.framework.extensions", "dummy.frameworkextension");
assertNotPropertyContains(getConfigIni(),"osgi.bundles", "dummy.frameworkextension");
-
+
BundleInfo basicBundleInfo = new BundleInfo("dummy.frameworkextension", "1.0.0", null, -1, false);
manipulator.getConfigData().removeBundle(basicBundleInfo);
- manipulator.save(false);
+ manipulator.save(false);
assertNotContent(getBundleTxt(), "dummy.frameworkextension");
assertNotPropertyContains(getConfigIni(),"osgi.framework.extensions", "dummy.frameworkextension");
}
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/FwkAdminAndSimpleConfiguratorTest.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/FwkAdminAndSimpleConfiguratorTest.java
index 85c56d78b..73e3b17be 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/FwkAdminAndSimpleConfiguratorTest.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/FwkAdminAndSimpleConfiguratorTest.java
@@ -19,6 +19,8 @@ import org.eclipse.core.runtime.*;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
import org.eclipse.osgi.service.environment.Constants;
+import org.junit.After;
+import org.junit.Before;
import org.osgi.framework.BundleException;
public abstract class FwkAdminAndSimpleConfiguratorTest extends AbstractFwkAdminTest {
@@ -27,21 +29,18 @@ public abstract class FwkAdminAndSimpleConfiguratorTest extends AbstractFwkAdmin
private String launcherName;
private IPath launcherPath;
- public FwkAdminAndSimpleConfiguratorTest(String name) {
- super(name);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
startSimpleConfiguratorManipulator();
}
- protected Manipulator getNewManipulator(String workArea) throws FrameworkAdminRuntimeException, IOException, BundleException {
+ protected Manipulator getNewManipulator(String workArea)
+ throws FrameworkAdminRuntimeException, IOException, BundleException {
return getNewManipulator(workArea, null);
}
- protected Manipulator getNewManipulator(String workArea, String os) throws FrameworkAdminRuntimeException, IOException, BundleException {
+ protected Manipulator getNewManipulator(String workArea, String os)
+ throws FrameworkAdminRuntimeException, IOException, BundleException {
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
Manipulator manipulator = fwkAdmin.getManipulator();
@@ -60,7 +59,7 @@ public abstract class FwkAdminAndSimpleConfiguratorTest extends AbstractFwkAdmin
try {
manipulator.load();
} catch (IllegalStateException e) {
- //TODO We ignore the framework JAR location not set exception
+ // TODO We ignore the framework JAR location not set exception
}
return manipulator;
}
@@ -72,24 +71,25 @@ public abstract class FwkAdminAndSimpleConfiguratorTest extends AbstractFwkAdmin
protected Manipulator createMinimalConfiguration(String workArea, String os) throws Exception {
Manipulator manipulator = getNewManipulator(workArea, os);
- BundleInfo osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1", URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar"))), 0, true);
- BundleInfo configuratorBi = new BundleInfo("org.eclipse.equinox.simpleconfigurator", "1.0.0", URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar"))), 1, true);
+ BundleInfo osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1",
+ URIUtil.toURI(FileLocator
+ .resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar"))),
+ 0, true);
+ BundleInfo configuratorBi = new BundleInfo(
+ "org.eclipse.equinox.simpleconfigurator", "1.0.0", URIUtil.toURI(FileLocator.resolve(Activator
+ .getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar"))),
+ 1, true);
manipulator.getConfigData().addBundle(osgiBi);
manipulator.getConfigData().addBundle(configuratorBi);
- try {
- manipulator.save(false);
- } catch (IOException e) {
- fail("Error while persisting");
- } catch (FrameworkAdminRuntimeException e) {
- fail("Error while persisting");
- }
+ manipulator.save(false);
return manipulator;
}
@Override
- protected void tearDown() throws Exception {
+ @After
+ public void tearDown() throws Exception {
super.tearDown();
if (installFolder != null)
delete(installFolder);
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/LauncherConfigLocationTest.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/LauncherConfigLocationTest.java
index 38d8b5ba5..6150ff74e 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/LauncherConfigLocationTest.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/LauncherConfigLocationTest.java
@@ -13,6 +13,8 @@
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.*;
+
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
@@ -20,14 +22,12 @@ import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
+import org.junit.Test;
import org.osgi.framework.BundleException;
public class LauncherConfigLocationTest extends AbstractFwkAdminTest {
- public LauncherConfigLocationTest(String name) {
- super(name);
- }
-
+ @Test
public void testCustomLauncherConfig() throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException, URISyntaxException {
startSimpleConfiguratorManipulator();
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
@@ -36,7 +36,7 @@ public class LauncherConfigLocationTest extends AbstractFwkAdminTest {
File installFolder = Activator.getContext().getDataFile(LauncherConfigLocationTest.class.getName());
if(installFolder.exists())
delete(installFolder);
-
+
File configurationFolder = new File(installFolder, "configuration");
String launcherName = "foo";
@@ -44,18 +44,18 @@ public class LauncherConfigLocationTest extends AbstractFwkAdminTest {
assertNotNull("Null launcher data" + launcherData, launcherData);
launcherData.setFwConfigLocation(configurationFolder);
launcherData.setLauncher(new File(installFolder, launcherName));
-
+
File defaultlaunchConfig = new File(installFolder, launcherName + ".ini");
- assertEquals(defaultlaunchConfig.exists(), false);
+ assertFalse(defaultlaunchConfig.exists());
File launchConfig = new File(installFolder, "mylaunch.ini");
- assertEquals(launchConfig.exists(), false);
+ assertFalse(launchConfig.exists());
launcherData.setLauncherConfigLocation(launchConfig);
try {
manipulator.load();
} catch (IllegalStateException e) {
//TODO We ignore the framework JAR location not set exception
}
-
+
BundleInfo osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1", URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar"))), 0, true);
BundleInfo configuratorBi = new BundleInfo("org.eclipse.equinox.simpleconfigurator", "1.0.0", URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar"))), 1, true);
@@ -64,7 +64,7 @@ public class LauncherConfigLocationTest extends AbstractFwkAdminTest {
manipulator.save(false);
- assertEquals(launchConfig.exists(), true);
- assertEquals(defaultlaunchConfig.exists(), false);
+ assertTrue(launchConfig.exists());
+ assertFalse(defaultlaunchConfig.exists());
}
}
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/LauncherDataTest.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/LauncherDataTest.java
index 9332f77b4..e9d7ce225 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/LauncherDataTest.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/LauncherDataTest.java
@@ -7,89 +7,73 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertArrayEquals;
+
import org.eclipse.equinox.internal.provisional.frameworkadmin.LauncherData;
+import org.junit.Test;
/**
* @since 1.0
*/
-public class LauncherDataTest extends TestCase {
-
- /*
- * Constructor for the class.
- */
- public LauncherDataTest(String name) {
- super(name);
- }
+public class LauncherDataTest {
+ @Test
public void testRemoveProgramArg() {
LauncherData data = new LauncherData("equinox", "1.0", "eclipse", "1.0");
- data.setProgramArgs(new String[] {"-console", "-startup", "foo"});
+ data.setProgramArgs(new String[] { "-console", "-startup", "foo" });
data.removeProgramArg("-startup");
- assertEquals("1.0", new String[] {"-console"}, data.getProgramArgs());
+ assertArrayEquals("1.0", new String[] { "-console" }, data.getProgramArgs());
data.setProgramArgs(null);
- data.setProgramArgs(new String[] {"-console", "-startup", "foo", "-bar"});
+ data.setProgramArgs(new String[] { "-console", "-startup", "foo", "-bar" });
data.removeProgramArg("-startup");
- assertEquals("2.0", new String[] {"-console", "-bar"}, data.getProgramArgs());
+ assertArrayEquals("2.0", new String[] { "-console", "-bar" }, data.getProgramArgs());
data.setProgramArgs(null);
- data.setProgramArgs(new String[] {"-startup", "foo"});
+ data.setProgramArgs(new String[] { "-startup", "foo" });
data.removeProgramArg("-startup");
- assertEquals("3.0", new String[0], data.getProgramArgs());
+ assertArrayEquals("3.0", new String[0], data.getProgramArgs());
data.setProgramArgs(null);
- data.setProgramArgs(new String[] {"-console", "-startup", "foo", "bar"});
+ data.setProgramArgs(new String[] { "-console", "-startup", "foo", "bar" });
data.removeProgramArg("-startup");
- assertEquals("4.0", new String[] {"-console"}, data.getProgramArgs());
+ assertArrayEquals("4.0", new String[] { "-console" }, data.getProgramArgs());
data.setProgramArgs(null);
- data.setProgramArgs(new String[] {"-console", "-startup", "foo", "bar", "-xxx"});
+ data.setProgramArgs(new String[] { "-console", "-startup", "foo", "bar", "-xxx" });
data.removeProgramArg("-startup");
- assertEquals("5.0", new String[] {"-console", "-xxx"}, data.getProgramArgs());
+ assertArrayEquals("5.0", new String[] { "-console", "-xxx" }, data.getProgramArgs());
- // arg which doesn't start with a dash - dont' consume anything but that specific arg
+ // arg which doesn't start with a dash - dont' consume anything but that
+ // specific arg
data.setProgramArgs(null);
- data.setProgramArgs(new String[] {"-console", "-startup", "foo", "bar", "-xxx"});
+ data.setProgramArgs(new String[] { "-console", "-startup", "foo", "bar", "-xxx" });
data.removeProgramArg("foo");
- assertEquals("6.0", new String[] {"-console", "-startup", "foo", "bar", "-xxx"}, data.getProgramArgs());
+ assertArrayEquals("6.0", new String[] { "-console", "-startup", "foo", "bar", "-xxx" }, data.getProgramArgs());
// non-matching arg
data.setProgramArgs(null);
- data.setProgramArgs(new String[] {"-console", "-startup", "foo", "bar", "-xxx"});
+ data.setProgramArgs(new String[] { "-console", "-startup", "foo", "bar", "-xxx" });
data.removeProgramArg("zzz");
- assertEquals("7.0", new String[] {"-console", "-startup", "foo", "bar", "-xxx"}, data.getProgramArgs());
+ assertArrayEquals("7.0", new String[] { "-console", "-startup", "foo", "bar", "-xxx" }, data.getProgramArgs());
// empty string
data.setProgramArgs(null);
- data.setProgramArgs(new String[] {"-console", "-startup", "foo", "bar", "-xxx"});
+ data.setProgramArgs(new String[] { "-console", "-startup", "foo", "bar", "-xxx" });
data.removeProgramArg("foo");
- assertEquals("8.0", new String[] {"-console", "-startup", "foo", "bar", "-xxx"}, data.getProgramArgs());
+ assertArrayEquals("8.0", new String[] { "-console", "-startup", "foo", "bar", "-xxx" }, data.getProgramArgs());
// just whitespace
data.setProgramArgs(null);
- data.setProgramArgs(new String[] {"-console", "-startup", "foo", "bar", "-xxx"});
+ data.setProgramArgs(new String[] { "-console", "-startup", "foo", "bar", "-xxx" });
data.removeProgramArg(" ");
- assertEquals("9.0", new String[] {"-console", "-startup", "foo", "bar", "-xxx"}, data.getProgramArgs());
-
- }
+ assertArrayEquals("9.0", new String[] { "-console", "-startup", "foo", "bar", "-xxx" }, data.getProgramArgs());
- /*
- * Compare the give 2 arrays and assert whether or not they should be considered equal.
- */
- public static void assertEquals(String message, String[] one, String[] two) {
- if (one == null)
- assertNull(message, two);
- if (two == null)
- fail(message);
- assertEquals(message, one.length, two.length);
- for (int i = 0; i < one.length; i++)
- assertEquals(message, one[i], two[i]);
}
}
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/MacOSLikeSetup.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/MacOSLikeSetup.java
index 336b9342a..883e39f04 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/MacOSLikeSetup.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/MacOSLikeSetup.java
@@ -8,11 +8,14 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import java.io.File;
import java.io.IOException;
import org.eclipse.core.runtime.FileLocator;
@@ -20,21 +23,23 @@ import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.frameworkadmin.equinox.EquinoxConstants;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
import org.eclipse.osgi.service.environment.Constants;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestName;
import org.osgi.framework.BundleException;
public class MacOSLikeSetup extends FwkAdminAndSimpleConfiguratorTest {
+ @Rule
+ public TestName name = new TestName();
- public MacOSLikeSetup(String name) {
- super(name);
- }
-
+ @Test
public void testMacOSSetup() throws FrameworkAdminRuntimeException, IOException, BundleException {
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
Manipulator manipulator = fwkAdmin.getManipulator();
- File installFolder = new File(Activator.getContext().getDataFile(getName()), "Eclipse.app/Contents/Eclipse");
+ File installFolder = new File(Activator.getContext().getDataFile(name.getMethodName()), "Eclipse.app/Contents/Eclipse");
File configurationFolder = new File(installFolder, "configuration");
- File launcherFolder = new File(installFolder, "../MacOS/");
+ File launcherFolder = new File(installFolder, "../MacOS/");
File launcherName = new File(launcherFolder, "eclipse");
LauncherData launcherData = manipulator.getLauncherData();
@@ -43,27 +48,35 @@ public class MacOSLikeSetup extends FwkAdminAndSimpleConfiguratorTest {
launcherData.setLauncherConfigLocation(new File(installFolder, "eclipse.ini"));
launcherData.setOS(Constants.OS_MACOSX);
- //Setup the plugins as they should
+ // Setup the plugins as they should
File osgiJar = new File(installFolder, "plugins/org.eclipse.osgi.jar");
File scJar = new File(installFolder, "plugins/org.eclipse.equinox.simpleconfigurator.jar");
File launcherJar = new File(installFolder, "plugins/org.eclipse.equinox.launcher.jar");
- copy("OSGi", new File(FileLocator.toFileURL(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar")).getPath()), osgiJar);
- copy("SC", new File(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar")).getPath()), scJar);
- copy("Startup", new File(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.launcher.jar")).getPath()), launcherJar);
-
+ copy("OSGi", new File(FileLocator
+ .toFileURL(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar")).getPath()),
+ osgiJar);
+ copy("SC", new File(FileLocator.resolve(
+ Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar"))
+ .getPath()), scJar);
+ copy("Startup",
+ new File(FileLocator.resolve(
+ Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.launcher.jar"))
+ .getPath()),
+ launcherJar);
+
manipulator.getConfigData().addBundle(new BundleInfo(osgiJar.toURI()));
manipulator.getConfigData().addBundle(new BundleInfo(scJar.toURI(), 1, true));
manipulator.getConfigData().addBundle(new BundleInfo(launcherJar.toURI()));
-
+
manipulator.getLauncherData().addProgramArg(EquinoxConstants.OPTION_STARTUP);
manipulator.getLauncherData().addProgramArg(launcherJar.toURI().toString());
-
+
manipulator.getLauncherData().setFwJar(osgiJar);
-
+
try {
manipulator.save(false);
} catch (IllegalStateException e) {
- //TODO We ignore the framework JAR location not set exception
+ // TODO We ignore the framework JAR location not set exception
}
File launcherIni = new File(installFolder, "eclipse.ini");
assertNotContent(launcherIni, "-configuration");
@@ -72,36 +85,44 @@ public class MacOSLikeSetup extends FwkAdminAndSimpleConfiguratorTest {
assertContent(launcherIni, "../Eclipse/plugins/org.eclipse.equinox.launcher.jar");
assertNotContent(launcherIni, MacOSLikeSetup.class.getName());
assertNotContent(new File(configurationFolder, "config.ini"), MacOSLikeSetup.class.getName());
- assertTrue("bundles.info missing", new File(configurationFolder, "org.eclipse.equinox.simpleconfigurator/bundles.info").exists());
-
+ assertTrue("bundles.info missing",
+ new File(configurationFolder, "org.eclipse.equinox.simpleconfigurator/bundles.info").exists());
+
}
-
+
+ @Test
public void testMacWithoutStartupOrFw() throws Exception {
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
Manipulator manipulator = fwkAdmin.getManipulator();
- File installFolder = new File(Activator.getContext().getDataFile(getName()), "Eclipse.app/Contents/Eclipse");
+ File installFolder = new File(Activator.getContext().getDataFile(name.getMethodName()), "Eclipse.app/Contents/Eclipse");
File configurationFolder = new File(installFolder, "configuration");
- File launcherFolder = new File(installFolder, "../MacOS/");
+ File launcherFolder = new File(installFolder, "../MacOS/");
File launcherName = new File(launcherFolder, "eclipse");
LauncherData launcherData = manipulator.getLauncherData();
launcherData.setFwConfigLocation(configurationFolder);
launcherData.setLauncher(launcherName);
launcherData.setOS(Constants.OS_MACOSX);
-
+
File osgiJar = new File(installFolder, "plugins/org.eclipse.osgi.jar");
File scJar = new File(installFolder, "plugins/org.eclipse.equinox.simpleconfigurator.jar");
File bundle = new File(installFolder, "plugins/bundle_1");
- copy("OSGi", new File(FileLocator.toFileURL(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar")).getPath()), osgiJar);
- copy("SC", new File(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar")).getPath()), scJar);
- copy("bundle", new File(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/bundle_1")).getPath()), bundle);
-
+ copy("OSGi", new File(FileLocator
+ .toFileURL(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar")).getPath()),
+ osgiJar);
+ copy("SC", new File(FileLocator.resolve(
+ Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar"))
+ .getPath()), scJar);
+ copy("bundle", new File(
+ FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/bundle_1")).getPath()),
+ bundle);
+
manipulator.getConfigData().addBundle(new BundleInfo(osgiJar.toURI()));
manipulator.getConfigData().addBundle(new BundleInfo(scJar.toURI(), 1, true));
manipulator.getConfigData().addBundle(new BundleInfo(bundle.toURI()));
manipulator.save(false);
-
+
File launcherIni = new File(installFolder, "eclipse.ini");
File bundleInfo = new File(configurationFolder, "org.eclipse.equinox.simpleconfigurator/bundles.info");
assertFalse(launcherIni.exists());
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ManipulatorTests.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ManipulatorTests.java
index e23b00c48..9cf6bd947 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ManipulatorTests.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ManipulatorTests.java
@@ -14,26 +14,32 @@
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.*;
+
import java.io.*;
import java.util.Properties;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
+import org.junit.Test;
public class ManipulatorTests extends AbstractFwkAdminTest {
- public ManipulatorTests(String name) {
- super(name);
- }
-
+ @Test
public void testBug212361_osgiInBundlesList() throws Exception {
File installFolder = Activator.getContext().getDataFile("212361");
File configurationFolder = new File(installFolder, "configuration");
Manipulator manipulator = getFrameworkManipulator(configurationFolder, new File(installFolder, "foo"));
- BundleInfo osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1", URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar"))), 0, true);
- BundleInfo configuratorBi = new BundleInfo("org.eclipse.equinox.simpleconfigurator", "1.0.0", URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar"))), 1, true);
+ BundleInfo osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1",
+ URIUtil.toURI(FileLocator
+ .resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar"))),
+ 0, true);
+ BundleInfo configuratorBi = new BundleInfo(
+ "org.eclipse.equinox.simpleconfigurator", "1.0.0", URIUtil.toURI(FileLocator.resolve(Activator
+ .getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar"))),
+ 1, true);
manipulator.getConfigData().addBundle(osgiBi);
manipulator.getConfigData().addBundle(configuratorBi);
@@ -41,28 +47,31 @@ public class ManipulatorTests extends AbstractFwkAdminTest {
manipulator.save(false);
Properties configIni = new Properties();
- try (InputStream in = new BufferedInputStream(new FileInputStream(new File(configurationFolder, "config.ini")))) {
+ try (InputStream in = new BufferedInputStream(
+ new FileInputStream(new File(configurationFolder, "config.ini")))) {
configIni.load(in);
}
String bundles = (String) configIni.get("osgi.bundles");
- assertTrue(bundles.indexOf("org.eclipse.osgi") == -1);
+ assertEquals(-1 , bundles.indexOf("org.eclipse.osgi"));
}
+ @Test
public void testBug277553_installAreaFromFwJar() throws Exception {
File folder = getTestFolder("installAreaFromFwJar");
File fwJar = new File(folder, "plugins/org.eclipse.osgi.jar");
fwJar.getParentFile().mkdirs();
- copyStream(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar").openStream(), true, new FileOutputStream(fwJar), true);
+ copyStream(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar").openStream(), true,
+ new FileOutputStream(fwJar), true);
BundleInfo osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1", fwJar.toURI(), 0, true);
-
+
File ini = new File(folder, "eclipse.ini");
- writeEclipseIni(ini, new String[] {"-foo", "bar", "-vmargs", "-Xmx256m"});
-
+ writeEclipseIni(ini, new String[] { "-foo", "bar", "-vmargs", "-Xmx256m" });
+
startSimpleConfiguratorManipulator();
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
-
+
Manipulator manipulator = fwkAdmin.getManipulator();
manipulator.getConfigData().addBundle(osgiBi);
LauncherData launcherData = manipulator.getLauncherData();
@@ -70,14 +79,15 @@ public class ManipulatorTests extends AbstractFwkAdminTest {
launcherData.setLauncher(new File(folder, "eclipse"));
manipulator.load();
-
+
assertEquals(manipulator.getLauncherData().getFwPersistentDataLocation(), new File(folder, "configuration"));
}
-
+
+ @Test
public void testBug258126_ProgramArgs_VMArgs() throws Exception {
File installFolder = getTestFolder("258126");
File ini = new File(installFolder, "eclipse.ini");
- writeEclipseIni(ini, new String[] {"-foo", "bar", "-vmargs", "-Xmx256m"});
+ writeEclipseIni(ini, new String[] { "-foo", "bar", "-vmargs", "-Xmx256m" });
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
Manipulator manipulator = fwkAdmin.getManipulator();
@@ -86,21 +96,24 @@ public class ManipulatorTests extends AbstractFwkAdminTest {
try {
manipulator.load();
} catch (IllegalStateException e) {
- //TODO We ignore the framework JAR location not set exception
+ // TODO We ignore the framework JAR location not set exception
}
- assertEquals(launcherData.getJvmArgs(), new String[] {"-Xmx256m"});
- assertEquals(launcherData.getProgramArgs(), new String[] {"-foo", "bar"});
+ assertArrayEquals(launcherData.getJvmArgs(), new String[] { "-Xmx256m" });
+ assertArrayEquals(launcherData.getProgramArgs(), new String[] { "-foo", "bar" });
launcherData.addJvmArg("-Xms64m");
launcherData.addProgramArg("-console");
- //eclipse.ini won't save unless we actually have something in the configuration
- BundleInfo osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1", URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar"))), 0, true);
+ // eclipse.ini won't save unless we actually have something in the configuration
+ BundleInfo osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1",
+ URIUtil.toURI(FileLocator
+ .resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar"))),
+ 0, true);
manipulator.getConfigData().addBundle(osgiBi);
manipulator.save(false);
assertContent(ini, "-foo", "bar", "-console", "-vmargs", "-Xmx256m", "-Xms64m");
}
-
+
}
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/NoConfigurationValueInEclipseIni.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/NoConfigurationValueInEclipseIni.java
index 14ef9a626..601afd64d 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/NoConfigurationValueInEclipseIni.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/NoConfigurationValueInEclipseIni.java
@@ -8,7 +8,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
@@ -20,20 +20,19 @@ import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
+import org.junit.Test;
import org.osgi.framework.BundleException;
public class NoConfigurationValueInEclipseIni extends FwkAdminAndSimpleConfiguratorTest {
- public NoConfigurationValueInEclipseIni(String name) {
- super(name);
- }
-
+ @Test
public void testAbsenceOfConfigurationInEclipseINI() throws Exception {
createMinimalConfiguration(NoConfigurationValueInEclipseIni.class.getName());
File launcherIni = new File(getInstallFolder(), getLauncherName() + ".ini");
assertNotContent(launcherIni, "-configuration");
}
+ @Test
public void testPresenceOfConfigurationInEclipseINI() throws FrameworkAdminRuntimeException, IOException, BundleException, URISyntaxException {
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
Manipulator manipulator = fwkAdmin.getManipulator();
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/NoRenamingLauncherIni.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/NoRenamingLauncherIni.java
index 3ceeecc58..9f68a5a85 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/NoRenamingLauncherIni.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/NoRenamingLauncherIni.java
@@ -13,6 +13,8 @@
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.assertEquals;
+
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
@@ -20,14 +22,12 @@ import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
+import org.junit.Test;
import org.osgi.framework.BundleException;
public class NoRenamingLauncherIni extends AbstractFwkAdminTest {
- public NoRenamingLauncherIni(String name) {
- super(name);
- }
-
+ @Test
public void testConfigFiles() throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException, URISyntaxException {
startSimpleConfiguratorManipulator();
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/OSGiVersionChange.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/OSGiVersionChange.java
index ea24a2f6d..baae2ec43 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/OSGiVersionChange.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/OSGiVersionChange.java
@@ -7,12 +7,14 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.assertEquals;
+
import java.io.IOException;
import java.net.URISyntaxException;
import org.eclipse.core.runtime.FileLocator;
@@ -20,22 +22,22 @@ import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.provisional.frameworkadmin.FrameworkAdminRuntimeException;
import org.eclipse.equinox.internal.provisional.frameworkadmin.Manipulator;
+import org.junit.Before;
+import org.junit.Test;
import org.osgi.framework.BundleException;
public class OSGiVersionChange extends FwkAdminAndSimpleConfiguratorTest {
private Manipulator defaultManipulator = null;
private String workArea = OSGiVersionChange.class.getName();
- public OSGiVersionChange(String name) {
- super(name);
- }
- @Override
- protected void setUp() throws Exception {
+ @Override @Before
+ public void setUp() throws Exception {
super.setUp();
defaultManipulator = createMinimalConfiguration(workArea);
}
+ @Test
public void testRemovalUsingSameManipulator() throws IllegalStateException, FrameworkAdminRuntimeException, IOException {
BundleInfo[] infos = defaultManipulator.getConfigData().getBundles();
BundleInfo osgi = null;
@@ -50,7 +52,7 @@ public class OSGiVersionChange extends FwkAdminAndSimpleConfiguratorTest {
assertNotContent(getBundleTxt(), "org.eclipse.osgi");
assertNotPropertyContains(getConfigIni(),"osgi.bundles", "org.eclipse.osgi");
}
-
+ @Test
public void testRemovalUsingOtherManipulator() throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException {
Manipulator newManipulator = getNewManipulator(workArea);
BundleInfo[] infos = newManipulator.getConfigData().getBundles();
@@ -66,7 +68,7 @@ public class OSGiVersionChange extends FwkAdminAndSimpleConfiguratorTest {
assertNotContent(getBundleTxt(), "org.eclipse.osgi");
assertNotPropertyContains(getConfigIni(),"osgi.bundles", "org.eclipse.osgi");
}
-
+ @Test
public void testAdditionUsingOtherManipulator() throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException {
BundleInfo[] infos = defaultManipulator.getConfigData().getBundles();
BundleInfo osgi = null;
@@ -86,7 +88,7 @@ public class OSGiVersionChange extends FwkAdminAndSimpleConfiguratorTest {
assertContent(getBundleTxt(), "org.eclipse.osgi");
assertNotPropertyContains(getConfigIni(),"osgi.bundles", "org.eclipse.osgi");
}
-
+ @Test
public void testChangeVersion() throws IllegalStateException, FrameworkAdminRuntimeException, IOException, URISyntaxException {
BundleInfo[] infos = defaultManipulator.getConfigData().getBundles();
BundleInfo osgi = null;
@@ -108,7 +110,7 @@ public class OSGiVersionChange extends FwkAdminAndSimpleConfiguratorTest {
assertContent(getBundleTxt(), VERSION);
assertContent(getConfigIni(), FILENAME);
}
-
+ @Test
public void testReadConfigWithoutOSGi() throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException {
//First Create a configuration that does not contain OSGi
BundleInfo[] infos = defaultManipulator.getConfigData().getBundles();
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ParserUtilsTest.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ParserUtilsTest.java
index 2dadddc5b..b4b010e4a 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ParserUtilsTest.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ParserUtilsTest.java
@@ -7,76 +7,77 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.*;
+
import java.io.File;
import java.util.*;
import org.eclipse.equinox.internal.frameworkadmin.equinox.ParserUtils;
+import org.junit.Test;
/**
* Tests for {@link ParserUtils}.
*/
public class ParserUtilsTest extends AbstractFwkAdminTest {
- public ParserUtilsTest(String name) {
- super(name);
- }
+ @Test
public void testGetValueForArgument() throws Exception {
List<String> args = new ArrayList<>();
args.add("-foo");
args.add("bar");
assertEquals( "bar", ParserUtils.getValueForArgument("-foo", args));
-
+
args.set(1, "-bar");
assertEquals(null, ParserUtils.getValueForArgument("-foo", args));
}
-
+ @Test
public void testRemoveArgument() throws Exception {
String [] args = new String [] { "-bar", "-foo", "-other"};
ParserUtils.removeArgument("-foo", Arrays.asList(args));
- assertEquals(args, new String [] {"-bar", null, "-other"});
-
+ assertArrayEquals(args, new String [] {"-bar", null, "-other"});
+
args = new String [] { "-bar", "-foo", "other"};
ParserUtils.removeArgument("-foo", Arrays.asList(args));
- assertEquals(args, new String [] {"-bar", null, null});
-
+ assertArrayEquals(args, new String [] {"-bar", null, null});
+
args = new String [] { "-bar", "-foo", "s-pecial"};
ParserUtils.removeArgument("-foo", Arrays.asList(args));
- assertEquals(args, new String [] {"-bar", null, null});
+ assertArrayEquals(args, new String [] {"-bar", null, null});
}
-
+ @Test
public void testSetValueForArgument() throws Exception {
List<String> args = new ArrayList<>();
ParserUtils.setValueForArgument("-foo", "bar", args);
- assertTrue(args.size() == 2);
+ assertEquals(2, args.size());
assertEquals(args.get(0), "-foo");
assertEquals(args.get(1), "bar");
-
+
args.add("-other");
args.set(1, "s-pecial");
ParserUtils.setValueForArgument("-foo", "bas", args);
- assertTrue(args.size() == 3);
+ assertEquals(3, args.size());
assertEquals(args.get(0), "-foo");
assertEquals(args.get(1), "bas");
assertEquals(args.get(2), "-other");
-
+
args.remove(1);
ParserUtils.setValueForArgument("-foo", "bas", args);
- assertTrue(args.size() == 3);
+ assertEquals(3, args.size());
assertEquals(args.get(0), "-foo");
assertEquals(args.get(1), "bas");
assertEquals(args.get(2), "-other");
}
-
+ @Test
public void testFromOSGiJarToOSGiInstallArea() {
String path = "";
File result =ParserUtils.fromOSGiJarToOSGiInstallArea(path);
assertNotNull("1.0", result);
-
+
path = "osgi.jar";
result =ParserUtils.fromOSGiJarToOSGiInstallArea(path);
assertNotNull("1.0", result);
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest1.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest1.java
index 81366bca1..11993944a 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest1.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest1.java
@@ -13,20 +13,19 @@
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.assertEquals;
+
import java.io.File;
import java.io.IOException;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
+import org.junit.Test;
import org.osgi.framework.BundleException;
public class ReaderTest1 extends AbstractFwkAdminTest {
private File installFolder = null;
private String launcherName = "eclipse";
- public ReaderTest1(String name) {
- super(name);
- }
-
-
+ @Test
public void testConfigContent() throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException {
startSimpleConfiguratorManipulator();
@@ -42,7 +41,7 @@ public class ReaderTest1 extends AbstractFwkAdminTest {
} catch (IllegalStateException e) {
//TODO We ignore the framework JAR location not set exception
}
- assertEquals(new File(installFolder, "conf"), manipulator.getLauncherData().getFwConfigLocation());
+ assertEquals(new File(installFolder, "conf"), manipulator.getLauncherData().getFwConfigLocation());
assertEquals("bar", manipulator.getConfigData().getProperty("foo"));
}
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest2.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest2.java
index 965a82e3a..45e456bc8 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest2.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest2.java
@@ -13,10 +13,14 @@
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.assertEquals;
+
import java.io.File;
import java.io.IOException;
import java.util.Properties;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
+import org.junit.Before;
+import org.junit.Test;
import org.osgi.framework.BundleException;
public class ReaderTest2 extends AbstractFwkAdminTest {
@@ -24,24 +28,22 @@ public class ReaderTest2 extends AbstractFwkAdminTest {
private File configurationFolder = null;
private String launcherName = "eclipse";
- public ReaderTest2(String name) {
- super(name);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
startSimpleConfiguratorManipulator();
installFolder = Activator.getContext().getDataFile(ReaderTest2.class.getName());
configurationFolder = new File(installFolder, "conf");
- writeEclipseIni(new File(installFolder, "eclipse.ini"), new String[] { "-configuration", configurationFolder.getAbsolutePath() });
+ writeEclipseIni(new File(installFolder, "eclipse.ini"),
+ new String[] { "-configuration", configurationFolder.getAbsolutePath() });
Properties properties = new Properties();
properties.setProperty("foo", "bar");
writeConfigIni(new File(configurationFolder, "config.ini"), properties);
}
- public void testConfigContent() throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException {
+ @Test
+ public void testConfigContent()
+ throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException {
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
Manipulator manipulator = fwkAdmin.getManipulator();
LauncherData launcherData = manipulator.getLauncherData();
@@ -49,10 +51,10 @@ public class ReaderTest2 extends AbstractFwkAdminTest {
try {
manipulator.load();
} catch (IllegalStateException e) {
- //TODO We ignore the framework JAR location not set exception
+ // TODO We ignore the framework JAR location not set exception
}
-
- assertEquals(new File(installFolder, "conf"), manipulator.getLauncherData().getFwConfigLocation());
+
+ assertEquals(new File(installFolder, "conf"), manipulator.getLauncherData().getFwConfigLocation());
assertEquals("bar", manipulator.getConfigData().getProperty("foo"));
}
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest3.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest3.java
index 565e8ca50..4a55e55b5 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest3.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest3.java
@@ -13,19 +13,19 @@
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.assertEquals;
+
import java.io.File;
import java.io.IOException;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
+import org.junit.Test;
import org.osgi.framework.BundleException;
public class ReaderTest3 extends AbstractFwkAdminTest {
private File installFolder = null;
private String launcherName = "eclipse";
- public ReaderTest3(String name) {
- super(name);
- }
-
+ @Test
public void testConfigContent() throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException {
startSimpleConfiguratorManipulator();
@@ -41,7 +41,7 @@ public class ReaderTest3 extends AbstractFwkAdminTest {
} catch (IllegalStateException e) {
//TODO We ignore the framework JAR location not set exception
}
- assertEquals(new File(installFolder, "configuration"), manipulator.getLauncherData().getFwConfigLocation());
+ assertEquals(new File(installFolder, "configuration"), manipulator.getLauncherData().getFwConfigLocation());
assertEquals("bar", manipulator.getConfigData().getProperty("foo"));
}
}
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest4.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest4.java
index 6e36d9bf5..e31a6a360 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest4.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest4.java
@@ -13,11 +13,15 @@
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.assertEquals;
+
import java.io.File;
import java.io.IOException;
import java.util.Properties;
import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
+import org.junit.Before;
+import org.junit.Test;
import org.osgi.framework.BundleException;
public class ReaderTest4 extends AbstractFwkAdminTest {
@@ -25,24 +29,23 @@ public class ReaderTest4 extends AbstractFwkAdminTest {
private File configurationFolder = null;
private String launcherName = "eclipse";
- public ReaderTest4(String name) {
- super(name);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
startSimpleConfiguratorManipulator();
installFolder = Activator.getContext().getDataFile(ReaderTest4.class.getName());
configurationFolder = new File(installFolder, "conf");
- writeEclipseIni(new File(installFolder, "eclipse.ini"), new String[] { "-install", installFolder.getAbsolutePath(), "-configuration", URIUtil.toUnencodedString(URIUtil.makeRelative(configurationFolder.toURI(), installFolder.toURI())) });
+ writeEclipseIni(new File(installFolder, "eclipse.ini"), new String[] { "-install",
+ installFolder.getAbsolutePath(), "-configuration",
+ URIUtil.toUnencodedString(URIUtil.makeRelative(configurationFolder.toURI(), installFolder.toURI())) });
Properties properties = new Properties();
properties.setProperty("foo", "bar");
writeConfigIni(new File(configurationFolder, "config.ini"), properties);
}
- public void testConfigContent() throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException {
+ @Test
+ public void testConfigContent()
+ throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException {
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
Manipulator manipulator = fwkAdmin.getManipulator();
LauncherData launcherData = manipulator.getLauncherData();
@@ -50,10 +53,10 @@ public class ReaderTest4 extends AbstractFwkAdminTest {
try {
manipulator.load();
} catch (IllegalStateException e) {
- //TODO We ignore the framework JAR location not set exception
+ // TODO We ignore the framework JAR location not set exception
}
-
- assertEquals(new File(installFolder, "conf"), manipulator.getLauncherData().getFwConfigLocation());
+
+ assertEquals(new File(installFolder, "conf"), manipulator.getLauncherData().getFwConfigLocation());
assertEquals("bar", manipulator.getConfigData().getProperty("foo"));
}
}
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest5.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest5.java
index 97dd19d12..3f9d9d9bb 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest5.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTest5.java
@@ -13,10 +13,14 @@
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.assertEquals;
+
import java.io.File;
import java.io.IOException;
import java.util.Properties;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
+import org.junit.Before;
+import org.junit.Test;
import org.osgi.framework.BundleException;
public class ReaderTest5 extends AbstractFwkAdminTest {
@@ -24,24 +28,22 @@ public class ReaderTest5 extends AbstractFwkAdminTest {
private File configurationFolder = null;
private String launcherName = "eclipse";
- public ReaderTest5(String name) {
- super(name);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
startSimpleConfiguratorManipulator();
installFolder = Activator.getContext().getDataFile(ReaderTest5.class.getName());
configurationFolder = new File(installFolder, "configuration");
- writeEclipseIni(new File(installFolder, "eclipse.ini"), new String[] { "-install", installFolder.getAbsolutePath()});
+ writeEclipseIni(new File(installFolder, "eclipse.ini"),
+ new String[] { "-install", installFolder.getAbsolutePath() });
Properties properties = new Properties();
properties.setProperty("foo", "bar");
writeConfigIni(new File(configurationFolder, "config.ini"), properties);
}
- public void testConfigContent() throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException {
+ @Test
+ public void testConfigContent()
+ throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException {
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
Manipulator manipulator = fwkAdmin.getManipulator();
LauncherData launcherData = manipulator.getLauncherData();
@@ -49,16 +51,11 @@ public class ReaderTest5 extends AbstractFwkAdminTest {
try {
manipulator.load();
} catch (IllegalStateException e) {
- //TODO We ignore the framework JAR location not set exception
+ // TODO We ignore the framework JAR location not set exception
}
-
- assertEquals(configurationFolder, manipulator.getLauncherData().getFwConfigLocation());
- assertEquals("bar", manipulator.getConfigData(). getProperty("foo"));
- }
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
+ assertEquals(configurationFolder, manipulator.getLauncherData().getFwConfigLocation());
+ assertEquals("bar", manipulator.getConfigData().getProperty("foo"));
}
}
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTestBug267850.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTestBug267850.java
index 394c9b3d6..0e2b8a066 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTestBug267850.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTestBug267850.java
@@ -13,19 +13,19 @@
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.assertEquals;
+
import java.io.File;
import java.io.IOException;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
+import org.junit.Test;
import org.osgi.framework.BundleException;
public class ReaderTestBug267850 extends AbstractFwkAdminTest {
private File installFolder = null;
private String launcherName = "eclipse";
- public ReaderTestBug267850(String name) {
- super(name);
- }
-
+ @Test
public void testConfigContent() throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException {
startSimpleConfiguratorManipulator();
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTestBug285935.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTestBug285935.java
index 3963a9c25..416a56924 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTestBug285935.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/ReaderTestBug285935.java
@@ -13,19 +13,19 @@
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.assertEquals;
+
import java.io.File;
import java.io.IOException;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
+import org.junit.Test;
import org.osgi.framework.BundleException;
public class ReaderTestBug285935 extends AbstractFwkAdminTest {
private File installFolder = null;
private String launcherName = "eclipse";
- public ReaderTestBug285935(String name) {
- super(name);
- }
-
+ @Test
public void testConfigContent() throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException {
startSimpleConfiguratorManipulator();
@@ -41,7 +41,7 @@ public class ReaderTestBug285935 extends AbstractFwkAdminTest {
} catch (IllegalStateException e) {
//TODO We ignore the framework JAR location not set exception
}
- assertEquals(new File(installFolder, "conf"), manipulator.getLauncherData().getFwConfigLocation());
+ assertEquals(new File(installFolder, "conf"), manipulator.getLauncherData().getFwConfigLocation());
assertEquals("bar", manipulator.getConfigData().getProperty("foo"));
}
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/RelativePathTest.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/RelativePathTest.java
index 666606381..b7cbecbf9 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/RelativePathTest.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/RelativePathTest.java
@@ -13,7 +13,10 @@
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
-import java.io.*;
+import static org.junit.Assert.assertEquals;
+
+import java.io.File;
+import java.io.FileOutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import org.eclipse.core.runtime.FileLocator;
@@ -21,25 +24,25 @@ import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.frameworkadmin.equinox.EquinoxManipulatorImpl;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
+import org.junit.Test;
public class RelativePathTest extends FwkAdminAndSimpleConfiguratorTest {
/** Constant value indicating if the current platform is Windows */
private static final boolean WINDOWS = java.io.File.separatorChar == '\\';
- public RelativePathTest(String name) throws Exception {
- super(name);
- }
-
+ @Test
public void testRelativePaths() throws Exception {
File installFolder = Activator.getContext().getDataFile(RelativePathTest.class.getName());
- //First we copy some jars into a well
+ // First we copy some jars into a well
File osgiJar = new File(installFolder, "plugins/org.eclipse.osgi.jar");
osgiJar.getParentFile().mkdirs();
File scJar = new File(installFolder, "plugins/org.eclipse.equinox.simpleconfigurator.jar");
- copyStream(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar").openStream(), true, new FileOutputStream(osgiJar), true);
- copyStream(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar").openStream(), true, new FileOutputStream(scJar), true);
+ copyStream(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar").openStream(), true,
+ new FileOutputStream(osgiJar), true);
+ copyStream(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar")
+ .openStream(), true, new FileOutputStream(scJar), true);
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
Manipulator manipulator = fwkAdmin.getManipulator();
@@ -53,33 +56,35 @@ public class RelativePathTest extends FwkAdminAndSimpleConfiguratorTest {
try {
manipulator.load();
} catch (IllegalStateException e) {
- //TODO We ignore the framework JAR location not set exception
+ // TODO We ignore the framework JAR location not set exception
}
BundleInfo osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1", osgiJar.toURI(), 0, true);
- BundleInfo configuratorBi = new BundleInfo("org.eclipse.equinox.simpleconfigurator", "1.0.0", scJar.toURI(), 1, true);
+ BundleInfo configuratorBi = new BundleInfo("org.eclipse.equinox.simpleconfigurator", "1.0.0", scJar.toURI(), 1,
+ true);
manipulator.getConfigData().addBundle(osgiBi);
manipulator.getConfigData().addBundle(configuratorBi);
- try {
- manipulator.save(false);
- } catch (IOException e) {
- fail("Error while persisting");
- } catch (FrameworkAdminRuntimeException e) {
- fail("Error while persisting");
- }
+ manipulator.save(false);
- //":path.jar" is a poor man approach to test relative paths
+ // ":path.jar" is a poor man approach to test relative paths
assertNotContent(new File(configurationFolder, "config.ini"), installFolder.getAbsolutePath());
- assertNotContent(new File(configurationFolder, "org.eclipse.equinox.simpleconfigurator/bundles.info"), installFolder.getAbsolutePath());
+ assertNotContent(new File(configurationFolder, "org.eclipse.equinox.simpleconfigurator/bundles.info"),
+ installFolder.getAbsolutePath());
assertContent(new File(configurationFolder, "config.ini"), ":org.eclipse.equinox.simpleconfigurator.jar");
- //Note: This is testing for old style bundle locations
- assertContent(new File(configurationFolder, "org.eclipse.equinox.simpleconfigurator/bundles.info"), "file:plugins/org.eclipse.equinox.simpleconfigurator.jar");
- assertContent(new File(configurationFolder, "org.eclipse.equinox.simpleconfigurator/bundles.info"), "file:plugins/org.eclipse.osgi.jar");
-
- BundleInfo bi = new BundleInfo(URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/bundle_1"))), 2, false);
+ // Note: This is testing for old style bundle locations
+ assertContent(new File(configurationFolder, "org.eclipse.equinox.simpleconfigurator/bundles.info"),
+ "file:plugins/org.eclipse.equinox.simpleconfigurator.jar");
+ assertContent(new File(configurationFolder, "org.eclipse.equinox.simpleconfigurator/bundles.info"),
+ "file:plugins/org.eclipse.osgi.jar");
+
+ BundleInfo bi = new BundleInfo(
+ URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/bundle_1"))), 2,
+ false);
manipulator.getConfigData().addBundle(bi);
manipulator.save(false);
- // assertContent(new File(configurationFolder, "org.eclipse.equinox.simpleconfigurator/bundles.info"), FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/bundle_1")).toExternalForm());
+ // assertContent(new File(configurationFolder,
+ // "org.eclipse.equinox.simpleconfigurator/bundles.info"),
+ // FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/bundle_1")).toExternalForm());
Manipulator newManipulator = fwkAdmin.getManipulator();
LauncherData newLauncherData = newManipulator.getLauncherData();
@@ -88,49 +93,40 @@ public class RelativePathTest extends FwkAdminAndSimpleConfiguratorTest {
try {
manipulator.load();
} catch (IllegalStateException e) {
- //TODO We ignore the framework JAR location not set exception
+ // TODO We ignore the framework JAR location not set exception
}
}
- public void testMakeRelative_NonWindows() {
+ @Test
+ public void testMakeRelative_NonWindows() throws MalformedURLException {
if (WINDOWS)
return;
- URL base = null;
- try {
- base = new URL("file:/eclipse/");
- } catch (MalformedURLException e) {
- e.printStackTrace();
- fail("0.98");
- }
+ URL base = new URL("file:/eclipse/");
// data - [0] is the test data and [1] is the expected result
String[][] data = new String[][] { //
- new String[] {"file:/home/eclipse/foo.jar", "file:../home/eclipse/foo.jar"}, //
- new String[] {"file:///home/eclipse/foo.jar", "file:../home/eclipse/foo.jar"}, //
+ new String[] { "file:/home/eclipse/foo.jar", "file:../home/eclipse/foo.jar" }, //
+ new String[] { "file:///home/eclipse/foo.jar", "file:../home/eclipse/foo.jar" }, //
};
for (int i = 0; i < data.length; i++)
assertEquals("1." + i, data[i][1], EquinoxManipulatorImpl.makeRelative(data[i][0], base));
}
- public void testMakeRelative_Windows() {
+ @Test
+ public void testMakeRelative_Windows() throws MalformedURLException {
if (!WINDOWS)
return;
- URL base = null;
// platform specific data
- try {
- base = new URL("file:/c:/a/eclipse/");
- } catch (MalformedURLException e) {
- e.printStackTrace();
- fail("0.99");
- }
+ URL base = new URL("file:/c:/a/eclipse/");
// data - [0] is the test data and [1] is the expected result
- String[][] data = new String[][] {new String[] {"file:c:/b/shared/plugins/bar.jar", "file:../../b/shared/plugins/bar.jar"}, //
- new String[] {"file:d:/b/shared/plugins/bar.jar", "file:d:/b/shared/plugins/bar.jar"}, //
- new String[] {"file:/c:/a/eclipse/plugins/bar.jar", "file:plugins/bar.jar"}, //
- new String[] {"file:c:/a/eclipse/plugins/bar.jar", "file:plugins/bar.jar"}, //
- new String[] {"file:/c:/a/shared/plugins/bar.jar", "file:../shared/plugins/bar.jar"}, //
- new String[] {"file:/d:/a/eclipse/plugins/bar.jar", "file:/d:/a/eclipse/plugins/bar.jar"}, //
- new String[] {"file:/c:/x/eclipse/plugins/bar.jar", "file:../../x/eclipse/plugins/bar.jar"}, //
+ String[][] data = new String[][] {
+ new String[] { "file:c:/b/shared/plugins/bar.jar", "file:../../b/shared/plugins/bar.jar" }, //
+ new String[] { "file:d:/b/shared/plugins/bar.jar", "file:d:/b/shared/plugins/bar.jar" }, //
+ new String[] { "file:/c:/a/eclipse/plugins/bar.jar", "file:plugins/bar.jar" }, //
+ new String[] { "file:c:/a/eclipse/plugins/bar.jar", "file:plugins/bar.jar" }, //
+ new String[] { "file:/c:/a/shared/plugins/bar.jar", "file:../shared/plugins/bar.jar" }, //
+ new String[] { "file:/d:/a/eclipse/plugins/bar.jar", "file:/d:/a/eclipse/plugins/bar.jar" }, //
+ new String[] { "file:/c:/x/eclipse/plugins/bar.jar", "file:../../x/eclipse/plugins/bar.jar" }, //
};
for (int i = 0; i < data.length; i++)
assertEquals("2." + i, data[i][1], EquinoxManipulatorImpl.makeRelative(data[i][0], base));
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/RemovingABundle.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/RemovingABundle.java
index a58ccfffe..15315d17f 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/RemovingABundle.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/RemovingABundle.java
@@ -13,33 +13,40 @@
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.assertTrue;
+
import java.io.File;
import java.io.IOException;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
+import org.junit.Before;
+import org.junit.Test;
import org.osgi.framework.BundleException;
public class RemovingABundle extends FwkAdminAndSimpleConfiguratorTest {
- public RemovingABundle(String name) {
- super(name);
- }
-
@Override
- protected void setUp() throws Exception {
+ @Before
+ public void setUp() throws Exception {
super.setUp();
Manipulator manipulator = createMinimalConfiguration(RemovingABundle.class.getName());
- manipulator.getConfigData().addBundle(new BundleInfo("bundle_1", "1.0.0", URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/bundle_1"))), 4, false));
+ manipulator.getConfigData()
+ .addBundle(new BundleInfo("bundle_1", "1.0.0",
+ URIUtil.toURI(
+ FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/bundle_1"))),
+ 4, false));
manipulator.save(false);
- File fooINI = new File(getInstallFolder(), getLauncherName() +".ini");
- assertEquals(fooINI.exists(), true);
+ File fooINI = new File(getInstallFolder(), getLauncherName() + ".ini");
+ assertTrue(fooINI.exists());
assertContent(getBundleTxt(), "bundle_1");
}
-
- public void testRemoveBundleWithoutURL() throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException {
+
+ @Test
+ public void testRemoveBundleWithoutURL()
+ throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException {
Manipulator m2 = getEquinoxFrameworkAdmin().getManipulator();
LauncherData launcherData2 = m2.getLauncherData();
@@ -49,7 +56,7 @@ public class RemovingABundle extends FwkAdminAndSimpleConfiguratorTest {
try {
m2.load();
} catch (IllegalStateException e) {
- //TODO We ignore the framework JAR location not set exception
+ // TODO We ignore the framework JAR location not set exception
}
BundleInfo info = new BundleInfo("bundle_1", "1.0.0", null, 0, false);
m2.getConfigData().removeBundle(info);
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/RemovingAllBundles.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/RemovingAllBundles.java
index 2d933b977..e972393cb 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/RemovingAllBundles.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/RemovingAllBundles.java
@@ -13,6 +13,9 @@
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
@@ -20,15 +23,14 @@ import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
+import org.junit.Test;
import org.osgi.framework.BundleException;
public class RemovingAllBundles extends AbstractFwkAdminTest {
- public RemovingAllBundles(String name) {
- super(name);
- }
-
- public void testConfigFiles() throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException, URISyntaxException {
+ @Test
+ public void testConfigFiles() throws IllegalStateException, FrameworkAdminRuntimeException, IOException,
+ BundleException, URISyntaxException {
startSimpleConfiguratorManipulator();
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
Manipulator manipulator = fwkAdmin.getManipulator();
@@ -43,11 +45,17 @@ public class RemovingAllBundles extends AbstractFwkAdminTest {
try {
manipulator.load();
} catch (IllegalStateException e) {
- //TODO We ignore the framework JAR location not set exception
+ // TODO We ignore the framework JAR location not set exception
}
- BundleInfo osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1", URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar"))), 0, true);
- BundleInfo configuratorBi = new BundleInfo("org.eclipse.equinox.simpleconfigurator", "1.0.0", URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar"))), 1, true);
+ BundleInfo osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1",
+ URIUtil.toURI(FileLocator
+ .resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar"))),
+ 0, true);
+ BundleInfo configuratorBi = new BundleInfo(
+ "org.eclipse.equinox.simpleconfigurator", "1.0.0", URIUtil.toURI(FileLocator.resolve(Activator
+ .getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar"))),
+ 1, true);
manipulator.getConfigData().addBundle(osgiBi);
manipulator.getConfigData().addBundle(configuratorBi);
@@ -55,7 +63,7 @@ public class RemovingAllBundles extends AbstractFwkAdminTest {
manipulator.save(false);
File fooINI = new File(installFolder, "foo.ini");
- assertEquals(fooINI.exists(), true);
+ assertTrue(fooINI.exists());
Manipulator m2 = fwkAdmin.getManipulator();
@@ -66,7 +74,7 @@ public class RemovingAllBundles extends AbstractFwkAdminTest {
try {
m2.load();
} catch (IllegalStateException e) {
- //TODO We ignore the framework JAR location not set exception
+ // TODO We ignore the framework JAR location not set exception
}
BundleInfo[] infos = m2.getConfigData().getBundles();
@@ -75,6 +83,6 @@ public class RemovingAllBundles extends AbstractFwkAdminTest {
}
m2.save(false);
- assertEquals(new File(configurationFolder + "/org.eclipse.equinox.simpleconfigurator", "bundles.info").exists(), false);
+ assertFalse(new File(configurationFolder + "/org.eclipse.equinox.simpleconfigurator", "bundles.info").exists());
}
}
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/RenamingLauncherIni.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/RenamingLauncherIni.java
index 36d664ea3..d676aee98 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/RenamingLauncherIni.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/RenamingLauncherIni.java
@@ -13,6 +13,8 @@
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.assertTrue;
+
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
@@ -20,14 +22,12 @@ import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
+import org.junit.Test;
import org.osgi.framework.BundleException;
public class RenamingLauncherIni extends AbstractFwkAdminTest {
- public RenamingLauncherIni(String name) {
- super(name);
- }
-
+ @Test
public void testConfigFiles() throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException, URISyntaxException {
startSimpleConfiguratorManipulator();
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
@@ -55,7 +55,7 @@ public class RenamingLauncherIni extends AbstractFwkAdminTest {
manipulator.save(false);
File fooINI = new File(installFolder, "foo.ini");
- assertEquals(fooINI.exists(), true);
+ assertTrue(fooINI.exists());
Manipulator m2 = fwkAdmin.getManipulator();
@@ -71,6 +71,6 @@ public class RenamingLauncherIni extends AbstractFwkAdminTest {
launcherData2.setLauncher(new File(installFolder, "foo"));
m2.save(false);
- assertEquals(new File(installFolder, "foo.ini").exists(), true);
+ assertTrue(new File(installFolder, "foo.ini").exists());
}
}
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/SharedConfigurationTest.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/SharedConfigurationTest.java
index b873d4d72..011f8e82b 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/SharedConfigurationTest.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/SharedConfigurationTest.java
@@ -14,6 +14,8 @@
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.*;
+
import java.io.*;
import java.net.URISyntaxException;
import java.util.Properties;
@@ -24,26 +26,30 @@ import org.eclipse.equinox.internal.frameworkadmin.equinox.Log;
import org.eclipse.equinox.internal.frameworkadmin.equinox.Messages;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
import org.eclipse.osgi.util.NLS;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestName;
import org.osgi.framework.BundleException;
import org.osgi.service.log.LogService;
public class SharedConfigurationTest extends AbstractFwkAdminTest {
private static final String BASE_CONFIG_INI_TIMESTAMP = ".baseConfigIniTimestamp";
+ @Rule
+ public TestName name = new TestName();
- public SharedConfigurationTest(String name) {
- super(name);
- }
-
- public void testDefaultConfiguration() throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException {
+ @Test
+ public void testDefaultConfiguration()
+ throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException {
startSimpleConfiguratorManipulator();
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
Manipulator manipulator = fwkAdmin.getManipulator();
- File installFolder = Activator.getContext().getDataFile(getName());
+ File installFolder = Activator.getContext().getDataFile(name.getMethodName());
File defaultConfigurationFolder = new File(installFolder, "configuration");
defaultConfigurationFolder.mkdirs();
- copy("creating shared config.ini", getTestData("", "dataFile/sharedconfiguration/config.ini"), new File(defaultConfigurationFolder, "config.ini"));
+ copy("creating shared config.ini", getTestData("", "dataFile/sharedconfiguration/config.ini"),
+ new File(defaultConfigurationFolder, "config.ini"));
String launcherName = "foo";
@@ -54,25 +60,29 @@ public class SharedConfigurationTest extends AbstractFwkAdminTest {
try {
manipulator.load();
} catch (IllegalStateException e) {
- //TODO We ignore the framework JAR location not set exception
+ // TODO We ignore the framework JAR location not set exception
}
assertEquals("false", manipulator.getConfigData().getProperty("config.shared"));
assertEquals("true", manipulator.getConfigData().getProperty("from.parent"));
}
- public void testSharedConfiguration() throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException {
+ @Test
+ public void testSharedConfiguration()
+ throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException {
startSimpleConfiguratorManipulator();
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
Manipulator manipulator = fwkAdmin.getManipulator();
- File installFolder = Activator.getContext().getDataFile(getName());
+ File installFolder = Activator.getContext().getDataFile(name.getMethodName());
File defaultConfigurationFolder = new File(installFolder, "configuration");
defaultConfigurationFolder.mkdirs();
- copy("creating shared config.ini", getTestData("", "dataFile/sharedconfiguration/config.ini"), new File(defaultConfigurationFolder, "config.ini"));
+ copy("creating shared config.ini", getTestData("", "dataFile/sharedconfiguration/config.ini"),
+ new File(defaultConfigurationFolder, "config.ini"));
File userConfigurationFolder = new File(installFolder, "user/configuration");
userConfigurationFolder.mkdirs();
- copy("creating shared config.ini", getTestData("", "dataFile/sharedconfiguration/user-config.ini"), new File(userConfigurationFolder, "config.ini"));
+ copy("creating shared config.ini", getTestData("", "dataFile/sharedconfiguration/user-config.ini"),
+ new File(userConfigurationFolder, "config.ini"));
String launcherName = "foo";
@@ -83,25 +93,29 @@ public class SharedConfigurationTest extends AbstractFwkAdminTest {
try {
manipulator.load();
} catch (IllegalStateException e) {
- //TODO We ignore the framework JAR location not set exception
+ // TODO We ignore the framework JAR location not set exception
}
assertEquals("true", manipulator.getConfigData().getProperty("config.shared"));
assertEquals("true", manipulator.getConfigData().getProperty("from.parent"));
}
- public void testNotSharedConfiguration() throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException {
+ @Test
+ public void testNotSharedConfiguration()
+ throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException {
startSimpleConfiguratorManipulator();
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
Manipulator manipulator = fwkAdmin.getManipulator();
- File installFolder = Activator.getContext().getDataFile(getName());
+ File installFolder = Activator.getContext().getDataFile(name.getMethodName());
File defaultConfigurationFolder = new File(installFolder, "configuration");
defaultConfigurationFolder.mkdirs();
- copy("creating shared config.ini", getTestData("", "dataFile/sharedconfiguration/config.ini"), new File(defaultConfigurationFolder, "config.ini"));
+ copy("creating shared config.ini", getTestData("", "dataFile/sharedconfiguration/config.ini"),
+ new File(defaultConfigurationFolder, "config.ini"));
File userConfigurationFolder = new File(installFolder, "user/configuration");
userConfigurationFolder.mkdirs();
- copy("creating shared config.ini", getTestData("", "dataFile/sharedconfiguration/user-noshare-config.ini"), new File(userConfigurationFolder, "config.ini"));
+ copy("creating shared config.ini", getTestData("", "dataFile/sharedconfiguration/user-noshare-config.ini"),
+ new File(userConfigurationFolder, "config.ini"));
String launcherName = "foo";
@@ -112,25 +126,29 @@ public class SharedConfigurationTest extends AbstractFwkAdminTest {
try {
manipulator.load();
} catch (IllegalStateException e) {
- //TODO We ignore the framework JAR location not set exception
+ // TODO We ignore the framework JAR location not set exception
}
assertEquals("false", manipulator.getConfigData().getProperty("config.shared"));
assertEquals(null, manipulator.getConfigData().getProperty("from.parent"));
}
- public void testConfigIniTimestamp() throws BundleException, FrameworkAdminRuntimeException, IOException, URISyntaxException {
+ @Test
+ public void testConfigIniTimestamp()
+ throws BundleException, FrameworkAdminRuntimeException, IOException, URISyntaxException {
startSimpleConfiguratorManipulator();
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
Manipulator manipulator = fwkAdmin.getManipulator();
- File installFolder = Activator.getContext().getDataFile(getName());
+ File installFolder = Activator.getContext().getDataFile(name.getMethodName());
File defaultConfigurationFolder = new File(installFolder, "configuration");
defaultConfigurationFolder.mkdirs();
- copy("creating shared config.ini", getTestData("", "dataFile/sharedconfiguration/config.ini"), new File(defaultConfigurationFolder, "config.ini"));
+ copy("creating shared config.ini", getTestData("", "dataFile/sharedconfiguration/config.ini"),
+ new File(defaultConfigurationFolder, "config.ini"));
File userConfigurationFolder = new File(installFolder, "user/configuration");
userConfigurationFolder.mkdirs();
- copy("creating shared config.ini", getTestData("", "dataFile/sharedconfiguration/user-config.ini"), new File(userConfigurationFolder, "config.ini"));
+ copy("creating shared config.ini", getTestData("", "dataFile/sharedconfiguration/user-config.ini"),
+ new File(userConfigurationFolder, "config.ini"));
String launcherName = "foo";
@@ -142,38 +160,57 @@ public class SharedConfigurationTest extends AbstractFwkAdminTest {
manipulator.load();
} catch (IllegalStateException e) {
e.printStackTrace();
- //TODO We ignore the framework JAR location not set exception
+ // TODO We ignore the framework JAR location not set exception
}
- BundleInfo osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1", URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar"))), 0, true);
- BundleInfo configuratorBi = new BundleInfo("org.eclipse.equinox.simpleconfigurator", "1.0.0", URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar"))), 1, true);
+ BundleInfo osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1",
+ URIUtil.toURI(FileLocator
+ .resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar"))),
+ 0, true);
+ BundleInfo configuratorBi = new BundleInfo(
+ "org.eclipse.equinox.simpleconfigurator", "1.0.0", URIUtil.toURI(FileLocator.resolve(Activator
+ .getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar"))),
+ 1, true);
manipulator.getConfigData().addBundle(osgiBi);
manipulator.getConfigData().addBundle(configuratorBi);
manipulator.save(false);
File baseTimestamp = new File(userConfigurationFolder, BASE_CONFIG_INI_TIMESTAMP);
- assertIsFile(baseTimestamp);
+ assertTrue(baseTimestamp.exists());
+ assertTrue(baseTimestamp.isFile());
assertContent(baseTimestamp, Long.toString(new File(defaultConfigurationFolder, "config.ini").lastModified()));
}
- public void testConfigurationIgnoredWhenChanged() throws BundleException, FrameworkAdminRuntimeException, IOException {
+ @Test
+ public void testConfigurationIgnoredWhenChanged()
+ throws BundleException, FrameworkAdminRuntimeException, IOException {
startSimpleConfiguratorManipulator();
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
Manipulator manipulator = fwkAdmin.getManipulator();
- //setup the files
- File installFolder = Activator.getContext().getDataFile(getName());
+ // setup the files
+ File installFolder = Activator.getContext().getDataFile(name.getMethodName());
File defaultConfigurationFolder = new File(installFolder, "configuration");
defaultConfigurationFolder.mkdirs();
- copy("creating shared config.ini", getTestData("", "dataFile/sharedconfiguration/ignoreUserConfig/config.ini"), new File(defaultConfigurationFolder, "config.ini"));
+ copy("creating shared config.ini", getTestData("", "dataFile/sharedconfiguration/ignoreUserConfig/config.ini"),
+ new File(defaultConfigurationFolder, "config.ini"));
File userConfigurationFolder = new File(installFolder, "user/configuration");
userConfigurationFolder.mkdirs();
- copy("creating shared config.ini", getTestData("", "dataFile/sharedconfiguration/ignoreUserConfig/user-config.ini"), new File(userConfigurationFolder, "config.ini"));
-
- //setup the timestamp
+ copy("creating shared config.ini",
+ getTestData("", "dataFile/sharedconfiguration/ignoreUserConfig/user-config.ini"),
+ new File(userConfigurationFolder, "config.ini"));
+
+ // setup the timestamp
Properties p = new Properties();
- p.setProperty("configIniTimestamp", Long.toString(new File(defaultConfigurationFolder, "config.ini").lastModified() - 10)); //Here we write an outdated timestamp to mimic the fact that the base has changed
+ p.setProperty("configIniTimestamp",
+ Long.toString(new File(defaultConfigurationFolder, "config.ini").lastModified() - 10)); // Here we write
+ // an outdated
+ // timestamp to
+ // mimic the
+ // fact that the
+ // base has
+ // changed
saveProperties(new File(userConfigurationFolder, BASE_CONFIG_INI_TIMESTAMP), p);
String launcherName = "foo";
@@ -185,7 +222,7 @@ public class SharedConfigurationTest extends AbstractFwkAdminTest {
try {
manipulator.load();
} catch (IllegalStateException e) {
- //TODO We ignore the framework JAR location not set exception
+ // TODO We ignore the framework JAR location not set exception
}
assertNull(manipulator.getConfigData().getProperty("userKey"));
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/SimpleConfiguratorComingAndGoing.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/SimpleConfiguratorComingAndGoing.java
index 0b39fe925..dfcafa998 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/SimpleConfiguratorComingAndGoing.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/SimpleConfiguratorComingAndGoing.java
@@ -13,6 +13,8 @@
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.assertFalse;
+
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
@@ -20,23 +22,25 @@ import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
+import org.junit.Before;
+import org.junit.Test;
import org.osgi.framework.BundleException;
public class SimpleConfiguratorComingAndGoing extends FwkAdminAndSimpleConfiguratorTest {
Manipulator m = null;
- public SimpleConfiguratorComingAndGoing(String name) {
- super(name);
- }
-
@Override
- protected void setUp() throws Exception {
+ @Before
+ public void setUp() throws Exception {
super.setUp();
m = createMinimalConfiguration(SimpleConfiguratorComingAndGoing.class.getName());
}
+ @Test
public void testWithMutipleBundles() throws IOException, BundleException, URISyntaxException {
- BundleInfo bi = new BundleInfo(URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/bundle_1"))), 2, false);
+ BundleInfo bi = new BundleInfo(
+ URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/bundle_1"))), 2,
+ false);
m.getConfigData().addBundle(bi);
m.save(false);
@@ -48,7 +52,7 @@ public class SimpleConfiguratorComingAndGoing extends FwkAdminAndSimpleConfigura
}
m.save(false);
- assertNothing(getBundleTxt());
+ assertFalse(getBundleTxt().exists());
assertContent(getConfigIni(), "bundle_1");
assertContent(getConfigIni(), "org.eclipse.osgi");
@@ -61,10 +65,12 @@ public class SimpleConfiguratorComingAndGoing extends FwkAdminAndSimpleConfigura
try {
newManipulator.load();
} catch (IllegalStateException e) {
- //TODO We ignore the framework JAR location not set exception
+ // TODO We ignore the framework JAR location not set exception
}
- newManipulator.getConfigData().addBundle(new BundleInfo(URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar"))), 1, true));
+ newManipulator.getConfigData().addBundle(new BundleInfo(URIUtil.toURI(FileLocator.resolve(
+ Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar"))), 1,
+ true));
newManipulator.save(false);
assertContent(getBundleTxt(), "org.eclipse.osgi");
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/SimpleConfiguratorTest.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/SimpleConfiguratorTest.java
index f369f4e50..e2b8393a5 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/SimpleConfiguratorTest.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/SimpleConfiguratorTest.java
@@ -13,24 +13,25 @@
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
-import java.net.URI;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import java.io.File;
import java.io.IOException;
+import java.net.URI;
import java.net.URISyntaxException;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
+import org.junit.Test;
import org.osgi.framework.BundleException;
public class SimpleConfiguratorTest extends AbstractFwkAdminTest {
- public SimpleConfiguratorTest(String name) {
- super(name);
- }
-
- public void testConfigFiles() throws IllegalStateException, FrameworkAdminRuntimeException, IOException, BundleException, URISyntaxException {
+ @Test
+ public void testConfigFiles() throws IllegalStateException, FrameworkAdminRuntimeException, IOException,
+ BundleException, URISyntaxException {
startSimpleConfiguratorManipulator();
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
Manipulator manipulator = fwkAdmin.getManipulator();
@@ -45,11 +46,17 @@ public class SimpleConfiguratorTest extends AbstractFwkAdminTest {
try {
manipulator.load();
} catch (IllegalStateException e) {
- //TODO We ignore the framework JAR location not set exception
+ // TODO We ignore the framework JAR location not set exception
}
- BundleInfo osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1", URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar"))), 0, true);
- BundleInfo configuratorBi = new BundleInfo("org.eclipse.equinox.simpleconfigurator", "1.0.0", URIUtil.toURI(FileLocator.resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar"))), 1, true);
+ BundleInfo osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1",
+ URIUtil.toURI(FileLocator
+ .resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar"))),
+ 0, true);
+ BundleInfo configuratorBi = new BundleInfo(
+ "org.eclipse.equinox.simpleconfigurator", "1.0.0", URIUtil.toURI(FileLocator.resolve(Activator
+ .getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar"))),
+ 1, true);
manipulator.getConfigData().addBundle(osgiBi);
manipulator.getConfigData().addBundle(configuratorBi);
@@ -64,20 +71,22 @@ public class SimpleConfiguratorTest extends AbstractFwkAdminTest {
assertContent(configINI, "org.eclipse.equinox.simpleconfigurator");
}
+ @Test
public void testBundleInfoEquals() throws Exception {
BundleInfo b1 = new BundleInfo("org.foo", "3.1.0", new URI("plugins/org.foo_3.1.0"), -1, false);
BundleInfo b2 = new BundleInfo("org.foo", "3.1.0", null, -1, false);
- BundleInfo b3 = new BundleInfo("org.foo", "3.1.0", URIUtil.fromString("C:/sp ace/plugins/org.foo_3.1.0"), -1, false);
-
+ BundleInfo b3 = new BundleInfo("org.foo", "3.1.0", URIUtil.fromString("C:/sp ace/plugins/org.foo_3.1.0"), -1,
+ false);
+
assertEquals(b1, b2);
assertFalse(b1.equals(b3));
-
+
b1.setBaseLocation(URIUtil.fromString("C:/sp ace"));
assertEquals(b1, b3);
-
+
b3.setBaseLocation(URIUtil.fromString("C:/sp ace"));
assertEquals(b1, b3);
-
+
b3.setVersion(null);
b1.setVersion("0.0.0");
assertEquals(b1, b3);
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/TestEclipseDataArea.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/TestEclipseDataArea.java
index e8ee45ab1..9025738c5 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/TestEclipseDataArea.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/TestEclipseDataArea.java
@@ -15,20 +15,20 @@ package org.eclipse.equinox.frameworkadmin.tests;
import java.io.File;
import java.io.IOException;
import org.eclipse.equinox.internal.provisional.frameworkadmin.Manipulator;
+import org.junit.After;
+import org.junit.Test;
public class TestEclipseDataArea extends FwkAdminAndSimpleConfiguratorTest {
Manipulator m = null;
- public TestEclipseDataArea(String name) {
- super(name);
- }
-
@Override
- protected void setUp() throws Exception {
+ @After
+ public void setUp() throws Exception {
super.setUp();
m = createMinimalConfiguration(TestEclipseDataArea.class.getName());
}
+ @Test
public void testp2DataArea() throws IOException {
m.getConfigData().setProperty("eclipse.p2.data.area", "@config.dir/../p2");
m.save(false);
@@ -37,14 +37,16 @@ public class TestEclipseDataArea extends FwkAdminAndSimpleConfiguratorTest {
m.save(false);
assertContent(getConfigIni(), "@config.dir/../p2");
- m.getConfigData().setProperty("eclipse.p2.data.area", new File(getConfigurationFolder(), "p2").getAbsoluteFile().toURI().toString());
+ m.getConfigData().setProperty("eclipse.p2.data.area",
+ new File(getConfigurationFolder(), "p2").getAbsoluteFile().toURI().toString());
m.save(false);
assertContent(getConfigIni(), "@config.dir/p2");
m.load();
m.save(false);
assertContent(getConfigIni(), "@config.dir/p2");
- m.getConfigData().setProperty("eclipse.p2.data.area", new File(getConfigurationFolder(), "../p2").getAbsoluteFile().toURI().toString());
+ m.getConfigData().setProperty("eclipse.p2.data.area",
+ new File(getConfigurationFolder(), "../p2").getAbsoluteFile().toURI().toString());
m.save(false);
assertContent(getConfigIni(), "@config.dir/../p2");
m.load();
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/TestRunningInstance.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/TestRunningInstance.java
index c1cb1f42b..7c80f8a40 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/TestRunningInstance.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/TestRunningInstance.java
@@ -7,34 +7,35 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
import org.eclipse.core.runtime.Platform;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.provisional.frameworkadmin.FrameworkAdmin;
import org.eclipse.equinox.internal.provisional.frameworkadmin.Manipulator;
+import org.junit.Test;
import org.osgi.framework.*;
public class TestRunningInstance extends AbstractFwkAdminTest {
- public TestRunningInstance(String name) {
- super(name);
- }
-
+ @Test
public void testRunningInstance() throws BundleException {
- //TODO Commented out due to NPE failure on Windows on test machines only
+ // TODO Commented out due to NPE failure on Windows on test machines only
if (Platform.OS_WIN32.equals(Platform.getOS()))
return;
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
Manipulator m = fwkAdmin.getRunningManipulator();
BundleInfo[] infos = m.getConfigData().getBundles();
-
+
Bundle[] bundles = Activator.getContext().getBundles();
-
+
assertEquals(bundles.length, infos.length);
for (Bundle bundle : bundles) {
boolean found = false;
@@ -46,7 +47,7 @@ public class TestRunningInstance extends AbstractFwkAdminTest {
}
}
}
-
+
private boolean same(BundleInfo info, Bundle bundle) {
if (info.getSymbolicName().equals(bundle.getSymbolicName())) {
if (new Version(bundle.getHeaders().get(Constants.BUNDLE_VERSION)).equals(new Version(info.getVersion())))
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/TestVMArg.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/TestVMArg.java
index c7fb2d385..9ae0682a4 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/TestVMArg.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/TestVMArg.java
@@ -7,34 +7,36 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
import java.io.File;
import java.io.IOException;
import org.eclipse.core.runtime.Platform;
import org.eclipse.equinox.internal.provisional.frameworkadmin.FrameworkAdminRuntimeException;
import org.eclipse.equinox.internal.provisional.frameworkadmin.Manipulator;
+import org.junit.Before;
+import org.junit.Test;
-public class TestVMArg extends FwkAdminAndSimpleConfiguratorTest {
+public class TestVMArg extends FwkAdminAndSimpleConfiguratorTest {
private Manipulator m;
- public TestVMArg(String name) {
- super(name);
- }
-
@Override
- protected void setUp() throws Exception {
+ @Before
+ public void setUp() throws Exception {
super.setUp();
m = createMinimalConfiguration(TestEclipseDataArea.class.getName());
}
-
+ @Test
public void testVMInsideInstall() throws FrameworkAdminRuntimeException, IOException {
- //Test VM path in the install folder
+ // Test VM path in the install folder
File jreLocation = new File(m.getLauncherData().getLauncher().getParentFile(), "jre");
m.getLauncherData().setJvm(jreLocation);
m.save(false);
@@ -51,7 +53,7 @@ public class TestVMArg extends FwkAdminAndSimpleConfiguratorTest {
assertNotContent(m.getLauncherData().getLauncherConfigLocation(), "-vm");
assertNotContent(m.getLauncherData().getLauncherConfigLocation(), "jre");
}
-
+
// public void testVMInsideInstall_MacOS() throws Exception {
// m = createMinimalConfiguration(TestEclipseDataArea.class.getName(), Constants.OS_MACOSX);
// final String expectedRelativePath = "../../../jre";
@@ -78,26 +80,26 @@ public class TestVMArg extends FwkAdminAndSimpleConfiguratorTest {
// assertNotContent("No absolute JRE path must be present in " + launcherConfigFile, launcherConfigFile, jreLocation.getAbsolutePath());
// assertContent("Relative JRE path must be present in " + launcherConfigFile, launcherConfigFile, expectedRelativePath);
// }
-
+ @Test
public void testVMOutsideInstall() throws FrameworkAdminRuntimeException, IOException {
- //Test VM path in the install folder
+ // Test VM path in the install folder
File jreLocation = new File(m.getLauncherData().getLauncher().getParentFile(), "../../jre").getCanonicalFile();
m.getLauncherData().setJvm(jreLocation);
m.save(false);
- assertContent(getLauncherConfigFile(), jreLocation.getAbsolutePath().replace('\\','/'));
+ assertContent(getLauncherConfigFile(), jreLocation.getAbsolutePath().replace('\\', '/'));
assertContent(m.getLauncherData().getLauncherConfigLocation(), "-vm");
assertContent(m.getLauncherData().getLauncherConfigLocation(), "jre");
assertNotContent(m.getLauncherData().getLauncherConfigLocation(), "file:");
m.load();
assertEquals(jreLocation, m.getLauncherData().getJvm());
}
-
+ @Test
public void test269502() throws FrameworkAdminRuntimeException, IOException {
- //Test VM path in the install folder
+ // Test VM path in the install folder
String winPath = "c:/ibm5sr3/bin";
String linuxPath = "/Users/Pascal/ibm5sr3/bin";
- String chosenPath = Platform.getOS().equals("win32") ? winPath : linuxPath;
- File jreLocation = new File(chosenPath);
+ String chosenPath = Platform.getOS().equals("win32") ? winPath : linuxPath;
+ File jreLocation = new File(chosenPath);
m.getLauncherData().setJvm(jreLocation);
m.save(false);
assertContent(getLauncherConfigFile(), chosenPath);
@@ -125,13 +127,13 @@ public class TestVMArg extends FwkAdminAndSimpleConfiguratorTest {
// }
/**
- * But 282303:
- * Have -vm ../jre as program arguments.
- * See them vanish during the save operation of the manipulator
- *
+ * But 282303: Have -vm ../jre as program arguments. See them vanish during the
+ * save operation of the manipulator
+ *
* @throws FrameworkAdminRuntimeException
* @throws IOException
*/
+ @Test
public void test282303() throws FrameworkAdminRuntimeException, IOException {
assertNotContent(getLauncherConfigFile(), "-vm");
assertNotContent(getLauncherConfigFile(), "../mylocation");
@@ -144,9 +146,9 @@ public class TestVMArg extends FwkAdminAndSimpleConfiguratorTest {
m.load();
String[] args = m.getLauncherData().getProgramArgs();
boolean found = false;
- for(int i = 0; i < args.length; i++) {
- if("-vm".equals(args[i]) && i != args.length - 1) {
- if("../mylocation".equals(args[++i])) {
+ for (int i = 0; i < args.length; i++) {
+ if ("-vm".equals(args[i]) && i != args.length - 1) {
+ if ("../mylocation".equals(args[++i])) {
found = true;
break;
}
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/UtilsTest.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/UtilsTest.java
index d4bb5ed6b..f3defb56b 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/UtilsTest.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/frameworkadmin/tests/UtilsTest.java
@@ -7,27 +7,24 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.frameworkadmin.tests;
+import static org.junit.Assert.assertEquals;
+
import java.io.File;
import java.net.URI;
import org.eclipse.equinox.internal.frameworkadmin.equinox.utils.FileUtils;
import org.eclipse.equinox.internal.provisional.frameworkadmin.Manipulator;
import org.eclipse.osgi.service.environment.Constants;
+import org.junit.Test;
public class UtilsTest extends AbstractFwkAdminTest {
- /**
- * @param name
- */
- public UtilsTest(String name) {
- super(name);
- }
-
+ @Test
public void test_getEclipseRealLocation() throws Exception {
File installFolder = Activator.getContext().getDataFile("212361");
@@ -41,21 +38,25 @@ public class UtilsTest extends AbstractFwkAdminTest {
foo_64.mkdirs();
fooWithSpaces.mkdirs();
- Manipulator manipulator = getFrameworkManipulator(new File(installFolder, "configuration"), new File(installFolder, "eclipse"));
+ Manipulator manipulator = getFrameworkManipulator(new File(installFolder, "configuration"),
+ new File(installFolder, "eclipse"));
-
assertEquals(FileUtils.getEclipseRealLocation(manipulator, "org.foo"), foo2.toURI());
assertEquals(FileUtils.getEclipseRealLocation(manipulator, "org.foo_1.2.3.abc"), foo1.toURI());
assertEquals(FileUtils.getEclipseRealLocation(manipulator, "org.foo.x86_64"), foo_64.toURI());
-
- assertEquals(FileUtils.getEclipseRealLocation(manipulator, plugins.toURI().toString() + "alotof/s%20p%20a%20c%20e%20s/org.foo_1.2.3.abc/"), fooWithSpaces.toURI());
+
+ assertEquals(
+ FileUtils.getEclipseRealLocation(manipulator,
+ plugins.toURI().toString() + "alotof/s%20p%20a%20c%20e%20s/org.foo_1.2.3.abc/"),
+ fooWithSpaces.toURI());
File other = new File(installFolder, "other/org.foo_1.2.4");
other.mkdirs();
manipulator.getConfigData().setProperty("osgi.syspath", other.getParentFile().getAbsolutePath());
assertEquals(FileUtils.getEclipseRealLocation(manipulator, "org.foo"), other.toURI());
}
-
+
+ @Test
public void testMacRealLocation() throws Exception {
File installFolder = Activator.getContext().getDataFile("280007/Eclipse.app/Contents/Eclipse/");
@@ -63,7 +64,8 @@ public class UtilsTest extends AbstractFwkAdminTest {
File foo = new File(plugins, "org.foo_1.2.3.abc");
foo.mkdirs();
- Manipulator manipulator = getFrameworkManipulator(new File(installFolder, "configuration"), new File(installFolder, "../MacOS/eclipse"));
+ Manipulator manipulator = getFrameworkManipulator(new File(installFolder, "configuration"),
+ new File(installFolder, "../MacOS/eclipse"));
manipulator.getLauncherData().setOS(Constants.OS_MACOSX);
URI res = FileUtils.getEclipseRealLocation(manipulator, "org.foo");
assertEquals(res, foo.toURI());
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxManipulatorImplTest.java b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxManipulatorImplTest.java
new file mode 100644
index 000000000..a2ab4c3d6
--- /dev/null
+++ b/bundles/org.eclipse.equinox.frameworkadmin.test/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxManipulatorImplTest.java
@@ -0,0 +1,53 @@
+/********************************************************************************
+ * Copyright (c) 2020, 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+package org.eclipse.equinox.internal.frameworkadmin.equinox;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import org.junit.Test;
+
+public class EquinoxManipulatorImplTest {
+
+ @Test
+ public void testToFile() throws MalformedURLException {
+ String filename = "test.txt";
+
+ String unixUrl = "file:/program files/eclipse/";
+ String expectedUnixFolder = "/program files/eclipse";
+ String expectedUnixFile = expectedUnixFolder + "/" + filename;
+ assertEquals(new File(expectedUnixFolder), EquinoxManipulatorImpl.toFile(new URL(unixUrl)));
+ assertEquals(new File(expectedUnixFile), EquinoxManipulatorImpl.toFile(new URL(unixUrl + filename)));
+
+ String windowsUrl = "file:/C:/Program Files/eclipse/";
+ String expectedWindowsFolder = "C:\\Program Files\\eclipse";
+ String expectedWindowsFile = expectedWindowsFolder + "\\" + filename;
+ assertEquals(new File(expectedWindowsFolder), EquinoxManipulatorImpl.toFile(new URL(windowsUrl)));
+ assertEquals(new File(expectedWindowsFile), EquinoxManipulatorImpl.toFile(new URL(windowsUrl + filename)));
+
+ String uncUrl = "file://server/share/folder/";
+ String expectedUncFolder = "//server/share/folder";
+ String expectedUncFile = expectedUncFolder + "/" + filename;
+ assertEquals(new File(expectedUncFolder), EquinoxManipulatorImpl.toFile(new URL(uncUrl)));
+ assertEquals(new File(expectedUncFile), EquinoxManipulatorImpl.toFile(new URL(uncUrl + filename)));
+
+ String notFileUrl = "http://example.com/path/to/folder/";
+ String expectedOtherFolder = "/path/to/folder";
+ String expectedOtherFile = expectedOtherFolder + "/" + filename;
+ assertEquals(new File(expectedOtherFolder), EquinoxManipulatorImpl.toFile(new URL(notFileUrl)));
+ assertEquals(new File(expectedOtherFile), EquinoxManipulatorImpl.toFile(new URL(notFileUrl + filename)));
+ }
+
+}
diff --git a/bundles/org.eclipse.equinox.frameworkadmin/.classpath b/bundles/org.eclipse.equinox.frameworkadmin/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin/.classpath
+++ b/bundles/org.eclipse.equinox.frameworkadmin/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.frameworkadmin/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.frameworkadmin/.settings/org.eclipse.jdt.core.prefs
index f0018a393..579521550 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.frameworkadmin/.settings/org.eclipse.jdt.core.prefs
@@ -10,9 +10,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -27,6 +27,7 @@ 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.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -84,6 +85,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -119,9 +121,11 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -129,20 +133,23 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -232,11 +239,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -267,6 +275,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -291,13 +301,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -345,6 +359,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -381,9 +397,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -419,9 +438,13 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/bundles/org.eclipse.equinox.frameworkadmin/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.frameworkadmin/META-INF/MANIFEST.MF
index 1d86ec3b2..d4bb7cb5e 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.frameworkadmin/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.frameworkadmin;singleton:=true
-Bundle-Version: 2.1.400.qualifier
+Bundle-Version: 2.2.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Import-Package: org.eclipse.osgi.service.pluginconversion;version="1.0.0",
@@ -23,7 +23,7 @@ Export-Package: org.eclipse.equinox.frameworkadmin;version="2.0.0",
org.eclipse.pde.core,
org.eclipse.pde.ui,
org.eclipse.equinox.p2.publisher.eclipse"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.equinox.common;bundle-version="3.4.0"
Bundle-ActivationPolicy: lazy
Automatic-Module-Name: org.eclipse.equinox.frameworkadmin
diff --git a/bundles/org.eclipse.equinox.frameworkadmin/pom.xml b/bundles/org.eclipse.equinox.frameworkadmin/pom.xml
index 1899b3d67..433dcf50f 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin/pom.xml
+++ b/bundles/org.eclipse.equinox.frameworkadmin/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.frameworkadmin</artifactId>
- <version>2.1.400-SNAPSHOT</version>
+ <version>2.2.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.artifact.checksums.bouncycastle/.classpath b/bundles/org.eclipse.equinox.p2.artifact.checksums.bouncycastle/.classpath
index 6de27b66c..bc3587db4 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.checksums.bouncycastle/.classpath
+++ b/bundles/org.eclipse.equinox.p2.artifact.checksums.bouncycastle/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/bundles/org.eclipse.equinox.p2.artifact.checksums.bouncycastle/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.artifact.checksums.bouncycastle/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..7adc0fb9a
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.artifact.checksums.bouncycastle/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,10 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/bundles/org.eclipse.equinox.p2.artifact.checksums.bouncycastle/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.artifact.checksums.bouncycastle/META-INF/MANIFEST.MF
index 28688b977..b123fba15 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.checksums.bouncycastle/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.artifact.checksums.bouncycastle/META-INF/MANIFEST.MF
@@ -2,10 +2,10 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.artifact.checksums.bouncycastle;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.1.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.equinox.p2.artifact.repository;bundle-version="[1.3.200,2.0.0)"
Import-Package: org.bouncycastle.jce.provider;version="[1.59.0,2.0.0)"
diff --git a/bundles/org.eclipse.equinox.p2.artifact.checksums.bouncycastle/pom.xml b/bundles/org.eclipse.equinox.p2.artifact.checksums.bouncycastle/pom.xml
index 18b6f6453..72d6db126 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.checksums.bouncycastle/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.artifact.checksums.bouncycastle/pom.xml
@@ -4,14 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.artifact.checksums.bouncycastle</artifactId>
- <version>1.0.0-SNAPSHOT</version>
+ <version>1.1.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
- <properties>
- <skipAPIAnalysis>true</skipAPIAnalysis>
- </properties>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.artifact.optimizers/.classpath b/bundles/org.eclipse.equinox.p2.artifact.optimizers/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.optimizers/.classpath
+++ b/bundles/org.eclipse.equinox.p2.artifact.optimizers/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.artifact.optimizers/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.equinox.p2.artifact.optimizers/.settings/org.eclipse.core.resources.prefs
index c9dc95db0..906f2626d 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.optimizers/.settings/org.eclipse.core.resources.prefs
+++ b/bundles/org.eclipse.equinox.p2.artifact.optimizers/.settings/org.eclipse.core.resources.prefs
@@ -1,3 +1,3 @@
#Wed Nov 14 12:49:29 EST 2007
eclipse.preferences.version=1
-encoding/<project>=ISO-8859-1
+encoding/<project>=UTF-8
diff --git a/bundles/org.eclipse.equinox.p2.artifact.optimizers/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.artifact.optimizers/.settings/org.eclipse.jdt.core.prefs
index 01dc9cade..6b5625424 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.optimizers/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.artifact.optimizers/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -36,6 +36,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -94,6 +95,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -130,9 +132,11 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -140,20 +144,23 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -245,11 +252,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -280,6 +288,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -304,13 +314,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -358,6 +372,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -394,9 +410,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -432,10 +451,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.equinox.p2.artifact.optimizers/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.artifact.optimizers/META-INF/MANIFEST.MF
index 5450fecb1..c2f216314 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.optimizers/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.artifact.optimizers/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.artifact.optimizers;singleton:=true
-Bundle-Version: 1.1.0.qualifier
+Bundle-Version: 1.2.0.qualifier
Bundle-Activator: org.eclipse.equinox.internal.p2.artifact.optimizers.Activator
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -11,7 +11,7 @@ Export-Package: org.eclipse.equinox.internal.p2.artifact.optimizers;x-friends:="
org.eclipse.equinox.internal.p2.artifact.optimizers.pack200;x-internal:=true
Require-Bundle: org.eclipse.equinox.common,
org.eclipse.equinox.p2.artifact.repository
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Import-Package: org.eclipse.equinox.app;version="1.0.0",
org.eclipse.equinox.internal.p2.core.helpers,
diff --git a/bundles/org.eclipse.equinox.p2.artifact.optimizers/pom.xml b/bundles/org.eclipse.equinox.p2.artifact.optimizers/pom.xml
index b246de984..8d09d7881 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.optimizers/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.artifact.optimizers/pom.xml
@@ -4,15 +4,12 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.artifact.optimizers</artifactId>
- <version>1.1.0-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
- <properties>
- <skipAPIAnalysis>true</skipAPIAnalysis>
- </properties>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.artifact.optimizers/src/org/eclipse/equinox/internal/p2/artifact/optimizers/pack200/Application.java b/bundles/org.eclipse.equinox.p2.artifact.optimizers/src/org/eclipse/equinox/internal/p2/artifact/optimizers/pack200/Application.java
index 695202da5..0fcaab754 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.optimizers/src/org/eclipse/equinox/internal/p2/artifact/optimizers/pack200/Application.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.optimizers/src/org/eclipse/equinox/internal/p2/artifact/optimizers/pack200/Application.java
@@ -22,6 +22,13 @@ import org.eclipse.equinox.p2.core.ProvisionException;
import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
import org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager;
+/**
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noreference This class is not intended to be referenced by clients.
+ *
+ * @deprecated See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a> for details.
+ */
+@Deprecated(forRemoval = true, since = "1.2.0")
public class Application extends OptimizerApplication {
// Application return code
private static final Integer NON_WRITTABLE_REPOSITORY = -1;
diff --git a/bundles/org.eclipse.equinox.p2.artifact.optimizers/src/org/eclipse/equinox/internal/p2/artifact/optimizers/pack200/Messages.java b/bundles/org.eclipse.equinox.p2.artifact.optimizers/src/org/eclipse/equinox/internal/p2/artifact/optimizers/pack200/Messages.java
index 6865a727e..24437eb3a 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.optimizers/src/org/eclipse/equinox/internal/p2/artifact/optimizers/pack200/Messages.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.optimizers/src/org/eclipse/equinox/internal/p2/artifact/optimizers/pack200/Messages.java
@@ -8,13 +8,20 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/
package org.eclipse.equinox.internal.p2.artifact.optimizers.pack200;
import org.eclipse.osgi.util.NLS;
+/**
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noreference This class is not intended to be referenced by clients.
+ *
+ * @deprecated See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a> for details.
+ */
+@Deprecated(forRemoval = true, since = "1.2.0")
public class Messages extends NLS {
private static final String BUNDLE_NAME = "org.eclipse.equinox.internal.p2.artifact.optimizers.pack200.messages"; //$NON-NLS-1$
public static String failed_getting_artifact;
diff --git a/bundles/org.eclipse.equinox.p2.artifact.optimizers/src/org/eclipse/equinox/internal/p2/artifact/optimizers/pack200/Optimizer.java b/bundles/org.eclipse.equinox.p2.artifact.optimizers/src/org/eclipse/equinox/internal/p2/artifact/optimizers/pack200/Optimizer.java
index 096885e07..8038c450d 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.optimizers/src/org/eclipse/equinox/internal/p2/artifact/optimizers/pack200/Optimizer.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.optimizers/src/org/eclipse/equinox/internal/p2/artifact/optimizers/pack200/Optimizer.java
@@ -27,6 +27,13 @@ import org.eclipse.equinox.p2.repository.artifact.spi.ArtifactDescriptor;
import org.eclipse.equinox.p2.repository.artifact.spi.ProcessingStepDescriptor;
import org.eclipse.osgi.util.NLS;
+/**
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noreference This class is not intended to be referenced by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ * @deprecated See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a> for details.
+ */
+@Deprecated(forRemoval = true, since = "1.2.0")
public class Optimizer {
private final IArtifactRepository repository;
diff --git a/bundles/org.eclipse.equinox.p2.artifact.optimizers/src/org/eclipse/equinox/internal/p2/artifact/optimizers/pack200/Pack200OptimizerStep.java b/bundles/org.eclipse.equinox.p2.artifact.optimizers/src/org/eclipse/equinox/internal/p2/artifact/optimizers/pack200/Pack200OptimizerStep.java
index f36f9b9df..e4937fa48 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.optimizers/src/org/eclipse/equinox/internal/p2/artifact/optimizers/pack200/Pack200OptimizerStep.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.optimizers/src/org/eclipse/equinox/internal/p2/artifact/optimizers/pack200/Pack200OptimizerStep.java
@@ -26,7 +26,13 @@ import org.eclipse.internal.provisional.equinox.p2.jarprocessor.JarProcessorExec
/**
* The Pack200Packer expects an input containing normal ".jar" data.
+ *
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ * @noreference This class is not intended to be referenced by clients.
+ * @deprecated See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a> for details.
*/
+@Deprecated(forRemoval = true, since = "1.2.0")
public class Pack200OptimizerStep extends AbstractBufferingStep {
private static final String PACKED_SUFFIX = ".pack.gz"; //$NON-NLS-1$
private File incoming;
diff --git a/bundles/org.eclipse.equinox.p2.artifact.processors/.classpath b/bundles/org.eclipse.equinox.p2.artifact.processors/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.processors/.classpath
+++ b/bundles/org.eclipse.equinox.p2.artifact.processors/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.artifact.processors/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.equinox.p2.artifact.processors/.settings/org.eclipse.core.resources.prefs
index c973c1373..79834331c 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.processors/.settings/org.eclipse.core.resources.prefs
+++ b/bundles/org.eclipse.equinox.p2.artifact.processors/.settings/org.eclipse.core.resources.prefs
@@ -1,3 +1,3 @@
#Wed Nov 14 12:49:38 EST 2007
eclipse.preferences.version=1
-encoding/<project>=ISO-8859-1
+encoding/<project>=UTF-8
diff --git a/bundles/org.eclipse.equinox.p2.artifact.processors/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.artifact.processors/.settings/org.eclipse.jdt.core.prefs
index 0eaaba2e8..9dab61dd4 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.processors/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.artifact.processors/.settings/org.eclipse.jdt.core.prefs
@@ -18,9 +18,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -37,6 +37,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -90,6 +91,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -126,10 +128,11 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -137,20 +140,23 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -242,11 +248,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -277,6 +284,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -301,13 +310,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -355,6 +368,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -391,9 +406,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -429,10 +447,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.equinox.p2.artifact.processors/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.artifact.processors/META-INF/MANIFEST.MF
index 027e628ae..785bd915d 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.processors/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.artifact.processors/META-INF/MANIFEST.MF
@@ -2,15 +2,14 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.artifact.processors;singleton:=true
-Bundle-Version: 1.1.0.qualifier
-Bundle-Activator: org.eclipse.equinox.internal.p2.artifact.processors.Activator
+Bundle-Version: 1.2.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package: org.eclipse.equinox.internal.p2.artifact.processors;x-internal:=true,
org.eclipse.equinox.internal.p2.artifact.processors.jardelta;x-internal:=true
Require-Bundle: org.eclipse.equinox.common,
org.eclipse.equinox.p2.artifact.repository
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Import-Package: org.eclipse.equinox.internal.p2.artifact.optimizers,
org.eclipse.equinox.internal.p2.core.helpers,
diff --git a/bundles/org.eclipse.equinox.p2.artifact.processors/pom.xml b/bundles/org.eclipse.equinox.p2.artifact.processors/pom.xml
index d8028f822..08e7da3c8 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.processors/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.artifact.processors/pom.xml
@@ -4,15 +4,12 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.artifact.processors</artifactId>
- <version>1.1.0-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
- <properties>
- <skipAPIAnalysis>true</skipAPIAnalysis>
- </properties>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.artifact.processors/src/org/eclipse/equinox/internal/p2/artifact/processors/AbstractDeltaProcessorStep.java b/bundles/org.eclipse.equinox.p2.artifact.processors/src/org/eclipse/equinox/internal/p2/artifact/processors/AbstractDeltaProcessorStep.java
index 5080995ed..6ae23807a 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.processors/src/org/eclipse/equinox/internal/p2/artifact/processors/AbstractDeltaProcessorStep.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.processors/src/org/eclipse/equinox/internal/p2/artifact/processors/AbstractDeltaProcessorStep.java
@@ -49,7 +49,7 @@ public abstract class AbstractDeltaProcessorStep extends AbstractDeltaStep {
return;
IArtifactRepositoryManager repoMgr = agent.getService(IArtifactRepositoryManager.class);
if (repoMgr == null) {
- setStatus(new Status(IStatus.ERROR, Activator.ID, "Could not get artifact repository manager."));
+ setStatus(new Status(IStatus.ERROR, BundleInfo.ID, "Could not get artifact repository manager."));
return;
}
@@ -65,7 +65,7 @@ public abstract class AbstractDeltaProcessorStep extends AbstractDeltaStep {
// just skip unreadable repositories
}
}
- setStatus(new Status(IStatus.ERROR, Activator.ID, "No repository available containing key " + key));
+ setStatus(new Status(IStatus.ERROR, BundleInfo.ID, "No repository available containing key " + key));
}
}
diff --git a/bundles/org.eclipse.equinox.p2.artifact.processors/src/org/eclipse/equinox/internal/p2/artifact/processors/Activator.java b/bundles/org.eclipse.equinox.p2.artifact.processors/src/org/eclipse/equinox/internal/p2/artifact/processors/BundleInfo.java
index 2454b0dc9..bbcf6181a 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.processors/src/org/eclipse/equinox/internal/p2/artifact/processors/Activator.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.processors/src/org/eclipse/equinox/internal/p2/artifact/processors/BundleInfo.java
@@ -14,26 +14,8 @@
package org.eclipse.equinox.internal.p2.artifact.processors;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
+public class BundleInfo {
public static final String ID = "org.eclipse.equinox.p2.artifact.processors"; //$NON-NLS-1$
- private static BundleContext _context = null;
-
- public static BundleContext getContext() {
- return _context;
- }
-
- @Override
- public void start(BundleContext context) throws Exception {
- Activator._context = context;
- }
-
- @Override
- public void stop(BundleContext context) throws Exception {
- // nothing to do
- }
}
diff --git a/bundles/org.eclipse.equinox.p2.artifact.processors/src/org/eclipse/equinox/internal/p2/artifact/processors/jardelta/JarDeltaProcessorStep.java b/bundles/org.eclipse.equinox.p2.artifact.processors/src/org/eclipse/equinox/internal/p2/artifact/processors/jardelta/JarDeltaProcessorStep.java
index ac0bd5e13..47345f1a8 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.processors/src/org/eclipse/equinox/internal/p2/artifact/processors/jardelta/JarDeltaProcessorStep.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.processors/src/org/eclipse/equinox/internal/p2/artifact/processors/jardelta/JarDeltaProcessorStep.java
@@ -17,7 +17,7 @@ import java.io.*;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.equinox.internal.p2.artifact.processors.AbstractDeltaProcessorStep;
-import org.eclipse.equinox.internal.p2.artifact.processors.Activator;
+import org.eclipse.equinox.internal.p2.artifact.processors.BundleInfo;
import org.eclipse.equinox.internal.p2.core.helpers.FileUtils;
import org.eclipse.equinox.p2.repository.artifact.spi.ArtifactDescriptor;
@@ -55,7 +55,7 @@ public class JarDeltaProcessorStep extends AbstractDeltaProcessorStep {
InputStream resultStream = new BufferedInputStream(new FileInputStream(resultFile));
FileUtils.copyStream(resultStream, true, getDestination(), false);
} else {
- setStatus(new Status(IStatus.ERROR, Activator.ID, "Empty optimized file: " + resultFile)); //$NON-NLS-1$
+ setStatus(new Status(IStatus.ERROR, BundleInfo.ID, "Empty optimized file: " + resultFile)); //$NON-NLS-1$
}
} finally {
if (resultFile != null)
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/.classpath b/bundles/org.eclipse.equinox.p2.artifact.repository/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/.classpath
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.artifact.repository/.settings/org.eclipse.jdt.core.prefs
index 75bfd5011..f015e9f64 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -88,6 +89,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -123,7 +125,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -137,7 +140,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -258,7 +260,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -329,7 +330,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -474,7 +474,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.artifact.repository/META-INF/MANIFEST.MF
index 02f6b7f2b..05dc70a3c 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.artifact.repository;singleton:=true
-Bundle-Version: 1.3.300.qualifier
+Bundle-Version: 1.4.400.qualifier
Bundle-Activator: org.eclipse.equinox.internal.p2.artifact.repository.Activator
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -10,6 +10,7 @@ Export-Package: org.eclipse.equinox.internal.p2.artifact.processing;x-friends:="
org.eclipse.equinox.internal.p2.artifact.processors.checksum;x-friends:="org.eclipse.equinox.p2.publisher",
org.eclipse.equinox.internal.p2.artifact.processors.md5;x-internal:=true,
org.eclipse.equinox.internal.p2.artifact.processors.pack200;x-friends:="org.eclipse.equinox.p2.artifact.processors,org.eclipse.equinox.p2.artifact.optimizers",
+ org.eclipse.equinox.internal.p2.artifact.processors.pgp;x-friends:="org.eclipse.equinox.p2.engine,org.eclipse.equinox.p2.ui.sdk,org.eclipse.equinox.p2.ui",
org.eclipse.equinox.internal.p2.artifact.repository;
x-friends:="org.eclipse.equinox.p2.publisher,
org.eclipse.equinox.p2.reconciler.dropins,
@@ -37,6 +38,14 @@ Require-Bundle: org.eclipse.equinox.common;bundle-version="[3.7.0,4.0.0)",
org.eclipse.equinox.p2.metadata,
org.tukaani.xz;bundle-version="1.3.0"
Import-Package: javax.xml.parsers,
+ org.bouncycastle.bcpg;version="1.65.0",
+ org.bouncycastle.jce.provider;version="1.65.1",
+ org.bouncycastle.openpgp;version="1.65.0",
+ org.bouncycastle.openpgp.bc;version="1.65.0",
+ org.bouncycastle.openpgp.jcajce;version="1.65.0",
+ org.bouncycastle.openpgp.operator;version="1.65.0",
+ org.bouncycastle.openpgp.operator.bc;version="1.65.0",
+ org.bouncycastle.openpgp.operator.jcajce;version="1.65.0",
org.eclipse.core.runtime.jobs,
org.eclipse.equinox.internal.p2.core.helpers,
org.eclipse.equinox.internal.p2.jarprocessor,
@@ -62,5 +71,5 @@ Import-Package: javax.xml.parsers,
org.xml.sax;resolution:=optional
Service-Component: OSGI-INF/repositoryManager.xml
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.equinox.p2.artifact.repository
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/plugin.xml b/bundles/org.eclipse.equinox.p2.artifact.repository/plugin.xml
index bf5778333..4be690540 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/plugin.xml
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/plugin.xml
@@ -41,8 +41,9 @@
<extension
point="org.eclipse.equinox.p2.artifact.repository.artifactChecksums">
<artifactChecksum
- algorithm="MD5"
- id="md5">
+ algorithm="MD5"
+ id="md5"
+ warnInsecure="true">
</artifactChecksum>
</extension>
<extension
@@ -52,4 +53,10 @@
id="sha-256">
</artifactChecksum>
</extension>
+
+ <extension
+ id="org.eclipse.equinox.p2.processing.PGPSignatureCheck"
+ point="org.eclipse.equinox.p2.artifact.repository.processingSteps">
+ <step class="org.eclipse.equinox.internal.p2.artifact.processors.pgp.PGPSignatureVerifier"/>
+ </extension>
</plugin>
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/pom.xml b/bundles/org.eclipse.equinox.p2.artifact.repository/pom.xml
index e0dc62aba..bc016ef5a 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.artifact.repository</artifactId>
- <version>1.3.300-SNAPSHOT</version>
+ <version>1.4.400-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/schema/artifactChecksums.exsd b/bundles/org.eclipse.equinox.p2.artifact.repository/schema/artifactChecksums.exsd
index 0f7b4b097..017af5b24 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/schema/artifactChecksums.exsd
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/schema/artifactChecksums.exsd
@@ -76,6 +76,14 @@ As other tools will rely on this id, consider using some well-defined value (i.e
</documentation>
</annotation>
</attribute>
+ <attribute name="warnInsecure" type="boolean">
+ <annotation>
+ <documentation>
+ Since 1.4.300
+Set to true if this algorithm is now considered as insecure. A warning will be logged when this algorithm is used. An artifact that has no checksums or checksums only for insecure algorithms will emit a warning to user.
+ </documentation>
+ </annotation>
+ </attribute>
</complexType>
</element>
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/checksum/ChecksumUtilities.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/checksum/ChecksumUtilities.java
index f45b7f203..ca091e5ea 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/checksum/ChecksumUtilities.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/checksum/ChecksumUtilities.java
@@ -19,12 +19,13 @@ import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.util.*;
import java.util.Map.Entry;
+import java.util.stream.Collectors;
import org.eclipse.core.runtime.*;
import org.eclipse.equinox.internal.p2.artifact.repository.Messages;
+import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
import org.eclipse.equinox.internal.p2.repository.Activator;
import org.eclipse.equinox.internal.p2.repository.helpers.ChecksumHelper;
import org.eclipse.equinox.internal.p2.repository.helpers.ChecksumProducer;
-import org.eclipse.equinox.internal.provisional.p2.artifact.repository.processing.ProcessingStep;
import org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor;
import org.eclipse.equinox.p2.repository.artifact.spi.ProcessingStepDescriptor;
import org.eclipse.osgi.util.NLS;
@@ -43,8 +44,9 @@ public class ChecksumUtilities {
* @throws IllegalArgumentException if property neither {@link IArtifactDescriptor#ARTIFACT_CHECKSUM} nor {@link IArtifactDescriptor#DOWNLOAD_CHECKSUM}
* @see ChecksumHelper#getChecksums(IArtifactDescriptor, String)
*/
- public static Collection<ProcessingStep> getChecksumVerifiers(IArtifactDescriptor descriptor, String property, Set<String> checksumsToSkip) throws IllegalArgumentException {
- Collection<ProcessingStep> steps = new ArrayList<>();
+ public static Collection<ChecksumVerifier> getChecksumVerifiers(IArtifactDescriptor descriptor,
+ String property, Set<String> checksumsToSkip) throws IllegalArgumentException {
+ Collection<ChecksumVerifier> steps = new ArrayList<>();
Map<String, String> checksums = ChecksumHelper.getChecksums(descriptor, property);
IConfigurationElement[] checksumVerifierConfigurations = getChecksumComparatorConfigurations();
@@ -58,17 +60,25 @@ public class ChecksumUtilities {
if (checksumEntry.getKey().equals(checksumId)) {
String checksumAlgorithm = checksumVerifierConfiguration.getAttribute("algorithm"); //$NON-NLS-1$
String providerName = checksumVerifierConfiguration.getAttribute("providerName"); //$NON-NLS-1$
- ChecksumVerifier checksumVerifier = new ChecksumVerifier(checksumAlgorithm, providerName, checksumId);
+ boolean insecure = Boolean.parseBoolean(checksumVerifierConfiguration.getAttribute("warnInsecure")); //$NON-NLS-1$
+ ChecksumVerifier checksumVerifier = new ChecksumVerifier(checksumAlgorithm, providerName, checksumId, insecure);
checksumVerifier.initialize(null, new ProcessingStepDescriptor(null, checksumEntry.getValue(), true), descriptor);
- if (checksumVerifier.getStatus().isOK())
+ if (checksumVerifier.getStatus().isOK()) {
steps.add(checksumVerifier);
- else
- // TODO log something?
- continue;
+ } else {
+ LogHelper.log(checksumVerifier.getStatus());
+ }
}
}
}
+ if (!steps.isEmpty() && steps.stream().allMatch(ChecksumVerifier::isInsecureAlgorithm)) {
+ LogHelper.log(new Status(IStatus.WARNING, Activator.ID,
+ NLS.bind(Messages.onlyInsecureDigestAlgorithmUsed,
+ steps.stream().map(ChecksumVerifier::getAlgorithmId).collect(Collectors.joining(",")), //$NON-NLS-1$
+ descriptor.getArtifactKey())));
+ }
+
return steps;
}
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/checksum/ChecksumVerifier.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/checksum/ChecksumVerifier.java
index 4d913c46d..a11041bb4 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/checksum/ChecksumVerifier.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/checksum/ChecksumVerifier.java
@@ -33,12 +33,14 @@ final public class ChecksumVerifier extends MessageDigestProcessingStep {
final private String algorithmName;
final private String providerName;
final private String algorithmId;
+ private final boolean insecureAlgorithm;
// public to access from tests
- public ChecksumVerifier(String digestAlgorithm, String providerName, String algorithmId) {
+ public ChecksumVerifier(String digestAlgorithm, String providerName, String algorithmId, boolean insecure) {
this.algorithmName = digestAlgorithm;
this.providerName = providerName;
this.algorithmId = algorithmId;
+ this.insecureAlgorithm = insecure;
basicInitialize(null);
}
@@ -91,4 +93,7 @@ final public class ChecksumVerifier extends MessageDigestProcessingStep {
return algorithmId;
}
+ public boolean isInsecureAlgorithm() {
+ return insecureAlgorithm;
+ }
}
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/md5/MD5Verifier.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/md5/MD5Verifier.java
index 1128de496..8d7899788 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/md5/MD5Verifier.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/md5/MD5Verifier.java
@@ -70,7 +70,9 @@ public class MD5Verifier extends MessageDigestProcessingStep {
@Override
protected void onClose(String digestString) {
// if the hashes don't line up set the status to error.
- if (!digestString.equals(expectedMD5))
+ if (!digestString.equals(expectedMD5)) {
setStatus(new Status(IStatus.ERROR, Activator.ID, ProvisionException.ARTIFACT_MD5_NOT_MATCH, NLS.bind(Messages.Error_unexpected_hash, expectedMD5, digestString), null));
+ }
+ setStatus(new Status(IStatus.WARNING, Activator.ID, Messages.MD5_deprecated));
}
}
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/md5/Messages.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/md5/Messages.java
index 3a873e912..32636d0b8 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/md5/Messages.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/md5/Messages.java
@@ -23,6 +23,8 @@ public class Messages extends NLS {
public static String Error_MD5_unavailable;
public static String Error_unexpected_hash;
+ public static String MD5_deprecated;
+
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/md5/messages.properties b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/md5/messages.properties
index ff1415688..1e2c7e843 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/md5/messages.properties
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/md5/messages.properties
@@ -15,3 +15,4 @@
Error_invalid_hash=MD5 value not available or incorrect size, {0}.
Error_MD5_unavailable=Could not create MD5 algorithm.
Error_unexpected_hash=MD5 hash is not as expected. Expected: {0} and found {1}.
+MD5_deprecated=MD5 is a deprecated and unsafe checksum algorithm. Consider abandoning it in favor of safer checksums. \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pack200/Pack200ProcessorStep.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pack200/Pack200ProcessorStep.java
index 9d4fd8580..81089af71 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pack200/Pack200ProcessorStep.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pack200/Pack200ProcessorStep.java
@@ -32,7 +32,12 @@ import org.eclipse.internal.provisional.equinox.p2.jarprocessor.JarProcessorExec
/**
* The Pack200Unpacker expects an input containing ".jar.pack.gz" data.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noreference This class is not intended to be referenced by clients.
+ * @deprecated See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a> for details.
*/
+@Deprecated(forRemoval = true, since = "1.4.100")
public class Pack200ProcessorStep extends AbstractBufferingStep {
public static final String PACKED_SUFFIX = ".pack.gz"; //$NON-NLS-1$
private static boolean detailedResult = false;
@@ -48,10 +53,18 @@ public class Pack200ProcessorStep extends AbstractBufferingStep {
@Override
public void initialize(IProvisioningAgent agent, IProcessingStepDescriptor descriptor, IArtifactDescriptor context) {
super.initialize(agent, descriptor, context);
+ boolean isJava14 = false;
+ if (System.getProperty("java.specification.version").compareTo("14") >= 0) { //$NON-NLS-1$ //$NON-NLS-2$
+ isJava14 = true;
+ }
+
if (!isEnabled()) {
IStatus status = null;
+ // Missing pack200 executable is fine on Java 14+
+ int statusCode = isJava14 ? IStatus.OK : IStatus.ERROR;
if (detailedResult) {
- status = new Status(IStatus.ERROR, Activator.ID, MirrorRequest.ARTIFACT_PROCESSING_ERROR, "Unpack facility not configured.", null); //$NON-NLS-1$
+ status = new Status(statusCode, Activator.ID, MirrorRequest.ARTIFACT_PROCESSING_ERROR,
+ "Unpack facility not configured.", null); //$NON-NLS-1$
detailedResult = true;
} else {
String[] locations = Utils.getPack200Commands("unpack200"); //$NON-NLS-1$
@@ -59,7 +72,9 @@ public class Pack200ProcessorStep extends AbstractBufferingStep {
for (String location : locations) {
locationTried.append(location).append(", "); //$NON-NLS-1$
}
- status = new Status(IStatus.ERROR, Activator.ID, MirrorRequest.ARTIFACT_PROCESSING_ERROR, "Unpack facility not configured. The locations searched for unpack200 are: " + locationTried, null); //$NON-NLS-1$
+ status = new Status(statusCode, Activator.ID, MirrorRequest.ARTIFACT_PROCESSING_ERROR,
+ "Unpack facility not configured. The locations searched for unpack200 are: " + locationTried, //$NON-NLS-1$
+ null);
}
setStatus(status);
}
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/Messages.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/Messages.java
new file mode 100644
index 000000000..4f522f0a0
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/Messages.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Red Hat Inc. and others
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.equinox.internal.p2.artifact.processors.pgp;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.equinox.internal.p2.artifact.processors.pgp.messages"; //$NON-NLS-1$
+
+ public static String Error_SignatureAfterKeyExpiration;
+
+ public static String Error_SignatureAfterKeyRevocation;
+
+ public static String Error_SignatureAndFileDontMatch;
+
+ public static String Error_CouldNotLoadSignature;
+
+ public static String Warning_publicKeyNotFound;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ //empty
+ }
+}
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/PGPPublicKeyStore.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/PGPPublicKeyStore.java
new file mode 100644
index 000000000..8f3d15083
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/PGPPublicKeyStore.java
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.equinox.internal.p2.artifact.processors.pgp;
+
+import java.io.*;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+import java.util.function.Consumer;
+import java.util.stream.Collectors;
+import org.bouncycastle.bcpg.ArmoredOutputStream;
+import org.bouncycastle.openpgp.*;
+import org.bouncycastle.openpgp.jcajce.JcaPGPObjectFactory;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.equinox.internal.p2.artifact.repository.Activator;
+import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
+import org.eclipse.equinox.p2.repository.spi.PGPPublicKeyService;
+
+public class PGPPublicKeyStore {
+ private Map<String, PGPPublicKey> keys = new LinkedHashMap<>();
+
+ public PGPPublicKey addKey(PGPPublicKey key) {
+ if (key == null) {
+ return null;
+ }
+ PGPPublicKey alreadyStoredKey = keys.putIfAbsent(PGPPublicKeyService.toHexFingerprint(key), key);
+ return alreadyStoredKey == null ? key : alreadyStoredKey;
+ }
+
+ public Collection<PGPPublicKey> getKeys(long id) {
+ return keys.values().stream().filter(key -> key.getKeyID() == id).collect(Collectors.toList());
+ }
+
+ public void addKeys(String... armoredPublicKeys) {
+ for (String armoredKey : armoredPublicKeys) {
+ if (armoredKey != null) {
+ PGPPublicKeyStore.readPublicKeys(armoredKey).forEach(this::addKey);
+ }
+ }
+ }
+
+ /**
+ * Test only
+ */
+ public void clear() {
+ keys.clear();
+ }
+
+ public Collection<PGPPublicKey> all() {
+ return Collections.unmodifiableCollection(keys.values());
+ }
+
+ public boolean isEmpty() {
+ return keys.isEmpty();
+ }
+
+ public String toArmoredString() throws IOException {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ ArmoredOutputStream armoredOut = new ArmoredOutputStream(out);
+ for (PGPPublicKey key : all()) {
+ key.encode(armoredOut);
+ }
+ armoredOut.close();
+ out.close();
+ return new String(out.toByteArray(), StandardCharsets.US_ASCII);
+ }
+
+ public void remove(PGPPublicKey selectedKey) {
+ keys.remove(PGPPublicKeyService.toHexFingerprint(selectedKey));
+ }
+
+ public void add(File file) {
+ try (InputStream stream = new FileInputStream(file)) {
+ readPublicKeys(stream).forEach(this::addKey);
+ } catch (IOException e) {
+ LogHelper.log(new Status(IStatus.ERROR, Activator.ID, "Could not read PGP key from " + file, e)); //$NON-NLS-1$
+ }
+ }
+
+ public static Set<PGPPublicKey> readPublicKeys(InputStream input) throws IOException {
+ return readPublicKeys(new String(input.readAllBytes(), StandardCharsets.US_ASCII));
+ }
+
+ @SuppressWarnings("unchecked")
+ public static Set<PGPPublicKey> readPublicKeys(String armoredPublicKeyring) {
+ if (armoredPublicKeyring == null) {
+ return Set.of();
+ }
+ Set<PGPPublicKey> res = new HashSet<>();
+ try (InputStream stream = PGPUtil.getDecoderStream(new ByteArrayInputStream(
+ PGPSignatureVerifier.unnormalizedPGPProperty(armoredPublicKeyring)
+ .getBytes(StandardCharsets.US_ASCII)))) {
+ new JcaPGPObjectFactory(stream).forEach(o -> {
+ if (o instanceof PGPPublicKeyRingCollection) {
+ collectKeys((PGPPublicKeyRingCollection) o, res::add);
+ }
+ if (o instanceof PGPPublicKeyRing) {
+ collectKeys((PGPPublicKeyRing) o, res::add);
+ }
+ if (o instanceof PGPPublicKey) {
+ res.add((PGPPublicKey) o);
+ }
+ });
+ } catch (IOException | PGPRuntimeOperationException e) {
+ LogHelper.log(new Status(IStatus.ERROR, Activator.ID, e.getMessage(), e));
+ }
+ return res;
+
+ }
+
+ private static void collectKeys(PGPPublicKeyRingCollection pgpPublicKeyRingCollection,
+ Consumer<PGPPublicKey> collector) {
+ pgpPublicKeyRingCollection.forEach(keyring -> collectKeys(keyring, collector));
+ }
+
+ private static void collectKeys(PGPPublicKeyRing pgpPublicKeyRing, Consumer<PGPPublicKey> collector) {
+ pgpPublicKeyRing.getPublicKeys().forEachRemaining(collector::accept);
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/PGPSignatureVerifier.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/PGPSignatureVerifier.java
new file mode 100644
index 000000000..b994b7740
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/PGPSignatureVerifier.java
@@ -0,0 +1,275 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.equinox.internal.p2.artifact.processors.pgp;
+
+import java.io.*;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+import java.util.Map.Entry;
+import org.bouncycastle.bcpg.ArmoredInputStream;
+import org.bouncycastle.openpgp.*;
+import org.bouncycastle.openpgp.bc.BcPGPObjectFactory;
+import org.bouncycastle.openpgp.operator.PGPContentVerifier;
+import org.bouncycastle.openpgp.operator.PGPContentVerifierBuilder;
+import org.bouncycastle.openpgp.operator.bc.BcPGPContentVerifierBuilderProvider;
+import org.eclipse.core.runtime.*;
+import org.eclipse.equinox.internal.p2.artifact.repository.Activator;
+import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
+import org.eclipse.equinox.internal.provisional.p2.artifact.repository.processing.ProcessingStep;
+import org.eclipse.equinox.p2.core.IProvisioningAgent;
+import org.eclipse.equinox.p2.repository.artifact.*;
+import org.eclipse.equinox.p2.repository.artifact.spi.ArtifactDescriptor;
+import org.eclipse.equinox.p2.repository.spi.PGPPublicKeyService;
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * This processing step verifies PGP signatures are correct (i.e., the artifact
+ * was not tampered during fetch). Note that is does <b>not</b> deal with trust.
+ * Dealing with trusted signers is done as part of CheckTrust and touchpoint
+ * phase.
+ */
+public final class PGPSignatureVerifier extends ProcessingStep {
+
+ /**
+ * ID of the registering
+ * <code>org.eclipse.equinox.p2.artifact.repository.processingSteps</tt>
+ * extension.
+ */
+ public static final String ID = "org.eclipse.equinox.p2.processing.PGPSignatureCheck"; //$NON-NLS-1$
+
+ public static final String PGP_SIGNER_KEYS_PROPERTY_NAME = "pgp.publicKeys"; //$NON-NLS-1$
+
+ public static final String PGP_SIGNATURES_PROPERTY_NAME = "pgp.signatures"; //$NON-NLS-1$
+
+ private PGPPublicKeyService keyService;
+
+ private IArtifactDescriptor sourceDescriptor;
+
+ private Map<PGPSignature, List<PGPContentVerifier>> signaturesToVerify = new LinkedHashMap<>();
+
+ private Map<PGPContentVerifier, PGPPublicKey> verifierKeys = new LinkedHashMap<>();
+
+ private List<OutputStream> signatureVerifiers = new ArrayList<>();
+
+ public PGPSignatureVerifier() {
+ super();
+ link(nullOutputStream(), new NullProgressMonitor()); // this is convenience for tests
+ }
+
+ public static Collection<PGPSignature> getSignatures(IArtifactDescriptor artifact)
+ throws IOException, PGPException {
+ String signatureText = unnormalizedPGPProperty(artifact.getProperty(PGP_SIGNATURES_PROPERTY_NAME));
+ if (signatureText == null) {
+ return Collections.emptyList();
+ }
+ List<PGPSignature> res = new ArrayList<>();
+ try (InputStream in = new ArmoredInputStream(
+ new ByteArrayInputStream(signatureText.getBytes(StandardCharsets.US_ASCII)))) {
+ PGPObjectFactory pgpFactory = new BcPGPObjectFactory(in);
+ Object o = pgpFactory.nextObject();
+ PGPSignatureList signatureList = new PGPSignatureList(new PGPSignature[0]);
+ if (o instanceof PGPCompressedData) {
+ PGPCompressedData pgpCompressData = (PGPCompressedData) o;
+ pgpFactory = new BcPGPObjectFactory(pgpCompressData.getDataStream());
+ signatureList = (PGPSignatureList) pgpFactory.nextObject();
+ } else if (o instanceof PGPSignatureList) {
+ signatureList = (PGPSignatureList) o;
+ }
+ signatureList.iterator().forEachRemaining(res::add);
+ }
+ return res;
+ }
+
+ public static PGPPublicKeyStore getKeys(IArtifactDescriptor artifact) {
+ PGPPublicKeyStore keyStore = new PGPPublicKeyStore();
+ String keyText = artifact.getProperty(PGPSignatureVerifier.PGP_SIGNER_KEYS_PROPERTY_NAME);
+ PGPPublicKeyStore.readPublicKeys(keyText).stream().forEach(keyStore::addKey);
+ return keyStore;
+ }
+
+ @Override
+ public void initialize(IProvisioningAgent agent, IProcessingStepDescriptor descriptor,
+ IArtifactDescriptor context) {
+ super.initialize(agent, descriptor, context);
+
+ sourceDescriptor = context;
+ keyService = agent.getService(PGPPublicKeyService.class);
+
+// 1. verify declared public keys have signature from a trusted key, if so, add to KeyStore
+// 2. verify artifact signature matches signature of given keys, and at least 1 of this key is trusted
+ String signatureText = unnormalizedPGPProperty(context.getProperty(PGP_SIGNATURES_PROPERTY_NAME));
+ if (signatureText == null) {
+ setStatus(Status.OK_STATUS);
+ return;
+ }
+
+ Collection<PGPSignature> signatures;
+ try {
+ signatures = getSignatures(context);
+ } catch (Exception ex) {
+ setStatus(new Status(IStatus.ERROR, Activator.ID, Messages.Error_CouldNotLoadSignature, ex));
+ return;
+ }
+
+ if (signatures.isEmpty()) {
+ setStatus(Status.OK_STATUS);
+ return;
+ }
+
+ IArtifactRepository repository = context.getRepository();
+
+ PGPPublicKeyStore.readPublicKeys(context.getProperty(PGP_SIGNER_KEYS_PROPERTY_NAME))
+ .forEach(keyService::addKey);
+ if (repository != null) {
+ PGPPublicKeyStore.readPublicKeys(repository.getProperty(PGP_SIGNER_KEYS_PROPERTY_NAME))
+ .forEach(keyService::addKey);
+ }
+
+ for (PGPSignature signature : signatures) {
+ long keyID = signature.getKeyID();
+ Collection<PGPPublicKey> keys = keyService.getKeys(keyID);
+ if (keys.isEmpty()) {
+ LogHelper.log(new Status(IStatus.WARNING, Activator.ID,
+ NLS.bind(Messages.Warning_publicKeyNotFound, PGPPublicKeyService.toHex(keyID),
+ context.getArtifactKey().getId())));
+ } else {
+ try {
+ PGPContentVerifierBuilder verifierBuilder = new BcPGPContentVerifierBuilderProvider()
+ .get(signature.getKeyAlgorithm(), signature.getHashAlgorithm());
+ List<PGPContentVerifier> verifiers = new ArrayList<>();
+ signaturesToVerify.put(signature, verifiers);
+ for (PGPPublicKey key : keys) {
+ PGPContentVerifier verifier = verifierBuilder.build(key);
+ verifierKeys.put(verifier, key);
+ verifiers.add(verifier);
+ signatureVerifiers.add(verifier.getOutputStream());
+ }
+ } catch (PGPException ex) {
+ setStatus(new Status(IStatus.ERROR, Activator.ID, ex.getMessage(), ex));
+ return;
+ }
+ }
+ }
+ }
+
+ /**
+ * See // https://www.w3.org/TR/1998/REC-xml-19980210#AVNormalize, newlines
+ * replaced by spaces by parser, needs to be restored
+ *
+ * @param armoredPGPBlock the PGP block, in armored form
+ * @return fixed PGP armored blocks
+ */
+ static String unnormalizedPGPProperty(String armoredPGPBlock) {
+ if (armoredPGPBlock == null) {
+ return null;
+ }
+ if (armoredPGPBlock.contains("\n") || armoredPGPBlock.contains("\r")) { //$NON-NLS-1$ //$NON-NLS-2$
+ return armoredPGPBlock;
+ }
+ return armoredPGPBlock.replace(' ', '\n')
+ .replace("-----BEGIN\nPGP\nSIGNATURE-----", "-----BEGIN PGP SIGNATURE-----") //$NON-NLS-1$ //$NON-NLS-2$
+ .replace("-----END\nPGP\nSIGNATURE-----", "-----END PGP SIGNATURE-----") //$NON-NLS-1$ //$NON-NLS-2$
+ .replace("-----BEGIN\nPGP\nPUBLIC\nKEY\nBLOCK-----", "-----BEGIN PGP PUBLIC KEY BLOCK-----") //$NON-NLS-1$ //$NON-NLS-2$
+ .replace("-----END\nPGP\nPUBLIC\nKEY\nBLOCK-----", "-----END PGP PUBLIC KEY BLOCK-----"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ @Override
+ public void write(int b) throws IOException {
+ getDestination().write(b);
+ for (OutputStream verifier : signatureVerifiers) {
+ verifier.write(b);
+ }
+ }
+
+ @Override
+ public void write(byte[] b, int off, int len) throws IOException {
+ getDestination().write(b, off, len);
+ for (OutputStream verifier : signatureVerifiers) {
+ verifier.write(b, off, len);
+ }
+ }
+
+ @Override
+ public void close() throws IOException {
+ try {
+ if (!getStatus().isOK()) {
+ return;
+ }
+
+ if (signaturesToVerify.isEmpty()) {
+ return;
+ }
+
+ PGPPublicKeyStore keyStore = new PGPPublicKeyStore();
+ for (Entry<PGPSignature, List<PGPContentVerifier>> entry : signaturesToVerify.entrySet()) {
+ PGPSignature signature = entry.getKey();
+ List<PGPContentVerifier> verifiers = entry.getValue();
+ boolean verified = false;
+ for (PGPContentVerifier verifier : verifiers) {
+ try {
+ verifier.getOutputStream().write(signature.getSignatureTrailer());
+ if (verifier.verify(signature.getSignature())) {
+ PGPPublicKey verifyingKey = verifierKeys.get(verifier);
+ if (!Boolean.FALSE.toString()
+ .equalsIgnoreCase(System.getProperty("p2.pgp.verifyExpiration"))) { //$NON-NLS-1$
+ if (PGPPublicKeyService.compareSignatureTimeToKeyValidityTime(signature,
+ verifyingKey) != 0) {
+ LogHelper.log(new Status(IStatus.WARNING, Activator.ID,
+ NLS.bind(Messages.Error_SignatureAfterKeyExpiration, PGPPublicKeyService
+ .toHexFingerprint(verifyingKey))));
+ }
+ }
+
+ if (!Boolean.FALSE.toString()
+ .equalsIgnoreCase(System.getProperty("p2.pgp.verifyRevocation"))) { //$NON-NLS-1$
+ if (!keyService.isCreatedBeforeRevocation(signature, verifyingKey)) {
+ setStatus(new Status(IStatus.ERROR, Activator.ID,
+ NLS.bind(Messages.Error_SignatureAfterKeyRevocation, PGPPublicKeyService
+ .toHexFingerprint(verifyingKey))));
+ return;
+ }
+ }
+
+ keyStore.addKey(verifyingKey);
+ verified = true;
+ break;
+ }
+ } catch (PGPException ex) {
+ LogHelper.log(new Status(IStatus.ERROR, Activator.ID, ex.getMessage(), ex));
+ }
+ }
+
+ if (!verified) {
+ setStatus(new Status(IStatus.ERROR, Activator.ID, Messages.Error_SignatureAndFileDontMatch));
+ return;
+ }
+ }
+
+ // Update the destination artifact descriptor with the signatures that have been
+ // verified and the keys used for that verification.
+ OutputStream destination = getDestination();
+ if (destination instanceof IAdaptable) {
+ ArtifactDescriptor destinationDescriptor = ((IAdaptable) destination)
+ .getAdapter(ArtifactDescriptor.class);
+ destinationDescriptor.setProperty(PGP_SIGNATURES_PROPERTY_NAME,
+ sourceDescriptor.getProperty(PGP_SIGNATURES_PROPERTY_NAME));
+ destinationDescriptor.setProperty(PGP_SIGNER_KEYS_PROPERTY_NAME, keyStore.toArmoredString());
+ }
+
+ setStatus(Status.OK_STATUS);
+ } finally
+
+ {
+ super.close();
+ }
+ }
+
+}
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/messages.properties b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/messages.properties
new file mode 100644
index 000000000..09a1e7292
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/processors/pgp/messages.properties
@@ -0,0 +1,16 @@
+###############################################################################
+# Copyright (c) 2021 Red Hat Inc. and others
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+Error_SignatureAfterKeyRevocation=The signature is created after the revocation time of the signature's key {0}
+Error_SignatureAfterKeyExpiration=The signature is created after the expiration time of the signature's key {0}
+Error_SignatureAndFileDontMatch=The signature is invalid for current content
+Error_CouldNotLoadSignature=The signatures could not be loaded
+Warning_publicKeyNotFound=A public key with ID {0} needed to verify the signatures of {1} could not be found
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/Activator.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/Activator.java
index 58bb0966b..a4ae2b92b 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/Activator.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/Activator.java
@@ -14,9 +14,12 @@
*******************************************************************************/
package org.eclipse.equinox.internal.p2.artifact.repository;
+import static java.lang.String.format;
+
import java.io.File;
import java.io.IOException;
import java.net.URI;
+import java.nio.file.Files;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.core.runtime.URIUtil;
@@ -94,15 +97,9 @@ public class Activator implements BundleActivator {
private boolean isReadOnly(File file) {
if (file == null)
return true; // If we've reached the root, then return true
+
if (file.exists()) {
- try {
- // on Vista/Windows 7 you are not allowed to write executable files on virtual directories like "Program Files"
- File tmpTestFile = File.createTempFile(".artifactlocktest", ".dll", file); //$NON-NLS-1$ //$NON-NLS-2$
- tmpTestFile.delete();
- return false;
- } catch (IOException e) {
- return true; // permission issue to create new file, so it's readonly
- }
+ return !Files.isWritable(file.toPath());
}
return isReadOnly(file.getParentFile());
@@ -110,7 +107,7 @@ public class Activator implements BundleActivator {
private File getLockFile(URI repositoryLocation) throws IOException {
if (!URIUtil.isFileURI(repositoryLocation)) {
- throw new IOException("Cannot lock a non file based repository"); //$NON-NLS-1$
+ throw new IOException(format("Cannot lock a non file based repository %s", repositoryLocation)); //$NON-NLS-1$
}
URI result = URIUtil.append(repositoryLocation, ".artifactlock"); //$NON-NLS-1$
return URIUtil.toFile(result);
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/Messages.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/Messages.java
index f4eba31a3..993ad714b 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/Messages.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/Messages.java
@@ -71,6 +71,8 @@ public class Messages extends NLS {
public static String calculateChecksum_ok;
public static String calculateChecksum_error;
public static String calculateChecksum_providerError;
+ public static String onlyInsecureDigestAlgorithmUsed;
+ public static String noDigestAlgorithmToVerifyDownload;
static {
// initialize resource bundles
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/MirrorRequest.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/MirrorRequest.java
index 965277d1c..ccd932110 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/MirrorRequest.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/MirrorRequest.java
@@ -151,7 +151,7 @@ public class MirrorRequest extends ArtifactRequest {
return;
}
- IArtifactDescriptor destinationDescriptor = getDestinationDescriptor(descriptor);
+ IArtifactDescriptor destinationDescriptor = getDestinationDescriptor(descriptor, descriptor == canonical);
IStatus status = transfer(destinationDescriptor, descriptor, monitor);
// if ok, cancelled or transfer has already been done with the canonical form return with status set
if (status.getSeverity() == IStatus.CANCEL) {
@@ -176,7 +176,7 @@ public class MirrorRequest extends ArtifactRequest {
return;
}
- IStatus canonicalStatus = transfer(getDestinationDescriptor(canonical), canonical, monitor);
+ IStatus canonicalStatus = transfer(getDestinationDescriptor(canonical, true), canonical, monitor);
// To prevent the optimized transfer status severity from dominating the canonical, only merge
// if the canonical severity is equal to or higher than the optimized transfer severity.
if (canonicalStatus.getSeverity() < status.getSeverity())
@@ -185,7 +185,7 @@ public class MirrorRequest extends ArtifactRequest {
setResult(new MultiStatus(Activator.ID, canonicalStatus.getCode() != 0 ? canonicalStatus.getCode() : status.getCode(), new IStatus[] {status, canonicalStatus}, Messages.MirrorRequest_multipleDownloadProblems, null));
}
- private IArtifactDescriptor getDestinationDescriptor(IArtifactDescriptor sourceDescriptor) {
+ private IArtifactDescriptor getDestinationDescriptor(IArtifactDescriptor sourceDescriptor, boolean isCanonical) {
// Get the descriptor to use to store the artifact
// Since we are mirroring, ensure we clear out data from the original descriptor that may
// not apply in the new repo location.
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/RawMirrorRequest.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/RawMirrorRequest.java
index 3e103e9cc..823bfc647 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/RawMirrorRequest.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/RawMirrorRequest.java
@@ -20,7 +20,10 @@ import java.util.Collection;
import java.util.Collections;
import org.eclipse.core.runtime.*;
import org.eclipse.equinox.internal.p2.artifact.processors.checksum.ChecksumUtilities;
+import org.eclipse.equinox.internal.p2.artifact.processors.checksum.ChecksumVerifier;
import org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository;
+import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
+import org.eclipse.equinox.internal.p2.repository.Activator;
import org.eclipse.equinox.internal.p2.repository.Transport;
import org.eclipse.equinox.internal.provisional.p2.artifact.repository.processing.ProcessingStep;
import org.eclipse.equinox.internal.provisional.p2.artifact.repository.processing.ProcessingStepHandler;
@@ -57,7 +60,7 @@ public class RawMirrorRequest extends MirrorRequest {
}
IStatus status = transfer(targetDescriptor, sourceDescriptor, monitor);
- // if ok, cancelled or transfer has already been done with the canonical form return with status set
+ // if ok, cancelled or transfer has already been done with the canonical form return with status set
if (status.getSeverity() == IStatus.CANCEL) {
setResult(status);
return;
@@ -85,9 +88,13 @@ public class RawMirrorRequest extends MirrorRequest {
// Perform the mirror operation without any processing steps
@Override
protected IStatus getArtifact(IArtifactDescriptor artifactDescriptor, OutputStream destination, IProgressMonitor monitor) {
-
if (SimpleArtifactRepository.CHECKSUMS_ENABLED) {
- Collection<ProcessingStep> steps = ChecksumUtilities.getChecksumVerifiers(artifactDescriptor, IArtifactDescriptor.DOWNLOAD_CHECKSUM, Collections.emptySet());
+ Collection<ChecksumVerifier> steps = ChecksumUtilities.getChecksumVerifiers(artifactDescriptor,
+ IArtifactDescriptor.DOWNLOAD_CHECKSUM, Collections.emptySet());
+ if (steps.isEmpty()) {
+ LogHelper.log(new Status(IStatus.WARNING, Activator.ID,
+ NLS.bind(Messages.noDigestAlgorithmToVerifyDownload, artifactDescriptor.getArtifactKey())));
+ }
ProcessingStep[] stepArray = steps.toArray(new ProcessingStep[steps.size()]);
// TODO should probably be using createAndLink here
ProcessingStepHandler handler = new ProcessingStepHandler();
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/messages.properties b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/messages.properties
index fa54c3f8c..6a2901ac7 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/messages.properties
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/messages.properties
@@ -62,4 +62,7 @@ calculateChecksum_providerError=Checksum provider id={0} algorithm={1} provider=
exception_unableToCreateParentDir = Unable to create parent directory.
folder_artifact_not_file_repo=Artifact {0} is a folder but the repository is an archive or remote location.
retryRequest=Download of {0} failed on repository {1}. Retrying.
-error_copying_local_file=An error occurred copying file {0}. \ No newline at end of file
+error_copying_local_file=An error occurred copying file {0}.
+
+onlyInsecureDigestAlgorithmUsed = The digest algorithms ({0}) used to verify {1} have severely compromised security. Please report this concern to the artifact provider.
+noDigestAlgorithmToVerifyDownload = No digest algorithm is available to verify download of {0}. \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/Mapper.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/Mapper.java
index 3301b48ae..8a07be022 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/Mapper.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/Mapper.java
@@ -16,8 +16,7 @@ package org.eclipse.equinox.internal.p2.artifact.repository.simple;
import java.net.URI;
import java.net.URISyntaxException;
-import java.util.Dictionary;
-import java.util.Hashtable;
+import java.util.*;
import org.eclipse.core.runtime.URIUtil;
import org.osgi.framework.*;
@@ -54,34 +53,37 @@ public class Mapper {
}
}
- public URI map(URI repositoryLocation, String classifier, String id, String version, String format) {
+ public URI map(URI repositoryLocation, String classifier, String id, String version, String format,
+ Map<String, String> properties) {
String locationString = URIUtil.toUnencodedString(repositoryLocation);
- Dictionary<String, Object> values = new Hashtable<>(5);
- if (repositoryLocation != null)
- values.put(REPOURL, locationString);
-
- if (classifier != null)
- values.put(CLASSIFIER, classifier);
-
- if (id != null)
- values.put(ID, id);
-
- if (version != null)
- values.put(VERSION, version);
-
- if (format != null)
- values.put(FORMAT, format);
+ Dictionary<String, String> allProperties = new Hashtable<>(properties.size() + 4);
+ if (repositoryLocation != null) {
+ allProperties.put(REPOURL, locationString);
+ }
+ if (classifier != null) {
+ allProperties.put(CLASSIFIER, classifier);
+ }
+ if (id != null) {
+ allProperties.put(ID, id);
+ }
+ if (version != null) {
+ allProperties.put(VERSION, version);
+ }
+ if (format != null) {
+ allProperties.put(FORMAT, format);
+ }
for (int i = 0; i < filters.length; i++) {
- if (filters[i].match(values))
- return doReplacement(outputStrings[i], locationString, classifier, id, version, format);
+ if (filters[i].match(allProperties))
+ return doReplacement(outputStrings[i], locationString, classifier, id, version, format, properties);
}
return null;
}
- private URI doReplacement(String pattern, String repoLocation, String classifier, String id, String version, String format) {
+ private URI doReplacement(String pattern, String repoLocation, String classifier, String id, String version,
+ String format, Map<String, String> properties) {
try {
- // currently our mapping rules assume the repo URL is not "/" terminated.
+ // currently our mapping rules assume the repo URL is not "/" terminated.
// This may be the case for repoURLs in the root of a URL space e.g. root of a jar file or file:/c:/
if (repoLocation.endsWith("/")) //$NON-NLS-1$
repoLocation = repoLocation.substring(0, repoLocation.length() - 1);
@@ -109,6 +111,8 @@ public class Mapper {
varValue = repoLocation;
} else if (varName.equalsIgnoreCase(FORMAT)) {
varValue = format;
+ } else if (properties.containsKey(varName)) {
+ varValue = properties.get(varName);
}
if (varValue == null)
varValue = ""; //$NON-NLS-1$
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepository.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepository.java
index 992beed7d..b13c03692 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepository.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepository.java
@@ -29,9 +29,12 @@ import java.util.jar.JarOutputStream;
import org.eclipse.core.runtime.*;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.equinox.internal.p2.artifact.processors.checksum.ChecksumUtilities;
+import org.eclipse.equinox.internal.p2.artifact.processors.checksum.ChecksumVerifier;
+import org.eclipse.equinox.internal.p2.artifact.processors.pgp.PGPSignatureVerifier;
import org.eclipse.equinox.internal.p2.artifact.repository.*;
import org.eclipse.equinox.internal.p2.artifact.repository.Messages;
import org.eclipse.equinox.internal.p2.core.helpers.FileUtils;
+import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
import org.eclipse.equinox.internal.p2.metadata.ArtifactKey;
import org.eclipse.equinox.internal.p2.metadata.expression.CompoundIterator;
import org.eclipse.equinox.internal.p2.metadata.index.IndexProvider;
@@ -48,8 +51,7 @@ import org.eclipse.equinox.p2.metadata.index.IIndexProvider;
import org.eclipse.equinox.p2.query.*;
import org.eclipse.equinox.p2.repository.*;
import org.eclipse.equinox.p2.repository.artifact.*;
-import org.eclipse.equinox.p2.repository.artifact.spi.AbstractArtifactRepository;
-import org.eclipse.equinox.p2.repository.artifact.spi.ArtifactDescriptor;
+import org.eclipse.equinox.p2.repository.artifact.spi.*;
import org.eclipse.osgi.service.datalocation.Location;
import org.eclipse.osgi.util.NLS;
@@ -119,7 +121,7 @@ public class SimpleArtifactRepository extends AbstractArtifactRepository impleme
private long cacheTimestamp = 0l;
- public class ArtifactOutputStream extends OutputStream implements IStateful {
+ public class ArtifactOutputStream extends OutputStream implements IStateful, IAdaptable {
private boolean closed;
private long count = 0;
private IArtifactDescriptor descriptor;
@@ -203,6 +205,14 @@ public class SimpleArtifactRepository extends AbstractArtifactRepository impleme
public void setFirstLink(OutputStream value) {
firstLink = value;
}
+
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ if (adapter.isInstance(descriptor)) {
+ return adapter.cast(descriptor);
+ }
+ return null;
+ }
}
// TODO: optimize
@@ -478,6 +488,7 @@ public class SimpleArtifactRepository extends AbstractArtifactRepository impleme
Set<String> skipChecksums = ARTIFACT_MD5_CHECKSUM_ENABLED ? Collections.emptySet() : Collections.singleton(ChecksumHelper.MD5);
addChecksumVerifiers(descriptor, steps, skipChecksums, IArtifactDescriptor.ARTIFACT_CHECKSUM);
+ addPGPSignatureVerifier(descriptor, steps);
if (steps.isEmpty())
return destination;
@@ -486,13 +497,28 @@ public class SimpleArtifactRepository extends AbstractArtifactRepository impleme
return handler.link(stepArray, destination, monitor);
}
+ private void addPGPSignatureVerifier(IArtifactDescriptor descriptor, ArrayList<ProcessingStep> steps) {
+ if (descriptor.getProperties().containsKey(PGPSignatureVerifier.PGP_SIGNATURES_PROPERTY_NAME)) {
+ PGPSignatureVerifier step = new PGPSignatureVerifier();
+ ProcessingStepDescriptor stepDescriptor = new ProcessingStepDescriptor(PGPSignatureVerifier.ID, null, true);
+ step.initialize(getProvisioningAgent(), stepDescriptor, descriptor);
+ steps.add(step);
+ }
+ }
+
private OutputStream addPreSteps(ProcessingStepHandler handler, IArtifactDescriptor descriptor, OutputStream destination, IProgressMonitor monitor) {
ArrayList<ProcessingStep> steps = new ArrayList<>();
if (IArtifactDescriptor.TYPE_ZIP.equals(descriptor.getProperty(IArtifactDescriptor.DOWNLOAD_CONTENTTYPE)))
steps.add(new ZipVerifierStep());
Set<String> skipChecksums = DOWNLOAD_MD5_CHECKSUM_ENABLED ? Collections.emptySet() : Collections.singleton(ChecksumHelper.MD5);
- addChecksumVerifiers(descriptor, steps, skipChecksums, IArtifactDescriptor.DOWNLOAD_CHECKSUM);
+ ArrayList<ProcessingStep> downloadChecksumSteps = new ArrayList<>();
+ addChecksumVerifiers(descriptor, downloadChecksumSteps, skipChecksums, IArtifactDescriptor.DOWNLOAD_CHECKSUM);
+ if (downloadChecksumSteps.isEmpty() && !isLocal()) {
+ LogHelper.log(new Status(IStatus.WARNING, Activator.ID,
+ NLS.bind(Messages.noDigestAlgorithmToVerifyDownload, descriptor.getArtifactKey())));
+ }
+ steps.addAll(downloadChecksumSteps);
// Add steps here if needed
if (steps.isEmpty())
@@ -504,7 +530,8 @@ public class SimpleArtifactRepository extends AbstractArtifactRepository impleme
private void addChecksumVerifiers(IArtifactDescriptor descriptor, ArrayList<ProcessingStep> steps, Set<String> skipChecksums, String property) {
if (CHECKSUMS_ENABLED) {
- Collection<ProcessingStep> checksumVerifiers = ChecksumUtilities.getChecksumVerifiers(descriptor, property, skipChecksums);
+ Collection<ChecksumVerifier> checksumVerifiers = ChecksumUtilities.getChecksumVerifiers(descriptor,
+ property, skipChecksums);
steps.addAll(checksumVerifiers);
}
}
@@ -558,7 +585,8 @@ public class SimpleArtifactRepository extends AbstractArtifactRepository impleme
if (descriptor.getProcessingSteps().length == 0) {
descriptor.setProperty(ARTIFACT_UUID, null);
IArtifactKey key = descriptor.getArtifactKey();
- URI result = mapper.map(getLocation(), key.getClassifier(), key.getId(), key.getVersion().toString(), descriptor.getProperty(IArtifactDescriptor.FORMAT));
+ URI result = mapper.map(getLocation(), key.getClassifier(), key.getId(), key.getVersion().toString(),
+ descriptor.getProperty(IArtifactDescriptor.FORMAT), descriptor.getProperties());
if (result != null) {
if (isFolderBased(descriptor) && URIUtil.lastSegment(result).endsWith(JAR_EXTENSION)) {
return URIUtil.removeFileExtension(result);
@@ -898,6 +926,7 @@ public class SimpleArtifactRepository extends AbstractArtifactRepository impleme
* for compatibility with the format used in optimized update sites. We call
* this arrangement "flat but packed".
*/
+ @SuppressWarnings("removal")
private boolean flatButPackedEnabled(IArtifactDescriptor descriptor) {
return Boolean.TRUE.toString().equals(getProperties().get(PUBLISH_PACK_FILES_AS_SIBLINGS)) && IArtifactDescriptor.FORMAT_PACKED.equals(descriptor.getProperty(IArtifactDescriptor.FORMAT));
}
@@ -907,7 +936,8 @@ public class SimpleArtifactRepository extends AbstractArtifactRepository impleme
*/
private URI getLocationForPackedButFlatArtifacts(IArtifactDescriptor descriptor) {
IArtifactKey key = descriptor.getArtifactKey();
- return mapper.map(getLocation(), key.getClassifier(), key.getId(), key.getVersion().toString(), descriptor.getProperty(IArtifactDescriptor.FORMAT));
+ return mapper.map(getLocation(), key.getClassifier(), key.getId(), key.getVersion().toString(),
+ descriptor.getProperty(IArtifactDescriptor.FORMAT), descriptor.getProperties());
}
public synchronized URI getLocation(IArtifactDescriptor descriptor) {
@@ -936,7 +966,8 @@ public class SimpleArtifactRepository extends AbstractArtifactRepository impleme
// if the descriptor is complete then use the mapping rules...
if (descriptor.getProcessingSteps().length == 0) {
IArtifactKey key = descriptor.getArtifactKey();
- URI result = mapper.map(getLocation(), key.getClassifier(), key.getId(), key.getVersion().toString(), descriptor.getProperty(IArtifactDescriptor.FORMAT));
+ URI result = mapper.map(getLocation(), key.getClassifier(), key.getId(), key.getVersion().toString(),
+ descriptor.getProperty(IArtifactDescriptor.FORMAT), descriptor.getProperties());
if (result != null) {
if (isFolderBased(descriptor) && URIUtil.lastSegment(result).endsWith(JAR_EXTENSION))
return URIUtil.removeFileExtension(result);
@@ -1269,8 +1300,10 @@ public class SimpleArtifactRepository extends AbstractArtifactRepository impleme
boolean found = false;
IStatus[] stepStatusChildren = stepStatus.getChildren();
for (int i = 0; i < stepStatusChildren.length && !found; i++)
- if (stepStatusChildren[i] == status)
+ if (stepStatusChildren[i] == status) {
found = true;
+ break;
+ }
if (!found)
result.merge(status);
}
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/UniversalUniqueIdentifier.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/UniversalUniqueIdentifier.java
index 90fa151e9..ab172c03a 100644
--- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/UniversalUniqueIdentifier.java
+++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/UniversalUniqueIdentifier.java
@@ -296,8 +296,8 @@ public class UniversalUniqueIdentifier implements java.io.Serializable {
@Override
public String toString() {
StringBuilder buffer = new StringBuilder();
- for (int i = 0; i < fBits.length; i++)
- appendByteString(buffer, fBits[i]);
+ for (byte bit : fBits)
+ appendByteString(buffer, bit);
return buffer.toString();
}
diff --git a/bundles/org.eclipse.equinox.p2.console/.classpath b/bundles/org.eclipse.equinox.p2.console/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.console/.classpath
+++ b/bundles/org.eclipse.equinox.p2.console/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.console/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.console/.settings/org.eclipse.jdt.core.prefs
index 58ce6826f..71d3a6cc8 100644
--- a/bundles/org.eclipse.equinox.p2.console/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.console/.settings/org.eclipse.jdt.core.prefs
@@ -19,9 +19,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -37,6 +37,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -90,6 +91,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -125,7 +127,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -139,7 +142,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -260,7 +262,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -331,7 +332,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -476,7 +476,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.console/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.console/META-INF/MANIFEST.MF
index 11515cf35..5fae93979 100644
--- a/bundles/org.eclipse.equinox.p2.console/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.console/META-INF/MANIFEST.MF
@@ -2,12 +2,12 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.console;singleton:=true
-Bundle-Version: 1.1.300.qualifier
+Bundle-Version: 1.2.0.qualifier
Bundle-Activator: org.eclipse.equinox.internal.p2.console.Activator
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package: org.eclipse.equinox.internal.p2.console;x-friends:="org.eclipse.equinox.p2.director.app"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Import-Package: org.eclipse.equinox.internal.p2.core.helpers,
org.eclipse.equinox.internal.provisional.p2.director,
org.eclipse.equinox.p2.core;version="[2.0.0,3.0.0)",
diff --git a/bundles/org.eclipse.equinox.p2.console/Provisioning console.launch b/bundles/org.eclipse.equinox.p2.console/Provisioning console.launch
deleted file mode 100644
index 7d927a0b5..000000000
--- a/bundles/org.eclipse.equinox.p2.console/Provisioning console.launch
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.EquinoxLauncher">
-<booleanAttribute key="automaticAdd" value="false"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/Provisioning console"/>
-<booleanAttribute key="default_auto_start" value="false"/>
-<intAttribute key="default_start_level" value="4"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/java-1.6.0-openjdk-1.6.0.0.x86_64"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-console -consolelog -noexit"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="target_bundles" value="org.eclipse.osgi.services@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.equinox.common@2:true,org.eclipse.core.net@default:default,org.eclipse.equinox.security@default:default,org.eclipse.ecf.provider.filetransfer.httpclient@default:default,org.eclipse.core.net.linux.x86_64@default:false,org.eclipse.core.contenttype@default:default,org.apache.commons.codec@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.app@default:default,org.eclipse.ecf@default:default,javax.servlet@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.apache.commons.logging@default:default,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.equinox.util@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.core.runtime@default:true,org.eclipse.equinox.preferences@default:default,org.apache.commons.httpclient@default:default,org.eclipse.core.jobs@default:default,org.eclipse.osgi@-1:true,org.eclipse.equinox.registry@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.equinox.concurrent@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.httpclient.ssl@default:false,org.eclipse.core.variables@default:default"/>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<stringAttribute key="workspace_bundles" value="org.eclipse.equinox.p2.touchpoint.osgi@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.generator@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.equinox.p2.updatesite@default:default,org.eclipse.equinox.frameworkadmin.equinox@default:true,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.extensionlocation@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.sat4j.pb@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.equinox.p2.touchpoint.eclipse@default:default,org.eclipse.equinox.p2.exemplarysetup@default:true,org.eclipse.equinox.p2.operations@default:default,org.eclipse.equinox.p2.artifact.optimizers@default:default,ie.wombat.jbdiff@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.p2.touchpoint.natives@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.equinox.p2.sar@default:default,org.eclipse.equinox.p2.artifact.processors@default:default,org.eclipse.equinox.p2.console@default:true,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.p2.directorywatcher@default:default,org.sat4j.core@default:default,org.eclipse.equinox.simpleconfigurator@1:true"/>
-</launchConfiguration>
diff --git a/bundles/org.eclipse.equinox.p2.console/pom.xml b/bundles/org.eclipse.equinox.p2.console/pom.xml
index 8a4cdc5da..6be37ac24 100644
--- a/bundles/org.eclipse.equinox.p2.console/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.console/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.console</artifactId>
- <version>1.1.300-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.console/src/org/eclipse/equinox/internal/p2/console/ProvCommandProvider.java b/bundles/org.eclipse.equinox.p2.console/src/org/eclipse/equinox/internal/p2/console/ProvCommandProvider.java
index b32dfc642..d7fd978ca 100644
--- a/bundles/org.eclipse.equinox.p2.console/src/org/eclipse/equinox/internal/p2/console/ProvCommandProvider.java
+++ b/bundles/org.eclipse.equinox.p2.console/src/org/eclipse/equinox/internal/p2/console/ProvCommandProvider.java
@@ -705,7 +705,7 @@ public class ProvCommandProvider implements CommandProvider {
* messages for all commands (if command is not specified)
*/
private String getHelp(String commandName) {
- StringBuffer help = new StringBuffer();
+ StringBuilder help = new StringBuilder();
if (commandsHelp == null) {
initializeCommandsHelp();
@@ -733,14 +733,14 @@ public class ProvCommandProvider implements CommandProvider {
return help.toString();
}
- private void addHeader(String header, StringBuffer help) {
+ private void addHeader(String header, StringBuilder help) {
help.append("---"); //$NON-NLS-1$
help.append(header);
help.append("---"); //$NON-NLS-1$
help.append(NEW_LINE);
}
- private void addCommand(String command, String description, StringBuffer help) {
+ private void addCommand(String command, String description, StringBuilder help) {
help.append(TAB);
help.append(command);
help.append(" "); //$NON-NLS-1$
diff --git a/bundles/org.eclipse.equinox.p2.core/.classpath b/bundles/org.eclipse.equinox.p2.core/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.core/.classpath
+++ b/bundles/org.eclipse.equinox.p2.core/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.core/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.core/.settings/org.eclipse.jdt.core.prefs
index 1466d19a2..0c53402c0 100644
--- a/bundles/org.eclipse.equinox.p2.core/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.core/.settings/org.eclipse.jdt.core.prefs
@@ -18,9 +18,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -36,6 +36,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -89,6 +90,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -124,7 +126,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -138,7 +141,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -259,7 +261,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -330,7 +331,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -475,7 +475,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.core/META-INF/MANIFEST.MF
index 886209f10..73462bd3e 100644
--- a/bundles/org.eclipse.equinox.p2.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.core;singleton:=true
-Bundle-Version: 2.6.200.qualifier
+Bundle-Version: 2.9.100.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.equinox.internal.p2.core.Activator
Bundle-Vendor: %providerName
@@ -64,13 +64,17 @@ Export-Package: org.eclipse.equinox.internal.p2.core;x-friends:="org.eclipse.equ
org.eclipse.equinox.p2.updatesite,
org.eclipse.equinox.p2.director.app,
org.eclipse.equinox.p2.transport.ecf",
- org.eclipse.equinox.p2.core;version="2.0.0",
- org.eclipse.equinox.p2.core.spi;version="2.1.0"
-Require-Bundle: org.eclipse.equinox.common;bundle-version="[3.5.0,4.0.0)"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+ org.eclipse.equinox.p2.core;version="2.8.0";uses:="org.eclipse.core.runtime",
+ org.eclipse.equinox.p2.core.spi;version="2.1.0";uses:="org.eclipse.equinox.p2.core"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Service-Component: OSGI-INF/eventBus.xml, OSGI-INF/agentProvider.xml
-Import-Package: org.eclipse.osgi.framework.eventmgr;version="1.2.0",
+Import-Package: org.bouncycastle.bcpg;version="1.65.0",
+ org.bouncycastle.openpgp;version="1.65.0",
+ org.eclipse.core.runtime;common=split;version="[3.5.0,4.0.0)",
+ org.eclipse.equinox.p2.core;version="[2.8.0,2.9.0)";resolution:=optional,
+ org.eclipse.equinox.p2.core.spi;version="[2.1.0,2.2.0)";resolution:=optional,
+ org.eclipse.osgi.framework.eventmgr;version="1.2.0",
org.eclipse.osgi.framework.log;version="1.0.0",
org.eclipse.osgi.service.debug;version="1.0.0",
org.eclipse.osgi.util;version="1.0.0",
diff --git a/bundles/org.eclipse.equinox.p2.core/META-INF/p2.inf b/bundles/org.eclipse.equinox.p2.core/META-INF/p2.inf
new file mode 100644
index 000000000..0983c41b7
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.core/META-INF/p2.inf
@@ -0,0 +1,5 @@
+# Workaround https://bugs.eclipse.org/bugs/show_bug.cgi?id=525368
+# we hint about which bundle to download at install that is capable of
+# resolving packages
+requires.0.namespace = osgi.bundle
+requires.0.name = org.eclipse.equinox.common \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.core/pom.xml b/bundles/org.eclipse.equinox.p2.core/pom.xml
index 3dc60df31..3913f722d 100644
--- a/bundles/org.eclipse.equinox.p2.core/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.core/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.core</artifactId>
- <version>2.6.200-SNAPSHOT</version>
+ <version>2.9.100-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/Activator.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/Activator.java
index adee2c562..d1fa2c7bf 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/Activator.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/Activator.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Ericsson AB (Pascal Rapicault) - reading preferences from base in shared install
@@ -70,7 +70,7 @@ public class Activator implements BundleActivator {
* Builds a URL with the given specification
* NOTE: This method is copied from LocationHelper in org.eclipse.osgi
* due to access restrictions.
- *
+ *
* @param spec the URL specification
* @param trailingSlash flag to indicate a trailing slash on the spec
* @return a URL
@@ -126,7 +126,7 @@ public class Activator implements BundleActivator {
private IAgentLocation buildLocation(String property, URI defaultLocation, boolean readOnlyDefault, boolean addTrailingSlash) {
String location = Activator.context.getProperty(property);
- // if the instance location is not set, predict where the workspace will be and
+ // if the instance location is not set, predict where the workspace will be and
// put the instance area inside the workspace meta area.
if (location == null)
return new AgentLocation(defaultLocation);
@@ -197,7 +197,7 @@ public class Activator implements BundleActivator {
//This figures out if we are running in shared mode and computes the location of the p2 folder in the base.
//Note that this logic only works for the case where the p2 location is colocated with the configuration area
//(configuration and p2 are sibling of each others).
- //To make that work for other scenarios, the config.ini of the base would have to be read and interpreted.
+ //To make that work for other scenarios, the config.ini of the base would have to be read and interpreted.
URI location = null;
String sharedConfigArea = null;
try {
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/EventBusComponent.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/EventBusComponent.java
index 9a024ea73..a2cc92e17 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/EventBusComponent.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/EventBusComponent.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/CollectionUtils.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/CollectionUtils.java
index 6f15b035a..cb40d0a44 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/CollectionUtils.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/CollectionUtils.java
@@ -70,7 +70,7 @@ public class CollectionUtils {
*/
@Override
public ListIterator<E> listIterator() {
- return new ListIterator<E>() {
+ return new ListIterator<>() {
private int index = 0;
@Override
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/FileUtils.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/FileUtils.java
index f97d822e7..1c48c0742 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/FileUtils.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/FileUtils.java
@@ -25,8 +25,7 @@ public class FileUtils {
private static File[] untarFile(File source, File outputDir) throws IOException, TarException {
List<File> untarredFiles = new ArrayList<>();
try (TarFile tarFile = new TarFile(source)) {
- for (Enumeration<TarEntry> e = tarFile.entries(); e.hasMoreElements();) {
- TarEntry entry = e.nextElement();
+ for (TarEntry entry : tarFile.entries()) {
try (InputStream input = tarFile.getInputStream(entry)) {
File outFile = createSubPathFile(outputDir, entry.getName());
outFile = outFile.getCanonicalFile(); //bug 266844
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/LogHelper.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/LogHelper.java
index eb23efb7a..b3650931d 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/LogHelper.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/LogHelper.java
@@ -45,7 +45,7 @@ public class LogHelper {
ArrayList<FrameworkLogEntry> childlist = new ArrayList<>();
int stackCode = t instanceof CoreException ? 1 : 0;
- // ensure a substatus inside a CoreException is properly logged
+ // ensure a substatus inside a CoreException is properly logged
if (stackCode == 1) {
IStatus coreStatus = ((CoreException) t).getStatus();
if (coreStatus != null) {
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/Messages.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/Messages.java
index a8f30ed06..9e5939cbd 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/Messages.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/Messages.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/SecureXMLUtil.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/SecureXMLUtil.java
index 202921c17..0afeb2936 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/SecureXMLUtil.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/SecureXMLUtil.java
@@ -16,7 +16,6 @@ package org.eclipse.equinox.internal.p2.core.helpers;
import javax.xml.XMLConstants;
import javax.xml.parsers.*;
import org.xml.sax.*;
-import org.xml.sax.helpers.XMLReaderFactory;
/**
* A utility class for creating an XML-related factories suitable for
@@ -52,10 +51,11 @@ public class SecureXMLUtil {
* Create a new {@link XMLReader}.
*
* @throws SAXException
+ * @throws ParserConfigurationException
*/
- public static XMLReader newSecureXMLReader() throws SAXException {
- XMLReader reader = XMLReaderFactory.createXMLReader();
- reader.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
- return reader;
+ public static XMLReader newSecureXMLReader() throws SAXException, ParserConfigurationException {
+ SAXParserFactory factory = newSecureSAXParserFactory();
+ factory.setNamespaceAware(true);
+ return factory.newSAXParser().getXMLReader();
}
}
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/ServiceHelper.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/ServiceHelper.java
index 3e1433ce0..60a6a029e 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/ServiceHelper.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/ServiceHelper.java
@@ -8,7 +8,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/
package org.eclipse.equinox.internal.p2.core.helpers;
@@ -20,8 +20,8 @@ public class ServiceHelper {
/**
* Returns the service described by the given arguments. Note that this is a helper class
* that <b>immediately</b> ungets the service reference. This results in a window where the
- * system thinks the service is not in use but indeed the caller is about to use the returned
- * service object.
+ * system thinks the service is not in use but indeed the caller is about to use the returned
+ * service object.
* @param context
* @param clazz the service class
* @return The requested service
@@ -56,8 +56,8 @@ public class ServiceHelper {
/**
* Returns the service described by the given arguments. Note that this is a helper class
* that <b>immediately</b> ungets the service reference. This results in a window where the
- * system thinks the service is not in use but indeed the caller is about to use the returned
- * service object.
+ * system thinks the service is not in use but indeed the caller is about to use the returned
+ * service object.
* @param context
* @param name
* @return The requested service
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/StringHelper.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/StringHelper.java
index 5dcbab1a2..58ddb4d36 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/StringHelper.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/StringHelper.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/TarEntry.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/TarEntry.java
index d96f966c2..77d9105e9 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/TarEntry.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/TarEntry.java
@@ -1,13 +1,13 @@
/*******************************************************************************
* Copyright (c) 2008 IBM Corporation and others.
*
- * This program and the accompanying materials
+ * This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -35,7 +35,7 @@ public class TarEntry implements Cloneable {
/**
* Create a new TarEntry for a file of the given name at the
* given position in the file.
- *
+ *
* @param name filename
* @param pos position in the file in bytes
*/
@@ -50,7 +50,7 @@ public class TarEntry implements Cloneable {
/**
* Returns the type of this file, one of FILE, LINK, SYM_LINK,
* CHAR_DEVICE, BLOCK_DEVICE, DIRECTORY or FIFO.
- *
+ *
* @return file type
*/
public int getFileType() {
@@ -59,7 +59,7 @@ public class TarEntry implements Cloneable {
/**
* Returns the mode of the file in UNIX permissions format.
- *
+ *
* @return file mode
*/
public long getMode() {
@@ -68,7 +68,7 @@ public class TarEntry implements Cloneable {
/**
* Returns the name of the file.
- *
+ *
* @return filename
*/
public String getName() {
@@ -77,7 +77,7 @@ public class TarEntry implements Cloneable {
/**
* Returns the size of the file in bytes.
- *
+ *
* @return filesize
*/
public long getSize() {
@@ -87,7 +87,7 @@ public class TarEntry implements Cloneable {
/**
* Returns the modification time of the file in seconds since January
* 1st 1970.
- *
+ *
* @return time
*/
public long getTime() {
@@ -97,7 +97,7 @@ public class TarEntry implements Cloneable {
/**
* Sets the type of the file, one of FILE, LINK, SYMLINK, CHAR_DEVICE,
* BLOCK_DEVICE, or DIRECTORY.
- *
+ *
* @param type
*/
public void setFileType(int type) {
@@ -106,7 +106,7 @@ public class TarEntry implements Cloneable {
/**
* Sets the mode of the file in UNIX permissions format.
- *
+ *
* @param mode
*/
public void setMode(long mode) {
@@ -115,7 +115,7 @@ public class TarEntry implements Cloneable {
/**
* Sets the size of the file in bytes.
- *
+ *
* @param size
*/
public void setSize(long size) {
@@ -125,7 +125,7 @@ public class TarEntry implements Cloneable {
/**
* Sets the modification time of the file in seconds since January
* 1st 1970.
- *
+ *
* @param time
*/
public void setTime(long time) {
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/TarException.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/TarException.java
index 4cccb4b7b..9573bb063 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/TarException.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/TarException.java
@@ -1,13 +1,13 @@
/*******************************************************************************
* Copyright (c) 2008 IBM Corporation and others.
*
- * This program and the accompanying materials
+ * This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/TarFile.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/TarFile.java
index ff9732f0a..e8ccb6cd0 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/TarFile.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/p2/core/helpers/TarFile.java
@@ -1,20 +1,21 @@
/*******************************************************************************
* Copyright (c) 2008, 2018 IBM Corporation and others.
*
- * This program and the accompanying materials
+ * This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.internal.p2.core.helpers;
import java.io.*;
-import java.util.Enumeration;
+import java.util.Objects;
+import java.util.stream.Stream;
import java.util.zip.GZIPInputStream;
/**
@@ -23,14 +24,12 @@ import java.util.zip.GZIPInputStream;
public class TarFile implements Closeable {
private File file;
private TarInputStream entryEnumerationStream;
- private TarEntry curEntry;
private TarInputStream entryStream;
-
private InputStream internalEntryStream;
/**
* Create a new TarFile for the given file.
- *
+ *
* @param file
* @throws TarException
* @throws IOException
@@ -54,12 +53,11 @@ public class TarFile implements Closeable {
in.close();
throw ex;
}
- curEntry = entryEnumerationStream.getNextEntry();
}
/**
* Close the tar file input stream.
- *
+ *
* @throws IOException if the file cannot be successfully closed
*/
@Override
@@ -71,34 +69,23 @@ public class TarFile implements Closeable {
/**
* Returns an enumeration cataloguing the tar archive.
- *
+ *
* @return enumeration of all files in the archive
*/
- public Enumeration<TarEntry> entries() {
- return new Enumeration<TarEntry>() {
- @Override
- public boolean hasMoreElements() {
- return (curEntry != null);
- }
-
- @Override
- public TarEntry nextElement() {
- TarEntry oldEntry = curEntry;
- try {
- curEntry = entryEnumerationStream.getNextEntry();
- } catch (TarException e) {
- curEntry = null;
- } catch (IOException e) {
- curEntry = null;
- }
- return oldEntry;
+ public Iterable<TarEntry> entries() throws TarException, IOException {
+ TarEntry first = entryEnumerationStream.getNextEntry(); // throws if stream is empty
+ return Stream.iterate(first, Objects::nonNull, e -> {
+ try {
+ return entryEnumerationStream.getNextEntry();
+ } catch (TarException | IOException e1) {
+ return null;
}
- };
+ })::iterator;
}
/**
* Returns a new InputStream for the given file in the tar archive.
- *
+ *
* @param entry
* @return an input stream for the given file
* @throws TarException
@@ -131,7 +118,7 @@ public class TarFile implements Closeable {
/**
* Returns the path name of the file this archive represents.
- *
+ *
* @return path
*/
public String getName() {
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/provisional/p2/core/eventbus/IProvisioningEventBus.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/provisional/p2/core/eventbus/IProvisioningEventBus.java
index ee88772ca..f4dd7638b 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/provisional/p2/core/eventbus/IProvisioningEventBus.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/internal/provisional/p2/core/eventbus/IProvisioningEventBus.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/IAgentLocation.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/IAgentLocation.java
index 23457a028..363d6569e 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/IAgentLocation.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/IAgentLocation.java
@@ -16,9 +16,9 @@ package org.eclipse.equinox.p2.core;
import java.net.URI;
/**
- * An instance of this service represents the location of a provisioning agent's
- * metadata.
- *
+ * An instance of this service represents the location of a provisioning agent's
+ * metadata.
+ *
* @noimplement This interface is not intended to be implemented by clients.
* @noextend This interface is not intended to be extended by clients.
* @since 2.0
@@ -39,7 +39,7 @@ public interface IAgentLocation {
/**
* Returns the root {@link URI} of the agent metadata.
- *
+ *
* @return the location of the agent metadata
*/
public URI getRootLocation();
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/IPool.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/IPool.java
index 4ab95604e..50eec08b4 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/IPool.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/IPool.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -22,16 +22,16 @@ package org.eclipse.equinox.p2.core;
* </p><p>
* This interface is not intended to be implemented by clients.
* </p>
- * @noimplement This interface is not intended to be implemented by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
* @since 2.1
*/
public interface IPool<T> {
- /**
- * Returns the first object from this pool which is equal to the given object. If the pool
- * contains no such object then the object is added to the pool and returned. If the object is <code>null</code>,
+ /**
+ * Returns the first object from this pool which is equal to the given object. If the pool
+ * contains no such object then the object is added to the pool and returned. If the object is <code>null</code>,
* <code>null</code> is returned.
- *
+ *
* @param newObject the object to add
* @return a shared object that is equal to the given object or <code>null</code>
*/
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/IProvisioningAgent.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/IProvisioningAgent.java
index 694a40856..37f4bfbb9 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/IProvisioningAgent.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/IProvisioningAgent.java
@@ -96,7 +96,7 @@ public interface IProvisioningAgent {
public void registerService(String serviceName, Object service);
/**
- * Stops the provisioning agent. This causes services provided by this
+ * Stops the provisioning agent. This causes services provided by this
* agent to be cleaned up and discarded. No services provided by the agent
* should be referenced after the agent has been stopped, and subsequent
* attempts to obtain services after the agent has stopped will fail.
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/IProvisioningAgentProvider.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/IProvisioningAgentProvider.java
index 821bbebf0..c3eeda8a0 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/IProvisioningAgentProvider.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/IProvisioningAgentProvider.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -29,7 +29,7 @@ public interface IProvisioningAgentProvider {
/**
* Creates a provisioning agent who metadata is stored at the given location.
- * If a <code>null</code> location is provided, the provisioning agent for the
+ * If a <code>null</code> location is provided, the provisioning agent for the
* currently running system is returned, if available. If a <code>null</code>
* location is provided and the currently running system has not been provisioned
* by any known agent, <code>null</code> is returned.
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/ProvisionException.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/ProvisionException.java
index 6fd61efdf..463398023 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/ProvisionException.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/ProvisionException.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -19,7 +19,7 @@ import org.eclipse.equinox.internal.p2.core.Activator;
/**
* A checked exception indicating a recoverable error occurred while provisioning.
* The status provides a further description of the problem.
- *
+ *
* @noextend This class is not intended to be subclassed by clients.
* @since 2.0
*/
@@ -34,48 +34,48 @@ public class ProvisionException extends CoreException {
//Repository status codes [1000-1999]
//General repository codes [1000-1099]
- /**
+ /**
* Status code constant (value 1000) indicating a repository
* unexpectedly does not exist.
*/
public static final int REPOSITORY_NOT_FOUND = 1000;
- /**
+ /**
* Status code constant (value 1001) indicating a repository
* unexpectedly exists.
*/
public static final int REPOSITORY_EXISTS = 1001;
- /**
+ /**
* Status code constant (value 1002) indicating a repository
* could not be read
*/
public static final int REPOSITORY_FAILED_READ = 1002;
- /**
+ /**
* Status code constant (value 1003) indicating a failure occurred
* while writing to a repository.
*/
public static final int REPOSITORY_FAILED_WRITE = 1003;
- /**
+ /**
* Status code constant (value 1004) indicating a repository
* could not be written because it is a read-only repository.
*/
public static final int REPOSITORY_READ_ONLY = 1004;
- /**
+ /**
* Status code constant (value 1005) indicating an attempt was
* made to create or access a repository of unknown type.
*/
public static final int REPOSITORY_UNKNOWN_TYPE = 1005;
- /**
+ /**
* Status code constant (value 1006) indicating that a specified
* repository location is not valid.
*/
public static final int REPOSITORY_INVALID_LOCATION = 1006;
- /**
+ /**
* Status code constant (value 1007) indicating that there was
* an authentication error while reading a repository
*/
@@ -85,13 +85,13 @@ public class ProvisionException extends CoreException {
//Artifact repository codes [1200-1299]
- /**
+ /**
* Status code constant (value 1200) indicating an artifact unexpectedly
* does not exist.
*/
public static final int ARTIFACT_NOT_FOUND = 1200;
- /**
+ /**
* Status code constant (value 1201) indicating an artifact unexpectedly
* already exists.
*/
@@ -121,7 +121,7 @@ public class ProvisionException extends CoreException {
}
/**
- * Creates a new exception with the given message and a severity of
+ * Creates a new exception with the given message and a severity of
* {@link IStatus#ERROR}.
*
* @param message The human-readable problem message
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/StrongPool.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/StrongPool.java
index 239462932..3b8b50ce9 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/StrongPool.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/StrongPool.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -18,9 +18,9 @@ import java.util.Map;
/**
* An object pool backed by strong references. Objects stored in this pool
- * will not be garbage collected as they refer to themselves. The client is responsible for
+ * will not be garbage collected as they refer to themselves. The client is responsible for
* nulling all references to the pool instance when it is no longer needed so that
- * the contained objects can be garbage collected.
+ * the contained objects can be garbage collected.
* <p>
* If a long lived, memory managed pool is required use {@link org.eclipse.equinox.p2.core.WeakPool}.
* </p>
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/UIServices.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/UIServices.java
index 8826be6ea..5be838d4b 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/UIServices.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/UIServices.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Rapicorp, Inc. - add support for information dialog
@@ -15,17 +15,20 @@
package org.eclipse.equinox.p2.core;
import java.security.cert.Certificate;
+import java.util.Collection;
+import java.util.Collections;
+import org.bouncycastle.openpgp.PGPPublicKey;
/**
* Service used for prompting for user information from within lower level code.
* Implementors of this service are responsible for registering the service.
- *
+ *
* It is possible that the UIServices service is requested very early in the startup
- * sequence for an application. For example, applications that check for updates
+ * sequence for an application. For example, applications that check for updates
* during startup will trigger the service lookup if a server requiring authentication
- * is detected. For this reason, implementors of UIServices should ensure that the
+ * is detected. For this reason, implementors of UIServices should ensure that the
* bundle providing the service is partitioned appropriately.
- *
+ *
* @since 2.0
*/
public abstract class UIServices {
@@ -35,9 +38,9 @@ public abstract class UIServices {
public static final String SERVICE_NAME = UIServices.class.getName();
/**
- * This constant may be returned by the <code>getUsernamePassword</code> methods if the user
+ * This constant may be returned by the <code>getUsernamePassword</code> methods if the user
* explicitly canceled the authentication prompt.
- *
+ *
* @since 2.2
*/
public static final AuthenticationInfo AUTHENTICATION_PROMPT_CANCELED = new AuthenticationInfo("", "", false); //$NON-NLS-1$//$NON-NLS-2$
@@ -70,15 +73,71 @@ public abstract class UIServices {
}
/**
- * Trust information returned from a trust request. *
+ * Trust information returned from a trust request.
*/
public static class TrustInfo {
private final Certificate[] trustedCertificates;
+ private final Collection<PGPPublicKey> trustedPGPKeys;
private final boolean saveTrustedCertificates;
private final boolean trustUnsigned;
+ private final boolean trustAlways;
+ /**
+ *
+ * @param trusted Trusted certificates
+ * @param save Whether to store trusted certificates or not
+ * @param trustUnsigned Whether to trust unsigned. <code>true</code> if
+ * installation should continue despite unsigned content;
+ * <code>false</code> otherwise.
+ * @deprecated use other constructor
+ */
+ @Deprecated
public TrustInfo(Certificate[] trusted, boolean save, boolean trustUnsigned) {
this.trustedCertificates = trusted;
+ this.trustedPGPKeys = Collections.emptyList();
+ this.saveTrustedCertificates = save;
+ this.trustUnsigned = trustUnsigned;
+ trustAlways = false;
+ }
+
+ /**
+ *
+ * @param trustedCertificates Trusted certificates
+ * @param trustedPGPKeys Trusted PGP public keys
+ * @param save Whether to store trusted certificates and keys or
+ * not.
+ * @param trustUnsigned Whether to trust unsigned. <code>true</code> if
+ * installation should continue despite unsigned
+ * content; <code>false</code> otherwise.
+ * @since 2.8
+ */
+ public TrustInfo(Collection<Certificate> trustedCertificates, Collection<PGPPublicKey> trustedPGPKeys,
+ boolean save,
+ boolean trustUnsigned) {
+ this(trustedCertificates, trustedPGPKeys, save, trustUnsigned, false);
+ }
+
+ /**
+ * @param trustedCertificates Trusted certificates
+ * @param trustedPGPKeys Trusted PGP public keys
+ * @param save Whether to store trusted certificates and keys or
+ * not.
+ * @param trustUnsigned Whether to trust unsigned content.
+ * <code>true</code> if installation should continue
+ * despite unsigned content; <code>false</code>
+ * otherwise.
+ * @param trustAlways Whether to always trust all content regardless of
+ * whether it's signed, regardless of how it's
+ * signed, and regardless of the certificate or key
+ * with which it's signed.
+ *
+ * @since 2.9
+ */
+ public TrustInfo(Collection<Certificate> trustedCertificates, Collection<PGPPublicKey> trustedPGPKeys,
+ boolean save, boolean trustUnsigned, boolean trustAlways) {
+ this.trustAlways = trustAlways;
+ this.trustedCertificates = trustedCertificates.toArray(Certificate[]::new);
+ this.trustedPGPKeys = trustedPGPKeys;
this.saveTrustedCertificates = save;
this.trustUnsigned = trustUnsigned;
}
@@ -86,7 +145,7 @@ public abstract class UIServices {
/**
* Return an array of the certificates that should be trusted for the
* requested operation.
- *
+ *
* @return the trusted certificates, or <code>null</code> if there are
* no certificates that were verified as trusted.
*/
@@ -95,10 +154,22 @@ public abstract class UIServices {
}
/**
+ *
+ * Return a collection of the keys that should be trusted for the requested
+ * operation.
+ *
+ * @return the trusted PGP keys.
+ * @since 2.8
+ */
+ public Collection<PGPPublicKey> getTrustedPGPKeys() {
+ return trustedPGPKeys;
+ }
+
+ /**
* Return a boolean indicating whether the trusted certificates should
* be persisted for future operations.
- *
- * @return <code>true</code> if the trusted certificates should be persisted, <code>false</code> if
+ *
+ * @return <code>true</code> if the trusted certificates should be persisted, <code>false</code> if
* the trust only applies for this request.
*/
public boolean persistTrust() {
@@ -108,18 +179,32 @@ public abstract class UIServices {
/**
* Return a boolean indicating whether the unsigned content should be trusted
* during this operation.
- *
- * @return <code>true</code> if the unsigned content should be trusted, or if there was no unsigned content,
+ *
+ * @return <code>true</code> if the unsigned content should be trusted, or if there was no unsigned content,
* and <code>false</code> if there was unsigned content and should not be trusted.
*/
public boolean trustUnsignedContent() {
return trustUnsigned;
}
+
+ /**
+ * Return a boolean indicating whether to always trust all content regardless of
+ * whether it's signed, regardless of how it's signed, and regardless of the
+ * certificate or key with which it's signed, both during this operation and for
+ * all future operations.
+ *
+ * @return <code>true</code> if all content should always be trusted, and
+ * <code>false</code> otherwise.
+ * @since 2.9
+ */
+ public boolean trustAlways() {
+ return trustAlways;
+ }
}
/**
* Opens a UI prompt for authentication details
- *
+ *
* @param location - the location requiring login details, may be <code>null</code>.
* @return The authentication result, or <code>null</code>, or {@link #AUTHENTICATION_PROMPT_CANCELED}
*/
@@ -128,7 +213,7 @@ public abstract class UIServices {
/**
* Opens a UI prompt for authentication details when cached or remembered details
* where not accepted.
- *
+ *
* @param location the location requiring login details
* @param previousInfo - the previously used authentication details - may not be null.
* @return The authentication result, or <code>null</code>, or {@link #AUTHENTICATION_PROMPT_CANCELED}
@@ -137,13 +222,17 @@ public abstract class UIServices {
/**
* Opens a UI prompt to capture information about trusted content.
- *
- * @param untrustedChain - an array of certificate chains for which there is no current trust anchor. May be
- * <code>null</code>, which means there are no untrusted certificate chains.
- * @param unsignedDetail - an array of strings, where each String describes content that is not signed.
- * May be <code>null</code>, which means there is no unsigned content
- * @return the TrustInfo that describes the user's choices for trusting certificates and
- * unsigned content.
+ *
+ * @param untrustedChain - an array of certificate chains for which there is no
+ * current trust anchor. May be <code>null</code>, which
+ * means there are no untrusted certificate chains.
+ * @param unsignedDetail - an array of strings, where each String describes
+ * content that is not signed. May be <code>null</code>,
+ * which means there is no unsigned content
+ * @return the TrustInfo that describes the user's choices for trusting
+ * certificates and unsigned content.
+ * @implSpec Implementors should also override
+ * {@link #getTrustInfo(Certificate[][], Collection, String[])}.
*/
public abstract TrustInfo getTrustInfo(Certificate[][] untrustedChain, String[] unsignedDetail);
@@ -160,4 +249,26 @@ public abstract class UIServices {
public void showInformationMessage(String title, String text, String linkText) {
System.out.println(text);
}
+
+ /**
+ * Opens a UI prompt to capture information about trusted content.
+ *
+ * @param unTrustedCertificateChains - an array of certificate chains for which
+ * there is no current trust anchor. May be
+ * <code>null</code>, which means there are no
+ * untrusted certificate chains.
+ * @param untrustedPGPKeys Collection of PGP signer keys that are not
+ * trusted
+ * @param unsignedDetail - an array of strings, where each String
+ * describes content that is not signed. May
+ * be <code>null</code>, which means there is
+ * no unsigned content
+ * @return the TrustInfo that describes the user's choices for trusting
+ * certificates and unsigned content.
+ * @since 2.8
+ */
+ public TrustInfo getTrustInfo(Certificate[][] unTrustedCertificateChains, Collection<PGPPublicKey> untrustedPGPKeys,
+ String[] unsignedDetail) {
+ return getTrustInfo(unTrustedCertificateChains, unsignedDetail);
+ }
}
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/WeakPool.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/WeakPool.java
index 4b9dc398c..457b4f6b5 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/WeakPool.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/WeakPool.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/spi/Constants.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/spi/Constants.java
index 3fa8d848b..c32cb8a9b 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/spi/Constants.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/spi/Constants.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* Pascal Rapicault - initial API and implementation
*******************************************************************************/
@@ -16,7 +16,7 @@ package org.eclipse.equinox.p2.core.spi;
public interface Constants {
/*
* This constant is used internally in p2 to represent the case of a bundled macos application (the case where all the files are contained in the .app folder.
- * It is typically used as an environment property in a profile.
+ * It is typically used as an environment property in a profile.
*/
public final String MACOSX_BUNDLED = "macosx-bundled"; //$NON-NLS-1$
}
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/spi/IAgentService.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/spi/IAgentService.java
index 38c679768..184edaf94 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/spi/IAgentService.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/spi/IAgentService.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
diff --git a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/spi/IAgentServiceFactory.java b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/spi/IAgentServiceFactory.java
index fcebea86a..a56ec642d 100644
--- a/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/spi/IAgentServiceFactory.java
+++ b/bundles/org.eclipse.equinox.p2.core/src/org/eclipse/equinox/p2/core/spi/IAgentServiceFactory.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -34,7 +34,7 @@ public interface IAgentServiceFactory {
/**
* Instantiates a service instance for the given provisioning agent.
- *
+ *
* @param agent The agent this service will belong to
* @return The created service
*/
diff --git a/bundles/org.eclipse.equinox.p2.director.app/.classpath b/bundles/org.eclipse.equinox.p2.director.app/.classpath
index 030607499..cc48f9f27 100644
--- a/bundles/org.eclipse.equinox.p2.director.app/.classpath
+++ b/bundles/org.eclipse.equinox.p2.director.app/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" output="bin_ant" path="src_ant"/>
diff --git a/bundles/org.eclipse.equinox.p2.director.app/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.director.app/.settings/org.eclipse.jdt.core.prefs
index 563e5c11a..c70fa9628 100644
--- a/bundles/org.eclipse.equinox.p2.director.app/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.director.app/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -88,6 +89,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -123,7 +125,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -137,7 +140,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -258,7 +260,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -329,7 +330,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -474,7 +474,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.director.app/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.director.app/META-INF/MANIFEST.MF
index bf6eea411..7cbc86f19 100644
--- a/bundles/org.eclipse.equinox.p2.director.app/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.director.app/META-INF/MANIFEST.MF
@@ -2,22 +2,23 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.director.app;singleton:=true
-Bundle-Version: 1.1.400.qualifier
+Bundle-Version: 1.2.100.qualifier
Bundle-Activator: org.eclipse.equinox.internal.p2.director.app.Activator
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package: org.eclipse.equinox.internal.p2.director.app;x-internal:=true
Require-Bundle: org.eclipse.equinox.common;bundle-version="[3.5.0,4.0.0)"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
-Import-Package: org.eclipse.equinox.app,
+Import-Package: org.bouncycastle.openpgp,
+ org.eclipse.equinox.app,
org.eclipse.equinox.internal.p2.core.helpers,
org.eclipse.equinox.internal.p2.director,
org.eclipse.equinox.internal.p2.engine,
org.eclipse.equinox.internal.provisional.p2.core.eventbus,
org.eclipse.equinox.internal.provisional.p2.director,
org.eclipse.equinox.internal.provisional.p2.repository,
- org.eclipse.equinox.p2.core;version="[2.0.0,3.0.0)",
+ org.eclipse.equinox.p2.core;version="[2.8.0,3.0.0)",
org.eclipse.equinox.p2.core.spi;version="[2.1.0,3.0.0)",
org.eclipse.equinox.p2.engine;version="[2.0.0,3.0.0)",
org.eclipse.equinox.p2.engine.query;version="[2.0.0,3.0.0)",
diff --git a/bundles/org.eclipse.equinox.p2.director.app/pom.xml b/bundles/org.eclipse.equinox.p2.director.app/pom.xml
index ed5fc61c2..44f4bde1c 100644
--- a/bundles/org.eclipse.equinox.p2.director.app/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.director.app/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.director.app</artifactId>
- <version>1.1.400-SNAPSHOT</version>
+ <version>1.2.100-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/Activator.java b/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/Activator.java
index afb363cf3..a42b1ccfb 100644
--- a/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/Activator.java
+++ b/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/Activator.java
@@ -8,7 +8,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/
package org.eclipse.equinox.internal.p2.director.app;
diff --git a/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/DirectorApplication.java b/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/DirectorApplication.java
index 570a19e75..4710d4cc1 100644
--- a/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/DirectorApplication.java
+++ b/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/DirectorApplication.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2018 IBM Corporation and others.
+ * Copyright (c) 2007, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -26,11 +26,13 @@ import static org.eclipse.equinox.internal.p2.director.app.Activator.ID;
import java.io.*;
import java.net.URI;
import java.net.URISyntaxException;
+import java.nio.file.Files;
import java.security.cert.Certificate;
import java.util.*;
import java.util.Map.Entry;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
+import org.bouncycastle.openpgp.PGPPublicKey;
import org.eclipse.core.runtime.*;
import org.eclipse.equinox.app.IApplication;
import org.eclipse.equinox.app.IApplicationContext;
@@ -84,6 +86,21 @@ public class DirectorApplication implements IApplication, ProvisioningListener {
}
return new TrustInfo(trusted, false, true);
}
+
+ @Override
+ public TrustInfo getTrustInfo(Certificate[][] untrustedChains, Collection<PGPPublicKey> untrustedPGPKeys,
+ String[] unsignedDetail) {
+ final Collection<Certificate> trusted;
+ if (untrustedChains == null) {
+ trusted = List.of();
+ } else {
+ trusted = new ArrayList<>(untrustedChains.length);
+ for (Certificate[] untrustedChain : untrustedChains) {
+ trusted.add(untrustedChain[0]);
+ }
+ }
+ return new TrustInfo(trusted, untrustedPGPKeys, false, true);
+ }
}
class LocationQueryable implements IQueryable<IInstallableUnit> {
@@ -175,7 +192,7 @@ public class DirectorApplication implements IApplication, ProvisioningListener {
private static final String QUERY_SEPARATOR = "Q:"; //$NON-NLS-1$
private static final String QUERY_SEPARATOR_SMALL = "q:"; //$NON-NLS-1$
- public static final String LINE_SEPARATOR = System.getProperty("line.separator"); //$NON-NLS-1$
+ public static final String LINE_SEPARATOR = System.lineSeparator();
private static void getURIs(List<URI> uris, String spec) throws CoreException {
if (spec == null)
@@ -714,7 +731,7 @@ public class DirectorApplication implements IApplication, ProvisioningListener {
}
}
- Collections.sort(allRoots);
+ allRoots.sort(null);
String formattedString = listFormat.format(allRoots);
System.out.println(formattedString);
@@ -1289,7 +1306,7 @@ public class DirectorApplication implements IApplication, ProvisioningListener {
Map<String, String> tags = registry.getProfileStateProperties(profile.getProfileId(), IProfile.STATE_PROP_TAG);
//Sort the tags from the most recent to the oldest
List<String> timeStamps = new ArrayList<>(tags.keySet());
- Collections.sort(timeStamps, Collections.reverseOrder());
+ timeStamps.sort(Collections.reverseOrder());
for (String timestamp : timeStamps) {
System.out.println(tags.get(timestamp));
}
@@ -1360,24 +1377,6 @@ public class DirectorApplication implements IApplication, ProvisioningListener {
private static boolean canWrite(File installDir) {
installDir.mkdirs(); //Force create the folders because otherwise the call to canWrite fails on Mac
- if (installDir.canWrite() == false)
- return false;
-
- if (!installDir.isDirectory())
- return false;
-
- File fileTest = null;
- try {
- // we use the .dll suffix to properly test on Vista virtual directories
- // on Vista you are not allowed to write executable files on virtual directories like "Program Files"
- fileTest = File.createTempFile("writableArea", ".dll", installDir); //$NON-NLS-1$ //$NON-NLS-2$
- } catch (IOException e) {
- //If an exception occured while trying to create the file, it means that it is not writable
- return false;
- } finally {
- if (fileTest != null)
- fileTest.delete();
- }
- return true;
+ return installDir.isDirectory() && Files.isWritable(installDir.toPath());
}
}
diff --git a/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/ILog.java b/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/ILog.java
index edd4d5c13..fbf17a0fe 100644
--- a/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/ILog.java
+++ b/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/ILog.java
@@ -24,13 +24,13 @@ import org.eclipse.core.runtime.IStatus;
public interface ILog {
/**
* Send status to the standard log
- *
+ *
* @param status
*/
void log(IStatus status);
/**
- *
+ *
* @param message
* @deprecated Use {@link ILog#printOut()} or {@link ILog#printErr()}
*/
@@ -46,9 +46,9 @@ public interface ILog {
/**
* Print status on stdout or stderr.
- *
+ *
* By default calls {@link #log}
- *
+ *
* @param status
*/
default void printOut(String line) {
@@ -57,9 +57,9 @@ public interface ILog {
/**
* Send line to stdout
- *
+ *
* By default does nothing
- *
+ *
* @param message line
*/
default void printErr(String line) {
diff --git a/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/IUListFormatter.java b/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/IUListFormatter.java
index 22c5b13de..caf6b4cca 100644
--- a/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/IUListFormatter.java
+++ b/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/IUListFormatter.java
@@ -31,7 +31,7 @@ import org.eclipse.equinox.p2.metadata.IInstallableUnit;
public class IUListFormatter {
private static final String PREFIX = "${"; //$NON-NLS-1$
- private static final String LINE_SEP = System.getProperty("line.separator"); //$NON-NLS-1$
+ private static final String LINE_SEP = System.lineSeparator();
private String formatString;
private Collection<String> properties;
diff --git a/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/Messages.java b/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/Messages.java
index 3ccd7fe92..8f6cea191 100644
--- a/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/Messages.java
+++ b/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/Messages.java
@@ -8,8 +8,8 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
+ *
+ * Contributors:
* IBM Corporation - initial API and implementation
* Cloudsmith - https://bugs.eclipse.org/bugs/show_bug.cgi?id=226401
******************************************************************************/
diff --git a/bundles/org.eclipse.equinox.p2.director.app/src_ant/org/eclipse/equinox/p2/director/app/ant/DirectorTask.java b/bundles/org.eclipse.equinox.p2.director.app/src_ant/org/eclipse/equinox/p2/director/app/ant/DirectorTask.java
index 4dd59101a..5fcad1f07 100644
--- a/bundles/org.eclipse.equinox.p2.director.app/src_ant/org/eclipse/equinox/p2/director/app/ant/DirectorTask.java
+++ b/bundles/org.eclipse.equinox.p2.director.app/src_ant/org/eclipse/equinox/p2/director/app/ant/DirectorTask.java
@@ -1,13 +1,13 @@
/*******************************************************************************
* Copyright (c) 2007, 2017 IBM Corporation and others.
*
- * This program and the accompanying materials
+ * This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -36,7 +36,7 @@ import org.eclipse.osgi.util.NLS;
/**
* An Ant task to call the p2 Director application.
- *
+ *
* @since 1.0
*/
public class DirectorTask extends Task implements ILog {
diff --git a/bundles/org.eclipse.equinox.p2.director/.classpath b/bundles/org.eclipse.equinox.p2.director/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.director/.classpath
+++ b/bundles/org.eclipse.equinox.p2.director/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.director/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.director/.settings/org.eclipse.jdt.core.prefs
index 3bb5d9f8c..74183576f 100644
--- a/bundles/org.eclipse.equinox.p2.director/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.director/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -36,6 +36,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -89,6 +90,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -126,13 +128,14 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -140,21 +143,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -246,11 +252,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -281,6 +288,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -305,13 +314,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -359,6 +372,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -395,9 +410,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -436,10 +454,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.equinox.p2.director/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.director/META-INF/MANIFEST.MF
index 7fb15f5b7..8b2a73e25 100644
--- a/bundles/org.eclipse.equinox.p2.director/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.director/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.director;singleton:=true
-Bundle-Version: 2.4.500.qualifier
+Bundle-Version: 2.5.200.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.equinox.internal.p2.director.DirectorActivator
Bundle-Vendor: %providerName
@@ -27,7 +27,7 @@ Require-Bundle: org.eclipse.equinox.common;bundle-version="[3.3.0,4.0.0)",
org.eclipse.equinox.p2.metadata;bundle-version="[2.0.0,3.0.0)",
org.sat4j.core;bundle-version="[2.3.5,3.0.0)",
org.sat4j.pb;bundle-version="[2.3.5,3.0.0)"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Service-Component: OSGI-INF/director.xml, OSGI-INF/planner.xml
Import-Package: org.eclipse.equinox.internal.p2.core.helpers,
diff --git a/bundles/org.eclipse.equinox.p2.director/pom.xml b/bundles/org.eclipse.equinox.p2.director/pom.xml
index c61bb2b0a..0a32c8db0 100644
--- a/bundles/org.eclipse.equinox.p2.director/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.director/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.director</artifactId>
- <version>2.4.500-SNAPSHOT</version>
+ <version>2.5.200-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/ApplicablePatchQuery.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/ApplicablePatchQuery.java
index 2800b092c..72cded157 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/ApplicablePatchQuery.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/ApplicablePatchQuery.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Cloudsmith Inc. - converted into expression based query
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/AttachmentHelper.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/AttachmentHelper.java
index a35158080..b9748f936 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/AttachmentHelper.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/AttachmentHelper.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/DirectorActivator.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/DirectorActivator.java
index 7d331936f..a2960e384 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/DirectorActivator.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/DirectorActivator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2017 IBM Corporation and others.
+ * Copyright (c) 2007, 2022 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,24 +10,26 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Christoph Läubrich - access activator static singelton in a safe way
*******************************************************************************/
package org.eclipse.equinox.internal.p2.director;
+import java.util.Optional;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class DirectorActivator implements BundleActivator {
public static final String PI_DIRECTOR = "org.eclipse.equinox.p2.director"; //$NON-NLS-1$
- public static BundleContext context;
+ public static volatile Optional<BundleContext> context = Optional.empty();
@Override
public void start(BundleContext ctx) throws Exception {
- context = ctx;
+ context = Optional.of(ctx);
}
@Override
public void stop(BundleContext ctx) throws Exception {
- DirectorActivator.context = null;
+ DirectorActivator.context = Optional.empty();
}
}
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Explanation.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Explanation.java
index 7e455a11d..780dd229e 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Explanation.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Explanation.java
@@ -9,7 +9,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*
- * Contributors:
+ * Contributors:
* Daniel Le Berre - initial API and implementation
* IBM - ongoing development
******************************************************************************/
@@ -89,7 +89,8 @@ public abstract class Explanation implements Comparable<Explanation> {
@Override
public String toString() {
- return NLS.bind(Messages.Explanation_hardDependency, iu, req);
+ return NLS.bind(req.getMax() == 0 ? Messages.Explanation_hardDependencyNegative
+ : Messages.Explanation_hardDependency, iu, req);
}
@Override
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/InfiniteProgress.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/InfiniteProgress.java
index 3833b569f..05d88e956 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/InfiniteProgress.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/InfiniteProgress.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Messages.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Messages.java
index 3b0130071..7a5b2c3d3 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Messages.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Messages.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -43,6 +43,7 @@ public class Messages extends NLS {
public static String Explanation_from;
public static String Explanation_fromPatch;
public static String Explanation_hardDependency;
+ public static String Explanation_hardDependencyNegative;
public static String Explanation_patchedHardDependency;
public static String Explanation_missingRequired;
public static String Explanation_missingRootRequired;
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/OperationGenerator.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/OperationGenerator.java
index 1ea4e4e1a..1929396c0 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/OperationGenerator.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/OperationGenerator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2017 IBM Corporation and others.
+ * Copyright (c) 2007, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -36,10 +36,10 @@ public class OperationGenerator {
tmpTo.removeAll(intersection);
List<IInstallableUnit> from = new ArrayList<>(tmpFrom);
- Collections.sort(from);
+ from.sort(null);
List<IInstallableUnit> to = new ArrayList<>(tmpTo);
- Collections.sort(to);
+ to.sort(null);
generateUpdates(from, to);
generateInstallUninstall(from, to);
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/OptimizationFunction.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/OptimizationFunction.java
index 34015e6c6..42672c6e9 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/OptimizationFunction.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/OptimizationFunction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2013, 2018 Rapicorp Inc. and others.
+ * Copyright (c) 2013, 2018 Rapicorp Inc. and others.
*
* This
* program and the accompanying materials are made available under the terms of
@@ -9,7 +9,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*
- * Contributors:
+ * Contributors:
* Rapicorp, Inc. - initial API and implementation
******************************************************************************/
package org.eclipse.equinox.internal.p2.director;
@@ -28,7 +28,6 @@ public class OptimizationFunction {
private IQueryable<IInstallableUnit> picker;
private IInstallableUnit selectionContext;
protected Map<String, Map<Version, IInstallableUnit>> slice; //The IUs that have been considered to be part of the problem
- private int numberOfInstalledIUs; //TODO this should be renamed to consideredIUs or sliceSize
private IQueryable<IInstallableUnit> lastState;
private List<AbstractVariable> optionalRequirementVariable;
@@ -42,7 +41,7 @@ public class OptimizationFunction {
//Create an optimization function favoring the highest version of each IU
public List<WeightedObject<? extends Object>> createOptimizationFunction(IInstallableUnit metaIu, Collection<IInstallableUnit> newRoots) {
- numberOfInstalledIUs = sizeOf(lastState);
+ int numberOfInstalledIUs = sizeOf(lastState);
List<WeightedObject<? extends Object>> weightedObjects = new ArrayList<>();
Set<IInstallableUnit> transitiveClosure; //The transitive closure of the IUs we are adding (this also means updating)
@@ -73,7 +72,7 @@ public class OptimizationFunction {
}
// Set the weight such that things that are already installed are not updated
- Collections.sort(conflictingEntries, Collections.reverseOrder());
+ conflictingEntries.sort(Collections.reverseOrder());
BigInteger weight = POWER;
// have we already found a version that is already installed?
boolean foundInstalled = false;
@@ -110,12 +109,10 @@ public class OptimizationFunction {
//Now we deal the optional IUs,
long countOptional = 1;
List<IInstallableUnit> requestedPatches = new ArrayList<>();
- Collection<IRequirement> reqs = metaIu.getRequirements();
- for (IRequirement req : reqs) {
+ for (IRequirement req : metaIu.getRequirements()) {
if (req.getMin() > 0 || !req.isGreedy())
continue;
- IQueryResult<IInstallableUnit> matches = picker.query(QueryUtil.createMatchQuery(req.getMatches()), null);
- for (IInstallableUnit match : matches) {
+ for (IInstallableUnit match : picker.query(QueryUtil.createMatchQuery(req.getMatches()), null)) {
if (match instanceof IInstallableUnitPatch) {
requestedPatches.add(match);
countOptional = countOptional + 1;
@@ -125,8 +122,8 @@ public class OptimizationFunction {
// and we make sure that patches are always favored
BigInteger patchWeight = maxWeight.multiply(POWER).multiply(BigInteger.valueOf(countOptional)).negate();
- for (Iterator<IInstallableUnit> iterator = requestedPatches.iterator(); iterator.hasNext();) {
- weightedObjects.add(WeightedObject.newWO(iterator.next(), patchWeight));
+ for (IInstallableUnit iu : requestedPatches) {
+ weightedObjects.add(WeightedObject.newWO(iu, patchWeight));
}
return weightedObjects;
}
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/PlannerComponent.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/PlannerComponent.java
index 3e0200a95..338012459 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/PlannerComponent.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/PlannerComponent.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/ProfileChangeRequest.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/ProfileChangeRequest.java
index 8b4c33b22..0c92c1ab1 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/ProfileChangeRequest.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/ProfileChangeRequest.java
@@ -208,7 +208,7 @@ public class ProfileChangeRequest implements Cloneable, IProfileChangeRequest {
@Override
@SuppressWarnings("unchecked")
- public Object clone() {
+ public ProfileChangeRequest clone() {
ProfileChangeRequest result = new ProfileChangeRequest(profile);
result.iusToRemove = iusToRemove == null ? null : (ArrayList<IInstallableUnit>) iusToRemove.clone();
result.iusToAdd = iusToAdd == null ? null : (ArrayList<IInstallableUnit>) iusToAdd.clone();
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Projector.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Projector.java
index 978debf7f..458a8fb86 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Projector.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Projector.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2018 IBM Corporation and others.
+ * Copyright (c) 2007, 2022 IBM Corporation and others.
*
* This
* program and the accompanying materials are made available under the terms of
@@ -9,7 +9,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*
- * Contributors:
+ * Contributors:
* IBM Corporation - initial API and implementation
* Daniel Le Berre - Fix in the encoding and the optimization function
* Alban Browaeys - Optimized string concatenation in bug 251357
@@ -17,6 +17,7 @@
* Sonatype, Inc. - ongoing development
* Rapicorp, Inc. - split the optimization function
* Red Hat, Inc. - support for remediation page
+ * Christoph Läubrich - access activator static singelton in a safe way
******************************************************************************/
package org.eclipse.equinox.internal.p2.director;
@@ -82,7 +83,7 @@ public class Projector {
//Non greedy things
private Set<IInstallableUnit> nonGreedyIUs; //All the IUs that would satisfy non greedy dependencies
private Map<IInstallableUnit, AbstractVariable> nonGreedyVariables = new HashMap<>();
- private Map<AbstractVariable, List<Object>> nonGreedyProvider = new HashMap<>(); //Keeps track of all the "object" that provide an IU that is non greedly requested
+ private Map<AbstractVariable, List<Object>> nonGreedyProvider = new HashMap<>(); //Keeps track of all the "object" that provide an IU that is non greedly requested
private boolean emptyBecauseFiltered;
private boolean userDefinedFunction;
@@ -204,10 +205,11 @@ public class Projector {
int timeout = DEFAULT_SOLVER_TIMEOUT;
String timeoutString = null;
try {
- // allow the user to specify a longer timeout.
+ // allow the user to specify a longer timeout.
// only set the value if it is a positive integer larger than the default.
// see https://bugs.eclipse.org/336967
- timeoutString = DirectorActivator.context.getProperty(PROP_PROJECTOR_TIMEOUT);
+ timeoutString = DirectorActivator.context.map(ctx -> ctx.getProperty(PROP_PROJECTOR_TIMEOUT))
+ .orElse(null);
if (timeoutString != null)
timeout = Math.max(timeout, Integer.parseInt(timeoutString));
} catch (Exception e) {
@@ -232,15 +234,14 @@ public class Projector {
dependencyHelper = new DependencyHelper<>(solver);
}
List<IInstallableUnit> iusToOrder = new ArrayList<>(queryResult.toSet());
- Collections.sort(iusToOrder);
- for (Iterator<IInstallableUnit> iusToEncode = iusToOrder.iterator(); iusToEncode.hasNext();) {
+ iusToOrder.sort(null);
+ for (IInstallableUnit iu : iusToOrder) {
if (monitor.isCanceled()) {
result.merge(Status.CANCEL_STATUS);
throw new OperationCanceledException();
}
- IInstallableUnit iuToEncode = iusToEncode.next();
- if (iuToEncode != entryPointIU) {
- processIU(iuToEncode, false);
+ if (iu != entryPointIU) {
+ processIU(iu, false);
}
}
createMustHave(entryPointIU, alreadyExistingRoots);
@@ -300,7 +301,7 @@ public class Projector {
if (weightedObjects == null)
return;
if (DEBUG) {
- StringBuffer b = new StringBuffer();
+ StringBuilder b = new StringBuilder();
for (WeightedObject<? extends Object> object : weightedObjects) {
if (b.length() > 0)
b.append(", "); //$NON-NLS-1$
@@ -369,7 +370,7 @@ public class Projector {
return;
IInstallableUnitFragment fragment = (IInstallableUnitFragment) iu;
- // for each host requirement, find matches and remember them
+ // for each host requirement, find matches and remember them
for (IRequirement req : fragment.getHost()) {
List<IInstallableUnit> matches = getApplicableMatches(req);
rememberHostMatches((IInstallableUnitFragment) iu, matches);
@@ -488,7 +489,7 @@ public class Projector {
private Collection<IRequirement> getRequiredCapabilities(IInstallableUnit iu) {
boolean isFragment = iu instanceof IInstallableUnitFragment;
- //Short-circuit for the case of an IInstallableUnit
+ //Short-circuit for the case of an IInstallableUnit
if ((!isFragment) && iu.getMetaRequirements().size() == 0)
return iu.getRequirements();
@@ -515,8 +516,8 @@ public class Projector {
Collection<IRequirement> iuRequirements = getRequiredCapabilities(iu);
Map<IRequirement, List<IInstallableUnitPatch>> unchangedRequirements = new HashMap<>(iuRequirements.size());
Map<IRequirement, Pending> nonPatchedRequirements = new HashMap<>(iuRequirements.size());
- for (Iterator<IInstallableUnit> iterator = applicablePatches.iterator(); iterator.hasNext();) {
- IInstallableUnitPatch patch = (IInstallableUnitPatch) iterator.next();
+ for (IInstallableUnit iup : applicablePatches) {
+ IInstallableUnitPatch patch = (IInstallableUnitPatch) iup;
IRequirement[][] reqs = mergeRequirements(iu, patch);
if (reqs.length == 0)
return;
@@ -826,8 +827,7 @@ public class Projector {
IRequirement[] originalRequirements = iuRequirements.toArray(new IRequirement[iuRequirements.size()]);
List<IRequirement[]> rrr = new ArrayList<>();
boolean found = false;
- for (int i = 0; i < changes.size(); i++) {
- IRequirementChange change = changes.get(i);
+ for (IRequirementChange change : changes) {
for (int j = 0; j < originalRequirements.length; j++) {
if (originalRequirements[j] != null && safeMatch(originalRequirements, change, j)) {
found = true;
@@ -928,7 +928,7 @@ public class Projector {
private void createAtMostOne(IInstallableUnit[] ius) throws ContradictionException {
if (DEBUG) {
- StringBuffer b = new StringBuffer();
+ StringBuilder b = new StringBuilder();
for (IInstallableUnit iu : ius) {
b.append(iu.toString());
}
@@ -1011,7 +1011,7 @@ public class Projector {
private void printSolution(Collection<IInstallableUnit> state) {
ArrayList<IInstallableUnit> l = new ArrayList<>(state);
- Collections.sort(l);
+ l.sort(null);
Tracing.debug("Solution:"); //$NON-NLS-1$
Tracing.debug("Numbers of IUs selected: " + l.size()); //$NON-NLS-1$
for (IInstallableUnit s : l) {
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/QueryableArray.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/QueryableArray.java
index 094de4791..ca095cb28 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/QueryableArray.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/QueryableArray.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Cloudsmith Inc. - query indexes
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/SimpleDirector.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/SimpleDirector.java
index d87a7696a..11a1ba5ce 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/SimpleDirector.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/SimpleDirector.java
@@ -8,8 +8,8 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
+ *
+ * Contributors:
* IBM Corporation - initial API and implementation
* Sonatype, Inc. - ongoing development
******************************************************************************/
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Slicer.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Slicer.java
index 8de45dcbb..075a6f918 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Slicer.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/Slicer.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Sonatype, Inc. - ongoing development
@@ -158,7 +158,7 @@ public class Slicer {
private Collection<IRequirement> getRequirements(IInstallableUnit iu) {
boolean isPatch = iu instanceof IInstallableUnitPatch;
boolean isFragment = iu instanceof IInstallableUnitFragment;
- //Short-circuit for the case of an IInstallableUnit
+ //Short-circuit for the case of an IInstallableUnit
if ((!isFragment) && (!isPatch) && iu.getMetaRequirements().size() == 0)
return iu.getRequirements();
@@ -172,8 +172,8 @@ public class Slicer {
if (iu instanceof InstallableUnitPatch) {
IInstallableUnitPatch patchIU = (IInstallableUnitPatch) iu;
List<IRequirementChange> changes = patchIU.getRequirementsChange();
- for (int i = 0; i < changes.size(); i++)
- aggregatedRequirements.add(changes.get(i).newValue());
+ for (IRequirementChange change : changes)
+ aggregatedRequirements.add(change.newValue());
}
if (considerMetaRequirements)
@@ -186,8 +186,7 @@ public class Slicer {
return;
IQueryResult<IInstallableUnit> matches = possibilites.query(QueryUtil.createMatchQuery(req.getMatches()), null);
int validMatches = 0;
- for (Iterator<IInstallableUnit> iterator = matches.iterator(); iterator.hasNext();) {
- IInstallableUnit match = iterator.next();
+ for (IInstallableUnit match : matches) {
if (!isApplicable(match))
continue;
validMatches++;
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/UserDefinedOptimizationFunction.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/UserDefinedOptimizationFunction.java
index 4f699cf25..f5cd7da1d 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/UserDefinedOptimizationFunction.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/UserDefinedOptimizationFunction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2017 Daniel Le Berre and others.
+ * Copyright (c) 2009, 2020 Daniel Le Berre and others.
*
* This
* program and the accompanying materials are made available under the terms of
@@ -152,8 +152,8 @@ public class UserDefinedOptimizationFunction extends OptimizationFunction {
IQuery<IInstallableUnit> query = QueryUtil.createMatchQuery(req.getMatches());
IQueryResult<IInstallableUnit> matches = picker.query(query, null);
List<IInstallableUnit> toSort = new ArrayList<>(matches.toUnmodifiableSet());
- Collections.sort(toSort, Collections.reverseOrder());
- if (toSort.size() == 0)
+ toSort.sort(Collections.reverseOrder());
+ if (toSort.isEmpty())
continue;
Projector.AbstractVariable abs = new Projector.AbstractVariable();
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/messages.properties b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/messages.properties
index 1aba20a2e..17fb47c7a 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/messages.properties
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/director/messages.properties
@@ -28,6 +28,7 @@ Explanation_alreadyInstalled=Software currently installed: {0}
Explanation_from=From: {0}
Explanation_fromPatch=From Patch: {0}
Explanation_hardDependency=Cannot satisfy dependency: {0} depends on: {1}
+Explanation_hardDependencyNegative=Cannot satisfy dependency: {0} conflicts with: {1}
Explanation_patchedHardDependency=Cannot satisfy patched ({0}) dependency: {1} depends on: {2}
Explanation_missingRequired=Missing requirement: {0} requires ''{1}'' but it could not be found
Explanation_missingRootRequired=You requested to install ''{0}'' but it could not be found
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/rollback/FormerState.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/rollback/FormerState.java
index f648198b1..aeeaf16cb 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/rollback/FormerState.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/p2/rollback/FormerState.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Sonatype, Inc. - ongoing development
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/IDirector.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/IDirector.java
index 7ee3ba1cf..14e5dd199 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/IDirector.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/IDirector.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -20,14 +20,14 @@ import org.eclipse.equinox.p2.engine.ProvisioningContext;
import org.eclipse.equinox.p2.planner.IProfileChangeRequest;
/**
- * Directors are responsible for determining what should be done to a given
- * profile to reshape it as requested. That is, given the current state of a
- * profile, a description of the desired end state of that profile and metadata
- * describing the available IUs, a director produces a list of provisioning
- * operations (e.g., install, update or uninstall) to perform on the related IUs.
- * Directors are also able to validate profiles and assist in the diagnosis of
- * configuration errors. Note that directors may range in complexity from
- * very simple (e.g., reading a list of bundles from a static file) to very complex.
+ * Directors are responsible for determining what should be done to a given
+ * profile to reshape it as requested. That is, given the current state of a
+ * profile, a description of the desired end state of that profile and metadata
+ * describing the available IUs, a director produces a list of provisioning
+ * operations (e.g., install, update or uninstall) to perform on the related IUs.
+ * Directors are also able to validate profiles and assist in the diagnosis of
+ * configuration errors. Note that directors may range in complexity from
+ * very simple (e.g., reading a list of bundles from a static file) to very complex.
*/
public interface IDirector {
@@ -38,7 +38,7 @@ public interface IDirector {
/**
* performs the change request with the given context.
- *
+ *
* @param profileChangeRequest The change request
* @param context The provisioning context used for finding resources
* @param monitor a progress monitor, or <code>null</code> if progress
@@ -48,7 +48,7 @@ public interface IDirector {
/**
* Reverts the profile to a previous state described in the target revertProfile.
- *
+ *
* @param profile The profile to revert
* @param revertProfile The profile snapshot state to revert to
* @param context The provisioning context used for finding resources
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/PlanExecutionHelper.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/PlanExecutionHelper.java
index 4c51ca1a9..83ac500b7 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/PlanExecutionHelper.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/PlanExecutionHelper.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2015 IBM Corporation and others.
+ * Copyright (c) 2009, 2022 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,6 +11,7 @@
* Contributors:
* IBM Corporation - initial API and implementation
* Red Hat Inc. - Bug 460967
+ * Christoph Läubrich - access activator static singelton in a safe way
*******************************************************************************/
package org.eclipse.equinox.internal.provisional.p2.director;
@@ -36,7 +37,8 @@ public class PlanExecutionHelper {
.getService(IEngine.class).perform(result.getInstallerPlan(), phaseSet, progress);
if (!installerPlanStatus.isOK())
return installerPlanStatus;
- Configurator configChanger = ServiceHelper.getService(DirectorActivator.context, Configurator.class);
+ Configurator configChanger = DirectorActivator.context
+ .map(ctx -> ServiceHelper.getService(ctx, Configurator.class)).orElse(null);
try {
configChanger.applyConfiguration();
} catch (IOException e) {
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/PlannerStatus.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/PlannerStatus.java
index 1bdada5d7..ff00f323d 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/PlannerStatus.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/PlannerStatus.java
@@ -39,7 +39,7 @@ public class PlannerStatus implements IStatus {
/**
* Returns a request status object containing additional global details on the planning of the request
- *
+ *
* @return An IStatus object with global details on the planning process
*/
public RequestStatus getRequestStatus() {
@@ -50,8 +50,8 @@ public class PlannerStatus implements IStatus {
* Returns a map of the problems associated with changes to the given installable unit
* in this plan. A status with severity {@link IStatus#OK} is returned if the unit
* can be provisioned successfully
- *
- * @return A map of {@link IInstallableUnit} to {@link IStatus} of the requested
+ *
+ * @return A map of {@link IInstallableUnit} to {@link IStatus} of the requested
* changes and their corresponding explanation.
*/
public Map<IInstallableUnit, RequestStatus> getRequestChanges() {
@@ -77,16 +77,16 @@ public class PlannerStatus implements IStatus {
}
/**
- * Returns the set of InstallableUnits that make up the expected planned state in terms
- * of additions and removals to the profile based on the planning process.
- *
- * @return An IQueryable of the InstallableUnits in the planned state.
+ * Returns the set of InstallableUnits that make up the expected planned state in terms
+ * of additions and removals to the profile based on the planning process.
+ *
+ * @return An IQueryable of the InstallableUnits in the planned state.
*/
public IQueryable<IInstallableUnit> getPlannedState() {
return plannedState;
}
- // Remaining Methods Delegate to wrapped Status
+ // Remaining Methods Delegate to wrapped Status
@Override
public IStatus[] getChildren() {
return status.getChildren();
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/RequestStatus.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/RequestStatus.java
index d5ae455fe..e39f3a42a 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/RequestStatus.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/internal/provisional/p2/director/RequestStatus.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2017 IBM Corporation and others.
+ * Copyright (c) 2008, 2017 IBM Corporation and others.
*
* This
* program and the accompanying materials are made available under the terms of
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/IPlanner.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/IPlanner.java
index 9b031e628..88c3bead6 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/IPlanner.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/IPlanner.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Sonatype, Inc. - ongoing development
@@ -20,12 +20,12 @@ import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.p2.query.IQueryResult;
/**
- * Planners are responsible for determining what should be done to a given
- * profile to reshape it as requested. That is, given the current state of a
- * profile, a description of the desired changes to that profile and metadata
+ * Planners are responsible for determining what should be done to a given
+ * profile to reshape it as requested. That is, given the current state of a
+ * profile, a description of the desired changes to that profile and metadata
* describing the available installable units, a planner produces a concrete plan that lists the
* exact steps that the engine should perform.
- *
+ *
* @noimplement This interface is not intended to be implemented by clients.
* @noextend This interface is not intended to be extended by clients.
* @since 2.0
@@ -39,7 +39,7 @@ public interface IPlanner {
/**
* Returns a plan describing the set of changes that must be performed to
* satisfy the given profile change request.
- *
+ *
* @param profileChangeRequest the request to be evaluated
* @param context the context in which the request is processed
* @param monitor a monitor on which planning
@@ -52,8 +52,8 @@ public interface IPlanner {
public IProfileChangeRequest createChangeRequest(IProfile profileToChange);
/**
- * @noreference This method is not intended to be referenced by clients.
- * You may want to consider using the org.eclipse.equinox.p2.operations.UpdateOperation class instead.
+ * @noreference This method is not intended to be referenced by clients.
+ * You may want to consider using the org.eclipse.equinox.p2.operations.UpdateOperation class instead.
*/
public IQueryResult<IInstallableUnit> updatesFor(IInstallableUnit iu, ProvisioningContext context, IProgressMonitor monitor);
}
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/IProfileChangeRequest.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/IProfileChangeRequest.java
index 0cdece8ec..693bb83ae 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/IProfileChangeRequest.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/IProfileChangeRequest.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* Sonatype, Inc. - initial API and implementation
* IBM Corporation - ongoing development
@@ -28,9 +28,9 @@ import org.eclipse.equinox.p2.metadata.IRequirement;
* state consistent.
*
* It is important to note that a change request can only be submitted once to the planner.
- *
+ *
* Clients should create and manipulate profile change requests via the API {@link IPlanner#createChangeRequest(IProfile)}.
- *
+ *
* @noimplement This interface is not intended to be implemented by clients.
* @noextend This interface is not intended to be extended by clients.
* @since 2.0
@@ -51,7 +51,7 @@ public interface IProfileChangeRequest {
/**
* Requests the removal of the specified installable unit
- *
+ *
* @param toUninstall the installable units to be remove from the profile
*/
public abstract void remove(IInstallableUnit toUninstall);
@@ -64,7 +64,7 @@ public interface IProfileChangeRequest {
/**
* Add extra requirements that must be satisfied by the planner.
- *
+ *
* @param requirements the additional requirements
*/
public void addExtraRequirements(Collection<IRequirement> requirements);
@@ -82,35 +82,35 @@ public interface IProfileChangeRequest {
/**
* Removes all inclusion rules associated with the given installable unit
- *
+ *
* @param iu the installable unit to remove inclusion rules for
*/
public abstract void removeInstallableUnitInclusionRules(IInstallableUnit iu);
- /**
+ /**
* Set a global property on the profile
- *
+ *
* @param key key of the property
* @param value value of the property
*/
public abstract void setProfileProperty(String key, String value);
- /**
+ /**
* Remove a global property on the profile
- *
+ *
* @param key key of the property
*/
public abstract void removeProfileProperty(String key);
- /**
+ /**
* Associate a property with a given installable unit.
- *
+ *
* @param key key of the property
* @param value value of the property
*/
public abstract void setInstallableUnitProfileProperty(IInstallableUnit iu, String key, String value);
- /**
+ /**
* Remove a property with a given installable unit.
* @param iu The installable until to remove a property for
* @param key key of the property
diff --git a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/ProfileInclusionRules.java b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/ProfileInclusionRules.java
index 29f93ac16..6c1b18fb2 100644
--- a/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/ProfileInclusionRules.java
+++ b/bundles/org.eclipse.equinox.p2.director/src/org/eclipse/equinox/p2/planner/ProfileInclusionRules.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Sonatype Inc - Refactoring
@@ -33,7 +33,7 @@ public class ProfileInclusionRules {
* later profile change request. That is, when there is a dependency conflict
* between a strictly installed unit and a non-strict unit, the strictly installed
* installable unit will take precedence.
- *
+ *
* @param iu the installable unit to be installed.
* @return an opaque token to be passed to the {@link IProfileChangeRequest#setInstallableUnitInclusionRules(IInstallableUnit, String)}
*/
@@ -45,7 +45,7 @@ public class ProfileInclusionRules {
* Returns an inclusion rule to optionally install the given installable unit. An optionally
* installed installable unit will automatically be removed from the profile if any of
* its dependencies become unsatisfied.
- *
+ *
* @param iu the installable unit to be installed.
* @return an opaque token to be passed to the {@link IProfileChangeRequest#setInstallableUnitInclusionRules(IInstallableUnit, String)}
*/
diff --git a/bundles/org.eclipse.equinox.p2.directorywatcher/.classpath b/bundles/org.eclipse.equinox.p2.directorywatcher/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.directorywatcher/.classpath
+++ b/bundles/org.eclipse.equinox.p2.directorywatcher/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.directorywatcher/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.directorywatcher/.settings/org.eclipse.jdt.core.prefs
index 4e79b56c0..26df1a4b1 100644
--- a/bundles/org.eclipse.equinox.p2.directorywatcher/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.directorywatcher/.settings/org.eclipse.jdt.core.prefs
@@ -16,9 +16,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -88,6 +89,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -124,7 +126,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -138,7 +141,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -259,7 +261,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -330,7 +331,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -475,7 +475,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.directorywatcher/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.directorywatcher/META-INF/MANIFEST.MF
index ca154aab4..a91060a0f 100644
--- a/bundles/org.eclipse.equinox.p2.directorywatcher/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.directorywatcher/META-INF/MANIFEST.MF
@@ -2,12 +2,12 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.directorywatcher;singleton:=true
-Bundle-Version: 1.2.400.qualifier
+Bundle-Version: 1.3.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package: org.eclipse.equinox.internal.provisional.p2.directorywatcher;x-friends:="org.eclipse.equinox.p2.reconciler.dropins,org.eclipse.equinox.p2.extensionlocation"
Require-Bundle: org.eclipse.equinox.common;bundle-version="[3.7.0,4.0)"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Import-Package: org.eclipse.equinox.internal.p2.artifact.repository.simple,
org.eclipse.equinox.internal.p2.core.helpers,
diff --git a/bundles/org.eclipse.equinox.p2.directorywatcher/pom.xml b/bundles/org.eclipse.equinox.p2.directorywatcher/pom.xml
index 95f2260bf..ece589593 100644
--- a/bundles/org.eclipse.equinox.p2.directorywatcher/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.directorywatcher/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.directorywatcher</artifactId>
- <version>1.2.400-SNAPSHOT</version>
+ <version>1.3.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/RepositoryListener.java b/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/RepositoryListener.java
index 3b9998200..c369fb8b0 100644
--- a/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/RepositoryListener.java
+++ b/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/RepositoryListener.java
@@ -265,8 +265,7 @@ public class RepositoryListener extends DirectoryChangeListener {
currentFiles.clear();
if (metadataRepository != null) {
IQueryResult<IInstallableUnit> ius = metadataRepository.query(QueryUtil.createIUAnyQuery(), null);
- for (Iterator<IInstallableUnit> it = ius.iterator(); it.hasNext();) {
- IInstallableUnit iu = it.next();
+ for (IInstallableUnit iu : ius) {
String filename = iu.getProperty(FILE_NAME);
if (filename == null) {
if (Tracing.DEBUG) {
diff --git a/bundles/org.eclipse.equinox.p2.discovery.compatibility/.classpath b/bundles/org.eclipse.equinox.p2.discovery.compatibility/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.discovery.compatibility/.classpath
+++ b/bundles/org.eclipse.equinox.p2.discovery.compatibility/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.discovery.compatibility/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.discovery.compatibility/.settings/org.eclipse.jdt.core.prefs
index c7bd22b57..456e7b09f 100644
--- a/bundles/org.eclipse.equinox.p2.discovery.compatibility/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.discovery.compatibility/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -88,6 +89,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -123,7 +125,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -137,7 +140,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -258,7 +260,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -329,7 +330,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -474,7 +474,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.discovery.compatibility/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.discovery.compatibility/META-INF/MANIFEST.MF
index 9244b8573..fbfa7e023 100644
--- a/bundles/org.eclipse.equinox.p2.discovery.compatibility/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.discovery.compatibility/META-INF/MANIFEST.MF
@@ -2,9 +2,9 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.equinox.p2.discovery.compatibility;singleton:=true
-Bundle-Version: 1.1.200.qualifier
+Bundle-Version: 1.2.200.qualifier
Bundle-Vendor: %Bundle-Vendor
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.3.0",
org.eclipse.equinox.p2.core;bundle-version="2.0.0",
org.eclipse.equinox.p2.discovery;bundle-version="1.0.0",
diff --git a/bundles/org.eclipse.equinox.p2.discovery.compatibility/pom.xml b/bundles/org.eclipse.equinox.p2.discovery.compatibility/pom.xml
index f44943056..b926dd577 100644
--- a/bundles/org.eclipse.equinox.p2.discovery.compatibility/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.discovery.compatibility/pom.xml
@@ -14,11 +14,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.discovery.compatibility</artifactId>
- <version>1.1.200-SNAPSHOT</version>
+ <version>1.2.200-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/DirectoryParser.java b/bundles/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/DirectoryParser.java
index 97a21448c..9cbb8d0a3 100644
--- a/bundles/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/DirectoryParser.java
+++ b/bundles/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/DirectoryParser.java
@@ -16,6 +16,7 @@ package org.eclipse.equinox.internal.p2.discovery.compatibility;
import java.io.IOException;
import java.io.Reader;
+import javax.xml.parsers.ParserConfigurationException;
import org.eclipse.equinox.internal.p2.core.helpers.SecureXMLUtil;
import org.eclipse.equinox.internal.p2.discovery.compatibility.Directory.Entry;
import org.eclipse.equinox.internal.p2.discovery.compatibility.util.DefaultSaxErrorHandler;
@@ -42,7 +43,7 @@ public class DirectoryParser {
XMLReader xmlReader;
try {
xmlReader = SecureXMLUtil.newSecureXMLReader();
- } catch (SAXException e) {
+ } catch (SAXException | ParserConfigurationException e) {
throw new IOWithCauseException(e.getMessage(), e);
}
xmlReader.setErrorHandler(new DefaultSaxErrorHandler());
diff --git a/bundles/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/JarDiscoverySource.java b/bundles/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/JarDiscoverySource.java
index 02fb8458e..c2a8a6666 100644
--- a/bundles/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/JarDiscoverySource.java
+++ b/bundles/org.eclipse.equinox.p2.discovery.compatibility/src/org/eclipse/equinox/internal/p2/discovery/compatibility/JarDiscoverySource.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Tasktop Technologies and others.
+ * Copyright (c) 2009, 2020 Tasktop Technologies and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,8 +14,8 @@
package org.eclipse.equinox.internal.p2.discovery.compatibility;
import java.io.File;
-import java.io.UnsupportedEncodingException;
import java.net.*;
+import java.nio.charset.StandardCharsets;
import org.eclipse.equinox.internal.p2.discovery.AbstractCatalogSource;
/**
@@ -42,11 +42,9 @@ public class JarDiscoverySource extends AbstractCatalogSource {
try {
String prefix = jarFile.toURI().toURL().toExternalForm();
- return new URL("jar:" + prefix + "!/" + URLEncoder.encode(resourceName, "utf-8")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ return new URL("jar:" + prefix + "!/" + URLEncoder.encode(resourceName, StandardCharsets.UTF_8)); //$NON-NLS-1$ //$NON-NLS-2$
} catch (MalformedURLException e) {
throw new IllegalStateException(e);
- } catch (UnsupportedEncodingException e) {
- throw new IllegalStateException(e);
}
}
diff --git a/bundles/org.eclipse.equinox.p2.discovery/.classpath b/bundles/org.eclipse.equinox.p2.discovery/.classpath
index 5f1595b77..f57eddd9b 100644
--- a/bundles/org.eclipse.equinox.p2.discovery/.classpath
+++ b/bundles/org.eclipse.equinox.p2.discovery/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">
<accessrules>
<accessrule kind="accessible" pattern="org/eclipse/equinox/internal/p2/core/**"/>
diff --git a/bundles/org.eclipse.equinox.p2.discovery/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.discovery/.settings/org.eclipse.jdt.core.prefs
index c7bd22b57..456e7b09f 100644
--- a/bundles/org.eclipse.equinox.p2.discovery/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.discovery/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -88,6 +89,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -123,7 +125,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -137,7 +140,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -258,7 +260,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -329,7 +330,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -474,7 +474,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.discovery/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.discovery/META-INF/MANIFEST.MF
index 2e89a36de..3ed751bd4 100644
--- a/bundles/org.eclipse.equinox.p2.discovery/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.discovery/META-INF/MANIFEST.MF
@@ -2,9 +2,9 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.equinox.p2.discovery;singleton:=true
-Bundle-Version: 1.1.200.qualifier
+Bundle-Version: 1.2.0.qualifier
Bundle-Vendor: %Bundle-Vendor
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.3.0",
org.eclipse.equinox.p2.core;bundle-version="2.0.0"
Export-Package: org.eclipse.equinox.internal.p2.discovery;x-friends:="org.eclipse.equinox.p2.discovery.compatibility,org.eclipse.equinox.p2.ui.discovery,org.eclipse.equinox.p2.discovery.repository",
diff --git a/bundles/org.eclipse.equinox.p2.discovery/pom.xml b/bundles/org.eclipse.equinox.p2.discovery/pom.xml
index 48f27cc0f..08c1a9a53 100644
--- a/bundles/org.eclipse.equinox.p2.discovery/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.discovery/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.discovery</artifactId>
- <version>1.1.200-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.engine/.classpath b/bundles/org.eclipse.equinox.p2.engine/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.engine/.classpath
+++ b/bundles/org.eclipse.equinox.p2.engine/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.engine/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.engine/.settings/org.eclipse.jdt.core.prefs
index 1d2db97da..ae545cfe9 100644
--- a/bundles/org.eclipse.equinox.p2.engine/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.engine/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -88,6 +89,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -123,7 +125,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -137,7 +140,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -258,7 +260,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -329,7 +330,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -474,7 +474,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.engine/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.engine/META-INF/MANIFEST.MF
index 29baea53e..561283093 100644
--- a/bundles/org.eclipse.equinox.p2.engine/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.engine/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.engine;singleton:=true
-Bundle-Version: 2.6.500.qualifier
+Bundle-Version: 2.7.300.qualifier
Bundle-Activator: org.eclipse.equinox.internal.p2.engine.EngineActivator
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -14,7 +14,7 @@ Export-Package: org.eclipse.equinox.internal.p2.engine;
org.eclipse.equinox.p2.ui.sdk.scheduler,
org.eclipse.pde.build,
org.eclipse.equinox.p2.director.app",
- org.eclipse.equinox.internal.p2.engine.phases;x-friends:="org.eclipse.equinox.p2.director.app,org.eclipse.equinox.p2.repository.tools,org.eclipse.equinox.p2.ui.sdk.scheduler",
+ org.eclipse.equinox.internal.p2.engine.phases;x-friends:="org.eclipse.equinox.p2.director.app,org.eclipse.equinox.p2.repository.tools,org.eclipse.equinox.p2.ui.sdk,org.eclipse.equinox.p2.ui.sdk.scheduler,org.eclipse.equinox.p2.touchpoint.eclipse",
org.eclipse.equinox.p2.engine;version="2.2.0",
org.eclipse.equinox.p2.engine.query;version="2.0.0",
org.eclipse.equinox.p2.engine.spi;version="2.0.0"
@@ -22,12 +22,14 @@ Require-Bundle: org.eclipse.equinox.common,
org.eclipse.equinox.registry,
org.eclipse.core.jobs;bundle-version="[3.4.0,4.0.0)"
Eclipse-RegisterBuddy: org.eclipse.equinox.p2.metadata.repository
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Service-Component: OSGI-INF/profileRegistry.xml, OSGI-INF/engine.xml
Import-Package: javax.xml.parsers,
+ org.bouncycastle.openpgp;version="1.65.0",
org.eclipse.core.internal.preferences,
org.eclipse.core.runtime.preferences,
+ org.eclipse.equinox.internal.p2.artifact.processors.pgp,
org.eclipse.equinox.internal.p2.core.helpers,
org.eclipse.equinox.internal.p2.metadata,
org.eclipse.equinox.internal.p2.metadata.index,
@@ -44,9 +46,10 @@ Import-Package: javax.xml.parsers,
org.eclipse.equinox.p2.query;version="[2.0.0,3.0.0)",
org.eclipse.equinox.p2.repository;version="[2.0.0,3.0.0)",
org.eclipse.equinox.p2.repository.artifact;version="[2.0.0,3.0.0)",
+ org.eclipse.equinox.p2.repository.artifact.spi;version="[2.0.0,3.0.0)",
org.eclipse.equinox.p2.repository.metadata;version="[2.0.0,3.0.0)",
org.eclipse.equinox.p2.repository.metadata.spi;version="[2.0.0,3.0.0)",
- org.eclipse.equinox.p2.repository.spi;version="2.0.0",
+ org.eclipse.equinox.p2.repository.spi;version="[2.0.0,3.0.0)",
org.eclipse.osgi.service.datalocation;version="1.0.0",
org.eclipse.osgi.service.debug;version="1.1.0",
org.eclipse.osgi.service.security;version="1.0.0",
diff --git a/bundles/org.eclipse.equinox.p2.engine/plugin.xml b/bundles/org.eclipse.equinox.p2.engine/plugin.xml
index 3d469f492..cee2c3856 100644
--- a/bundles/org.eclipse.equinox.p2.engine/plugin.xml
+++ b/bundles/org.eclipse.equinox.p2.engine/plugin.xml
@@ -4,6 +4,7 @@
<extension-point id="touchpoints" name="Touchpoints" schema="schema/touchpoints.exsd"/>
<extension-point id="actions" name="Actions" schema="schema/actions.exsd"/>
+<extension-point id="pgp" name="PGP" schema="schema/pgp.exsd"/>
<extension
id="metadataRepository"
point="org.eclipse.equinox.p2.metadata.repository.metadataRepositories">
diff --git a/bundles/org.eclipse.equinox.p2.engine/pom.xml b/bundles/org.eclipse.equinox.p2.engine/pom.xml
index 62b2954cb..eb9562492 100644
--- a/bundles/org.eclipse.equinox.p2.engine/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.engine/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.engine</artifactId>
- <version>2.6.500-SNAPSHOT</version>
+ <version>2.7.300-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.engine/schema/pgp.exsd b/bundles/org.eclipse.equinox.p2.engine/schema/pgp.exsd
new file mode 100644
index 000000000..fcb06d04a
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.engine/schema/pgp.exsd
@@ -0,0 +1,107 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.equinox.p2.engine" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.equinox.p2.engine" id="pgp" name="PGP"/>
+ </appInfo>
+ <documentation>
+ Configure PGP keys and trust for p2 operations
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appInfo>
+ <meta.element />
+ </appInfo>
+ </annotation>
+ <complexType>
+ <sequence minOccurs="0" maxOccurs="unbounded">
+ <element ref="trustedKeys"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="trustedKeys">
+ <annotation>
+ <documentation>
+ PGP Keys that are trusted by default.
+ </documentation>
+ </annotation>
+ <complexType>
+ <attribute name="path" type="string">
+ <annotation>
+ <documentation>
+ Path to a file containing PGP keys in armored form.
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="resource"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ 2.7.300
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiinfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/DebugHelper.java b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/DebugHelper.java
index 20bf19e4f..f4472ab2a 100644
--- a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/DebugHelper.java
+++ b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/DebugHelper.java
@@ -26,7 +26,7 @@ import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.osgi.service.debug.DebugOptions;
public class DebugHelper {
- public static final String LINE_SEPARATOR = System.getProperty("line.separator"); //$NON-NLS-1$
+ public static final String LINE_SEPARATOR = System.lineSeparator();
public static final boolean DEBUG_PROFILE_REGISTRY;
public static final boolean DEBUG_ENGINE;
diff --git a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/DownloadManager.java b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/DownloadManager.java
index cc923859b..b67af3ad9 100644
--- a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/DownloadManager.java
+++ b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/DownloadManager.java
@@ -35,7 +35,7 @@ public class DownloadManager {
* TODO: This is copied from the ProvisioningContext class. Can we combine them?
* See https://bugs.eclipse.org/335153.
*/
- private static final Comparator<IArtifactRepository> LOCAL_FIRST_COMPARATOR = new Comparator<IArtifactRepository>() {
+ private static final Comparator<IArtifactRepository> LOCAL_FIRST_COMPARATOR = new Comparator<>() {
private static final String FILE_PROTOCOL = "file"; //$NON-NLS-1$
@Override
diff --git a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/InstallableUnitOperand.java b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/InstallableUnitOperand.java
index 6fea6e340..8b91ed338 100644
--- a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/InstallableUnitOperand.java
+++ b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/InstallableUnitOperand.java
@@ -27,7 +27,7 @@ public class InstallableUnitOperand extends Operand {
* Creates a new operand that represents replacing an installable unit
* with another. At least one of the provided installable units must be
* non-null.
- *
+ *
* @param first The installable unit being removed, or <code>null</code>
* @param second The installable unit being added, or <code>null</code>
*/
@@ -38,10 +38,17 @@ public class InstallableUnitOperand extends Operand {
this.second = second;
}
+ /**
+ *
+ * @return The installable unit being removed, or <code>null</code>
+ */
public IInstallableUnit first() {
return first;
}
+ /**
+ * @return The installable unit being added, or <code>null</code>
+ */
public IInstallableUnit second() {
return second;
}
diff --git a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/Phase.java b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/Phase.java
index 0071a1d62..189a295c2 100644
--- a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/Phase.java
+++ b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/Phase.java
@@ -164,8 +164,7 @@ public abstract class Phase {
if (actions != null) {
Object lastResult = null;
- for (int j = 0; j < actions.size(); j++) {
- ProvisioningAction action = actions.get(j);
+ for (ProvisioningAction action : actions) {
Map<String, Object> parameters = operandParameters;
Touchpoint touchpoint = action.getTouchpoint();
if (touchpoint != null) {
diff --git a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/PhaseSet.java b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/PhaseSet.java
index 88a289f7b..71d68e852 100644
--- a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/PhaseSet.java
+++ b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/PhaseSet.java
@@ -115,8 +115,7 @@ public class PhaseSet implements IPhaseSet {
List<ProvisioningAction> actions = phase.getActions(operand);
if (actions == null)
continue;
- for (int k = 0; k < actions.size(); k++) {
- ProvisioningAction action = actions.get(k);
+ for (ProvisioningAction action : actions) {
if (action instanceof MissingAction)
missingActions.add((MissingAction) action);
}
diff --git a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/Profile.java b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/Profile.java
index f551eb287..e7dab0b35 100644
--- a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/Profile.java
+++ b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/Profile.java
@@ -8,11 +8,11 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Cloudsmith Inc. - query indexes
- *
+ *
******************************************************************************/
package org.eclipse.equinox.internal.p2.engine;
@@ -407,6 +407,6 @@ public class Profile extends IndexProvider<IInstallableUnit> implements IProfile
*/
@Override
public String toString() {
- return "Profile(" + getProfileId() + ')'; //$NON-NLS-1$
+ return "Profile(" + getProfileId() + ", timestamp: " + getTimestamp() + ')'; //$NON-NLS-1$ //$NON-NLS-2$
}
}
diff --git a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/ProfileWriter.java b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/ProfileWriter.java
index a0e2218f4..dbef034c3 100644
--- a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/ProfileWriter.java
+++ b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/ProfileWriter.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2018 IBM Corporation and others.
+ * Copyright (c) 2007, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -32,15 +32,12 @@ public class ProfileWriter extends MetadataWriter implements ProfileXMLConstants
attribute(TIMESTAMP_ATTRIBUTE, Long.toString(profile.getTimestamp()));
writeProperties(profile.getProperties());
ArrayList<IInstallableUnit> ius = new ArrayList<>(profile.query(QueryUtil.createIUAnyQuery(), null).toUnmodifiableSet());
- Collections.sort(ius, new Comparator<IInstallableUnit>() {
- @Override
- public int compare(IInstallableUnit iu1, IInstallableUnit iu2) {
- int IdCompare = iu1.getId().compareTo(iu2.getId());
- if (IdCompare != 0)
- return IdCompare;
+ ius.sort((iu1, iu2) -> {
+ int IdCompare = iu1.getId().compareTo(iu2.getId());
+ if (IdCompare != 0)
+ return IdCompare;
- return iu1.getVersion().compareTo(iu2.getVersion());
- }
+ return iu1.getVersion().compareTo(iu2.getVersion());
});
writeInstallableUnits(ius.iterator(), ius.size());
writeInstallableUnitsProperties(ius.iterator(), ius.size(), profile);
diff --git a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SimpleProfileRegistry.java b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SimpleProfileRegistry.java
index c9527e20a..f016c9408 100644
--- a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SimpleProfileRegistry.java
+++ b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SimpleProfileRegistry.java
@@ -56,6 +56,8 @@ public class SimpleProfileRegistry implements IProfileRegistry, IAgentService {
//Internal constant used to keep track of the newly created timestamp
private static final String SERVICE_SHARED_INSTALL_NEW_TIMESTAMP = IProfileRegistry.class.getName() + '_' + "NEW_SELF_TIMESTAMP"; //$NON-NLS-1$
+ private static long lastTimeMillis = System.currentTimeMillis();
+
protected final IProvisioningAgent agent;
/**
@@ -160,7 +162,11 @@ public class SimpleProfileRegistry implements IProfileRegistry, IAgentService {
if (DebugHelper.DEBUG_PROFILE_REGISTRY)
DebugHelper.debug(PROFILE_REGISTRY, "SimpleProfileRegistry.updateRoamingProfile"); //$NON-NLS-1$
Location installLocation = ServiceHelper.getService(EngineActivator.getContext(), Location.class, Location.INSTALL_FILTER);
- File location = new File(installLocation.getURL().getPath());
+ File location = URLUtil.toFile(installLocation.getURL());
+ if (location == null) {
+ // fallback: use only path of the URL if the protocol is not 'file'
+ location = new File(installLocation.getURL().getPath());
+ }
boolean changed = false;
if (!location.equals(new File(selfProfile.getProperty(IProfile.PROP_INSTALL_FOLDER)))) {
selfProfile.setProperty(IProfile.PROP_INSTALL_FOLDER, location.getAbsolutePath());
@@ -454,8 +460,8 @@ public class SimpleProfileRegistry implements IProfileRegistry, IAgentService {
return;
List<String> subProfileIds = profile.getSubProfileIds();
- for (int i = 0; i < subProfileIds.size(); i++) {
- removeProfile(subProfileIds.get(i));
+ for (String subProfileId : subProfileIds) {
+ removeProfile(subProfileId);
}
internalLockProfile(profile);
// The above call recursively locked the parent(s). So save it away to rewind the locking process.
@@ -485,7 +491,8 @@ public class SimpleProfileRegistry implements IProfileRegistry, IAgentService {
if (profiles != null) {
IProfile profile = getProfile(id);
if (profile != null && profile.getTimestamp() == timestamp)
- throw new ProvisionException(Messages.SimpleProfileRegistry_CannotRemoveCurrentSnapshot);
+ throw new ProvisionException(
+ NLS.bind(Messages.SimpleProfileRegistry_CannotRemoveCurrentSnapshot, profile));
}
File profileDirectory = getProfileFolder(id);
@@ -523,6 +530,7 @@ public class SimpleProfileRegistry implements IProfileRegistry, IAgentService {
// protect against NPE
if (profileDirectories == null) {
parser.getProfileMap();
+ return Collections.emptyMap();
}
for (File profileDirectorie : profileDirectories) {
String directoryName = profileDirectorie.getName();
@@ -583,9 +591,10 @@ public class SimpleProfileRegistry implements IProfileRegistry, IAgentService {
profileDirectory.mkdir();
long previousTimestamp = profile.getTimestamp();
- long currentTimestamp = System.currentTimeMillis();
- if (currentTimestamp <= previousTimestamp)
- currentTimestamp = previousTimestamp + 1;
+ long currentTimestamp = currentTimeInMillis(lastTimeMillis);
+ if (currentTimestamp <= previousTimestamp) {
+ currentTimestamp = currentTimeInMillis(previousTimestamp);
+ }
boolean shouldGzipFile = shouldGzipFile(profile);
File profileFile = new File(profileDirectory, Long.toString(currentTimestamp) + (shouldGzipFile ? PROFILE_GZ_EXT : PROFILE_EXT));
@@ -617,6 +626,16 @@ public class SimpleProfileRegistry implements IProfileRegistry, IAgentService {
}
}
+ /**
+ * Returns current time in millis that is guaranteed to grow and higher as given
+ * value
+ */
+ private static synchronized long currentTimeInMillis(long lastCurrentTime) {
+ long newTime = Math.max(lastCurrentTime + 1, lastTimeMillis + 1);
+ lastTimeMillis = Math.max(newTime, System.currentTimeMillis());
+ return lastTimeMillis;
+ }
+
public void setEventBus(IProvisioningEventBus bus) {
this.eventBus = bus;
}
@@ -886,7 +905,7 @@ public class SimpleProfileRegistry implements IProfileRegistry, IAgentService {
return false;
}
- long currentTimestamp = (timestamps.length == 0) ? -1 : timestamps[timestamps.length - 1];
+ long currentTimestamp = timestamps[timestamps.length - 1];
if (profile.getTimestamp() != currentTimestamp) {
if (DebugHelper.DEBUG_PROFILE_REGISTRY)
DebugHelper.debug(PROFILE_REGISTRY, "check timestamp: expected " + profile.getTimestamp() + " but was " + currentTimestamp); //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SurrogateProfileHandler.java b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SurrogateProfileHandler.java
index 0ff870c37..cfe06fefe 100644
--- a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SurrogateProfileHandler.java
+++ b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SurrogateProfileHandler.java
@@ -20,8 +20,7 @@ import java.lang.ref.SoftReference;
import java.net.*;
import java.util.*;
import org.eclipse.core.runtime.*;
-import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
-import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
+import org.eclipse.equinox.internal.p2.core.helpers.*;
import org.eclipse.equinox.p2.core.IProvisioningAgent;
import org.eclipse.equinox.p2.core.ProvisionException;
import org.eclipse.equinox.p2.engine.IProfile;
@@ -98,7 +97,11 @@ public class SurrogateProfileHandler implements ISurrogateProfileHandler {
private static void updateProperties(final IProfile sharedProfile, Profile userProfile) {
Location installLocation = ServiceHelper.getService(EngineActivator.getContext(), Location.class, Location.INSTALL_FILTER);
- File installFolder = new File(installLocation.getURL().getPath());
+ File installFolder = URLUtil.toFile(installLocation.getURL());
+ if (installFolder == null) {
+ // fallback: use only path of the URL if the protocol is not 'file'
+ installFolder = new File(installLocation.getURL().getPath());
+ }
if (Boolean.parseBoolean(sharedProfile.getProperty(IProfile.PROP_ROAMING))) {
userProfile.setProperty(IProfile.PROP_INSTALL_FOLDER, installFolder.getAbsolutePath());
@@ -111,7 +114,11 @@ public class SurrogateProfileHandler implements ISurrogateProfileHandler {
}
Location configurationLocation = ServiceHelper.getService(EngineActivator.getContext(), Location.class, Location.CONFIGURATION_FILTER);
- File configurationFolder = new File(configurationLocation.getURL().getPath());
+ File configurationFolder = URLUtil.toFile(configurationLocation.getURL());
+ if (configurationFolder == null) {
+ // fallback: use only path of the URL if the protocol is not 'file'
+ configurationFolder = new File(configurationLocation.getURL().getPath());
+ }
userProfile.setProperty(IProfile.PROP_CONFIGURATION_FOLDER, configurationFolder.getAbsolutePath());
// We need to check that the configuration folder is not a file system root.
diff --git a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/messages.properties b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/messages.properties
index 6bbfb785f..615e06d27 100644
--- a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/messages.properties
+++ b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/messages.properties
@@ -43,7 +43,7 @@ SimpleProfileRegistry_Profile_in_use=The profile is currently in use.
SimpleProfileRegistry_Profile_not_locked=The profile is not locked.
SimpleProfileRegistry_Profile_not_locked_due_to_exception=Profile not locked due to exception: {0}
SimpleProfileRegistry_Bad_profile_location=Bad profile location: {0}
-SimpleProfileRegistry_CannotRemoveCurrentSnapshot=Cannot remove the current profile timestamp
+SimpleProfileRegistry_CannotRemoveCurrentSnapshot=Cannot remove current profile: {0}
SimpleProfileRegistry_States_Error_Reading_File=Error reading profile state properties.
SimpleProfileRegistry_States_Error_Writing_File=Error writing profile state properties.
SimpleProfileRegistry_state_not_found=State {0} for profile {1} not found.
diff --git a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/phases/CertificateChecker.java b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/phases/CertificateChecker.java
index 61d962663..3a1589f8b 100644
--- a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/phases/CertificateChecker.java
+++ b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/phases/CertificateChecker.java
@@ -13,33 +13,88 @@
*******************************************************************************/
package org.eclipse.equinox.internal.p2.engine.phases;
-import java.io.File;
-import java.io.IOException;
+import java.io.*;
+import java.net.URL;
+import java.nio.ByteBuffer;
import java.security.GeneralSecurityException;
-import java.security.cert.Certificate;
+import java.security.cert.*;
import java.util.*;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
+import java.util.Map.Entry;
+import java.util.function.Supplier;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import org.bouncycastle.openpgp.PGPPublicKey;
+import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.equinox.internal.p2.artifact.processors.pgp.PGPPublicKeyStore;
+import org.eclipse.equinox.internal.p2.artifact.processors.pgp.PGPSignatureVerifier;
import org.eclipse.equinox.internal.p2.engine.*;
-import org.eclipse.equinox.p2.core.IProvisioningAgent;
-import org.eclipse.equinox.p2.core.UIServices;
+import org.eclipse.equinox.p2.core.*;
import org.eclipse.equinox.p2.core.UIServices.TrustInfo;
+import org.eclipse.equinox.p2.engine.IProfile;
+import org.eclipse.equinox.p2.engine.ProfileScope;
+import org.eclipse.equinox.p2.metadata.IArtifactKey;
+import org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor;
+import org.eclipse.equinox.p2.repository.artifact.spi.IArtifactUIServices;
+import org.eclipse.equinox.p2.repository.spi.PGPPublicKeyService;
import org.eclipse.osgi.service.security.TrustEngine;
import org.eclipse.osgi.signedcontent.*;
import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
+import org.osgi.framework.*;
+import org.osgi.service.prefs.BackingStoreException;
import org.osgi.util.tracker.ServiceTracker;
/**
- * Checks the certificates on a set of files or artifacts and reports back any problems
- * with unsigned artifacts, untrusted certificates, or tampered content.
+ * Checks the certificates or PGP signatures on a set of files or artifacts and
+ * reports back any problems with unsigned artifacts, untrusted certificates, or
+ * tampered content.
*/
public class CertificateChecker {
private static final String DEBUG_PREFIX = "certificate checker"; //$NON-NLS-1$
- private ArrayList<File> artifacts;
+ public static final String TRUST_ALWAYS_PROPERTY = "trustAlways"; //$NON-NLS-1$
+
+ public static final String TRUSTED_KEY_STORE_PROPERTY = "pgp.trustedPublicKeys"; //$NON-NLS-1$
+
+ public static final String TRUSTED_CERTIFICATES_PROPERTY = "trustedCertificates"; //$NON-NLS-1$
+
+ /***
+ * Store the optional profile for PGP key handling
+ */
+ private IProfile profile;
+
+ /**
+ * Stores artifacts to check
+ */
+ private Map<IArtifactDescriptor, File> artifacts = new HashMap<>();
private final IProvisioningAgent agent;
+ private final PGPPublicKeyService keyService;
+
+ // Lazily loading
+ private Supplier<PGPPublicKeyStore> trustedKeys = new Supplier<>() {
+ private PGPPublicKeyStore cache = null;
+
+ public PGPPublicKeyStore get() {
+ if (cache == null) {
+ cache = getPreferenceTrustedKeys();
+ getContributedTrustedKeys().keySet().forEach(cache::addKey);
+ }
+ return cache;
+ }
+ };
+
+ // Lazily loading in case we ever add an extension point for registering
+ // certificates.
+ private Supplier<Collection<? extends Certificate>> additionalTrustedCertificates = new Supplier<>() {
+ private Collection<? extends Certificate> cache = null;
+
+ public Collection<? extends Certificate> get() {
+ if (cache == null) {
+ cache = getPreferenceTrustedCertificates();
+ }
+ return cache;
+ }
+ };
public CertificateChecker() {
this(null);
@@ -47,12 +102,15 @@ public class CertificateChecker {
public CertificateChecker(IProvisioningAgent agent) {
this.agent = agent;
- artifacts = new ArrayList<>();
+ artifacts = new HashMap<>();
+ keyService = agent.getService(PGPPublicKeyService.class);
+
}
public IStatus start() {
final BundleContext context = EngineActivator.getContext();
- ServiceReference<SignedContentFactory> contentFactoryRef = context.getServiceReference(SignedContentFactory.class);
+ ServiceReference<SignedContentFactory> contentFactoryRef = context
+ .getServiceReference(SignedContentFactory.class);
SignedContentFactory verifierFactory = context.getService(contentFactoryRef);
try {
return checkCertificates(verifierFactory);
@@ -62,149 +120,257 @@ public class CertificateChecker {
}
private IStatus checkCertificates(SignedContentFactory verifierFactory) {
+ if (artifacts.isEmpty()) {
+ return Status.OK_STATUS;
+ }
+
+ // If unsigned content is allowed then the flood gates are open so there is no
+ // point in checking for unrooted certificates nor for not-yet-trusted keys.
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=578583
+ String policy = getUnsignedContentPolicy();
+ if (EngineActivator.UNSIGNED_ALLOW.equals(policy)) {
+ return Status.OK_STATUS;
+ }
+
UIServices serviceUI = agent.getService(UIServices.class);
- SignedContent content = null;
- SignerInfo[] signerInfo = null;
- ArrayList<Certificate> untrusted = new ArrayList<>();
- ArrayList<File> unsigned = new ArrayList<>();
- ArrayList<Certificate[]> untrustedChain = new ArrayList<>();
- Map<Certificate, Collection<File>> untrustedArtifacts = new HashMap<>();
- IStatus status = Status.OK_STATUS;
- if (artifacts.size() == 0 || serviceUI == null)
- return status;
- for (File artifact : artifacts) {
+ if (serviceUI == null) {
+ return Status.OK_STATUS;
+ }
+
+ if (isTrustAlways()) {
+ return Status.OK_STATUS;
+ }
+
+ IArtifactUIServices artifactServiceUI = serviceUI instanceof IArtifactUIServices
+ ? (IArtifactUIServices) serviceUI
+ : (untrustedCertificateChains, untrustedPGPKeys, unsignedArtifacts,
+ artifactFiles) -> IArtifactUIServices.getTrustInfo(serviceUI, untrustedCertificateChains,
+ untrustedPGPKeys, unsignedArtifacts, artifactFiles);
+
+ Map<List<Certificate>, Set<IArtifactKey>> untrustedCertificates = new LinkedHashMap<>();
+ Map<PGPPublicKey, Set<IArtifactKey>> untrustedPGPKeys = new LinkedHashMap<>();
+ Set<IArtifactKey> unsignedArtifacts = new LinkedHashSet<>();
+ Set<PGPPublicKey> trustedKeySet = new HashSet<>();
+ boolean isTrustedKeySetInitialized = false;
+ Map<IArtifactKey, File> artifactFiles = new LinkedHashMap<>();
+ for (Entry<IArtifactDescriptor, File> artifact : artifacts.entrySet()) {
+ IArtifactDescriptor artifactDescriptor = artifact.getKey();
+ IArtifactKey artifactKey = artifactDescriptor.getArtifactKey();
+ File artifactFile = artifact.getValue();
+ artifactFiles.put(artifactKey, artifactFile);
try {
- content = verifierFactory.getSignedContent(artifact);
- if (!content.isSigned()) {
- unsigned.add(artifact);
- continue;
- }
- signerInfo = content.getSignerInfos();
- } catch (GeneralSecurityException e) {
- return new Status(IStatus.ERROR, EngineActivator.ID, Messages.CertificateChecker_SignedContentError, e);
- } catch (IOException e) {
- return new Status(IStatus.ERROR, EngineActivator.ID, Messages.CertificateChecker_SignedContentIOError, e);
- }
- for (SignerInfo element : signerInfo) {
- if (!element.isTrusted()) {
- Certificate[] certificateChain = element.getCertificateChain();
- if (!untrusted.contains(certificateChain[0])) {
- untrusted.add(certificateChain[0]);
- untrustedChain.add(certificateChain);
+ SignedContent content = verifierFactory.getSignedContent(artifactFile);
+ if (content.isSigned()) {
+ SignerInfo[] signerInfo = content.getSignerInfos();
+ // Only record the untrusted elements if there are no trusted elements.
+ // Also check previously trusted certificates from the preferences.
+ if (Arrays.stream(signerInfo).noneMatch(SignerInfo::isTrusted)
+ && Arrays.stream(signerInfo).map(SignerInfo::getCertificateChain).flatMap(Arrays::stream)
+ .noneMatch(cert -> additionalTrustedCertificates.get().contains(cert))) {
+ for (SignerInfo element : signerInfo) {
+ if (!element.isTrusted()) {
+ List<Certificate> certificateChain = Arrays.asList(element.getCertificateChain());
+ untrustedCertificates.computeIfAbsent(certificateChain, key -> new LinkedHashSet<>())
+ .add(artifactKey);
+ }
+ }
}
- if (DebugHelper.DEBUG_CERTIFICATE_CHECKER_UNTRUSTED) {
- if (untrustedArtifacts.containsKey(certificateChain[0])) {
- untrustedArtifacts.get(certificateChain[0]).add(artifact);
- } else {
- untrustedArtifacts.put(certificateChain[0], new ArrayList<>(Arrays.asList(artifact)));
+ } else {
+ // The keys are in this destination artifact's properties if and only if the
+ // PGPSignatureVerifier verified the signatures against these keys.
+ List<PGPPublicKey> verifiedKeys = PGPPublicKeyStore
+ .readPublicKeys(
+ artifactDescriptor.getProperty(PGPSignatureVerifier.PGP_SIGNER_KEYS_PROPERTY_NAME))
+ .stream().map(keyService::addKey).collect(Collectors.toList());
+ if (!verifiedKeys.isEmpty()) {
+ if (!isTrustedKeySetInitialized) {
+ isTrustedKeySetInitialized = true;
+ trustedKeySet.addAll(trustedKeys.get().all());
+ }
+ // Only record the untrusted keys if none of the keys are trusted.
+ if (verifiedKeys.stream().noneMatch(trustedKeySet::contains)) {
+ verifiedKeys.forEach(key -> untrustedPGPKeys
+ .computeIfAbsent(key, k -> new LinkedHashSet<>()).add(artifactKey));
}
+ } else {
+ unsignedArtifacts.add(artifactKey);
}
}
+ } catch (GeneralSecurityException e) {
+ return new Status(IStatus.ERROR, EngineActivator.ID, Messages.CertificateChecker_SignedContentError, e);
+ } catch (IOException e) {
+ return new Status(IStatus.ERROR, EngineActivator.ID, Messages.CertificateChecker_SignedContentIOError,
+ e);
+ }
+ }
- // log the unsigned artifacts if requested
- if (DebugHelper.DEBUG_CERTIFICATE_CHECKER_UNSIGNED && !unsigned.isEmpty()) {
- StringBuilder message = new StringBuilder("The following artifacts are unsigned:\n"); //$NON-NLS-1$
- for (File file : unsigned) {
- message.append(NLS.bind(" {0}\n", file.getPath())); //$NON-NLS-1$
- }
- DebugHelper.debug(DEBUG_PREFIX, message.toString());
- }
+ // log the unsigned artifacts if requested
+ if (DebugHelper.DEBUG_CERTIFICATE_CHECKER_UNSIGNED && !unsignedArtifacts.isEmpty()) {
+ StringBuilder message = new StringBuilder("The following artifacts are unsigned:\n"); //$NON-NLS-1$
+ for (IArtifactKey key : unsignedArtifacts) {
+ message.append(NLS.bind(" {0}\n", artifactFiles.get(key).getPath())); //$NON-NLS-1$
+ }
+ DebugHelper.debug(DEBUG_PREFIX, message.toString());
+ }
- // log the untrusted certificates if requested
- if (DebugHelper.DEBUG_CERTIFICATE_CHECKER_UNTRUSTED && !untrusted.isEmpty()) {
- StringBuilder message = new StringBuilder("The following certificates are untrusted:\n"); //$NON-NLS-1$
- for (Certificate cert : untrustedArtifacts.keySet()) {
- message.append(cert.toString() + "\n"); //$NON-NLS-1$
- message.append(" used by the following artifacts:\n"); //$NON-NLS-1$
- for (File file : untrustedArtifacts.get(cert)) {
- message.append(NLS.bind(" {0}\n", file.getPath())); //$NON-NLS-1$
- }
- }
- DebugHelper.debug(DEBUG_PREFIX, message.toString());
+ // log the untrusted certificates if requested
+ if (DebugHelper.DEBUG_CERTIFICATE_CHECKER_UNTRUSTED && !untrustedCertificates.isEmpty()) {
+ StringBuilder message = new StringBuilder("The following certificates are untrusted:\n"); //$NON-NLS-1$
+ for (Map.Entry<List<Certificate>, Set<IArtifactKey>> entry : untrustedCertificates.entrySet()) {
+ message.append(entry.getKey().get(0).toString() + "\n"); //$NON-NLS-1$
+ message.append(" used by the following artifacts:\n"); //$NON-NLS-1$
+ for (IArtifactKey key : entry.getValue()) {
+ message.append(NLS.bind(" {0}\n", artifactFiles.get(key).getPath())); //$NON-NLS-1$
}
+
}
+ DebugHelper.debug(DEBUG_PREFIX, message.toString());
}
- String policy = getUnsignedContentPolicy();
- //if there is unsigned content and we should never allow it, then fail without further checking certificates
- if (!unsigned.isEmpty() && EngineActivator.UNSIGNED_FAIL.equals(policy))
- return new Status(IStatus.ERROR, EngineActivator.ID, NLS.bind(Messages.CertificateChecker_UnsignedNotAllowed, unsigned));
- String[] details;
- // If we always allow unsigned content, or we don't have any, we don't prompt the user about it
- if (EngineActivator.UNSIGNED_ALLOW.equals(policy) || unsigned.isEmpty())
- details = null;
- else {
- details = new String[unsigned.size()];
- for (int i = 0; i < details.length; i++) {
- details[i] = unsigned.get(i).toString();
+ if (DebugHelper.DEBUG_CERTIFICATE_CHECKER_UNTRUSTED && !untrustedPGPKeys.isEmpty()) {
+ StringBuilder message = new StringBuilder("The following PGP Keys are untrusted:\n"); //$NON-NLS-1$
+ for (Map.Entry<PGPPublicKey, Set<IArtifactKey>> entry : untrustedPGPKeys.entrySet()) {
+ message.append(Long.toHexString(entry.getKey().getKeyID()) + "\n"); //$NON-NLS-1$
+ message.append(" used by the following artifacts:\n"); //$NON-NLS-1$
+ for (IArtifactKey key : entry.getValue()) {
+ message.append(NLS.bind(" {0}\n", key)); //$NON-NLS-1$
+ }
}
+ DebugHelper.debug(DEBUG_PREFIX, message.toString());
}
- Certificate[][] unTrustedCertificateChains;
- if (untrusted.isEmpty()) {
- unTrustedCertificateChains = null;
- } else {
- unTrustedCertificateChains = new Certificate[untrustedChain.size()][];
- for (int i = 0; i < untrustedChain.size(); i++) {
- unTrustedCertificateChains[i] = untrustedChain.get(i);
- }
+
+ // if there is unsigned content and we should never allow it, then fail without
+ // further checking certificates
+ if (!unsignedArtifacts.isEmpty() && EngineActivator.UNSIGNED_FAIL.equals(policy)) {
+ return new Status(IStatus.ERROR, EngineActivator.ID, NLS.bind(
+ Messages.CertificateChecker_UnsignedNotAllowed,
+ unsignedArtifacts.stream().map(key -> artifactFiles.get(key)).collect(Collectors.toList())));
}
// If there was no unsigned content, and nothing untrusted, no need to prompt.
- if (details == null && unTrustedCertificateChains == null)
- return status;
+ if (unsignedArtifacts.isEmpty() && untrustedCertificates.isEmpty() && untrustedPGPKeys.isEmpty()) {
+ return Status.OK_STATUS;
+ }
- TrustInfo trustInfo = serviceUI.getTrustInfo(unTrustedCertificateChains, details);
+ TrustInfo trustInfo = artifactServiceUI.getTrustInfo(untrustedCertificates, untrustedPGPKeys, unsignedArtifacts,
+ artifactFiles);
- // If user doesn't trust unsigned content, cancel the operation
- if (!trustInfo.trustUnsignedContent())
- return Status.CANCEL_STATUS;
+ setTrustAlways(trustInfo.trustAlways());
- Certificate[] trustedCertificates = trustInfo.getTrustedCertificates();
- // If we had untrusted chains and nothing was trusted, cancel the operation
- if (unTrustedCertificateChains != null && trustedCertificates == null) {
- return new Status(IStatus.CANCEL, EngineActivator.ID, Messages.CertificateChecker_CertificateRejected);
- }
- // Anything that was trusted should be removed from the untrusted list
- if (trustedCertificates != null) {
- for (Certificate trustedCertificate : trustedCertificates) {
- untrusted.remove(trustedCertificate);
+ if (!trustInfo.trustAlways()) {
+ // If there is unsigned content and user doesn't trust unsigned content, cancel
+ // the operation.
+ if (!unsignedArtifacts.isEmpty() && !trustInfo.trustUnsignedContent()) {
+ return Status.CANCEL_STATUS;
+ }
+
+ Certificate[] trustedCertificates = trustInfo.getTrustedCertificates();
+ // If we had untrusted chains and nothing was trusted, cancel the operation
+ if (!untrustedCertificates.isEmpty() && trustedCertificates == null) {
+ return new Status(IStatus.CANCEL, EngineActivator.ID, Messages.CertificateChecker_CertificateRejected);
+ }
+
+ // Anything that was trusted should be removed from the untrusted list
+ if (trustedCertificates != null) {
+ List<Certificate> trustedCertificateList = Arrays.asList(trustedCertificates);
+ untrustedCertificates.keySet().removeIf(it -> trustedCertificateList.contains(it.get(0)));
+ }
+
+ trustedKeySet.addAll(trustInfo.getTrustedPGPKeys());
+
+ Set<IArtifactKey> trustedArtifactKeys = trustedKeySet.stream().map(untrustedPGPKeys::get)
+ .filter(Objects::nonNull).flatMap(Set::stream).collect(Collectors.toSet());
+ untrustedPGPKeys.values().forEach(it -> it.removeAll(trustedArtifactKeys));
+ untrustedPGPKeys.values().removeIf(Collection::isEmpty);
+
+ // If there is still untrusted content, cancel the operation
+ if (!untrustedCertificates.isEmpty() || !untrustedPGPKeys.isEmpty()) {
+ return new Status(IStatus.CANCEL, EngineActivator.ID, Messages.CertificateChecker_CertificateRejected);
}
}
- // If there is still untrusted content, cancel the operation
- if (untrusted.size() > 0)
- return new Status(IStatus.CANCEL, EngineActivator.ID, Messages.CertificateChecker_CertificateRejected);
- // If we should persist the trusted certificates, add them to the trust engine
- if (trustInfo.persistTrust())
- return persistTrustedCertificates(trustedCertificates);
+ // If we should persist the trusted certificates and keys.
+ if (trustInfo.persistTrust()) {
+ List<IStatus> statuses = new ArrayList<>();
+
+ Set<Certificate> unsavedCertificates = new LinkedHashSet<>();
+ if (trustInfo.getTrustedCertificates() != null) {
+ unsavedCertificates.addAll(Arrays.asList(trustInfo.getTrustedCertificates()));
+ }
+
+ if (!unsavedCertificates.isEmpty()) {
+ // Try to save to the trust engine first.
+ IStatus status = persistTrustedCertificatesInTrustEngine(unsavedCertificates);
+ if (status != null && !status.isOK()) {
+ statuses.add(status);
+ }
+
+ // If we couldn't save them in the trust engine, save them in the preferences.
+ if (!unsavedCertificates.isEmpty()) {
+ // Be sure we add the new certificates to the previously saved certificates.
+ unsavedCertificates.addAll(getPreferenceTrustedCertificates());
+ IStatus preferenceStatus = persistTrustedCertificates(unsavedCertificates);
+ if (preferenceStatus != null && !preferenceStatus.isOK()) {
+ statuses.add(preferenceStatus);
+ }
+ }
+ }
+
+ if (!trustInfo.getTrustedPGPKeys().isEmpty()) {
+ // Be sure we add the new keys to the previously saved keys.
+ PGPPublicKeyStore keyStore = getPreferenceTrustedKeys();
+ trustInfo.getTrustedPGPKeys().forEach(keyStore::addKey);
+ IStatus status = persistTrustedKeys(keyStore);
+ if (status != null && !status.isOK()) {
+ statuses.add(status);
+ }
+ }
- return status;
+ if (!statuses.isEmpty()) {
+ if (statuses.size() == 1) {
+ return statuses.get(1);
+ }
+ String message = statuses.stream().map(IStatus::getMessage).collect(Collectors.joining("\n")); //$NON-NLS-1$
+ return new MultiStatus(getClass(), IStatus.OK, statuses.toArray(IStatus[]::new), message, null);
+ }
+ }
+
+ return Status.OK_STATUS;
}
- private IStatus persistTrustedCertificates(Certificate[] trustedCertificates) {
- if (trustedCertificates == null)
- // I'm pretty sure this would be a bug; trustedCertificates should never be null here.
- return new Status(IStatus.INFO, EngineActivator.ID, Messages.CertificateChecker_CertificateRejected);
- ServiceTracker<TrustEngine, TrustEngine> trustEngineTracker = new ServiceTracker<>(EngineActivator.getContext(), TrustEngine.class, null);
+ /**
+ * This modifies the argument collection to remove the certificates that were
+ * successfully saved. Often no certificates are saved because this tries to
+ * store in the Java runtime cacerts and those are typically read-only.
+ */
+ private IStatus persistTrustedCertificatesInTrustEngine(
+ Collection<? extends Certificate> unsavedTrustedCertificates) {
+ ServiceTracker<TrustEngine, TrustEngine> trustEngineTracker = new ServiceTracker<>(EngineActivator.getContext(),
+ TrustEngine.class, null);
trustEngineTracker.open();
Object[] trustEngines = trustEngineTracker.getServices();
try {
if (trustEngines == null)
return null;
- for (Certificate trustedCertificate : trustedCertificates) {
+ for (Iterator<? extends Certificate> it = unsavedTrustedCertificates.iterator(); it.hasNext();) {
+ Certificate trustedCertificate = it.next();
for (Object engine : trustEngines) {
TrustEngine trustEngine = (TrustEngine) engine;
if (trustEngine.isReadOnly())
continue;
try {
trustEngine.addTrustAnchor(trustedCertificate, trustedCertificate.toString());
- // this should mean we added an anchor successfully; continue to next certificate
+ // this should mean we added an anchor successfully; continue to next
+ // certificate
+ it.remove();
break;
} catch (IOException e) {
- //just return an INFO so the user can proceed with the install
- return new Status(IStatus.INFO, EngineActivator.ID, Messages.CertificateChecker_KeystoreConnectionError, e);
+ // just return an INFO so the user can proceed with the install
+ return new Status(IStatus.INFO, EngineActivator.ID,
+ Messages.CertificateChecker_KeystoreConnectionError, e);
} catch (GeneralSecurityException e) {
- return new Status(IStatus.INFO, EngineActivator.ID, Messages.CertificateChecker_CertificateError, e);
+ return new Status(IStatus.INFO, EngineActivator.ID,
+ Messages.CertificateChecker_CertificateError, e);
}
}
}
@@ -214,6 +380,43 @@ public class CertificateChecker {
return Status.OK_STATUS;
}
+ public IStatus persistTrustedCertificates(Collection<? extends Certificate> trustedCertificates) {
+ if (profile != null) {
+ ProfileScope profileScope = new ProfileScope(agent.getService(IAgentLocation.class),
+ profile.getProfileId());
+ IEclipsePreferences node = profileScope.getNode(EngineActivator.ID);
+ try {
+ CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); //$NON-NLS-1$
+ CertPath certPath = certificateFactory.generateCertPath(new ArrayList<>(trustedCertificates));
+ byte[] encoded = certPath.getEncoded("PKCS7"); //$NON-NLS-1$
+ node.putByteArray(TRUSTED_CERTIFICATES_PROPERTY, encoded);
+ node.flush();
+ } catch (BackingStoreException | CertificateException ex) {
+ return new Status(IStatus.ERROR, EngineActivator.ID, ex.getMessage(), ex);
+ }
+ }
+ return Status.OK_STATUS;
+ }
+
+ public Set<? extends Certificate> getPreferenceTrustedCertificates() {
+ if (profile != null) {
+ ProfileScope profileScope = new ProfileScope(agent.getService(IAgentLocation.class),
+ profile.getProfileId());
+ IEclipsePreferences node = profileScope.getNode(EngineActivator.ID);
+ try {
+ byte[] encoded = node.getByteArray(TRUSTED_CERTIFICATES_PROPERTY, null);
+ if (encoded != null) {
+ CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); //$NON-NLS-1$
+ CertPath certPath = certificateFactory.generateCertPath(new ByteArrayInputStream(encoded), "PKCS7"); //$NON-NLS-1$
+ return new LinkedHashSet<>(certPath.getCertificates());
+ }
+ } catch (CertificateException ex) {
+ DebugHelper.debug(DEBUG_PREFIX, ex.getMessage());
+ }
+ }
+ return Set.of();
+ }
+
/**
* Return the policy on unsigned content.
*/
@@ -225,14 +428,87 @@ public class CertificateChecker {
}
- public void add(File toAdd) {
- artifacts.add(toAdd);
+ public void setProfile(IProfile profile) {
+ this.profile = profile;
+ }
+
+ public void add(Map<IArtifactDescriptor, File> toAdd) {
+ artifacts.putAll(toAdd);
}
- public void add(Object[] toAdd) {
- for (Object element : toAdd) {
- if (element instanceof File)
- add((File) element);
+ public Map<PGPPublicKey, Set<Bundle>> getContributedTrustedKeys() {
+ // Build the map based on fingerprints to properly avoid duplicates as we
+ // accumulate the full set of keys.
+ Map<ByteBuffer, Set<Bundle>> keys = new LinkedHashMap<>();
+
+ // Load from the extension registry.
+ for (IConfigurationElement extension : RegistryFactory.getRegistry()
+ .getConfigurationElementsFor(EngineActivator.ID, "pgp")) { //$NON-NLS-1$
+ if ("trustedKeys".equals(extension.getName())) { //$NON-NLS-1$
+ String pathInBundle = extension.getAttribute("path"); //$NON-NLS-1$
+ if (pathInBundle != null) {
+ String name = extension.getContributor().getName();
+ Stream.of(EngineActivator.getContext().getBundles())
+ .filter(bundle -> bundle.getSymbolicName().equals(name)).findAny().ifPresent(bundle -> {
+ URL keyURL = bundle.getEntry(pathInBundle);
+ try (InputStream stream = keyURL.openStream()) {
+ PGPPublicKeyStore.readPublicKeys(stream).stream().map(keyService::addKey)
+ .forEach(key -> keys.computeIfAbsent(ByteBuffer.wrap(key.getFingerprint()),
+ k -> new LinkedHashSet<>()).add(bundle));
+ } catch (IOException e) {
+ DebugHelper.debug(DEBUG_PREFIX, e.getMessage());
+ }
+ });
+ }
+ }
}
+
+ Map<PGPPublicKey, Set<Bundle>> result = keys.entrySet().stream()
+ .collect(Collectors.toMap(entry -> keyService.getKey(entry.getKey().array()), Map.Entry::getValue));
+ return result;
+ }
+
+ public boolean isTrustAlways() {
+ if (profile != null) {
+ ProfileScope profileScope = new ProfileScope(agent.getService(IAgentLocation.class),
+ profile.getProfileId());
+ return profileScope.getNode(EngineActivator.ID).getBoolean(TRUST_ALWAYS_PROPERTY, false);
+ }
+ return false;
+ }
+
+ public void setTrustAlways(boolean trustAlways) {
+ if (profile != null) {
+ ProfileScope profileScope = new ProfileScope(agent.getService(IAgentLocation.class),
+ profile.getProfileId());
+ profileScope.getNode(EngineActivator.ID).putBoolean(TRUST_ALWAYS_PROPERTY, trustAlways);
+ }
+ }
+
+ public PGPPublicKeyStore getPreferenceTrustedKeys() {
+ PGPPublicKeyStore trustStore = new PGPPublicKeyStore();
+ if (profile != null) {
+ ProfileScope profileScope = new ProfileScope(agent.getService(IAgentLocation.class),
+ profile.getProfileId());
+ PGPPublicKeyStore
+ .readPublicKeys(profileScope.getNode(EngineActivator.ID).get(TRUSTED_KEY_STORE_PROPERTY, null))
+ .stream().map(keyService::addKey).forEach(trustStore::addKey);
+ }
+ return trustStore;
+ }
+
+ public IStatus persistTrustedKeys(PGPPublicKeyStore trustStore) {
+ if (profile != null) {
+ ProfileScope profileScope = new ProfileScope(agent.getService(IAgentLocation.class),
+ profile.getProfileId());
+ IEclipsePreferences node = profileScope.getNode(EngineActivator.ID);
+ try {
+ node.put(TRUSTED_KEY_STORE_PROPERTY, trustStore.toArmoredString());
+ node.flush();
+ } catch (IOException | BackingStoreException ex) {
+ return new Status(IStatus.ERROR, EngineActivator.ID, ex.getMessage(), ex);
+ }
+ }
+ return Status.OK_STATUS;
}
}
diff --git a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/phases/CheckTrust.java b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/phases/CheckTrust.java
index 531f95331..5b81e7ba3 100644
--- a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/phases/CheckTrust.java
+++ b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/phases/CheckTrust.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -25,6 +25,7 @@ import org.eclipse.equinox.p2.engine.PhaseSetFactory;
import org.eclipse.equinox.p2.engine.spi.ProvisioningAction;
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.p2.metadata.ITouchpointType;
+import org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor;
/**
* An install phase that checks if the certificates used to sign the artifacts
@@ -32,7 +33,13 @@ import org.eclipse.equinox.p2.metadata.ITouchpointType;
*/
public class CheckTrust extends InstallableUnitPhase {
- public static final String PARM_ARTIFACT_FILES = "artifactFiles"; //$NON-NLS-1$
+ /**
+ * Parameter used to populate/get artifacts to check trust. The value for this
+ * property is <code>Map&lt;IArtifactDescriptor, File></code>.
+ *
+ * @see org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.CheckTrustAction
+ */
+ public static final String PARM_ARTIFACTS = "artifacts"; //$NON-NLS-1$
public CheckTrust(int weight) {
super(PhaseSetFactory.PHASE_CHECK_TRUST, weight);
@@ -46,15 +53,15 @@ public class CheckTrust extends InstallableUnitPhase {
@Override
protected IStatus completePhase(IProgressMonitor monitor, IProfile profile, Map<String, Object> parameters) {
@SuppressWarnings("unchecked")
- Collection<File> artifactRequests = (Collection<File>) parameters.get(PARM_ARTIFACT_FILES);
+ Map<IArtifactDescriptor, File> artifactRequests = (Map<IArtifactDescriptor, File>) parameters
+ .get(PARM_ARTIFACTS);
IProvisioningAgent agent = (IProvisioningAgent) parameters.get(PARM_AGENT);
// Instantiate a check trust manager
CertificateChecker certificateChecker = new CertificateChecker(agent);
- certificateChecker.add(artifactRequests.toArray());
- IStatus status = certificateChecker.start();
-
- return status;
+ certificateChecker.add(artifactRequests);
+ certificateChecker.setProfile(profile);
+ return certificateChecker.start();
}
@Override
@@ -86,7 +93,7 @@ public class CheckTrust extends InstallableUnitPhase {
@Override
protected IStatus initializePhase(IProgressMonitor monitor, IProfile profile, Map<String, Object> parameters) {
- parameters.put(PARM_ARTIFACT_FILES, new ArrayList<File>());
+ parameters.put(PARM_ARTIFACTS, new HashMap<IArtifactDescriptor, File>());
return super.initializePhase(monitor, profile, parameters);
}
diff --git a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/p2/engine/spi/Memento.java b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/p2/engine/spi/Memento.java
index 5b1082881..eb82f08d8 100644
--- a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/p2/engine/spi/Memento.java
+++ b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/p2/engine/spi/Memento.java
@@ -51,19 +51,7 @@ public final class Memento {
}
public Enumeration<String> getKeys() {
- return new Enumeration<String>() {
- Iterator<String> keysIterator = mementoMap.keySet().iterator();
-
- @Override
- public boolean hasMoreElements() {
- return keysIterator.hasNext();
- }
-
- @Override
- public String nextElement() {
- return keysIterator.next();
- }
- };
+ return Collections.enumeration(mementoMap.keySet());
}
private static void validateValue(Object value) {
diff --git a/bundles/org.eclipse.equinox.p2.extensionlocation/.classpath b/bundles/org.eclipse.equinox.p2.extensionlocation/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.extensionlocation/.classpath
+++ b/bundles/org.eclipse.equinox.p2.extensionlocation/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.extensionlocation/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.extensionlocation/.settings/org.eclipse.jdt.core.prefs
index ffc318ade..2688c8dd5 100644
--- a/bundles/org.eclipse.equinox.p2.extensionlocation/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.extensionlocation/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -36,6 +36,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -89,6 +90,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -125,7 +127,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -139,7 +142,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -260,7 +262,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -331,7 +332,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -476,7 +476,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.extensionlocation/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.extensionlocation/META-INF/MANIFEST.MF
index e7524ee1c..290732d27 100644
--- a/bundles/org.eclipse.equinox.p2.extensionlocation/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.extensionlocation/META-INF/MANIFEST.MF
@@ -2,14 +2,14 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.extensionlocation;singleton:=true
-Bundle-Version: 1.3.300.qualifier
+Bundle-Version: 1.4.100.qualifier
Bundle-Activator: org.eclipse.equinox.internal.p2.extensionlocation.Activator
Bundle-Vendor: %providerName
Bundle-Localization: plugin
-Export-Package: org.eclipse.equinox.internal.p2.extensionlocation;x-friends:="org.eclipse.equinox.p2.reconciler.dropins,org.eclipse.equinox.p2.ui.importexport"
+Export-Package: org.eclipse.equinox.internal.p2.extensionlocation;x-friends:="org.eclipse.equinox.p2.reconciler.dropins,org.eclipse.equinox.p2.ui,org.eclipse.equinox.p2.ui.importexport"
Require-Bundle: org.eclipse.equinox.common;bundle-version="[3.5.0,4.0.0)",
org.eclipse.equinox.p2.metadata
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Import-Package: org.eclipse.equinox.internal.p2.artifact.repository.simple,
org.eclipse.equinox.internal.p2.core.helpers,
diff --git a/bundles/org.eclipse.equinox.p2.extensionlocation/pom.xml b/bundles/org.eclipse.equinox.p2.extensionlocation/pom.xml
index 34613cf88..2cadcc0b2 100644
--- a/bundles/org.eclipse.equinox.p2.extensionlocation/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.extensionlocation/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.extensionlocation</artifactId>
- <version>1.3.300-SNAPSHOT</version>
+ <version>1.4.100-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/BundlePoolFilteredListener.java b/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/BundlePoolFilteredListener.java
index 2bc66c2fa..a87523eee 100644
--- a/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/BundlePoolFilteredListener.java
+++ b/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/BundlePoolFilteredListener.java
@@ -17,7 +17,6 @@ import java.io.File;
import java.util.*;
import org.eclipse.equinox.internal.provisional.p2.directorywatcher.DirectoryChangeListener;
import org.eclipse.equinox.p2.metadata.IArtifactKey;
-import org.eclipse.equinox.p2.query.IQueryResult;
import org.eclipse.equinox.p2.repository.artifact.ArtifactKeyQuery;
import org.eclipse.equinox.p2.repository.artifact.IFileArtifactRepository;
@@ -30,9 +29,7 @@ public class BundlePoolFilteredListener extends DirectoryChangeListener {
delegate = listener;
IFileArtifactRepository bundlePool = Activator.getBundlePoolRepository();
if (bundlePool != null) {
- IQueryResult<IArtifactKey> keys = bundlePool.query(ArtifactKeyQuery.ALL_KEYS, null);
- for (Iterator<IArtifactKey> iterator = keys.iterator(); iterator.hasNext();) {
- IArtifactKey key = iterator.next();
+ for (IArtifactKey key : bundlePool.query(ArtifactKeyQuery.ALL_KEYS, null)) {
File artifactFile = bundlePool.getArtifactFile(key);
if (artifactFile != null)
bundlePoolFiles.add(artifactFile);
diff --git a/bundles/org.eclipse.equinox.p2.garbagecollector/.classpath b/bundles/org.eclipse.equinox.p2.garbagecollector/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.garbagecollector/.classpath
+++ b/bundles/org.eclipse.equinox.p2.garbagecollector/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.garbagecollector/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.garbagecollector/.settings/org.eclipse.jdt.core.prefs
index 4e79b56c0..26df1a4b1 100644
--- a/bundles/org.eclipse.equinox.p2.garbagecollector/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.garbagecollector/.settings/org.eclipse.jdt.core.prefs
@@ -16,9 +16,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -88,6 +89,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -124,7 +126,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -138,7 +141,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -259,7 +261,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -330,7 +331,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -475,7 +475,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.garbagecollector/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.garbagecollector/META-INF/MANIFEST.MF
index 31c6ab5f6..5001cdab1 100644
--- a/bundles/org.eclipse.equinox.p2.garbagecollector/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.garbagecollector/META-INF/MANIFEST.MF
@@ -2,8 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.garbagecollector;singleton:=true
-Bundle-Version: 1.1.300.qualifier
-Bundle-Activator: org.eclipse.equinox.internal.p2.garbagecollector.GCActivator
+Bundle-Version: 1.2.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package: org.eclipse.equinox.internal.p2.garbagecollector;x-friends:="org.eclipse.equinox.p2.touchpoint.eclipse,org.eclipse.pde.core,org.eclipse.equinox.p2.ui.sdk.scheduler"
@@ -25,5 +24,5 @@ Import-Package: org.eclipse.core.runtime.preferences,
org.osgi.service.prefs;version="1.1.0"
Service-Component: OSGI-INF/garbagecollector.xml
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.equinox.p2.garbagecollector
diff --git a/bundles/org.eclipse.equinox.p2.garbagecollector/pom.xml b/bundles/org.eclipse.equinox.p2.garbagecollector/pom.xml
index cc55e3182..ee0e4278b 100644
--- a/bundles/org.eclipse.equinox.p2.garbagecollector/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.garbagecollector/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.garbagecollector</artifactId>
- <version>1.1.300-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/Application.java b/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/Application.java
index bb1cc4bdf..740f3dc83 100644
--- a/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/Application.java
+++ b/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/Application.java
@@ -56,7 +56,7 @@ public class Application implements IApplication {
}
private void initializeServices() throws ProvisionException {
- IProvisioningAgentProvider provider = GCActivator.getService(IProvisioningAgentProvider.class);
+ IProvisioningAgentProvider provider = GarbageCollectorHelper.getService(IProvisioningAgentProvider.class);
agent = provider.createAgent(null);
}
diff --git a/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/CoreGarbageCollector.java b/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/CoreGarbageCollector.java
index fe3193914..eefcb0a55 100644
--- a/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/CoreGarbageCollector.java
+++ b/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/CoreGarbageCollector.java
@@ -25,11 +25,10 @@ import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
* are not mapped to be an IArtifactKey in the MarkSet.
*/
public class CoreGarbageCollector {
-
/**
- * When set to true, information will be logged every time an artifact is removed
+ * When set to true, information will be logged every time an artifact is removed
*/
- static boolean debugMode = false;
+ private static boolean DEBUG = "true".equalsIgnoreCase(GarbageCollectorHelper.ID + "/debug"); //$NON-NLS-1$ //$NON-NLS-2$
/**
* Given a list of IArtifactKeys and an IArtifactRepository, removes all artifacts
@@ -39,23 +38,14 @@ public class CoreGarbageCollector {
Set<IArtifactKey> set = new HashSet<>(Arrays.asList(markSet));
//this query will match all artifact keys that are not in the given set
IQuery<IArtifactKey> query = QueryUtil.createQuery(IArtifactKey.class, "unique($0)", set); //$NON-NLS-1$
- final IQueryResult<IArtifactKey> inactive = aRepository.query(query, null);
aRepository.executeBatch(monitor -> {
- for (Iterator<IArtifactKey> iterator = inactive.iterator(); iterator.hasNext();) {
- IArtifactKey key = iterator.next();
+ for (IArtifactKey key : aRepository.query(query, null)) {
aRepository.removeDescriptor(key, new NullProgressMonitor());
- if (debugMode) {
+ if (DEBUG) {
Tracing.debug("Key removed:" + key); //$NON-NLS-1$
}
}
}, new NullProgressMonitor());
}
- /*
- * If set to true, debug mode will log information about each artifact deleted by the CoreGarbageCollector
- * @param inDebugMode
- */
- public static void setDebugMode(boolean inDebugMode) {
- debugMode = inDebugMode;
- }
}
diff --git a/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GarbageCollector.java b/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GarbageCollector.java
index 0487aae50..12b7780fc 100644
--- a/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GarbageCollector.java
+++ b/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GarbageCollector.java
@@ -61,7 +61,7 @@ public class GarbageCollector implements SynchronousProvisioningListener, IAgent
@Override
public void handleException(Throwable exception) {
- LogHelper.log(new Status(IStatus.ERROR, GCActivator.ID, Messages.Error_in_extension, exception));
+ LogHelper.log(new Status(IStatus.ERROR, GarbageCollectorHelper.ID, Messages.Error_in_extension, exception));
}
@Override
@@ -77,7 +77,7 @@ public class GarbageCollector implements SynchronousProvisioningListener, IAgent
private static final String ATTRIBUTE_CLASS = "class"; //$NON-NLS-1$
- private static final String PT_MARKSET = GCActivator.ID + ".marksetproviders"; //$NON-NLS-1$
+ private static final String PT_MARKSET = GarbageCollectorHelper.ID + ".marksetproviders"; //$NON-NLS-1$
final IProvisioningAgent agent;
//The GC is triggered when an uninstall event occurred during a "transaction" and the transaction is committed.
@@ -122,13 +122,13 @@ public class GarbageCollector implements SynchronousProvisioningListener, IAgent
}
protected boolean getBooleanPreference(String key, boolean defaultValue) {
- IPreferencesService prefService = GCActivator.getService(IPreferencesService.class);
+ IPreferencesService prefService = GarbageCollectorHelper.getService(IPreferencesService.class);
if (prefService == null)
return defaultValue;
List<IEclipsePreferences> nodes = new ArrayList<>();
// todo we should look in the instance scope as well but have to be careful that the instance location has been set
- nodes.add(ConfigurationScope.INSTANCE.getNode(GCActivator.ID));
- nodes.add(DefaultScope.INSTANCE.getNode(GCActivator.ID));
+ nodes.add(ConfigurationScope.INSTANCE.getNode(GarbageCollectorHelper.ID));
+ nodes.add(DefaultScope.INSTANCE.getNode(GarbageCollectorHelper.ID));
return Boolean.parseBoolean(prefService.get(key, Boolean.toString(defaultValue), nodes.toArray(new Preferences[nodes.size()])));
}
@@ -150,7 +150,7 @@ public class GarbageCollector implements SynchronousProvisioningListener, IAgent
} else if (o instanceof CommitOperationEvent) {
if (uninstallEventProfileId != null) {
CommitOperationEvent event = (CommitOperationEvent) o;
- if (uninstallEventProfileId.equals(event.getProfile().getProfileId()) && getBooleanPreference(GCActivator.GC_ENABLED, true))
+ if (uninstallEventProfileId.equals(event.getProfile().getProfileId()) && getBooleanPreference(GarbageCollectorHelper.GC_ENABLED, true))
runGC(event.getProfile());
uninstallEventProfileId = null;
}
diff --git a/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GarbageCollectorComponent.java b/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GarbageCollectorComponent.java
index 1fd79b0c2..a9f31a472 100644
--- a/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GarbageCollectorComponent.java
+++ b/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GarbageCollectorComponent.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
diff --git a/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GCActivator.java b/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GarbageCollectorHelper.java
index 537ae5cd8..130cd6d3e 100644
--- a/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GCActivator.java
+++ b/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/GarbageCollectorHelper.java
@@ -7,24 +7,22 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.internal.p2.garbagecollector;
-import org.eclipse.osgi.service.debug.DebugOptions;
import org.osgi.framework.*;
-public class GCActivator implements BundleActivator {
+public class GarbageCollectorHelper {
+
public static final String ID = "org.eclipse.equinox.p2.garbagecollector"; //$NON-NLS-1$
public static final String GC_ENABLED = "gc_enabled"; //$NON-NLS-1$
- private static final String DEBUG_STRING = GCActivator.ID + "/debug"; //$NON-NLS-1$
- private static final boolean DEFAULT_DEBUG = false;
- static BundleContext context;
static <T> T getService(Class<T> clazz) {
+ BundleContext context = FrameworkUtil.getBundle(GarbageCollectorHelper.class).getBundleContext();
ServiceReference<T> reference = context.getServiceReference(clazz);
if (reference == null)
return null;
@@ -33,17 +31,6 @@ public class GCActivator implements BundleActivator {
return result;
}
- @Override
- public void start(BundleContext inContext) throws Exception {
- GCActivator.context = inContext;
- DebugOptions debug = getService(DebugOptions.class);
- if (debug != null) {
- CoreGarbageCollector.setDebugMode(debug.getBooleanOption(DEBUG_STRING, DEFAULT_DEBUG));
- }
- }
- @Override
- public void stop(BundleContext inContext) throws Exception {
- GCActivator.context = null;
- }
+
}
diff --git a/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/MarkSetProvider.java b/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/MarkSetProvider.java
index ba755cdda..ee55e7ec4 100644
--- a/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/MarkSetProvider.java
+++ b/bundles/org.eclipse.equinox.p2.garbagecollector/src/org/eclipse/equinox/internal/p2/garbagecollector/MarkSetProvider.java
@@ -17,10 +17,10 @@ import org.eclipse.equinox.p2.core.IProvisioningAgent;
import org.eclipse.equinox.p2.engine.IProfile;
import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
-/**
+/**
* Any class which declares itself as an extension to the <tt>org.eclipse.equinox.p2.garbagecollector.marksetproviders</tt>
* extension point must extend this base class. Given a Profile, implementors are required
- * to provide an array of MarkSet objects, each of which must contain an IArtifactRepository
+ * to provide an array of MarkSet objects, each of which must contain an IArtifactRepository
* and the IArtifactKeys used by the given Profile.
*/
public abstract class MarkSetProvider {
diff --git a/bundles/org.eclipse.equinox.p2.installer/.classpath b/bundles/org.eclipse.equinox.p2.installer/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.installer/.classpath
+++ b/bundles/org.eclipse.equinox.p2.installer/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.installer/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.installer/.settings/org.eclipse.jdt.core.prefs
index f3deca9be..3031ac728 100644
--- a/bundles/org.eclipse.equinox.p2.installer/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.installer/.settings/org.eclipse.jdt.core.prefs
@@ -18,9 +18,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -37,6 +37,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -90,6 +91,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -126,7 +128,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -140,7 +143,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -261,7 +263,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -332,7 +333,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -477,7 +477,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.installer/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.installer/META-INF/MANIFEST.MF
index 9071a18cb..63f6c3707 100644
--- a/bundles/org.eclipse.equinox.p2.installer/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.installer/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@ Bundle-SymbolicName: org.eclipse.equinox.p2.installer;singleton:=true
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
-Bundle-Version: 1.2.200.qualifier
+Bundle-Version: 1.3.300.qualifier
Bundle-Activator: org.eclipse.equinox.internal.p2.installer.InstallerActivator
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.osgi;bundle-version="[3.7.0,4.0.0)",
@@ -20,7 +20,7 @@ Require-Bundle: org.eclipse.osgi;bundle-version="[3.7.0,4.0.0)",
org.eclipse.core.net;bundle-version="1.1.0",
org.eclipse.equinox.p2.repository;bundle-version="2.1.0",
org.eclipse.equinox.p2.transport.ecf;bundle-version="1.0.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.equinox.internal.p2.installer;x-internal:=true,
org.eclipse.equinox.internal.p2.installer.ui;x-internal:=true,
org.eclipse.equinox.internal.provisional.p2.installer;x-internal:=true
diff --git a/bundles/org.eclipse.equinox.p2.installer/installer.product b/bundles/org.eclipse.equinox.p2.installer/installer.product
index 7a6917f60..83b557986 100644
--- a/bundles/org.eclipse.equinox.p2.installer/installer.product
+++ b/bundles/org.eclipse.equinox.p2.installer/installer.product
@@ -35,10 +35,12 @@
<plugin id="org.apache.commons.codec"/>
<plugin id="org.apache.commons.httpclient"/>
<plugin id="org.apache.commons.logging"/>
+ <plugin id="org.apache.felix.scr"/>
<plugin id="org.eclipse.core.contenttype"/>
<plugin id="org.eclipse.core.expressions"/>
<plugin id="org.eclipse.core.jobs"/>
<plugin id="org.eclipse.core.net"/>
+ <plugin id="org.eclipse.core.net.linux" fragment="true"/>
<plugin id="org.eclipse.core.runtime"/>
<plugin id="org.eclipse.core.runtime.compatibility.registry" fragment="true"/>
<plugin id="org.eclipse.ecf"/>
@@ -51,11 +53,13 @@
<plugin id="org.eclipse.ecf.ssl" fragment="true"/>
<plugin id="org.eclipse.equinox.app"/>
<plugin id="org.eclipse.equinox.common"/>
- <plugin id="org.eclipse.equinox.ds"/>
+ <plugin id="org.eclipse.equinox.concurrent"/>
<plugin id="org.eclipse.equinox.frameworkadmin"/>
<plugin id="org.eclipse.equinox.frameworkadmin.equinox"/>
<plugin id="org.eclipse.equinox.launcher"/>
- <plugin id="org.eclipse.equinox.launcher.cocoa.macosx" fragment="true"/>
+ <plugin id="org.eclipse.equinox.launcher.cocoa.macosx.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.equinox.launcher.cocoa.macosx.aarch64" fragment="true"/>
+ <plugin id="org.eclipse.equinox.launcher.gtk.linux.x86_64" fragment="true"/>
<plugin id="org.eclipse.equinox.p2.artifact.repository"/>
<plugin id="org.eclipse.equinox.p2.core"/>
<plugin id="org.eclipse.equinox.p2.director"/>
@@ -72,23 +76,28 @@
<plugin id="org.eclipse.equinox.preferences"/>
<plugin id="org.eclipse.equinox.registry"/>
<plugin id="org.eclipse.equinox.security"/>
+ <plugin id="org.eclipse.equinox.security.linux" fragment="true"/>
<plugin id="org.eclipse.equinox.security.macosx" fragment="true"/>
<plugin id="org.eclipse.equinox.simpleconfigurator"/>
<plugin id="org.eclipse.equinox.simpleconfigurator.manipulator"/>
<plugin id="org.eclipse.equinox.transforms.hook" fragment="true"/>
<plugin id="org.eclipse.equinox.util"/>
<plugin id="org.eclipse.osgi"/>
+ <plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/>
<plugin id="org.eclipse.osgi.services"/>
+ <plugin id="org.eclipse.osgi.util"/>
<plugin id="org.eclipse.swt"/>
<plugin id="org.eclipse.swt.cocoa.macosx" fragment="true"/>
+ <plugin id="org.eclipse.swt.gtk.linux.x86_64" fragment="true"/>
<plugin id="org.sat4j.core"/>
<plugin id="org.sat4j.pb"/>
+ <plugin id="org.tukaani.xz"/>
</plugins>
<configurations>
+ <plugin id="org.apache.felix.scr" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.equinox.app" autoStart="true" startLevel="4" />
<plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
- <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.equinox.frameworkadmin.equinox" autoStart="true" startLevel="3" />
<plugin id="org.eclipse.equinox.registry" autoStart="true" startLevel="3" />
<plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />
diff --git a/bundles/org.eclipse.equinox.p2.installer/installer.properties b/bundles/org.eclipse.equinox.p2.installer/installer.properties
index c28de9f82..ef00a4347 100644
--- a/bundles/org.eclipse.equinox.p2.installer/installer.properties
+++ b/bundles/org.eclipse.equinox.p2.installer/installer.properties
@@ -11,8 +11,8 @@
# Contributors:
# IBM Corporation - initial API and implementation
###############################################################################
-eclipse.p2.metadata=http://download.eclipse.org/eclipse/updates/3.5
-eclipse.p2.artifacts=http://download.eclipse.org/eclipse/updates/3.5
+eclipse.p2.metadata=https://download.eclipse.org/eclipse/updates/3.5
+eclipse.p2.artifacts=https://download.eclipse.org/eclipse/updates/3.5
eclipse.p2.flavor=tooling
eclipse.p2.profileName=Eclipse SDK
eclipse.p2.launcherName=eclipse
diff --git a/bundles/org.eclipse.equinox.p2.installer/pom.xml b/bundles/org.eclipse.equinox.p2.installer/pom.xml
index 2f975d670..27ae673d5 100644
--- a/bundles/org.eclipse.equinox.p2.installer/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.installer/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.installer</artifactId>
- <version>1.2.200-SNAPSHOT</version>
+ <version>1.3.300-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.installer/src/org/eclipse/equinox/internal/p2/installer/ui/ProxiesDialog.java b/bundles/org.eclipse.equinox.p2.installer/src/org/eclipse/equinox/internal/p2/installer/ui/ProxiesDialog.java
index 153d71465..2eb3a91ca 100644
--- a/bundles/org.eclipse.equinox.p2.installer/src/org/eclipse/equinox/internal/p2/installer/ui/ProxiesDialog.java
+++ b/bundles/org.eclipse.equinox.p2.installer/src/org/eclipse/equinox/internal/p2/installer/ui/ProxiesDialog.java
@@ -107,8 +107,8 @@ public final class ProxiesDialog {
typeCombo = new Combo(composite, SWT.BORDER);
typeCombo.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false, 3, 1));
//Currently only these three proxy types are supported.
- for (int i = 0; i < types.size(); i++) {
- typeCombo.add(types.get(i));
+ for (String type : types) {
+ typeCombo.add(type);
}
typeCombo.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> {
diff --git a/bundles/org.eclipse.equinox.p2.jarprocessor/.classpath b/bundles/org.eclipse.equinox.p2.jarprocessor/.classpath
index 030607499..cc48f9f27 100644
--- a/bundles/org.eclipse.equinox.p2.jarprocessor/.classpath
+++ b/bundles/org.eclipse.equinox.p2.jarprocessor/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" output="bin_ant" path="src_ant"/>
diff --git a/bundles/org.eclipse.equinox.p2.jarprocessor/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.jarprocessor/.settings/org.eclipse.jdt.core.prefs
index 54666e7f7..e8117dca4 100644
--- a/bundles/org.eclipse.equinox.p2.jarprocessor/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.jarprocessor/.settings/org.eclipse.jdt.core.prefs
@@ -16,9 +16,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -88,6 +89,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -125,7 +127,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -139,7 +142,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -260,7 +262,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -331,7 +332,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -476,7 +476,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.jarprocessor/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.jarprocessor/META-INF/MANIFEST.MF
index 1bea296c1..283bf2bb4 100644
--- a/bundles/org.eclipse.equinox.p2.jarprocessor/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.jarprocessor/META-INF/MANIFEST.MF
@@ -4,8 +4,8 @@ Bundle-SymbolicName: org.eclipse.equinox.p2.jarprocessor;singleton:=true
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
-Bundle-Version: 1.1.500.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Version: 1.2.300.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Main-Class: org.eclipse.equinox.internal.p2.jarprocessor.Main
Export-Package: org.eclipse.equinox.internal.p2.jarprocessor;x-friends:="org.eclipse.equinox.p2.artifact.repository,org.eclipse.pde.build",
org.eclipse.equinox.internal.p2.jarprocessor.unsigner;x-internal:=true,
diff --git a/bundles/org.eclipse.equinox.p2.jarprocessor/forceQualifierUpdate.txt b/bundles/org.eclipse.equinox.p2.jarprocessor/forceQualifierUpdate.txt
index 207beb90b..1519a409d 100644
--- a/bundles/org.eclipse.equinox.p2.jarprocessor/forceQualifierUpdate.txt
+++ b/bundles/org.eclipse.equinox.p2.jarprocessor/forceQualifierUpdate.txt
@@ -1,4 +1,11 @@
# To force a version qualifier update add the bug here
Bug 403352 - Update all parent versions to match our build stream
Bug 465620 - jar processor needs 'touch'
-Bug 534597 - Unanticipated comparator errors in I20180511-2000 \ No newline at end of file
+Bug 534597 - Unanticipated comparator errors in I20180511-2000
+comparator errors on new infra
+Bug 566668 - Comparator errors in I20200904-0210
+Bug 571555 - Comparator errors in I20210226-1800
+Bug 571731 - Comparator errors in I20210305-0820
+Bug 575841 - Comparator errors in I20210906-1000
+Bug 578351 - Lambda generation order is unstable in ecj
+Bug 579126 - 4.24 I-Build: I20220307-0340 - Comparator Errors Found \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.jarprocessor/pom.xml b/bundles/org.eclipse.equinox.p2.jarprocessor/pom.xml
index 0a9df70c9..7064c875d 100644
--- a/bundles/org.eclipse.equinox.p2.jarprocessor/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.jarprocessor/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.jarprocessor</artifactId>
- <version>1.1.500-SNAPSHOT</version>
+ <version>1.2.300-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/Main.java b/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/Main.java
index cffbf0ce5..9ce534b08 100644
--- a/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/Main.java
+++ b/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/Main.java
@@ -35,6 +35,7 @@ public class Main {
System.out.println("-verbose verbose mode "); //$NON-NLS-1$
}
+ @SuppressWarnings("removal")
public static JarProcessorExecutor.Options processArguments(String[] args) {
if (args.length == 0) {
printUsage();
@@ -64,9 +65,9 @@ public class Main {
options.outputDir = args[++i];
} else if (args[i].equals("-verbose")) { //$NON-NLS-1$
options.verbose = true;
- } else if (args[i].equals("-processAll")) { //$NON-NLS-1$
+ } else if (args[i].equals("-processAll")) { //$NON-NLS-1$
options.processAll = true;
- }
+ }
}
options.input = new File(args[i]);
@@ -76,19 +77,19 @@ public class Main {
if (options.unpack) {
if (!JarProcessor.canPerformUnpack()) {
problemMessage = "The unpack200 command cannot be found."; //$NON-NLS-1$
- } else if (options.input.isFile() && !inputName.endsWith(".zip") && !inputName.endsWith(".pack.gz")) { //$NON-NLS-1$ //$NON-NLS-2$
+ } else if (options.input.isFile() && !inputName.endsWith(".zip") && !inputName.endsWith(".pack.gz")) { //$NON-NLS-1$ //$NON-NLS-2$
problemMessage = "Input file is not a pack.gz file."; //$NON-NLS-1$
- } else if (options.pack || options.repack || options.signCommand != null) {
+ } else if (options.pack || options.repack || options.signCommand != null) {
problemMessage = "Pack, repack or sign cannot be specified with unpack."; //$NON-NLS-1$
}
} else {
if (options.input.isFile() && !inputName.endsWith(".zip") && !inputName.endsWith(".jar")) { //$NON-NLS-1$ //$NON-NLS-2$
problemMessage = "Input file is not a jar file."; //$NON-NLS-1$
- } else if ((options.pack || options.repack) && !JarProcessor.canPerformPack()) {
+ } else if ((options.pack || options.repack) && !JarProcessor.canPerformPack()) {
problemMessage = "The pack200 command can not be found."; //$NON-NLS-1$
}
}
- if(problemMessage != null){
+ if (problemMessage != null) {
System.out.println(problemMessage);
System.out.println();
printUsage();
@@ -97,7 +98,7 @@ public class Main {
return options;
}
-
+
/**
* @param args
*/
diff --git a/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/PackStep.java b/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/PackStep.java
index da41e546a..1456f7f91 100644
--- a/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/PackStep.java
+++ b/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/PackStep.java
@@ -17,6 +17,13 @@ import java.io.File;
import java.io.IOException;
import java.util.*;
+/**
+ * @noreference This class is not intended to be referenced by clients.
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ * @deprecated See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a> for details.
+ */
+@Deprecated(forRemoval = true, since = "1.2.0")
public class PackStep extends CommandStep {
protected static String packCommand = null;
@@ -40,7 +47,7 @@ public class PackStep extends CommandStep {
if (location == null) {
continue;
}
- result = execute(new String[]{location, "-V"}); //$NON-NLS-1$
+ result = execute(new String[] { location, "-V" }); //$NON-NLS-1$
if (result == 0) {
packCommand = location;
canPack = Boolean.TRUE;
@@ -98,7 +105,7 @@ public class PackStep extends CommandStep {
}
protected boolean shouldPack(File input, List<Properties> containers, Properties inf) {
- //1: exclude by containers
+ // 1: exclude by containers
// innermost jar is first on the list, it can override outer jars
for (Properties container : containers) {
if (container.containsKey(Utils.MARK_EXCLUDE_CHILDREN_PACK)) {
@@ -111,8 +118,9 @@ public class PackStep extends CommandStep {
}
}
- //2: excluded by self
- if (inf != null && inf.containsKey(Utils.MARK_EXCLUDE_PACK) && Boolean.parseBoolean(inf.getProperty(Utils.MARK_EXCLUDE_PACK))) {
+ // 2: excluded by self
+ if (inf != null && inf.containsKey(Utils.MARK_EXCLUDE_PACK)
+ && Boolean.parseBoolean(inf.getProperty(Utils.MARK_EXCLUDE_PACK))) {
if (verbose)
System.out.println("Excluding " + input.getName() + " from " + getStepName()); //$NON-NLS-1$ //$NON-NLS-2$
return false;
@@ -121,7 +129,8 @@ public class PackStep extends CommandStep {
return true;
}
- protected String[] getCommand(File input, File outputFile, Properties inf, List<Properties> containers) throws IOException {
+ protected String[] getCommand(File input, File outputFile, Properties inf, List<Properties> containers)
+ throws IOException {
String[] cmd = null;
String arguments = getArguments(input, inf, containers);
if (arguments != null && arguments.length() > 0) {
@@ -132,32 +141,32 @@ public class PackStep extends CommandStep {
cmd[cmd.length - 2] = outputFile.getCanonicalPath();
cmd[cmd.length - 1] = input.getCanonicalPath();
} else {
- cmd = new String[] {packCommand, outputFile.getCanonicalPath(), input.getCanonicalPath()};
+ cmd = new String[] { packCommand, outputFile.getCanonicalPath(), input.getCanonicalPath() };
}
return cmd;
}
protected String getArguments(File input, Properties inf, List<Properties> containers) {
- //1: Explicitly marked in our .inf file
+ // 1: Explicitly marked in our .inf file
if (inf != null && inf.containsKey(Utils.PACK_ARGS)) {
return inf.getProperty(Utils.PACK_ARGS);
}
- //2: Defaults set in one of our containing jars
+ // 2: Defaults set in one of our containing jars
for (Properties container : containers) {
if (container.containsKey(Utils.DEFAULT_PACK_ARGS)) {
return container.getProperty(Utils.DEFAULT_PACK_ARGS);
}
}
- //3: Set by name in outside pack.properties file
+ // 3: Set by name in outside pack.properties file
Properties options = getOptions();
String argsKey = input.getName() + Utils.PACK_ARGS_SUFFIX;
if (options.containsKey(argsKey)) {
return options.getProperty(argsKey);
}
- //4: Set by default in outside pack.properties file
+ // 4: Set by default in outside pack.properties file
if (options.containsKey(Utils.DEFAULT_PACK_ARGS)) {
return options.getProperty(Utils.DEFAULT_PACK_ARGS);
}
@@ -175,7 +184,7 @@ public class PackStep extends CommandStep {
if (input == null || inf == null)
return false;
- //don't be verbose to check if we should mark the inf
+ // don't be verbose to check if we should mark the inf
boolean v = verbose;
verbose = false;
if (!shouldPack(input, containers, inf)) {
@@ -184,12 +193,13 @@ public class PackStep extends CommandStep {
}
verbose = v;
- //mark as conditioned if not previously marked. A signed jar is assumed to be previously conditioned.
+ // mark as conditioned if not previously marked. A signed jar is assumed to be
+ // previously conditioned.
if (inf.getProperty(Utils.MARK_PROPERTY) != null)
return false;
inf.put(Utils.MARK_PROPERTY, "true"); //$NON-NLS-1$
- //record arguments used
+ // record arguments used
String arguments = inf.getProperty(Utils.PACK_ARGS);
if (arguments == null) {
arguments = getArguments(input, inf, containers);
diff --git a/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/PackUnpackStep.java b/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/PackUnpackStep.java
index f9e9b6398..fe15d241b 100644
--- a/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/PackUnpackStep.java
+++ b/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/PackUnpackStep.java
@@ -18,9 +18,12 @@ import java.io.IOException;
import java.util.*;
/**
- * @author aniefer@ca.ibm.com
- *
+ * @noreference This class is not intended to be referenced by clients.
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ * @deprecated See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a> for details.
*/
+@Deprecated(forRemoval = true, since = "1.2.0")
public class PackUnpackStep extends PackStep {
private Set<String> exclusions = null;
diff --git a/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/UnpackStep.java b/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/UnpackStep.java
index 894bf7c00..915f5598b 100644
--- a/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/UnpackStep.java
+++ b/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/UnpackStep.java
@@ -18,6 +18,13 @@ import java.io.IOException;
import java.util.List;
import java.util.Properties;
+/**
+ * @noreference This class is not intended to be referenced by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ * @noextend This class is not intended to be subclassed by clients.
+ * @deprecated See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a> for details.
+ */
+@Deprecated(forRemoval = true, since = "1.2.0")
public class UnpackStep extends CommandStep {
public static final String UNPACKER_PROPERTY = "org.eclipse.update.jarprocessor.Unpacker"; //$NON-NLS-1$
private static Boolean canUnpack = null;
@@ -39,7 +46,7 @@ public class UnpackStep extends CommandStep {
if (location == null) {
continue;
}
- result = execute(new String[]{location, "-V"}); //$NON-NLS-1$
+ result = execute(new String[] { location, "-V" }); //$NON-NLS-1$
if (result == 0) {
unpackCommand = location;
canUnpack = Boolean.TRUE;
@@ -82,9 +89,10 @@ public class UnpackStep extends CommandStep {
String options = getOptions().getProperty(input.getName() + ".unpack.args"); //$NON-NLS-1$
String[] cmd = null;
if (options != null) {
- cmd = new String[] {unpackCommand, options, input.getCanonicalPath(), unpacked.getCanonicalPath()};
+ cmd = new String[] { unpackCommand, options, input.getCanonicalPath(),
+ unpacked.getCanonicalPath() };
} else {
- cmd = new String[] {unpackCommand, input.getCanonicalPath(), unpacked.getCanonicalPath()};
+ cmd = new String[] { unpackCommand, input.getCanonicalPath(), unpacked.getCanonicalPath() };
}
int result = execute(cmd, verbose);
if (result != 0 && verbose)
diff --git a/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/Utils.java b/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/Utils.java
index 1b75a563c..d24dbc30d 100644
--- a/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/Utils.java
+++ b/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/Utils.java
@@ -30,51 +30,108 @@ public class Utils {
/*
* Properties found in outer pack.properties file
*/
- //comma separated list of jars to exclude from sigining
+ // comma separated list of jars to exclude from sigining
public static final String SIGN_EXCLUDES = "sign.excludes"; //$NON-NLS-1$
- //comma separated list of jars to exlclude from packing
+ // comma separated list of jars to exlclude from packing
+ /**
+ * @noreference This field is not intended to be referenced by clients.
+ * @deprecated See <a href=
+ * "https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a>
+ * for details.
+ */
+ @Deprecated(forRemoval = true, since = "1.2.0")
public static final String PACK_EXCLUDES = "pack.excludes"; //$NON-NLS-1$
- //Suffix used when specifying arguments to use when running pack200 on a jar
+ // Suffix used when specifying arguments to use when running pack200 on a jar
+
+ /**
+ * @noreference This field is not intended to be referenced by clients.
+ * @deprecated See <a href=
+ * "https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a>
+ * for details.
+ */
+ @Deprecated(forRemoval = true, since = "1.2.0")
public static final String PACK_ARGS_SUFFIX = ".pack.args"; //$NON-NLS-1$
/*
* Properties found in both pack.properties and eclipse.inf
*/
- // Default arguments to use when running pack200.
- // Affects all jars when specified in pack.properties, affects children when specified in eclipse.inf
+ // Default arguments to use when running pack200.
+ // Affects all jars when specified in pack.properties, affects children when
+ // specified in eclipse.inf
+ /**
+ * @noreference This field is not intended to be referenced by clients.
+ * @deprecated See <a href=
+ * "https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a>
+ * for details.
+ */
+ @Deprecated(forRemoval = true, since = "1.2.0")
public static final String DEFAULT_PACK_ARGS = "pack200.default.args"; //$NON-NLS-1$
/*
* Properties found in eclipse.inf file
*/
- //This jar has been conditioned with pack200
+ // This jar has been conditioned with pack200
+ /**
+ * @noreference This field is not intended to be referenced by clients.
+ * @deprecated See <a href=
+ * "https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a>
+ * for details.
+ */
+ @Deprecated(forRemoval = true, since = "1.2.0")
public static final String MARK_PROPERTY = "pack200.conditioned"; //$NON-NLS-1$
- //Exclude this jar from processing
+ // Exclude this jar from processing
public static final String MARK_EXCLUDE = "jarprocessor.exclude"; //$NON-NLS-1$
- //Exclude this jar from pack200
+ // Exclude this jar from pack200
public static final String MARK_EXCLUDE_PACK = "jarprocessor.exclude.pack"; //$NON-NLS-1$
- //Exclude this jar from signing
+ // Exclude this jar from signing
public static final String MARK_EXCLUDE_SIGN = "jarprocessor.exclude.sign"; //$NON-NLS-1$
- //Exclude this jar's children from processing
+ // Exclude this jar's children from processing
public static final String MARK_EXCLUDE_CHILDREN = "jarprocessor.exclude.children"; //$NON-NLS-1$
- //Exclude this jar's children from pack200
+ // Exclude this jar's children from pack200
public static final String MARK_EXCLUDE_CHILDREN_PACK = "jarprocessor.exclude.children.pack"; //$NON-NLS-1$
- //Exclude this jar's children from signing
+ // Exclude this jar's children from signing
public static final String MARK_EXCLUDE_CHILDREN_SIGN = "jarprocessor.exclude.children.sign"; //$NON-NLS-1$
- //Arguments used in pack200 for this jar
+ // Arguments used in pack200 for this jar
+ /**
+ * @noreference This field is not intended to be referenced by clients.
+ * @deprecated See <a href=
+ * "https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a>
+ * for details.
+ */
+ @Deprecated(forRemoval = true, since = "1.2.0")
public static final String PACK_ARGS = "pack200.args"; //$NON-NLS-1$
-
+ /**
+ * @noreference This field is not intended to be referenced by clients.
+ * @deprecated See <a href=
+ * "https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a>
+ * for details.
+ */
+ @Deprecated(forRemoval = true, since = "1.2.0")
public static final String PACK200_PROPERTY = "org.eclipse.update.jarprocessor.pack200"; //$NON-NLS-1$
public static final String JRE = "@jre"; //$NON-NLS-1$
public static final String PATH = "@path"; //$NON-NLS-1$
public static final String NONE = "@none"; //$NON-NLS-1$
-
+ /**
+ * @noreference This field is not intended to be referenced by clients.
+ * @deprecated See <a href=
+ * "https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a>
+ * for details.
+ */
+ @Deprecated(forRemoval = true, since = "1.2.0")
public static final String PACKED_SUFFIX = ".pack.gz"; //$NON-NLS-1$
public static final String JAR_SUFFIX = ".jar"; //$NON-NLS-1$
public static final FileFilter JAR_FILTER = pathname -> pathname.isFile() && pathname.getName().endsWith(".jar"); //$NON-NLS-1$
-
- public static final FileFilter PACK_GZ_FILTER = pathname -> pathname.isFile() && pathname.getName().endsWith(JarProcessor.PACKED_SUFFIX);
+ /**
+ * @noreference This field is not intended to be referenced by clients.
+ * @deprecated See <a href=
+ * "https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a>
+ * for details.
+ */
+ @SuppressWarnings("removal")
+ @Deprecated(forRemoval = true, since = "1.2.0")
+ public static final FileFilter PACK_GZ_FILTER = pathname -> pathname.isFile()
+ && pathname.getName().endsWith(JarProcessor.PACKED_SUFFIX);
public static void close(Object stream) {
if (stream != null) {
@@ -86,46 +143,54 @@ public class Utils {
else if (stream instanceof JarFile)
((JarFile) stream).close();
} catch (IOException e) {
- //ignore
+ // ignore
}
}
}
/**
- * get the set of commands to try to execute pack/unpack
+ * get the set of commands to try to execute pack/unpack
+ *
* @param cmd the command, either "pack200" or "unpack200"
* @return String [] or null
+ *
+ * @noreference This method is not intended to be referenced by clients.
+ * @deprecated See <a href=
+ * "https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a>
+ * for details.
*/
+ @Deprecated(forRemoval = true, since = "1.2.0")
public static String[] getPack200Commands(String cmd) {
String[] locations = null;
String prop = System.getProperty(PACK200_PROPERTY);
String javaHome = System.getProperty("java.home"); //$NON-NLS-1$
if (null == prop) {
- locations = new String[] {javaHome + "/bin/" + cmd, cmd}; //$NON-NLS-1$
- } else switch (prop) {
+ locations = new String[] { javaHome + "/bin/" + cmd, cmd }; //$NON-NLS-1$
+ } else
+ switch (prop) {
case NONE:
return null;
case JRE:
- locations = new String[] {javaHome + "/bin/" + cmd}; //$NON-NLS-1$
+ locations = new String[] { javaHome + "/bin/" + cmd }; //$NON-NLS-1$
break;
case PATH:
- locations = new String[] {cmd};
+ locations = new String[] { cmd };
break;
default:
- locations = new String[] {prop + "/" + cmd}; //$NON-NLS-1$
+ locations = new String[] { prop + "/" + cmd }; //$NON-NLS-1$
break;
- }
+ }
return locations;
}
/**
- * Transfers all available bytes from the given input stream to the given
- * output stream. Closes both streams if close == true, regardless of failure.
- * Flushes the destination stream if close == false
+ * Transfers all available bytes from the given input stream to the given output
+ * stream. Closes both streams if close == true, regardless of failure. Flushes
+ * the destination stream if close == false
*
* @param source
* @param destination
- * @param close
+ * @param close
* @throws IOException
*/
public static void transferStreams(InputStream source, OutputStream destination, boolean close) throws IOException {
@@ -151,9 +216,9 @@ public class Utils {
/**
* Deletes all the files and directories from the given root down (inclusive).
- * Returns false if we could not delete some file or an exception occurred
- * at any point in the deletion.
- * Even if an exception occurs, a best effort is made to continue deleting.
+ * Returns false if we could not delete some file or an exception occurred at
+ * any point in the deletion. Even if an exception occurs, a best effort is made
+ * to continue deleting.
*/
public static boolean clear(java.io.File root) {
boolean result = clearChildren(root);
@@ -167,26 +232,32 @@ public class Utils {
}
/**
- * Deletes all the files and directories from the given root down, except for
- * the root itself.
- * Returns false if we could not delete some file or an exception occurred
- * at any point in the deletion.
- * Even if an exception occurs, a best effort is made to continue deleting.
+ * Deletes all the files and directories from the given root down, except for
+ * the root itself. Returns false if we could not delete some file or an
+ * exception occurred at any point in the deletion. Even if an exception occurs,
+ * a best effort is made to continue deleting.
*/
public static boolean clearChildren(java.io.File root) {
boolean result = true;
if (root.isDirectory()) {
String[] list = root.list();
- // for some unknown reason, list() can return null.
+ // for some unknown reason, list() can return null.
// Just skip the children If it does.
if (list != null)
for (String list1 : list) {
result &= clear(new java.io.File(root, list1));
- }
+ }
}
return result;
}
+ /**
+ * @noreference This method is not intended to be referenced by clients.
+ * @deprecated See <a href=
+ * "https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a>
+ * for details.
+ */
+ @Deprecated(forRemoval = true, since = "1.2.0")
public static Set<String> getPackExclusions(Properties properties) {
if (properties == null)
return Collections.emptySet();
@@ -219,13 +290,8 @@ public class Utils {
}
public static String concat(String[] array) {
- StringBuilder buffer = new StringBuilder();
- for (int i = 0; i < array.length; i++) {
- if (i > 0)
- buffer.append(' ');
- buffer.append(array[i]);
- }
- return buffer.toString();
+ String buffer = String.join(String.valueOf(' '), array);
+ return buffer;
}
public static String[] toStringArray(String input, String separator) {
@@ -239,8 +305,10 @@ public class Utils {
}
/**
- * Get the properties from the eclipse.inf file from the given jar. If the file is not a jar, null is returned.
- * If the file is a jar, but does not contain an eclipse.inf file, an empty Properties object is returned.
+ * Get the properties from the eclipse.inf file from the given jar. If the file
+ * is not a jar, null is returned. If the file is a jar, but does not contain an
+ * eclipse.inf file, an empty Properties object is returned.
+ *
* @param jarFile
* @return The eclipse.inf properties for the given jar file
*/
@@ -263,7 +331,7 @@ public class Utils {
}
return new Properties();
} catch (ZipException e) {
- //not a jar, don't bother logging this.
+ // not a jar, don't bother logging this.
return null;
} catch (IOException e) {
if (verbose) {
@@ -279,27 +347,29 @@ public class Utils {
public static boolean shouldSkipJar(File input, boolean processAll, boolean verbose) {
Properties inf = getEclipseInf(input, verbose);
if (inf == null) {
- //not a jar, could be a pack.gz
+ // not a jar, could be a pack.gz
return false;
}
String exclude = inf.getProperty(MARK_EXCLUDE);
- //was marked as exclude, we should skip
+ // was marked as exclude, we should skip
if (exclude != null && Boolean.parseBoolean(exclude))
return true;
- //process all was set, don't skip
+ // process all was set, don't skip
if (processAll)
return false;
- //otherwise, we skip if not marked marked
+ // otherwise, we skip if not marked marked
String marked = inf.getProperty(MARK_PROPERTY);
return !Boolean.parseBoolean(marked);
}
/**
- * Stores the given properties in the output stream. We store the properties
- * in sorted order so that the signing hash doesn't change if the properties didn't change.
+ * Stores the given properties in the output stream. We store the properties in
+ * sorted order so that the signing hash doesn't change if the properties didn't
+ * change.
+ *
* @param props
* @param stream
*/
@@ -307,8 +377,8 @@ public class Utils {
PrintStream printStream = new PrintStream(stream);
printStream.print("#Processed using Jarprocessor\n"); //$NON-NLS-1$
SortedMap<Object, Object> sorted = new TreeMap<>(props);
- for (Iterator<Object> iter = sorted.keySet().iterator(); iter.hasNext();) {
- String key = (String) iter.next();
+ for (Object object : sorted.keySet()) {
+ String key = (String) object;
printStream.print(key);
printStream.print(" = "); //$NON-NLS-1$
printStream.print(sorted.get(key));
diff --git a/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/ZipProcessor.java b/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/ZipProcessor.java
index a055ac66e..3242b1c9a 100644
--- a/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/ZipProcessor.java
+++ b/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/ZipProcessor.java
@@ -47,10 +47,12 @@ public class ZipProcessor {
return workingDirectory;
}
+ @SuppressWarnings("removal")
private boolean repacking() {
return options.repack || (options.pack && options.signCommand != null);
}
+ @SuppressWarnings("removal")
public void processZip(File zipFile) throws ZipException, IOException {
if (options.verbose)
System.out.println("Processing " + zipFile.getPath()); //$NON-NLS-1$
@@ -74,7 +76,9 @@ public class ZipProcessor {
try (ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(outputFile))) {
Enumeration<? extends ZipEntry> entries = zip.entries();
if (entries.hasMoreElements()) {
- for (ZipEntry entry = entries.nextElement(); entry != null; entry = entries.hasMoreElements() ? (ZipEntry) entries.nextElement() : null) {
+ for (ZipEntry entry = entries.nextElement(); entry != null; entry = entries.hasMoreElements()
+ ? (ZipEntry) entries.nextElement()
+ : null) {
String name = entry.getName();
InputStream entryStream = zip.getInputStream(entry);
@@ -98,14 +102,15 @@ public class ZipProcessor {
boolean skip = Utils.shouldSkipJar(extractedFile, options.processAll, options.verbose);
if (skip) {
- //skipping this file
+ // skipping this file
entryStream = new FileInputStream(extractedFile);
if (options.verbose)
System.out.println(entry.getName() + " is not marked, skipping."); //$NON-NLS-1$
} else {
if (options.unpack) {
File result = processor.processJar(extractedFile);
- name = name.substring(0, name.length() - extractedFile.getName().length()) + result.getName();
+ name = name.substring(0, name.length() - extractedFile.getName().length())
+ + result.getName();
extractedFile = result;
} else {
if (repack || sign) {
@@ -122,22 +127,27 @@ public class ZipProcessor {
File modifiedFile = processor.processJar(extractedFile);
if (modifiedFile.exists()) {
try {
- String newName = name.substring(0, name.length() - extractedFile.getName().length()) + modifiedFile.getName();
+ String newName = name.substring(0,
+ name.length() - extractedFile.getName().length())
+ + modifiedFile.getName();
if (options.verbose) {
- System.out.println("Adding " + newName + " to " + outputFile.getPath()); //$NON-NLS-1$ //$NON-NLS-2$
+ System.out.println(
+ "Adding " + newName + " to " + outputFile.getPath()); //$NON-NLS-1$ //$NON-NLS-2$
System.out.println();
}
ZipEntry zipEntry = new ZipEntry(newName);
entryStream = new FileInputStream(modifiedFile);
zipOut.putNextEntry(zipEntry);
- Utils.transferStreams(entryStream, zipOut, false); //we want to keep zipOut open
+ Utils.transferStreams(entryStream, zipOut, false); // we want to keep
+ // zipOut open
entryStream.close();
Utils.clear(modifiedFile);
} catch (IOException e) {
Utils.close(entryStream);
if (options.verbose) {
e.printStackTrace();
- System.out.println("Warning: Problem reading " + modifiedFile.getPath() + "."); //$NON-NLS-1$//$NON-NLS-2$
+ System.out.println(
+ "Warning: Problem reading " + modifiedFile.getPath() + "."); //$NON-NLS-1$//$NON-NLS-2$
}
}
entryStream = null;
@@ -152,7 +162,8 @@ public class ZipProcessor {
} catch (IOException e) {
if (options.verbose) {
e.printStackTrace();
- System.out.println("Warning: Problem reading " + extractedFile.getPath() + "."); //$NON-NLS-1$//$NON-NLS-2$
+ System.out.println(
+ "Warning: Problem reading " + extractedFile.getPath() + "."); //$NON-NLS-1$//$NON-NLS-2$
}
}
}
@@ -170,7 +181,8 @@ public class ZipProcessor {
zipOut.closeEntry();
} catch (ZipException e) {
if (options.verbose) {
- System.out.println("Warning: " + name + " already exists in " + outputFile.getName() + ". Skipping."); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
+ System.out.println("Warning: " + name + " already exists in " + outputFile.getName() //$NON-NLS-1$//$NON-NLS-2$
+ + ". Skipping."); //$NON-NLS-1$
}
}
entryStream.close();
@@ -205,6 +217,7 @@ public class ZipProcessor {
return result;
}
+ @SuppressWarnings("removal")
private void initialize(ZipFile zip) {
ZipEntry entry = zip.getEntry("pack.properties"); //$NON-NLS-1$
properties = new Properties();
diff --git a/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/verifier/Verifier.java b/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/verifier/Verifier.java
index 03f1c61fd..d21aea9a6 100644
--- a/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/verifier/Verifier.java
+++ b/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/equinox/internal/p2/jarprocessor/verifier/Verifier.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2017 IBM Corporation and others.
+ * Copyright (c) 2007, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -21,11 +21,14 @@ import org.eclipse.equinox.internal.p2.jarprocessor.UnpackStep;
import org.eclipse.equinox.internal.p2.jarprocessor.Utils;
import org.eclipse.internal.provisional.equinox.p2.jarprocessor.*;
+@SuppressWarnings("removal")
public class Verifier extends JarProcessorExecutor {
private static void printUsage() {
- System.out.println("This tool verifies that unpacking a pack.gz file with the jarprocessor results in a valid jar file."); //$NON-NLS-1$
- System.out.println("Usage: java -cp jarprocessor.jar org.eclipse.update.internal.jarprocessor.verifier.Verifier -dir <workingDirectory> input [input]"); //$NON-NLS-1$
+ System.out.println(
+ "This tool verifies that unpacking a pack.gz file with the jarprocessor results in a valid jar file."); //$NON-NLS-1$
+ System.out.println(
+ "Usage: java -cp jarprocessor.jar org.eclipse.update.internal.jarprocessor.verifier.Verifier -dir <workingDirectory> input [input]"); //$NON-NLS-1$
System.out.println(""); //$NON-NLS-1$
System.out.println("-dir : specifies a working directory where pack.gz files can be temporarily unpacked"); //$NON-NLS-1$
System.out.println("input : a list of directories and/or pack.gz files to verify."); //$NON-NLS-1$
@@ -44,7 +47,7 @@ public class Verifier extends JarProcessorExecutor {
if (args.length == 0) {
workingDirectory = "."; //$NON-NLS-1$
- input = new String[] {"."}; //$NON-NLS-1$
+ input = new String[] { "." }; //$NON-NLS-1$
} else {
int idx = 0;
if (args[0] == "-help") { //$NON-NLS-1$
@@ -85,8 +88,10 @@ public class Verifier extends JarProcessorExecutor {
Properties properties = new Properties();
- /* There is no need to use a full processor to do the verification unless we want to verify nested jars as well.
- * So for now, use a custom processor to just call the verify step directly.
+ /*
+ * There is no need to use a full processor to do the verification unless we
+ * want to verify nested jars as well. So for now, use a custom processor to
+ * just call the verify step directly.
*/
final VerifyStep verifyStep = new VerifyStep(properties, false);
JarProcessor verifier = new JarProcessor() {
@@ -95,7 +100,7 @@ public class Verifier extends JarProcessorExecutor {
Iterator<IProcessStep> iterator = getStepIterator();
if (iterator.hasNext() && iterator.next() instanceof VerifyStep)
return verifyStep.postProcess(inputFile, workingDirectory, null);
- //else we are unpacking, call super
+ // else we are unpacking, call super
return super.processJar(inputFile);
}
};
@@ -115,11 +120,14 @@ public class Verifier extends JarProcessorExecutor {
}
@Override
- public void addPackStep(JarProcessor processor, Properties properties, JarProcessorExecutor.Options processOptions) {
+ @Deprecated(forRemoval = true, since = "1.2.0")
+ public void addPackStep(JarProcessor processor, Properties properties,
+ JarProcessorExecutor.Options processOptions) {
processor.addProcessStep(new VerifyStep(properties, processOptions.verbose));
}
@Override
+ @Deprecated(forRemoval = true, since = "1.2.0")
public void addPackUnpackStep(JarProcessor processor, Properties properties, Options processOptions) {
processor.addProcessStep(new UnpackStep(properties, processOptions.verbose));
}
diff --git a/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/internal/provisional/equinox/p2/jarprocessor/JarProcessor.java b/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/internal/provisional/equinox/p2/jarprocessor/JarProcessor.java
index 19c0868c3..5605876ca 100644
--- a/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/internal/provisional/equinox/p2/jarprocessor/JarProcessor.java
+++ b/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/internal/provisional/equinox/p2/jarprocessor/JarProcessor.java
@@ -19,6 +19,11 @@ import java.util.jar.*;
import org.eclipse.equinox.internal.p2.jarprocessor.*;
public class JarProcessor {
+ /**
+ * @noreference This field is not intended to be referenced by clients.
+ * @deprecated See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a> for details.
+ */
+ @Deprecated(forRemoval = true, since = "1.2.0")
public static final String PACKED_SUFFIX = "pack.gz"; //$NON-NLS-1$
private List<IProcessStep> steps = new ArrayList<>();
@@ -28,6 +33,11 @@ public class JarProcessor {
private boolean processAll = false;
private LinkedList<Properties> containingInfs = new LinkedList<>();
+ /**
+ * @noreference This method is not intended to be referenced by clients.
+ * @deprecated See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a> for details.
+ */
+ @Deprecated(forRemoval = true, since = "1.2.0")
static public JarProcessor getUnpackProcessor(Properties properties) {
if (!canPerformUnpack())
throw new UnsupportedOperationException();
@@ -36,6 +46,11 @@ public class JarProcessor {
return processor;
}
+ /**
+ * @noreference This method is not intended to be referenced by clients.
+ * @deprecated See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a> for details.
+ */
+ @Deprecated(forRemoval = true, since = "1.2.0")
static public JarProcessor getPackProcessor(Properties properties) {
if (!canPerformPack())
throw new UnsupportedOperationException();
@@ -44,10 +59,20 @@ public class JarProcessor {
return processor;
}
+ /**
+ * @noreference This method is not intended to be referenced by clients.
+ * @deprecated See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a> for details.
+ */
+ @Deprecated(forRemoval = true, since = "1.2.0")
static public boolean canPerformPack() {
return PackStep.canPack();
}
+ /**
+ * @noreference This method is not intended to be referenced by clients.
+ * @deprecated See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a> for details.
+ */
+ @Deprecated(forRemoval = true, since = "1.2.0")
static public boolean canPerformUnpack() {
return UnpackStep.canUnpack();
}
@@ -82,21 +107,24 @@ public class JarProcessor {
}
/**
- * Recreate a jar file. The replacements map specifies entry names to be replaced, the replacements are
- * expected to be found in directory.
+ * Recreate a jar file. The replacements map specifies entry names to be
+ * replaced, the replacements are expected to be found in directory.
*
- * @param jar - The input jar
- * @param outputJar - the output
+ * @param jar - The input jar
+ * @param outputJar - the output
* @param replacements - map of entryName -> new entryName
- * @param directory - location to find file for new entryName
+ * @param directory - location to find file for new entryName
* @throws IOException
*/
- private void recreateJar(JarFile jar, JarOutputStream outputJar, Map<String, String> replacements, File directory, Properties inf) throws IOException {
+ private void recreateJar(JarFile jar, JarOutputStream outputJar, Map<String, String> replacements, File directory,
+ Properties inf) throws IOException {
InputStream in = null;
boolean marked = false;
try {
Enumeration<JarEntry> entries = jar.entries();
- for (JarEntry entry = entries.nextElement(); entry != null; entry = entries.hasMoreElements() ? (JarEntry) entries.nextElement() : null) {
+ for (JarEntry entry = entries.nextElement(); entry != null; entry = entries.hasMoreElements()
+ ? (JarEntry) entries.nextElement()
+ : null) {
File replacement = null;
JarEntry newEntry = null;
if (replacements.containsKey(entry.getName())) {
@@ -110,11 +138,13 @@ public class JarProcessor {
} catch (Exception e) {
if (verbose) {
e.printStackTrace();
- System.out.println("Warning: Problem reading " + replacement.getPath() + ", using " + jar.getName() + File.separator + entry.getName() + " instead."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ System.out.println("Warning: Problem reading " + replacement.getPath() + ", using " //$NON-NLS-1$ //$NON-NLS-2$
+ + jar.getName() + File.separator + entry.getName() + " instead."); //$NON-NLS-1$
}
}
} else if (verbose) {
- System.out.println("Warning: " + replacement.getPath() + " not found, using " + jar.getName() + File.separator + entry.getName() + " instead."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ System.out.println("Warning: " + replacement.getPath() + " not found, using " //$NON-NLS-1$ //$NON-NLS-2$
+ + jar.getName() + File.separator + entry.getName() + " instead."); //$NON-NLS-1$
}
}
}
@@ -133,7 +163,8 @@ public class JarProcessor {
newEntry.setTime(entry.getTime());
outputJar.putNextEntry(newEntry);
if (entry.getName().equals(Utils.MARK_FILE_NAME)) {
- //The eclipse.inf file was read in earlier, don't need to reread it, just write it out now
+ // The eclipse.inf file was read in earlier, don't need to reread it, just write
+ // it out now
Utils.storeProperties(inf, outputJar);
marked = true;
} else {
@@ -142,7 +173,7 @@ public class JarProcessor {
outputJar.closeEntry();
in.close();
- //delete the nested jar file
+ // delete the nested jar file
if (replacement != null) {
replacement.delete();
}
@@ -170,9 +201,10 @@ public class JarProcessor {
return result;
}
- private void extractEntries(JarFile jar, File tempDir, Map<String, String> data, Properties inf) throws IOException {
+ private void extractEntries(JarFile jar, File tempDir, Map<String, String> data, Properties inf)
+ throws IOException {
if (inf != null) {
- //skip if excluding children
+ // skip if excluding children
if (inf.containsKey(Utils.MARK_EXCLUDE_CHILDREN)) {
String excludeChildren = inf.getProperty(Utils.MARK_EXCLUDE_CHILDREN);
if (Boolean.parseBoolean(excludeChildren))
@@ -187,7 +219,9 @@ public class JarProcessor {
Enumeration<JarEntry> entries = jar.entries();
if (entries.hasMoreElements()) {
- for (JarEntry entry = entries.nextElement(); entry != null; entry = entries.hasMoreElements() ? (JarEntry) entries.nextElement() : null) {
+ for (JarEntry entry = entries.nextElement(); entry != null; entry = entries.hasMoreElements()
+ ? (JarEntry) entries.nextElement()
+ : null) {
String name = entry.getName();
String newName = recursionEffect(name);
if (newName != null) {
@@ -196,7 +230,7 @@ public class JarProcessor {
System.out.print(" "); //$NON-NLS-1$
System.out.println("Processing nested file: " + name); //$NON-NLS-1$
}
- //extract entry to temp directory
+ // extract entry to temp directory
File extracted = ZipProcessor.createSubPathFile(tempDir, name);
File parentDir = extracted.getParentFile();
if (!parentDir.exists())
@@ -207,14 +241,14 @@ public class JarProcessor {
try {
in = jar.getInputStream(entry);
out = new BufferedOutputStream(new FileOutputStream(extracted));
- Utils.transferStreams(in, out, true); //this will close both streams
+ Utils.transferStreams(in, out, true); // this will close both streams
} finally {
Utils.close(in);
Utils.close(out);
}
extracted.setLastModified(entry.getTime());
- //recurse
+ // recurse
String dir = getWorkingDirectory();
try {
containingInfs.addFirst(inf);
@@ -227,7 +261,7 @@ public class JarProcessor {
containingInfs.removeFirst();
}
- //delete the extracted item leaving the recursion result
+ // delete the extracted item leaving the recursion result
if (!name.equals(newName))
extracted.delete();
}
@@ -277,7 +311,7 @@ public class JarProcessor {
if (skip)
System.out.println("Skipping " + input.getPath()); //$NON-NLS-1$
else {
- System.out.print("Running "); //$NON-NLS-1$
+ System.out.print("Running "); //$NON-NLS-1$
for (IProcessStep step : steps) {
System.out.print(step.getStepName() + " "); //$NON-NLS-1$
}
@@ -286,14 +320,15 @@ public class JarProcessor {
}
if (skip) {
- //This jar was not marked as conditioned, and we are only processing conditioned jars, so do nothing
+ // This jar was not marked as conditioned, and we are only processing
+ // conditioned jars, so do nothing
return input;
}
- //pre
+ // pre
File workingFile = preProcess(input, workingDir);
- //Extract entries from jar and recurse on them
+ // Extract entries from jar and recurse on them
if (depth == 0) {
tempDir = new File(workingDir, "temp." + workingFile.getName()); //$NON-NLS-1$
} else {
@@ -312,8 +347,9 @@ public class JarProcessor {
if (inf != null)
infAdjusted = adjustInf(workingFile, inf);
- //Recreate the jar with replacements.
- //This is not strictly necessary if we didn't change the inf file and didn't change any content
+ // Recreate the jar with replacements.
+ // This is not strictly necessary if we didn't change the inf file and didn't
+ // change any content
if (!replacements.isEmpty() || infAdjusted) {
File tempJar = null;
tempJar = new File(tempDir, workingFile.getName());
@@ -338,10 +374,10 @@ public class JarProcessor {
Utils.close(jar);
}
- //post
+ // post
File result = postProcess(workingFile, workingDir);
- //have to normalize after the post steps
+ // have to normalize after the post steps
normalize(result, workingDir);
// If the original input is where we ended up, just return it
@@ -369,7 +405,7 @@ public class JarProcessor {
private void normalize(File input, File directory) {
if (input.getName().endsWith(JarProcessor.PACKED_SUFFIX)) {
- //not a jar
+ // not a jar
return;
}
try {
@@ -381,7 +417,9 @@ public class JarProcessor {
jar = new JarFile(input, false);
jarOut = new JarOutputStream(new BufferedOutputStream(new FileOutputStream(tempJar)));
Enumeration<JarEntry> entries = jar.entries();
- for (JarEntry entry = entries.nextElement(); entry != null; entry = entries.hasMoreElements() ? (JarEntry) entries.nextElement() : null) {
+ for (JarEntry entry = entries.nextElement(); entry != null; entry = entries.hasMoreElements()
+ ? (JarEntry) entries.nextElement()
+ : null) {
JarEntry newEntry = new JarEntry(entry.getName());
newEntry.setTime(entry.getTime());
jarIn = new BufferedInputStream(jar.getInputStream(entry));
@@ -391,7 +429,7 @@ public class JarProcessor {
jarIn.close();
}
} catch (JarException e) {
- //not a jar
+ // not a jar
return;
} finally {
Utils.close(jarOut);
diff --git a/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/internal/provisional/equinox/p2/jarprocessor/JarProcessorExecutor.java b/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/internal/provisional/equinox/p2/jarprocessor/JarProcessorExecutor.java
index 499961491..d1d3f2a0e 100644
--- a/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/internal/provisional/equinox/p2/jarprocessor/JarProcessorExecutor.java
+++ b/bundles/org.eclipse.equinox.p2.jarprocessor/src/org/eclipse/internal/provisional/equinox/p2/jarprocessor/JarProcessorExecutor.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
+ * Copyright (c) 2007, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -24,8 +24,11 @@ public class JarProcessorExecutor {
public static class Options {
public String outputDir = "."; //$NON-NLS-1$
public String signCommand = null;
+ @Deprecated(forRemoval = true, since = "1.2.0")
public boolean pack = false;
+ @Deprecated(forRemoval = true, since = "1.2.0")
public boolean repack = false;
+ @Deprecated(forRemoval = true, since = "1.2.0")
public boolean unpack = false;
public boolean verbose = false;
public boolean processAll = false;
@@ -36,6 +39,7 @@ public class JarProcessorExecutor {
private Set<String> packExclusions = null;
private Set<String> signExclusions = null;
+ @SuppressWarnings("removal")
public void runJarProcessor(Options processOptions) {
this.options = processOptions;
if (options.input.isFile() && options.input.getName().endsWith(".zip")) { //$NON-NLS-1$
@@ -59,7 +63,7 @@ public class JarProcessorExecutor {
processor.setProcessAll(options.processAll);
processor.setVerbose(options.verbose);
- //load options file
+ // load options file
Properties properties = new Properties();
if (options.input.isDirectory()) {
File packProperties = new File(options.input, "pack.properties"); //$NON-NLS-1$
@@ -90,6 +94,7 @@ public class JarProcessorExecutor {
}
}
+ @SuppressWarnings("removal")
protected FileFilter createFileFilter(Options processOptions) {
return processOptions.unpack ? Utils.PACK_GZ_FILTER : Utils.JAR_FILTER;
}
@@ -142,7 +147,8 @@ public class JarProcessorExecutor {
return packExclusions == null ? true : !packExclusions.contains(name);
}
- protected void process(File input, FileFilter filter, boolean verbose, JarProcessor processor, Properties packProperties) throws FileNotFoundException {
+ protected void process(File input, FileFilter filter, boolean verbose, JarProcessor processor,
+ Properties packProperties) throws FileNotFoundException {
if (!input.exists())
throw new FileNotFoundException();
@@ -150,7 +156,7 @@ public class JarProcessorExecutor {
if (input.isDirectory()) {
files = input.listFiles();
} else if (filter.accept(input)) {
- files = new File[] {input};
+ files = new File[] { input };
} else
return;
for (int i = 0; i < files.length; i++) {
@@ -190,7 +196,8 @@ public class JarProcessorExecutor {
}
}
- protected void processDirectory(File input, FileFilter filter, boolean verbose, JarProcessor processor, Properties packProperties) throws FileNotFoundException {
+ protected void processDirectory(File input, FileFilter filter, boolean verbose, JarProcessor processor,
+ Properties packProperties) throws FileNotFoundException {
if (!input.isDirectory())
return;
String dir = processor.getWorkingDirectory();
@@ -199,19 +206,26 @@ public class JarProcessorExecutor {
processor.setWorkingDirectory(dir);
}
- public void addPackUnpackStep(JarProcessor processor, Properties properties, JarProcessorExecutor.Options processOptions) {
+ @Deprecated(forRemoval = true, since = "1.2.0")
+ public void addPackUnpackStep(JarProcessor processor, Properties properties,
+ JarProcessorExecutor.Options processOptions) {
processor.addProcessStep(new PackUnpackStep(properties, processOptions.verbose));
}
- public void addSignStep(JarProcessor processor, Properties properties, JarProcessorExecutor.Options processOptions) {
+ public void addSignStep(JarProcessor processor, Properties properties,
+ JarProcessorExecutor.Options processOptions) {
processor.addProcessStep(new SignCommandStep(properties, processOptions.signCommand, processOptions.verbose));
}
- public void addPackStep(JarProcessor processor, Properties properties, JarProcessorExecutor.Options processOptions) {
+ @Deprecated(forRemoval = true, since = "1.2.0")
+ public void addPackStep(JarProcessor processor, Properties properties,
+ JarProcessorExecutor.Options processOptions) {
processor.addProcessStep(new PackStep(properties, processOptions.verbose));
}
- public void addUnpackStep(JarProcessor processor, Properties properties, JarProcessorExecutor.Options processOptions) {
+ @Deprecated(forRemoval = true, since = "1.2.0")
+ public void addUnpackStep(JarProcessor processor, Properties properties,
+ JarProcessorExecutor.Options processOptions) {
processor.addProcessStep(new UnpackStep(properties, processOptions.verbose));
}
}
diff --git a/bundles/org.eclipse.equinox.p2.jarprocessor/src_ant/org/eclipse/equinox/internal/p2/jarprocessor/ant/JarProcessorTask.java b/bundles/org.eclipse.equinox.p2.jarprocessor/src_ant/org/eclipse/equinox/internal/p2/jarprocessor/ant/JarProcessorTask.java
index e70ffb4fe..475b33fed 100644
--- a/bundles/org.eclipse.equinox.p2.jarprocessor/src_ant/org/eclipse/equinox/internal/p2/jarprocessor/ant/JarProcessorTask.java
+++ b/bundles/org.eclipse.equinox.p2.jarprocessor/src_ant/org/eclipse/equinox/internal/p2/jarprocessor/ant/JarProcessorTask.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2017 IBM Corporation and others.
+ * Copyright (c) 2007, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -21,9 +21,8 @@ import org.apache.tools.ant.types.FileSet;
import org.eclipse.internal.provisional.equinox.p2.jarprocessor.JarProcessorExecutor.Options;
/**
- * This task provides massaging facilities for jar files.
- * It supports: signing, unsigning, normalization, packing
- * -
+ * This task provides massaging facilities for jar files. It supports: signing,
+ * unsigning, normalization, packing -
*/
public class JarProcessorTask extends Task {
private final Options options = new Options();
@@ -66,11 +65,15 @@ public class JarProcessorTask extends Task {
signArgs.setProperty(KEYPASS, keypass);
}
+ @Deprecated(forRemoval = true, since = "1.2.0")
public void setPack(boolean pack) {
+ log("Support for pack200 is scheduled for removal after June 2023.", Project.MSG_WARN); //$NON-NLS-1$
options.pack = pack;
}
+ @Deprecated(forRemoval = true, since = "1.2.0")
public void setNormalize(boolean normalize) {
+ log("Support for pack200 is scheduled for removal after June 2023.", Project.MSG_WARN); //$NON-NLS-1$
options.repack = normalize;
}
@@ -88,12 +91,13 @@ public class JarProcessorTask extends Task {
}
}
+ @SuppressWarnings("removal")
private void adjustAndValidateConfiguration() {
- //Sign and pack implies a normalization
+ // Sign and pack implies a normalization
if (options.signCommand != null && options.pack)
options.repack = true;
- //Check that alias, and storepass are set
+ // Check that alias, and storepass are set
if (options.signCommand != null && signArgs.getProperty(UNSIGN) == null) {
if (signArgs.getProperty(ALIAS) == null)
throw new BuildException("Alias must be set"); //$NON-NLS-1$
diff --git a/bundles/org.eclipse.equinox.p2.metadata.repository/.classpath b/bundles/org.eclipse.equinox.p2.metadata.repository/.classpath
index 030607499..cc48f9f27 100644
--- a/bundles/org.eclipse.equinox.p2.metadata.repository/.classpath
+++ b/bundles/org.eclipse.equinox.p2.metadata.repository/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" output="bin_ant" path="src_ant"/>
diff --git a/bundles/org.eclipse.equinox.p2.metadata.repository/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.metadata.repository/.settings/org.eclipse.jdt.core.prefs
index f7e77d791..c9e5b47b7 100644
--- a/bundles/org.eclipse.equinox.p2.metadata.repository/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.metadata.repository/.settings/org.eclipse.jdt.core.prefs
@@ -16,9 +16,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -34,6 +34,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -87,6 +88,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -122,7 +124,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -136,7 +139,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -257,7 +259,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -328,7 +329,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -473,7 +473,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.metadata.repository/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.metadata.repository/META-INF/MANIFEST.MF
index 33b1c8c3a..a1e7379eb 100644
--- a/bundles/org.eclipse.equinox.p2.metadata.repository/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.metadata.repository/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.metadata.repository;singleton:=true
-Bundle-Version: 1.3.300.qualifier
+Bundle-Version: 1.4.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package: org.eclipse.equinox.internal.p2.metadata.repository;
@@ -44,5 +44,5 @@ Import-Package: javax.xml.parsers,
org.xml.sax
Service-Component: OSGI-INF/repositoryManager.xml
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.equinox.p2.metadata.repository
diff --git a/bundles/org.eclipse.equinox.p2.metadata.repository/pom.xml b/bundles/org.eclipse.equinox.p2.metadata.repository/pom.xml
index 836542efb..4058eb8f1 100644
--- a/bundles/org.eclipse.equinox.p2.metadata.repository/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.metadata.repository/pom.xml
@@ -14,11 +14,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.metadata.repository</artifactId>
- <version>1.3.300-SNAPSHOT</version>
+ <version>1.4.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/LocalMetadataRepository.java b/bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/LocalMetadataRepository.java
index 06707e85a..e679ea682 100644
--- a/bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/LocalMetadataRepository.java
+++ b/bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/LocalMetadataRepository.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2018 IBM Corporation and others.
+ * Copyright (c) 2007, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,6 +11,7 @@
* Contributors:
* IBM Corporation - initial API and implementation
* Prashant Deva - Bug 194674 [prov] Provide write access to metadata repository
+ * Christoph Läubrich - Bug 481443 - CLassCastException While Downloading Repository that loads fine in RCP target
*******************************************************************************/
package org.eclipse.equinox.internal.p2.metadata.repository;
@@ -296,11 +297,14 @@ public class LocalMetadataRepository extends AbstractMetadataRepository implemen
return oldValue;
save();
}
- //force repository manager to reload this repository because it caches properties
- MetadataRepositoryManager manager = (MetadataRepositoryManager) getProvisioningAgent()
+ IMetadataRepositoryManager manager = getProvisioningAgent()
.getService(IMetadataRepositoryManager.class);
- if (manager.removeRepository(getLocation()))
- manager.addRepository(this);
+ if (manager instanceof MetadataRepositoryManager) {
+ // force repository manager to reload this repository because it caches
+ // properties
+ if (manager.removeRepository(getLocation()))
+ ((MetadataRepositoryManager) manager).addRepository(this);
+ }
return oldValue;
} finally {
if (monitor != null)
diff --git a/bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/io/MetadataWriter.java b/bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/io/MetadataWriter.java
index 95036613e..c60e29bf2 100644
--- a/bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/io/MetadataWriter.java
+++ b/bundles/org.eclipse.equinox.p2.metadata.repository/src/org/eclipse/equinox/internal/p2/metadata/repository/io/MetadataWriter.java
@@ -233,8 +233,8 @@ public class MetadataWriter extends XMLWriter implements XMLConstants {
protected void writeRequirementsChange(List<IRequirementChange> changes) {
start(REQUIREMENT_CHANGES);
- for (int i = 0; i < changes.size(); i++) {
- writeRequirementChange(changes.get(i));
+ for (IRequirementChange change : changes) {
+ writeRequirementChange(change);
}
end(REQUIREMENT_CHANGES);
}
diff --git a/bundles/org.eclipse.equinox.p2.metadata/.classpath b/bundles/org.eclipse.equinox.p2.metadata/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/.classpath
+++ b/bundles/org.eclipse.equinox.p2.metadata/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.metadata/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.metadata/.settings/org.eclipse.jdt.core.prefs
index 90e10df7d..b9b3eb020 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.metadata/.settings/org.eclipse.jdt.core.prefs
@@ -18,9 +18,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -37,6 +37,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -94,6 +95,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -130,7 +132,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -144,7 +147,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -265,7 +267,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -336,7 +337,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -481,7 +481,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.metadata/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.metadata/META-INF/MANIFEST.MF
index d21d2e68f..115163dbf 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.metadata/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.metadata;singleton:=true
-Bundle-Version: 2.4.600.qualifier
+Bundle-Version: 2.6.100.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package: org.eclipse.equinox.internal.p2.metadata;
@@ -85,5 +85,5 @@ Import-Package: org.eclipse.osgi.service.localization;version="1.0.0",
org.eclipse.osgi.util,
org.osgi.framework;version="1.6.0"
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.equinox.p2.metadata
diff --git a/bundles/org.eclipse.equinox.p2.metadata/pom.xml b/bundles/org.eclipse.equinox.p2.metadata/pom.xml
index c2421ff42..bf0807827 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.metadata/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.metadata</artifactId>
- <version>2.4.600-SNAPSHOT</version>
+ <version>2.6.100-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/InstallableUnit.java b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/InstallableUnit.java
index e1fdaa4b3..7d49b306d 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/InstallableUnit.java
+++ b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/InstallableUnit.java
@@ -41,7 +41,7 @@ import org.eclipse.equinox.p2.metadata.expression.IMemberProvider;
public class InstallableUnit implements IInstallableUnit, IMemberProvider {
@SuppressWarnings("serial")
- private static final Map<IFilterExpression, IMatchExpression<IInstallableUnit>> filterCache = new LinkedHashMap<IFilterExpression, IMatchExpression<IInstallableUnit>>() {
+ private static final Map<IFilterExpression, IMatchExpression<IInstallableUnit>> filterCache = new LinkedHashMap<>() {
@Override
public boolean removeEldestEntry(Map.Entry<IFilterExpression, IMatchExpression<IInstallableUnit>> expr) {
return size() > 64;
@@ -73,7 +73,8 @@ public class InstallableUnit implements IInstallableUnit, IMemberProvider {
static {
IExpressionFactory factory = ExpressionUtil.getFactory();
- filterWrap = factory.matches(factory.member(factory.thisVariable(), MEMBER_PROPERTIES), factory.indexedParameter(0));
+ filterWrap = factory.matches(factory.member(factory.thisVariable(), MEMBER_PROPERTIES),
+ factory.indexedParameter(0));
}
private IArtifactKey[] artifacts = NO_ARTIFACTS;
@@ -108,7 +109,7 @@ public class InstallableUnit implements IInstallableUnit, IMemberProvider {
public void addTouchpointData(ITouchpointData newData) {
int tl = touchpointData.length;
if (tl == 0)
- touchpointData = new ITouchpointData[] {newData};
+ touchpointData = new ITouchpointData[] { newData };
else {
ITouchpointData[] newDatas = new ITouchpointData[tl + 1];
System.arraycopy(touchpointData, 0, newDatas, 0, tl);
@@ -168,8 +169,8 @@ public class InstallableUnit implements IInstallableUnit, IMemberProvider {
}
/**
- * Get an <i>unmodifiable copy</i> of the properties
- * associated with the installable unit.
+ * Get an <i>unmodifiable copy</i> of the properties associated with the
+ * installable unit.
*
* @return an <i>unmodifiable copy</i> of the IU properties.
*/
@@ -310,7 +311,7 @@ public class InstallableUnit implements IInstallableUnit, IMemberProvider {
if (capabilities.length == 0) {
this.requires = NO_REQUIRES;
} else {
- //copy array for safety
+ // copy array for safety
this.requires = capabilities.clone();
}
}
@@ -388,7 +389,7 @@ public class InstallableUnit implements IInstallableUnit, IMemberProvider {
if (metaReqs.length == 0) {
this.metaRequires = NO_REQUIRES;
} else {
- //copy array for safety
+ // copy array for safety
this.metaRequires = metaReqs.clone();
}
}
diff --git a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/RequiredPropertiesMatch.java b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/RequiredPropertiesMatch.java
index f36e5c9bd..0018ec7ab 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/RequiredPropertiesMatch.java
+++ b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/RequiredPropertiesMatch.java
@@ -28,23 +28,27 @@ import org.eclipse.equinox.p2.metadata.expression.IFilterExpression;
import org.eclipse.equinox.p2.metadata.expression.IMatchExpression;
/**
- * A required capability match represents some external constraint on an {@link IInstallableUnit}.
+ * A required capability match represents some external constraint on an
+ * {@link IInstallableUnit}.
* <p>
- * This is a flavor of the general {@link IRequirement} that searches for
- * a capability that has {@link IProvidedCapability#getProperties() properties} that match a given expression.
- * I.e. this is much more limited that an arbitrary match expression executed over all metadata of the IU.
+ * This is a flavor of the general {@link IRequirement} that searches for a
+ * capability that has {@link IProvidedCapability#getProperties() properties}
+ * that match a given expression. I.e. this is much more limited that an
+ * arbitrary match expression executed over all metadata of the IU.
*/
public class RequiredPropertiesMatch extends Requirement {
/**
- * Argument $0 must evaluate to a String
- * Argument $2 must evaluate to an expression compatible with the match operator "~="
+ * Argument $0 must evaluate to a String Argument $2 must evaluate to an
+ * expression compatible with the match operator "~="
*/
- private static final IExpression PROPERTIES_MATCH = ExpressionUtil.parse(
- String.format("%s.exists(cap | cap.%s == $0 && cap.%s ~= $1)", //$NON-NLS-1$
+ private static final IExpression PROPERTIES_MATCH = ExpressionUtil
+ .parse(String.format("%s.exists(cap | cap.%s == $0 && cap.%s ~= $1)", //$NON-NLS-1$
MEMBER_PROVIDED_CAPABILITIES, MEMBER_NAMESPACE, MEMBER_PROPERTIES));
- public RequiredPropertiesMatch(String namespace, IFilterExpression attrFilter, IMatchExpression<IInstallableUnit> envFilter, int min, int max, boolean greedy, String description) {
- super(createMatchExpressionFromFilter(namespace, attrFilter), envFilter, min, max, greedy, description);
+ public RequiredPropertiesMatch(String namespace, IFilterExpression attrFilter,
+ IMatchExpression<IInstallableUnit> envFilter, int min, int max, boolean greedy, String description) {
+ super(createMatchExpressionFromFilter(namespace, attrFilter, description), envFilter, min, max, greedy,
+ description);
}
@Override
@@ -58,9 +62,11 @@ public class RequiredPropertiesMatch extends Requirement {
return result.toString();
}
- public static IMatchExpression<IInstallableUnit> createMatchExpressionFromFilter(String namespace, IFilterExpression attrFilter) {
+ public static IMatchExpression<IInstallableUnit> createMatchExpressionFromFilter(String namespace,
+ IFilterExpression attrFilter, String description) {
Assert.isNotNull(namespace);
- Assert.isNotNull(attrFilter);
+ Assert.isNotNull(attrFilter,
+ "Filter is missing for required capability " + namespace + " in bundle " + description); //$NON-NLS-1$ //$NON-NLS-2$
IExpressionFactory factory = ExpressionUtil.getFactory();
return factory.matchExpression(PROPERTIES_MATCH, namespace, attrFilter);
}
diff --git a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/TouchpointInstruction.java b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/TouchpointInstruction.java
index f3922da2d..7b379f889 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/TouchpointInstruction.java
+++ b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/TouchpointInstruction.java
@@ -91,18 +91,18 @@ public class TouchpointInstruction implements ITouchpointInstruction {
*/
private static void appendEncoded(StringBuffer buf, String value) {
char[] chars = value.toCharArray();
- for (int i = 0; i < chars.length; i++) {
- switch (chars[i]) {
+ for (char c : chars) {
+ switch (c) {
case '$' :
case ',' :
case ':' :
case ';' :
case '{' :
case '}' :
- buf.append("${#").append(Integer.toString(chars[i])).append('}'); //$NON-NLS-1$
+ buf.append("${#").append(Integer.toString(c)).append('}'); //$NON-NLS-1$
break;
default :
- buf.append(chars[i]);
+ buf.append(c);
}
}
}
diff --git a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/TranslationSupport.java b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/TranslationSupport.java
index 32b2ee46d..dd665564b 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/TranslationSupport.java
+++ b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/TranslationSupport.java
@@ -297,8 +297,8 @@ public class TranslationSupport {
String translation = null;
for (Iterator<IInstallableUnit> iter = collected.iterator(); iter.hasNext() && translation == null;) {
IInstallableUnit localizationIU = iter.next();
- for (Iterator<String> jter = locales.iterator(); jter.hasNext();) {
- String localeKey = makeLocalizedKey(actualKey, jter.next());
+ for (String unitlocale : locales) {
+ String localeKey = makeLocalizedKey(actualKey, unitlocale);
translation = localizationIU.getProperty(localeKey);
if (translation != null)
return cacheResult(iu, localizedKey, translation);
diff --git a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/VersionFormatParser.java b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/VersionFormatParser.java
index 1c1079e1c..dd6ff6191 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/VersionFormatParser.java
+++ b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/VersionFormatParser.java
@@ -446,8 +446,8 @@ class VersionFormatParser {
boolean isMatch(String version, int pos) {
char c = version.charAt(pos);
if (delimChars != null) {
- for (int idx = 0; idx < delimChars.length; ++idx)
- if (c == delimChars[idx])
+ for (char delimChar : delimChars)
+ if (c == delimChar)
return !inverted;
return inverted;
} else if (VersionParser.isLetterOrDigit(c))
@@ -672,8 +672,8 @@ class VersionFormatParser {
super.setDefaults(segments);
} else {
// Assign defaults for all fragments
- for (int idx = 0; idx < fragments.length; ++idx)
- fragments[idx].setDefaults(segments);
+ for (Fragment fragment : fragments)
+ fragment.setDefaults(segments);
}
}
@@ -681,19 +681,19 @@ class VersionFormatParser {
void toString(StringBuffer sb) {
if (array) {
sb.append('<');
- for (int idx = 0; idx < fragments.length; ++idx)
- fragments[idx].toString(sb);
+ for (Fragment fragment : fragments)
+ fragment.toString(sb);
sb.append('>');
} else {
if (getQualifier() == VersionFormatParser.ZERO_OR_ONE_QUALIFIER) {
sb.append('[');
- for (int idx = 0; idx < fragments.length; ++idx)
- fragments[idx].toString(sb);
+ for (Fragment fragment : fragments)
+ fragment.toString(sb);
sb.append(']');
} else {
sb.append('(');
- for (int idx = 0; idx < fragments.length; ++idx)
- fragments[idx].toString(sb);
+ for (Fragment fragment : fragments)
+ fragment.toString(sb);
sb.append(')');
}
}
diff --git a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/And.java b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/And.java
index 2d7bc5d41..8bccc213c 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/And.java
+++ b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/And.java
@@ -26,8 +26,8 @@ final class And extends NAry {
@Override
public Object evaluate(IEvaluationContext context) {
- for (int idx = 0; idx < operands.length; ++idx) {
- if (operands[idx].evaluate(context) != Boolean.TRUE)
+ for (Expression operand : operands) {
+ if (operand.evaluate(context) != Boolean.TRUE)
return Boolean.FALSE;
}
return Boolean.TRUE;
@@ -51,8 +51,8 @@ final class And extends NAry {
@Override
public void toLDAPString(StringBuffer buf) {
buf.append("(&"); //$NON-NLS-1$
- for (int idx = 0; idx < operands.length; ++idx)
- operands[idx].toLDAPString(buf);
+ for (Expression operand : operands)
+ operand.toLDAPString(buf);
buf.append(')');
}
}
diff --git a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/CollectionFilter.java b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/CollectionFilter.java
index a6a9c8ffd..153aa27cc 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/CollectionFilter.java
+++ b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/CollectionFilter.java
@@ -21,7 +21,7 @@ import org.eclipse.equinox.p2.metadata.index.IIndexProvider;
/**
* Some kind of operation that is performed for each element of a collection. I.e.
- * <code>x.&lt;operation&gt;(y | &lt;expression&rt;)</code>
+ * <code>x.&lt;operation&gt;(y | &lt;expression&gt;)</code>
*/
public abstract class CollectionFilter extends Unary {
public static void appendProlog(StringBuffer bld, Variable rootVariable, Expression lhs, String operator) {
diff --git a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/CurryedLambdaExpression.java b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/CurryedLambdaExpression.java
index c4401eb02..dd2089a73 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/CurryedLambdaExpression.java
+++ b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/CurryedLambdaExpression.java
@@ -33,8 +33,8 @@ final class CurryedLambdaExpression extends LambdaExpression {
@Override
public boolean accept(IExpressionVisitor visitor) {
if (super.accept(visitor) && each.accept(visitor)) {
- for (int idx = 0; idx < assignments.length; ++idx)
- if (!assignments[idx].accept(visitor))
+ for (Assignment assignment : assignments)
+ if (!assignment.accept(visitor))
return false;
return true;
}
@@ -96,8 +96,8 @@ final class CurryedLambdaExpression extends LambdaExpression {
@Override
int countAccessToEverything() {
int cnt = 0;
- for (int idx = 0; idx < assignments.length; ++idx)
- cnt += assignments[idx].countAccessToEverything();
+ for (Assignment assignment : assignments)
+ cnt += assignment.countAccessToEverything();
cnt += super.countAccessToEverything();
return cnt;
}
diff --git a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Expression.java b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Expression.java
index b7849d4f7..74e029a0b 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Expression.java
+++ b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Expression.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2018 Cloudsmith Inc. and others.
+ * Copyright (c) 2009, 2020 Cloudsmith Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -107,17 +107,20 @@ public abstract class Expression implements IExpression, Comparable<Expression>,
}
}
- public static List<String> getIndexCandidateMembers(Class<?> elementClass, Variable itemVariable, Expression operand) {
+ public static List<String> getIndexCandidateMembers(Class<?> elementClass, Variable itemVariable,
+ Expression operand) {
MembersFinder finder = new MembersFinder(elementClass, itemVariable);
operand.accept(finder);
return finder.getMembers();
}
/**
- * Let the visitor visit this instance and all expressions that this
- * instance contains.
+ * Let the visitor visit this instance and all expressions that this instance
+ * contains.
+ *
* @param visitor The visiting visitor.
- * @return <code>true</code> if the visitor should continue visiting, <code>false</code> otherwise.
+ * @return <code>true</code> if the visitor should continue visiting,
+ * <code>false</code> otherwise.
*/
@Override
public boolean accept(IExpressionVisitor visitor) {
@@ -146,6 +149,7 @@ public abstract class Expression implements IExpression, Comparable<Expression>,
/**
* Evaluate this expression with given context and variables.
+ *
* @param context The evaluation context
* @return The result of the evaluation.
*/
@@ -218,12 +222,12 @@ public abstract class Expression implements IExpression, Comparable<Expression>,
if (base.getExpressionType() == op)
aArr = getFilterImpls(base);
else
- aArr = new Expression[] {base};
+ aArr = new Expression[] { base };
if (b.getExpressionType() == op)
bArr = getFilterImpls(b);
else
- bArr = new Expression[] {b};
+ bArr = new Expression[] { b };
List<Expression> common = null;
List<Expression> onlyA = null;
@@ -388,11 +392,9 @@ public abstract class Expression implements IExpression, Comparable<Expression>,
if (f.getExpressionType() != op)
continue;
- Expression[] sfs = getFilterImpls(f);
operands.remove(idx);
--top;
- for (int ndx = 0; ndx < sfs.length; ++ndx) {
- Expression nf = sfs[ndx];
+ for (Expression nf : getFilterImpls(f)) {
if (!operands.contains(nf))
operands.add(nf);
}
@@ -401,7 +403,7 @@ public abstract class Expression implements IExpression, Comparable<Expression>,
if (top == 1)
return operands.get(0);
- Collections.sort(operands);
+ operands.sort(null);
List<Compacter> splits = new ArrayList<>();
int reverseOp = op == TYPE_AND ? TYPE_OR : TYPE_AND;
@@ -419,7 +421,7 @@ public abstract class Expression implements IExpression, Comparable<Expression>,
if (top == 1)
return operands.get(0);
- Collections.sort(operands);
+ operands.sort(null);
Expression[] expArray = operands.toArray(new Expression[top]);
return op == TYPE_AND ? new And(expArray) : new Or(expArray);
}
@@ -484,7 +486,8 @@ public abstract class Expression implements IExpression, Comparable<Expression>,
@Override
public boolean visit(IExpression expression) {
- if (expression.getExpressionType() == TYPE_MEMBER && InstallableUnit.MEMBER_TRANSLATED_PROPERTIES.equals(((Member) expression).getName()))
+ if (expression.getExpressionType() == TYPE_MEMBER
+ && InstallableUnit.MEMBER_TRANSLATED_PROPERTIES.equals(((Member) expression).getName()))
found = true;
return !found;
}
@@ -495,8 +498,11 @@ public abstract class Expression implements IExpression, Comparable<Expression>,
}
/**
- * Checks if the expression will make repeated requests for the 'everything' iterator.
- * @return <code>true</code> if repeated requests will be made, <code>false</code> if not.
+ * Checks if the expression will make repeated requests for the 'everything'
+ * iterator.
+ *
+ * @return <code>true</code> if repeated requests will be made,
+ * <code>false</code> if not.
*/
public boolean needsTranslationSupport() {
TranslationSupportFinder tsFinder = new TranslationSupportFinder();
diff --git a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Member.java b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Member.java
index 0d29c650f..36d09904c 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Member.java
+++ b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Member.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2017 Cloudsmith Inc. and others.
+ * Copyright (c) 2009, 2021 Cloudsmith Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,29 +13,36 @@
*******************************************************************************/
package org.eclipse.equinox.internal.p2.metadata.expression;
-import java.lang.reflect.*;
-import java.util.*;
-import org.eclipse.equinox.p2.metadata.expression.*;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Queue;
+import org.eclipse.equinox.p2.metadata.expression.IEvaluationContext;
+import org.eclipse.equinox.p2.metadata.expression.IExpressionVisitor;
+import org.eclipse.equinox.p2.metadata.expression.IMemberProvider;
/**
- * <p>An expression that performs member calls to obtain some value
- * from some object instance. It uses standard bean semantics so
- * that an attempt to obtain &quot;value&quot; will cause an
- * attempt to call <code>getValue()</code> and if no such method
- * exists, <code>isValue()</code> and if that doesn't work either,
- * <code>value()</code>.</p>
+ * <p>
+ * An expression that performs member calls to obtain some value from some
+ * object instance. It uses standard bean semantics so that an attempt to obtain
+ * &quot;value&quot; will cause an attempt to call <code>getValue()</code> and
+ * if no such method exists, <code>isValue()</code> and if that doesn't work
+ * either, <code>value()</code>.
+ * </p>
*/
public abstract class Member extends Unary {
public static final class DynamicMember extends Member {
private static final String GET_PREFIX = "get"; //$NON-NLS-1$
private static final String IS_PREFIX = "is"; //$NON-NLS-1$
- private static final Class<?>[] NO_ARG_TYPES = new Class[0];
- private Class<?> lastClass;
-
- private transient Method method;
- private transient String methodName;
+ private transient Method lastMethod;
DynamicMember(Expression operand, String name) {
super(operand, name, Expression.emptyArray);
@@ -53,44 +60,14 @@ public abstract class Member extends Unary {
if (self == null)
throw new IllegalArgumentException("Cannot access member \'" + name + "\' in null"); //$NON-NLS-1$//$NON-NLS-2$
- Class<?> c = self.getClass();
synchronized (this) {
- if (methodName == null) {
- String n = name;
- if (!(n.startsWith(GET_PREFIX) || n.startsWith(IS_PREFIX)))
- n = GET_PREFIX + Character.toUpperCase(n.charAt(0)) + n.substring(1);
- methodName = n;
- }
- if (lastClass == null || !lastClass.isAssignableFrom(c)) {
- Method m;
- for (;;) {
- try {
- m = c.getMethod(methodName, NO_ARG_TYPES);
- if (!Modifier.isPublic(m.getModifiers()))
- throw new NoSuchMethodException();
- break;
- } catch (NoSuchMethodException e) {
- if (methodName.startsWith(GET_PREFIX))
- // Switch from using getXxx() to isXxx()
- methodName = IS_PREFIX + Character.toUpperCase(name.charAt(0)) + name.substring(1);
- else if (methodName.startsWith(IS_PREFIX))
- // Switch from using isXxx() to xxx()
- methodName = name;
- else
- throw new IllegalArgumentException("Cannot find a public member \'" + name + "\' in a " + self.getClass().getName()); //$NON-NLS-1$//$NON-NLS-2$
- }
- }
-
- // Since we already checked that it's public. This will speed
- // up the calls a bit.
- m.setAccessible(true);
- lastClass = c;
- method = m;
- }
-
+ final Method method = (lastMethod != null && lastMethod.getDeclaringClass().isInstance(self))
+ ? lastMethod
+ : findAccessibleMethod(self, name);
+ this.lastMethod = method;
Exception checked;
try {
- return method.invoke(self, NO_ARGS);
+ return method.invoke(self);
} catch (IllegalArgumentException e) {
throw e;
} catch (IllegalAccessException e) {
@@ -103,8 +80,54 @@ public abstract class Member extends Unary {
throw (Error) cause;
checked = (Exception) cause;
}
- throw new RuntimeException("Problem invoking " + methodName + " on a " + self.getClass().getName(), checked); //$NON-NLS-1$ //$NON-NLS-2$
+ throw new RuntimeException(
+ "Problem invoking " + method.getName() + " on a " + self.getClass().getName(), //$NON-NLS-1$ //$NON-NLS-2$
+ checked);
+ }
+ }
+
+ private Collection<String> getMethodNames(String propertyName) {
+ Collection<String> res = new ArrayList<>(3);
+ String n = propertyName;
+ res.add(propertyName); // obj.value()
+ if (!(n.startsWith(GET_PREFIX) || n.startsWith(IS_PREFIX))) {
+ res.add(GET_PREFIX + Character.toUpperCase(n.charAt(0)) + n.substring(1)); // obj.getValue()
+ res.add(IS_PREFIX + Character.toUpperCase(n.charAt(0)) + n.substring(1)); // obj.isValue()
+ }
+ return res;
+ }
+
+ private Method findAccessibleMethod(Object self, String propertyName) {
+ Collection<String> methodNamesToTry = getMethodNames(propertyName);
+ Queue<Class<?>> typesToTry = new LinkedList<>();
+ typesToTry.add(self.getClass());
+ while (!typesToTry.isEmpty()) {
+ Class<?> currentClass = typesToTry.poll();
+ for (String methodName : methodNamesToTry) {
+ try {
+ Method m = currentClass.getMethod(methodName);
+ if (!m.canAccess(self)) {
+ try {
+ // force accessible if possible.
+ // this seems necessary when invoking objects from
+ // nested class and "downstream" bundles
+ m.setAccessible(true);
+ } catch (Exception e) {
+ // ignore possible non-blocking case
+ }
+ }
+ if (m.canAccess(self)) {
+ return m;
+ }
+ } catch (NoSuchMethodException e) {
+ // ignore not found method
+ }
+ }
+ Optional.ofNullable(currentClass.getSuperclass()).ifPresent(typesToTry::add);
+ typesToTry.addAll(Arrays.asList(currentClass.getInterfaces()));
}
+ throw new IllegalArgumentException("Cannot find accessor method for property \'" + name + "\' in a " //$NON-NLS-1$//$NON-NLS-2$
+ + self.getClass().getName());
}
}
@@ -153,8 +176,6 @@ public abstract class Member extends Unary {
}
}
- static final Object[] NO_ARGS = new Object[0];
-
static Member createDynamicMember(Expression operand, String name) {
return new DynamicMember(operand, name);
}
@@ -172,8 +193,8 @@ public abstract class Member extends Unary {
@Override
public boolean accept(IExpressionVisitor visitor) {
if (super.accept(visitor))
- for (int idx = 0; idx < argExpressions.length; ++idx)
- if (!argExpressions[idx].accept(visitor))
+ for (Expression expression : argExpressions)
+ if (!expression.accept(visitor))
return false;
return true;
}
diff --git a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/NAry.java b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/NAry.java
index 22a4df85b..c43285377 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/NAry.java
+++ b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/NAry.java
@@ -28,8 +28,8 @@ public abstract class NAry extends Expression {
@Override
public boolean accept(IExpressionVisitor visitor) {
if (super.accept(visitor))
- for (int idx = 0; idx < operands.length; ++idx)
- if (!operands[idx].accept(visitor))
+ for (Expression operand : operands)
+ if (!operand.accept(visitor))
return false;
return true;
}
@@ -69,8 +69,8 @@ public abstract class NAry extends Expression {
@Override
int countAccessToEverything() {
int cnt = 0;
- for (int idx = 0; idx < operands.length; ++idx)
- cnt += operands[idx].countAccessToEverything();
+ for (Expression operand : operands)
+ cnt += operand.countAccessToEverything();
return cnt;
}
}
diff --git a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Or.java b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Or.java
index e6b159ad8..a42110bd5 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Or.java
+++ b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Or.java
@@ -26,8 +26,8 @@ final class Or extends NAry {
@Override
public Object evaluate(IEvaluationContext context) {
- for (int idx = 0; idx < operands.length; ++idx) {
- if (operands[idx].evaluate(context) == Boolean.TRUE)
+ for (Expression operand : operands) {
+ if (operand.evaluate(context) == Boolean.TRUE)
return Boolean.TRUE;
}
return Boolean.FALSE;
@@ -51,8 +51,8 @@ final class Or extends NAry {
@Override
public void toLDAPString(StringBuffer buf) {
buf.append("(|"); //$NON-NLS-1$
- for (int idx = 0; idx < operands.length; ++idx)
- operands[idx].toLDAPString(buf);
+ for (Expression operand : operands)
+ operand.toLDAPString(buf);
buf.append(')');
}
}
diff --git a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Pipe.java b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Pipe.java
index f718c17de..d4394c25e 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Pipe.java
+++ b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/Pipe.java
@@ -76,8 +76,7 @@ public class Pipe extends NAry {
ArrayList<Expression> pipeables = new ArrayList<>();
ArrayList<Expression> booleans = new ArrayList<>();
VariableFinder finder = new VariableFinder(ExpressionFactory.EVERYTHING);
- for (int idx = 0; idx < operands.length; ++idx) {
- Expression operand = operands[idx];
+ for (Expression operand : operands) {
finder.reset();
operand.accept(finder);
if (finder.isFound()) {
diff --git a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/SetFunction.java b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/SetFunction.java
index b23415cfb..a09a5e450 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/SetFunction.java
+++ b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/internal/p2/metadata/expression/SetFunction.java
@@ -25,8 +25,8 @@ public final class SetFunction extends Function {
@Override
public Object evaluate(IEvaluationContext context) {
HashSet<Object> result = new HashSet<>();
- for (int idx = 0; idx < operands.length; ++idx)
- result.add(operands[idx].evaluate(context));
+ for (Expression operand : operands)
+ result.add(operand.evaluate(context));
return result;
}
diff --git a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/p2/metadata/MetadataFactory.java b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/p2/metadata/MetadataFactory.java
index 3eee416e7..01747ba80 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/p2/metadata/MetadataFactory.java
+++ b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/p2/metadata/MetadataFactory.java
@@ -53,44 +53,46 @@ import org.eclipse.equinox.p2.metadata.expression.IMatchExpression;
public final class MetadataFactory {
/**
* A description containing information about an installable unit. Once created,
- * installable units are immutable. This description class allows a client to build
- * up the state for an installable unit incrementally, and then finally produce
- * the resulting immutable unit.
+ * installable units are immutable. This description class allows a client to
+ * build up the state for an installable unit incrementally, and then finally
+ * produce the resulting immutable unit.
*/
public static class InstallableUnitDescription {
InstallableUnit unit;
/**
- * A property key (value <code>"org.eclipse.equinox.p2.type.patch"</code>) for a
+ * A property key (value <code>"org.eclipse.equinox.p2.type.patch"</code>) for a
* boolean property indicating that an installable unit is a group.
*
*/
public static final String PROP_TYPE_GROUP = "org.eclipse.equinox.p2.type.group"; //$NON-NLS-1$
/**
- * A property key (value <code>"org.eclipse.equinox.p2.type.patch"</code>) for a
+ * A property key (value <code>"org.eclipse.equinox.p2.type.patch"</code>) for a
* boolean property indicating that an installable unit is a patch.
*
*/
public static final String PROP_TYPE_PATCH = "org.eclipse.equinox.p2.type.patch"; //$NON-NLS-1$
/**
- * A property key (value <code>"org.eclipse.equinox.p2.type.fragment"</code>) for a
- * boolean property indicating that an installable unit is a fragment.
+ * A property key (value <code>"org.eclipse.equinox.p2.type.fragment"</code>)
+ * for a boolean property indicating that an installable unit is a fragment.
*
*/
public static final String PROP_TYPE_FRAGMENT = "org.eclipse.equinox.p2.type.fragment"; //$NON-NLS-1$
/**
- * A property key (value <code>"org.eclipse.equinox.p2.type.category"</code>) for a
- * boolean property indicating that an installable unit is a category.
+ * A property key (value <code>"org.eclipse.equinox.p2.type.category"</code>)
+ * for a boolean property indicating that an installable unit is a category.
*
*/
public static final String PROP_TYPE_CATEGORY = "org.eclipse.equinox.p2.type.category"; //$NON-NLS-1$
/**
- * A property key (value <code>"org.eclipse.equinox.p2.type.product"</code>) for a
- * boolean property indicating that an installable unit is the root IU of a product.
+ * A property key (value <code>"org.eclipse.equinox.p2.type.product"</code>) for
+ * a boolean property indicating that an installable unit is the root IU of a
+ * product.
+ *
* @since 2.2
*/
public static final String PROP_TYPE_PRODUCT = "org.eclipse.equinox.p2.type.product"; //$NON-NLS-1$
@@ -101,6 +103,7 @@ public final class MetadataFactory {
/**
* Add the specified capabilities to the installable unit.
+ *
* @param additional the capabilities to add.
*/
public void addProvidedCapabilities(Collection<IProvidedCapability> additional) {
@@ -121,6 +124,7 @@ public final class MetadataFactory {
/**
* Add the specified requirements to the installable unit.
+ *
* @param additional the requirements to add
*/
public void addRequirements(Collection<IRequirement> additional) {
@@ -146,7 +150,8 @@ public final class MetadataFactory {
}
/**
- * Return a collection of all the capabilities specified on this installable unit.
+ * Return a collection of all the capabilities specified on this installable
+ * unit.
*/
public Collection<IProvidedCapability> getProvidedCapabilities() {
return unit().getProvidedCapabilities();
@@ -172,7 +177,8 @@ public final class MetadataFactory {
}
/**
- * Return a collection of the meta requirements specified on this installable unit.
+ * Return a collection of the meta requirements specified on this installable
+ * unit.
*/
public Collection<IRequirement> getMetaRequirements() {
return unit().getMetaRequirements();
@@ -198,6 +204,7 @@ public final class MetadataFactory {
/**
* Returns the UpdateDescriptor for this IU
+ *
* @since 2.1
*/
public IUpdateDescriptor getUpdateDescriptor() {
@@ -205,7 +212,9 @@ public final class MetadataFactory {
}
/**
- * Set the artifact keys for the installable unit. Previous values will be overwritten.
+ * Set the artifact keys for the installable unit. Previous values will be
+ * overwritten.
+ *
* @param value the artifacts to the used.
*/
public void setArtifacts(IArtifactKey[] value) {
@@ -213,7 +222,9 @@ public final class MetadataFactory {
}
/**
- * Set the capabilities for the installable unit. Previous values will be overwritten.
+ * Set the capabilities for the installable unit. Previous values will be
+ * overwritten.
+ *
* @param exportedCapabilities the capabilities to be used.
*/
public void setCapabilities(IProvidedCapability[] exportedCapabilities) {
@@ -221,7 +232,9 @@ public final class MetadataFactory {
}
/**
- * Set the copyright for the installable unit. Previous values will be overwritten.
+ * Set the copyright for the installable unit. Previous values will be
+ * overwritten.
+ *
* @param copyright the copyright to be used.
*/
public void setCopyright(ICopyright copyright) {
@@ -236,7 +249,7 @@ public final class MetadataFactory {
unit().setFilter(filter);
}
- /**
+ /**
* Set the id of the installable unit.
*/
public void setId(String id) {
@@ -244,7 +257,8 @@ public final class MetadataFactory {
}
/**
- * Set the licenses for the installable unit. Previous values will be overwritten.
+ * Set the licenses for the installable unit. Previous values will be
+ * overwritten.
*/
public void setLicenses(ILicense[] licenses) {
unit().setLicenses(licenses);
@@ -252,7 +266,8 @@ public final class MetadataFactory {
/**
* Set a property with a specified value for this installable unit.
- * @param key key with which the specified value is to be associated
+ *
+ * @param key key with which the specified value is to be associated
* @param value value to be associated with the specified key
*/
public void setProperty(String key, String value) {
@@ -266,7 +281,9 @@ public final class MetadataFactory {
}
/**
- * Set the requirements for the installable unit. Previous values will be overwritten.
+ * Set the requirements for the installable unit. Previous values will be
+ * overwritten.
+ *
* @param requirements the requirements to be used.
*/
public void setRequirements(IRequirement[] requirements) {
@@ -280,7 +297,9 @@ public final class MetadataFactory {
}
/**
- * Set the meta requirements for the installable unit. Previous values will be overwritten.
+ * Set the meta requirements for the installable unit. Previous values will be
+ * overwritten.
+ *
* @param metaRequirements the meta requirements to be used.
*/
public void setMetaRequirements(IRequirement[] metaRequirements) {
@@ -310,6 +329,7 @@ public final class MetadataFactory {
/**
* Set the version of this installable unit.
+ *
* @param newVersion version to be set on the installable unit.
*/
public void setVersion(Version newVersion) {
@@ -332,10 +352,10 @@ public final class MetadataFactory {
}
/**
- * A description containing information about an installable unit fragment. Once created,
- * installable units are immutable. This description class allows a client to build
- * up the state for an installable unit fragment incrementally, and then finally produce
- * the resulting immutable unit.
+ * A description containing information about an installable unit fragment. Once
+ * created, installable units are immutable. This description class allows a
+ * client to build up the state for an installable unit fragment incrementally,
+ * and then finally produce the resulting immutable unit.
*/
public static class InstallableUnitFragmentDescription extends InstallableUnitDescription {
public InstallableUnitFragmentDescription() {
@@ -344,7 +364,8 @@ public final class MetadataFactory {
}
/**
- * Specify the requirements identifying the host to which the installable unit fragment should be attached to.
+ * Specify the requirements identifying the host to which the installable unit
+ * fragment should be attached to.
*/
public void setHost(IRequirement... hostRequirement) {
((InstallableUnitFragment) unit()).setHost(Arrays.asList(hostRequirement));
@@ -359,10 +380,10 @@ public final class MetadataFactory {
}
/**
- * A description containing information about an installable unit patch. Once created,
- * installable units are immutable. This description class allows a client to build
- * up the state for an installable unit patch incrementally, and then finally produce
- * the resulting immutable unit.
+ * A description containing information about an installable unit patch. Once
+ * created, installable units are immutable. This description class allows a
+ * client to build up the state for an installable unit patch incrementally, and
+ * then finally produce the resulting immutable unit.
*/
public static class InstallableUnitPatchDescription extends InstallableUnitDescription {
@@ -414,9 +435,9 @@ public final class MetadataFactory {
private static int typeCacheOffset;
/**
- * Returns an {@link IInstallableUnit} based on the given
- * description. Once the installable unit has been created, the information is
- * discarded from the description object.
+ * Returns an {@link IInstallableUnit} based on the given description. Once the
+ * installable unit has been created, the information is discarded from the
+ * description object.
*
* @param description The description of the unit to create
* @return The created installable unit
@@ -427,22 +448,23 @@ public final class MetadataFactory {
}
/**
- * Returns an {@link IInstallableUnitFragment} based on the given
- * description. Once the fragment has been created, the information is
- * discarded from the description object.
+ * Returns an {@link IInstallableUnitFragment} based on the given description.
+ * Once the fragment has been created, the information is discarded from the
+ * description object.
*
* @param description The description of the unit to create
* @return The created installable unit fragment
*/
- public static IInstallableUnitFragment createInstallableUnitFragment(InstallableUnitFragmentDescription description) {
+ public static IInstallableUnitFragment createInstallableUnitFragment(
+ InstallableUnitFragmentDescription description) {
Assert.isNotNull(description);
return (IInstallableUnitFragment) description.unitCreate();
}
/**
- * Returns an {@link IInstallableUnitPatch} based on the given
- * description. Once the patch installable unit has been created, the information is
- * discarded from the description object.
+ * Returns an {@link IInstallableUnitPatch} based on the given description. Once
+ * the patch installable unit has been created, the information is discarded
+ * from the description object.
*
* @param description The description of the unit to create
* @return The created installable unit patch
@@ -456,8 +478,8 @@ public final class MetadataFactory {
* Returns a {@link IProvidedCapability} with the given values.
*
* @param namespace The capability namespace
- * @param name The capability name
- * @param version The capability version
+ * @param name The capability name
+ * @param version The capability version
*/
public static IProvidedCapability createProvidedCapability(String namespace, String name, Version version) {
return new ProvidedCapability(namespace, name, version);
@@ -466,7 +488,7 @@ public final class MetadataFactory {
/**
* Returns a {@link IProvidedCapability} with the given values.
*
- * @param namespace The capability namespace
+ * @param namespace The capability namespace
* @param properties The description of the capability
* @since 2.4
*/
@@ -475,184 +497,269 @@ public final class MetadataFactory {
}
/**
- * Create and return a new requirement ({@link IRequirement}) with the specified values.
+ * Create and return a new requirement ({@link IRequirement}) with the specified
+ * values.
*
- * @param namespace the namespace for the requirement. Must not be <code>null</code>.
- * @param name the name for the requirement. Must not be <code>null</code>.
- * @param range the version range. A value of <code>null</code> is equivalent to {@link VersionRange#emptyRange} and matches all versions.
- * @param filter The filter used to evaluate whether this capability is applicable in the
- * current environment, or <code>null</code> to indicate this capability is always applicable
- * @param optional <code>true</code> if this requirement is optional, and <code>false</code> otherwise.
- * @param multiple <code>true</code> if this requirement can be satisfied by multiple provided capabilities, or <code>false</code>
- * if it requires exactly one match
- * @param greedy <code>true</code> if the requirement should be considered greedy and <code>false</code> otherwise
+ * @param namespace the namespace for the requirement. Must not be
+ * <code>null</code>.
+ * @param name the name for the requirement. Must not be <code>null</code>.
+ * @param range the version range. A value of <code>null</code> is
+ * equivalent to {@link VersionRange#emptyRange} and matches
+ * all versions.
+ * @param filter The filter used to evaluate whether this capability is
+ * applicable in the current environment, or <code>null</code>
+ * to indicate this capability is always applicable
+ * @param optional <code>true</code> if this requirement is optional, and
+ * <code>false</code> otherwise.
+ * @param multiple <code>true</code> if this requirement can be satisfied by
+ * multiple provided capabilities, or <code>false</code> if it
+ * requires exactly one match
+ * @param greedy <code>true</code> if the requirement should be considered
+ * greedy and <code>false</code> otherwise
* @return the requirement
*/
- public static IRequirement createRequirement(String namespace, String name, VersionRange range, String filter, boolean optional, boolean multiple, boolean greedy) {
- return new RequiredCapability(namespace, name, range, InstallableUnit.parseFilter(filter), optional ? 0 : 1, multiple ? Integer.MAX_VALUE : 1, greedy, null);
+ public static IRequirement createRequirement(String namespace, String name, VersionRange range, String filter,
+ boolean optional, boolean multiple, boolean greedy) {
+ return new RequiredCapability(namespace, name, range, InstallableUnit.parseFilter(filter), optional ? 0 : 1,
+ multiple ? Integer.MAX_VALUE : 1, greedy, null);
}
/**
* Returns a {@link IRequirement} with the given values.
*
* @param namespace The capability namespace
- * @param name The required capability name
- * @param range The range of versions that are required, or <code>null</code>
- * to indicate that any version will do.
- * @param filter The filter used to evaluate whether this capability is applicable in the
- * current environment, or <code>null</code> to indicate this capability is always applicable
- * @param optional <code>true</code> if this required capability is optional,
- * and <code>false</code> otherwise.
- * @param multiple <code>true</code> if this capability can be satisfied by multiple provided capabilities,
- * or <code>false</code> if it requires exactly one match
+ * @param name The required capability name
+ * @param range The range of versions that are required, or
+ * <code>null</code> to indicate that any version will do.
+ * @param filter The filter used to evaluate whether this capability is
+ * applicable in the current environment, or <code>null</code>
+ * to indicate this capability is always applicable
+ * @param optional <code>true</code> if this required capability is optional,
+ * and <code>false</code> otherwise.
+ * @param multiple <code>true</code> if this capability can be satisfied by
+ * multiple provided capabilities, or <code>false</code> if it
+ * requires exactly one match
* @return the requirement
*/
- public static IRequirement createRequirement(String namespace, String name, VersionRange range, IMatchExpression<IInstallableUnit> filter, boolean optional, boolean multiple) {
- return new RequiredCapability(namespace, name, range, filter, optional ? 0 : 1, multiple ? Integer.MAX_VALUE : 1, true, null);
+ public static IRequirement createRequirement(String namespace, String name, VersionRange range,
+ IMatchExpression<IInstallableUnit> filter, boolean optional, boolean multiple) {
+ return new RequiredCapability(namespace, name, range, filter, optional ? 0 : 1,
+ multiple ? Integer.MAX_VALUE : 1, true, null);
}
/**
- * Create and return a new requirement ({@link IRequirement}) with the specified values.
+ * Create and return a new requirement ({@link IRequirement}) with the specified
+ * values.
*
- * @param namespace the namespace for the requirement. Must not be <code>null</code>.
- * @param name the name for the requirement. Must not be <code>null</code>.
- * @param range the version range. A value of <code>null</code> is equivalent to {@link VersionRange#emptyRange} and matches all versions.
- * @param filter The filter used to evaluate whether this capability is applicable in the
- * current environment, or <code>null</code> to indicate this capability is always applicable
- * @param minCard minimum cardinality
- * @param maxCard maximum cardinality
- * @param greedy <code>true</code> if the requirement should be considered greedy and <code>false</code> otherwise
+ * @param namespace the namespace for the requirement. Must not be
+ * <code>null</code>.
+ * @param name the name for the requirement. Must not be <code>null</code>.
+ * @param range the version range. A value of <code>null</code> is
+ * equivalent to {@link VersionRange#emptyRange} and matches
+ * all versions.
+ * @param filter The filter used to evaluate whether this capability is
+ * applicable in the current environment, or <code>null</code>
+ * to indicate this capability is always applicable
+ * @param minCard minimum cardinality
+ * @param maxCard maximum cardinality
+ * @param greedy <code>true</code> if the requirement should be considered
+ * greedy and <code>false</code> otherwise
* @return the requirement
*/
- public static IRequirement createRequirement(String namespace, String name, VersionRange range, IMatchExpression<IInstallableUnit> filter, int minCard, int maxCard, boolean greedy) {
+ public static IRequirement createRequirement(String namespace, String name, VersionRange range,
+ IMatchExpression<IInstallableUnit> filter, int minCard, int maxCard, boolean greedy) {
return new RequiredCapability(namespace, name, range, filter, minCard, maxCard, greedy, null);
}
/**
- * Create and return a new requirement ({@link IRequirement}) with the specified values.
+ * Create and return a new requirement ({@link IRequirement}) with the specified
+ * values.
*
- * @param namespace the namespace for the requirement. Must not be <code>null</code>.
- * @param name the name for the requirement. Must not be <code>null</code>.
- * @param range the version range. A value of <code>null</code> is equivalent to {@link VersionRange#emptyRange} and matches all versions.
- * @param filter The filter used to evaluate whether this capability is applicable in the
- * current environment, or <code>null</code> to indicate this capability is always applicable
- * @param minCard minimum cardinality
- * @param maxCard maximum cardinality
- * @param greedy <code>true</code> if the requirement should be considered greedy and <code>false</code> otherwise
- * @param description a <code>String</code> description of the requirement, or <code>null</code>
+ * @param namespace the namespace for the requirement. Must not be
+ * <code>null</code>.
+ * @param name the name for the requirement. Must not be
+ * <code>null</code>.
+ * @param range the version range. A value of <code>null</code> is
+ * equivalent to {@link VersionRange#emptyRange} and matches
+ * all versions.
+ * @param filter The filter used to evaluate whether this capability is
+ * applicable in the current environment, or
+ * <code>null</code> to indicate this capability is always
+ * applicable
+ * @param minCard minimum cardinality
+ * @param maxCard maximum cardinality
+ * @param greedy <code>true</code> if the requirement should be considered
+ * greedy and <code>false</code> otherwise
+ * @param description a <code>String</code> description of the requirement, or
+ * <code>null</code>
* @return the requirement
*/
- public static IRequirement createRequirement(String namespace, String name, VersionRange range, IMatchExpression<IInstallableUnit> filter, int minCard, int maxCard, boolean greedy, String description) {
+ public static IRequirement createRequirement(String namespace, String name, VersionRange range,
+ IMatchExpression<IInstallableUnit> filter, int minCard, int maxCard, boolean greedy, String description) {
return new RequiredCapability(namespace, name, range, filter, minCard, maxCard, greedy, description);
}
/**
*
- * @param namespace the namespace for the requirement. Must not be <code>null</code>.
- * @param propsFilter filter applied on {@link IProvidedCapability#getProperties()} of every {@link IInstallableUnit#getProvidedCapabilities()}
- * @param envFilter matcher over {@link IInstallableUnit#getProperties()}
- * @param minCard minimum cardinality
- * @param maxCard maximum cardinality
- * @param greedy <code>true</code> if the requirement should be considered greedy and <code>false</code> otherwise
+ * @param namespace the namespace for the requirement. Must not be
+ * <code>null</code>.
+ * @param propsFilter filter applied on
+ * {@link IProvidedCapability#getProperties()} of every
+ * {@link IInstallableUnit#getProvidedCapabilities()}
+ * @param envFilter matcher over {@link IInstallableUnit#getProperties()}
+ * @param minCard minimum cardinality
+ * @param maxCard maximum cardinality
+ * @param greedy <code>true</code> if the requirement should be considered
+ * greedy and <code>false</code> otherwise
* @return the requirement
* @since 2.4
*/
- public static IRequirement createRequirement(String namespace, String propsFilter, IMatchExpression<IInstallableUnit> envFilter, int minCard, int maxCard, boolean greedy) {
+ public static IRequirement createRequirement(String namespace, String propsFilter,
+ IMatchExpression<IInstallableUnit> envFilter, int minCard, int maxCard, boolean greedy) {
IFilterExpression attrFilterExpr = ExpressionUtil.parseLDAP(propsFilter);
return new RequiredPropertiesMatch(namespace, attrFilterExpr, envFilter, minCard, maxCard, greedy, null);
}
/**
*
- * @param namespace the namespace for the requirement. Must not be <code>null</code>.
- * @param propsFilter filter applied on {@link IProvidedCapability#getProperties()} of every {@link IInstallableUnit#getProvidedCapabilities()}
- * @param envFilter matcher over {@link IInstallableUnit#getProperties()}
- * @param minCard minimum cardinality
- * @param maxCard maximum cardinality
- * @param greedy <code>true</code> if the requirement should be considered greedy and <code>false</code> otherwise
- * @param description a <code>String</code> description of the requirement, or <code>null</code>
+ * @param namespace the namespace for the requirement. Must not be
+ * <code>null</code>.
+ * @param propsFilter filter applied on
+ * {@link IProvidedCapability#getProperties()} of every
+ * {@link IInstallableUnit#getProvidedCapabilities()}
+ * @param envFilter matcher over {@link IInstallableUnit#getProperties()}
+ * @param minCard minimum cardinality
+ * @param maxCard maximum cardinality
+ * @param greedy <code>true</code> if the requirement should be considered
+ * greedy and <code>false</code> otherwise
+ * @return the requirement
+ * @since 2.5
+ */
+ public static IRequirement createRequirement(String namespace, String propsFilter,
+ IMatchExpression<IInstallableUnit> envFilter, int minCard, int maxCard, boolean greedy,
+ String description) {
+ IFilterExpression attrFilterExpr = ExpressionUtil.parseLDAP(propsFilter);
+ return new RequiredPropertiesMatch(namespace, attrFilterExpr, envFilter, minCard, maxCard, greedy, description);
+ }
+
+ /**
+ *
+ * @param namespace the namespace for the requirement. Must not be
+ * <code>null</code>.
+ * @param propsFilter filter applied on
+ * {@link IProvidedCapability#getProperties()} of every
+ * {@link IInstallableUnit#getProvidedCapabilities()}
+ * @param envFilter matcher over {@link IInstallableUnit#getProperties()}
+ * @param minCard minimum cardinality
+ * @param maxCard maximum cardinality
+ * @param greedy <code>true</code> if the requirement should be considered
+ * greedy and <code>false</code> otherwise
+ * @param description a <code>String</code> description of the requirement, or
+ * <code>null</code>
* @return the requirement
* @since 2.4
*/
- public static IRequirement createRequirement(String namespace, IFilterExpression propsFilter, IMatchExpression<IInstallableUnit> envFilter, int minCard, int maxCard, boolean greedy, String description) {
+ public static IRequirement createRequirement(String namespace, IFilterExpression propsFilter,
+ IMatchExpression<IInstallableUnit> envFilter, int minCard, int maxCard, boolean greedy,
+ String description) {
return new RequiredPropertiesMatch(namespace, propsFilter, envFilter, minCard, maxCard, greedy, description);
}
/**
- * Create and return a new requirement ({@link IRequirement}) with the specified values.
+ * Create and return a new requirement ({@link IRequirement}) with the specified
+ * values.
*
* @param requirement the match expression
- * @param envFilter The filter used to evaluate whether this capability is applicable in the
- * current environment, or <code>null</code> to indicate this capability is always applicable
- * @param minCard minimum cardinality
- * @param maxCard maximum cardinality
- * @param greedy <code>true</code> if the requirement should be considered greedy and <code>false</code> otherwise
+ * @param envFilter The filter used to evaluate whether this capability is
+ * applicable in the current environment, or
+ * <code>null</code> to indicate this capability is always
+ * applicable
+ * @param minCard minimum cardinality
+ * @param maxCard maximum cardinality
+ * @param greedy <code>true</code> if the requirement should be considered
+ * greedy and <code>false</code> otherwise
* @return the requirement
*/
- public static IRequirement createRequirement(IMatchExpression<IInstallableUnit> requirement, IMatchExpression<IInstallableUnit> envFilter, int minCard, int maxCard, boolean greedy) {
+ public static IRequirement createRequirement(IMatchExpression<IInstallableUnit> requirement,
+ IMatchExpression<IInstallableUnit> envFilter, int minCard, int maxCard, boolean greedy) {
return createRequirementInternal(requirement, envFilter, minCard, maxCard, greedy, null);
}
/**
- * Create and return a new requirement ({@link IRequirement}) with the specified values.
- *
+ * Create and return a new requirement ({@link IRequirement}) with the specified
+ * values.
+ *
* @param requirement the match expression
- * @param envFilter the filter, or <code>null</code>
- * @param minCard minimum cardinality
- * @param maxCard maximum cardinality
- * @param greedy <code>true</code> if the requirement should be considered greedy and <code>false</code> otherwise
- * @param description a <code>String</code> description of the requirement, or <code>null</code>
+ * @param envFilter the filter, or <code>null</code>
+ * @param minCard minimum cardinality
+ * @param maxCard maximum cardinality
+ * @param greedy <code>true</code> if the requirement should be considered
+ * greedy and <code>false</code> otherwise
+ * @param description a <code>String</code> description of the requirement, or
+ * <code>null</code>
* @return the requirement
*/
- public static IRequirement createRequirement(IMatchExpression<IInstallableUnit> requirement, IMatchExpression<IInstallableUnit> envFilter, int minCard, int maxCard, boolean greedy, String description) {
+ public static IRequirement createRequirement(IMatchExpression<IInstallableUnit> requirement,
+ IMatchExpression<IInstallableUnit> envFilter, int minCard, int maxCard, boolean greedy,
+ String description) {
return createRequirementInternal(requirement, envFilter, minCard, maxCard, greedy, description);
}
/**
* Returns a new requirement change.
- * @param applyOn The source of the requirement change - the kind of requirement to apply the change to
- * @param newValue The result of the requirement change - the requirement to replace the source requirement with
+ *
+ * @param applyOn The source of the requirement change - the kind of
+ * requirement to apply the change to
+ * @param newValue The result of the requirement change - the requirement to
+ * replace the source requirement with
* @return a requirement change
*/
public static IRequirementChange createRequirementChange(IRequirement applyOn, IRequirement newValue) {
- if ((applyOn == null || applyOn instanceof IRequiredCapability) && (newValue == null || newValue instanceof IRequiredCapability))
+ if ((applyOn == null || applyOn instanceof IRequiredCapability)
+ && (newValue == null || newValue instanceof IRequiredCapability))
return new RequirementChange((IRequiredCapability) applyOn, (IRequiredCapability) newValue);
throw new IllegalArgumentException();
}
/**
* Returns a new {@link ICopyright}.
- * @param location the location of a document containing the copyright notice, or <code>null</code>
- * @param body the copyright body, cannot be <code>null</code>
- * @throws IllegalArgumentException when the <code>body</code> is <code>null</code>
+ *
+ * @param location the location of a document containing the copyright notice,
+ * or <code>null</code>
+ * @param body the copyright body, cannot be <code>null</code>
+ * @throws IllegalArgumentException when the <code>body</code> is
+ * <code>null</code>
*/
public static ICopyright createCopyright(URI location, String body) {
return new Copyright(location, body);
}
/**
- * Return a new {@link ILicense}
- * The body should contain either the full text of the license or an summary for a license
- * fully specified in the given location.
+ * Return a new {@link ILicense} The body should contain either the full text of
+ * the license or an summary for a license fully specified in the given
+ * location.
*
- * @param location the location of a document containing the full license, or <code>null</code>
- * @param body the license body, cannot be <code>null</code>
- * @throws IllegalArgumentException when the <code>body</code> is <code>null</code>
+ * @param location the location of a document containing the full license, or
+ * <code>null</code>
+ * @param body the license body, cannot be <code>null</code>
+ * @throws IllegalArgumentException when the <code>body</code> is
+ * <code>null</code>
*/
public static ILicense createLicense(URI location, String body) {
return new License(location, body, null);
}
/**
- * Returns an {@link IInstallableUnit} that represents the given
- * unit bound to the given fragments.
+ * Returns an {@link IInstallableUnit} that represents the given unit bound to
+ * the given fragments.
*
* @see IInstallableUnit#isResolved()
- * @param unit The unit to be bound
+ * @param unit The unit to be bound
* @param fragments The fragments to be bound
* @return A resolved installable unit
*/
- public static IInstallableUnit createResolvedInstallableUnit(IInstallableUnit unit, IInstallableUnitFragment[] fragments) {
+ public static IInstallableUnit createResolvedInstallableUnit(IInstallableUnit unit,
+ IInstallableUnitFragment[] fragments) {
if (unit.isResolved())
return unit;
Assert.isNotNull(unit);
@@ -669,7 +776,7 @@ public final class MetadataFactory {
*/
public static ITouchpointData createTouchpointData(Map<String, ? extends Object> instructions) {
Assert.isNotNull(instructions);
- //copy the map to protect against subsequent change by caller
+ // copy the map to protect against subsequent change by caller
if (instructions.isEmpty())
return EMPTY_TOUCHPOINT_DATA;
@@ -689,11 +796,14 @@ public final class MetadataFactory {
/**
* Merge the given touchpoint instructions with a pre-existing touchpoint data
- * @param initial - the initial ITouchpointData
- * @param incomingInstructions - Map of ITouchpointInstructions to merge into the initial touchpoint data
+ *
+ * @param initial - the initial ITouchpointData
+ * @param incomingInstructions - Map of ITouchpointInstructions to merge into
+ * the initial touchpoint data
* @return the merged ITouchpointData
*/
- public static ITouchpointData mergeTouchpointData(ITouchpointData initial, Map<String, ITouchpointInstruction> incomingInstructions) {
+ public static ITouchpointData mergeTouchpointData(ITouchpointData initial,
+ Map<String, ITouchpointInstruction> incomingInstructions) {
if (incomingInstructions == null || incomingInstructions.size() == 0)
return initial;
@@ -734,7 +844,7 @@ public final class MetadataFactory {
/**
* Returns a {@link TouchpointType} with the given id and version.
*
- * @param id The touchpoint id
+ * @param id The touchpoint id
* @param version The touchpoint version
* @return A touchpoint type instance with the given id and version
*/
@@ -758,49 +868,65 @@ public final class MetadataFactory {
/**
*
* @param descriptors The IUs that the descriptor provides updates for.
- * @param severity The update severity (either {@link IUpdateDescriptor#NORMAL}
- * or {@link IUpdateDescriptor#HIGH})
+ * @param severity The update severity (either
+ * {@link IUpdateDescriptor#NORMAL} or
+ * {@link IUpdateDescriptor#HIGH})
* @param description A description of the update
- * @param location a {@link URI} specifying the location or <code>null</code>
+ * @param location a {@link URI} specifying the location or <code>null</code>
* @return A new update descriptor
*/
- public static IUpdateDescriptor createUpdateDescriptor(Collection<IMatchExpression<IInstallableUnit>> descriptors, int severity, String description, URI location) {
+ public static IUpdateDescriptor createUpdateDescriptor(Collection<IMatchExpression<IInstallableUnit>> descriptors,
+ int severity, String description, URI location) {
return new UpdateDescriptor(descriptors, severity, description, location);
}
/**
* Creates a new update descriptor object.
- * @param id The id of the installable unit that the descriptor provides updates for
- * @param range The version range that the descriptor provides updates for
- * @param severity The update severity (either {@link IUpdateDescriptor#NORMAL}
- * or {@link IUpdateDescriptor#HIGH})
+ *
+ * @param id The id of the installable unit that the descriptor
+ * provides updates for
+ * @param range The version range that the descriptor provides updates for
+ * @param severity The update severity (either
+ * {@link IUpdateDescriptor#NORMAL} or
+ * {@link IUpdateDescriptor#HIGH})
* @param description A description of the update
* @return A new update descriptor
*/
- public static IUpdateDescriptor createUpdateDescriptor(String id, VersionRange range, int severity, String description) {
+ public static IUpdateDescriptor createUpdateDescriptor(String id, VersionRange range, int severity,
+ String description) {
return createUpdateDescriptor(id, range, severity, description, null);
}
/**
- * Create and return a new update descriptor {@link IUpdateDescriptor} with the specified values.
+ * Create and return a new update descriptor {@link IUpdateDescriptor} with the
+ * specified values.
*
- * @param id the identifiter for the update. Must not be <code>null</code>.
- * @param range the version range. A <code>null</code> range is equivalent to {@link VersionRange#emptyRange} and matches all versions.
- * @param severity the severity
+ * @param id the identifiter for the update. Must not be
+ * <code>null</code>.
+ * @param range the version range. A <code>null</code> range is equivalent
+ * to {@link VersionRange#emptyRange} and matches all
+ * versions.
+ * @param severity the severity
* @param description a <code>String</code> description or <code>null</code>
- * @param location a {@link URI} specifying the location or <code>null</code>
+ * @param location a {@link URI} specifying the location or <code>null</code>
* @return the update descriptor
*/
- public static IUpdateDescriptor createUpdateDescriptor(String id, VersionRange range, int severity, String description, URI location) {
+ public static IUpdateDescriptor createUpdateDescriptor(String id, VersionRange range, int severity,
+ String description, URI location) {
Collection<IMatchExpression<IInstallableUnit>> descriptors = new ArrayList<>(1);
descriptors.add(RequiredCapability.createMatchExpressionFromRange(IInstallableUnit.NAMESPACE_IU_ID, id, range));
return createUpdateDescriptor(descriptors, severity, description, location);
}
- private static IRequirement createRequirementInternal(IMatchExpression<IInstallableUnit> requirement, IMatchExpression<IInstallableUnit> envFilter, int minCard, int maxCard, boolean greedy, String description) {
- // IRequiredCapability is simply a requirement with a match expression derived from a (namespace, name, version) tripet.
- // However the xml format also requires that maxCard > 1 or it is serialized in the generic format.
- // When parsing back from xml try to convert to an IRequiredCapability to retain the representation prior to serialization
+ private static IRequirement createRequirementInternal(IMatchExpression<IInstallableUnit> requirement,
+ IMatchExpression<IInstallableUnit> envFilter, int minCard, int maxCard, boolean greedy,
+ String description) {
+ // IRequiredCapability is simply a requirement with a match expression derived
+ // from a (namespace, name, version) tripet.
+ // However the xml format also requires that maxCard > 1 or it is serialized in
+ // the generic format.
+ // When parsing back from xml try to convert to an IRequiredCapability to retain
+ // the representation prior to serialization
if (RequiredCapability.isVersionRangeRequirement(requirement)) {
String namespace = RequiredCapability.extractNamespace(requirement);
String name = RequiredCapability.extractName(requirement);
@@ -827,7 +953,7 @@ public final class MetadataFactory {
}
private static void putCachedTouchpointType(ITouchpointType result) {
- //simple rotating buffer
+ // simple rotating buffer
typeCache[typeCacheOffset] = result;
typeCacheOffset = (typeCacheOffset + 1) % typeCache.length;
}
diff --git a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/p2/metadata/expression/SimplePattern.java b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/p2/metadata/expression/SimplePattern.java
index 2b088c077..b844ee817 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/p2/metadata/expression/SimplePattern.java
+++ b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/p2/metadata/expression/SimplePattern.java
@@ -182,7 +182,7 @@ public class SimplePattern implements Serializable, Comparable<SimplePattern> {
private static Node parse(String pattern, int pos) {
int top = pattern.length();
- StringBuffer bld = null;
+ StringBuilder bld = null;
Node parsedNode = null;
while (pos < top) {
char c = pattern.charAt(pos);
@@ -201,7 +201,7 @@ public class SimplePattern implements Serializable, Comparable<SimplePattern> {
// fall through
default :
if (bld == null)
- bld = new StringBuffer();
+ bld = new StringBuilder();
bld.append(c);
++pos;
continue;
diff --git a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/p2/query/Collector.java b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/p2/query/Collector.java
index 5be87df5b..ffa0d6f47 100644
--- a/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/p2/query/Collector.java
+++ b/bundles/org.eclipse.equinox.p2.metadata/src/org/eclipse/equinox/p2/query/Collector.java
@@ -25,20 +25,21 @@ import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.equinox.internal.p2.metadata.Messages;
/**
- * A collector is a generic visitor that collects objects passed to it,
- * and can then express the result of the visit in various forms. The collector
- * can also short-circuit a traversal by returning <code>false</code> from
- * its {@link #accept(Object)} method.
+ * A collector is a generic visitor that collects objects passed to it, and can
+ * then express the result of the visit in various forms. The collector can also
+ * short-circuit a traversal by returning <code>false</code> from its
+ * {@link #accept(Object)} method.
* <p>
- * This default collector just accepts all objects passed to it. Clients may subclass
- * to perform different processing on the objects passed to it.
+ * This default collector just accepts all objects passed to it. Clients may
+ * subclass to perform different processing on the objects passed to it.
+ *
* @param <T> The type of object accepted by this collector
* @since 2.0
*/
public class Collector<T> implements IQueryResult<T> {
private Set<T> collected = null;
- public static final Collector<?> EMPTY_COLLECTOR = new Collector<Object>() {
+ public static final Collector<?> EMPTY_COLLECTOR = new Collector<>() {
@Override
public boolean accept(Object val) {
return false;
@@ -60,14 +61,14 @@ public class Collector<T> implements IQueryResult<T> {
/**
* Accepts an object.
* <p>
- * This default implementation adds the objects to a list. Clients may
- * override this method to perform additional filtering, add different objects
- * to the list, short-circuit the traversal, or process the objects directly without
+ * This default implementation adds the objects to a list. Clients may override
+ * this method to perform additional filtering, add different objects to the
+ * list, short-circuit the traversal, or process the objects directly without
* collecting them.
*
* @param object the object to collect or visit
- * @return <code>true</code> if the traversal should continue,
- * or <code>false</code> to indicate the traversal should stop.
+ * @return <code>true</code> if the traversal should continue, or
+ * <code>false</code> to indicate the traversal should stop.
*/
public boolean accept(T object) {
getCollection().add(object);
@@ -76,6 +77,7 @@ public class Collector<T> implements IQueryResult<T> {
/**
* Adds the elements from one collector to this collector
+ *
* @param queryResult The collector from which the elements should be retrieved
*/
public void addAll(IQueryResult<T> queryResult) {
@@ -86,10 +88,10 @@ public class Collector<T> implements IQueryResult<T> {
}
/**
- * Returns the collection that is being used to collect results. Unlike {@linkplain #toSet()},
- * this returns the actual modifiable collection that is being used to store results. The
- * return value is only intended to be used within subclasses and should not be exposed
- * outside of a collection class.
+ * Returns the collection that is being used to collect results. Unlike
+ * {@linkplain #toSet()}, this returns the actual modifiable collection that is
+ * being used to store results. The return value is only intended to be used
+ * within subclasses and should not be exposed outside of a collection class.
*
* @return the collection being used to collect results.
*/
@@ -101,8 +103,9 @@ public class Collector<T> implements IQueryResult<T> {
/**
* Returns whether this collector is empty.
- * @return <code>true</code> if this collector has accepted any results,
- * and <code>false</code> otherwise.
+ *
+ * @return <code>true</code> if this collector has accepted any results, and
+ * <code>false</code> otherwise.
*/
@Override
public boolean isEmpty() {
@@ -116,7 +119,7 @@ public class Collector<T> implements IQueryResult<T> {
*/
@Override
public Iterator<T> iterator() {
- return collected == null ? Collections.<T> emptyList().iterator() : collected.iterator();
+ return collected == null ? Collections.<T>emptyList().iterator() : collected.iterator();
}
/**
@@ -131,8 +134,9 @@ public class Collector<T> implements IQueryResult<T> {
*
* @param clazz The type of array to return
* @return The array of results
- * @throws ArrayStoreException the runtime type of the specified array is
- * not a super-type of the runtime type of every collected object
+ * @throws ArrayStoreException the runtime type of the specified array is not a
+ * super-type of the runtime type of every collected
+ * object
*/
@Override
public T[] toArray(Class<T> clazz) {
@@ -155,7 +159,7 @@ public class Collector<T> implements IQueryResult<T> {
}
/**
- * Performs a query on this results of this collector.
+ * Performs a query on this results of this collector.
*/
@Override
public IQueryResult<T> query(IQuery<T> query, IProgressMonitor monitor) {
diff --git a/bundles/org.eclipse.equinox.p2.operations/.classpath b/bundles/org.eclipse.equinox.p2.operations/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.operations/.classpath
+++ b/bundles/org.eclipse.equinox.p2.operations/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.operations/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.operations/.settings/org.eclipse.jdt.core.prefs
index b6ee06ea1..3c15076cc 100644
--- a/bundles/org.eclipse.equinox.p2.operations/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.operations/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -36,6 +36,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -89,6 +90,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -125,7 +127,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -139,7 +142,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -260,7 +262,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -331,7 +332,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -476,7 +476,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.operations/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.operations/META-INF/MANIFEST.MF
index 664153f00..acddebfb1 100644
--- a/bundles/org.eclipse.equinox.p2.operations/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.operations/META-INF/MANIFEST.MF
@@ -2,14 +2,14 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.operations;singleton:=true
-Bundle-Version: 2.5.600.qualifier
+Bundle-Version: 2.6.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
-Export-Package: org.eclipse.equinox.internal.p2.operations;x-friends:="org.eclipse.pde.ui",
+Export-Package: org.eclipse.equinox.internal.p2.operations;x-friends:="org.eclipse.pde.ui,org.eclipse.equinox.p2.ui",
org.eclipse.equinox.p2.operations;version="2.0.0"
Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0",
org.eclipse.core.jobs;bundle-version="3.5.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Import-Package: org.eclipse.equinox.internal.p2.core.helpers,
org.eclipse.equinox.internal.p2.director,
diff --git a/bundles/org.eclipse.equinox.p2.operations/pom.xml b/bundles/org.eclipse.equinox.p2.operations/pom.xml
index 3df4006ac..ed63d9000 100644
--- a/bundles/org.eclipse.equinox.p2.operations/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.operations/pom.xml
@@ -14,11 +14,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.operations</artifactId>
- <version>2.5.600-SNAPSHOT</version>
+ <version>2.6.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/RequestFlexer.java b/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/RequestFlexer.java
index 6145cdb81..733c9ce6e 100644
--- a/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/RequestFlexer.java
+++ b/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/RequestFlexer.java
@@ -322,8 +322,8 @@ public class RequestFlexer {
SubMonitor subMonitor = SubMonitor.convert(monitor, 1);
Collection<IInstallableUnit> availableUpdates = new HashSet<>();
IQueryResult<IInstallableUnit> updatesAvailable = planner.updatesFor(iu, provisioningContext, subMonitor.split(1));
- for (Iterator<IInstallableUnit> iterator = updatesAvailable.iterator(); iterator.hasNext();) {
- availableUpdates.add(iterator.next());
+ for (IInstallableUnit unit : updatesAvailable) {
+ availableUpdates.add(unit);
}
return availableUpdates;
}
diff --git a/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/ResolutionResult.java b/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/ResolutionResult.java
index 73073d1e0..8021aa929 100644
--- a/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/ResolutionResult.java
+++ b/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/internal/p2/operations/ResolutionResult.java
@@ -21,7 +21,7 @@ import org.eclipse.equinox.p2.metadata.IInstallableUnit;
/**
* ResolutionResult describes problems in a provisioning plan in a structured
* way that can be presented to a user.
- *
+ *
* @since 2.0
*/
public class ResolutionResult {
@@ -71,7 +71,7 @@ public class ResolutionResult {
public String getSummaryReport() {
if (summaryStatus != null) {
- StringBuffer buffer = new StringBuffer();
+ StringBuilder buffer = new StringBuilder();
appendDetailText(summaryStatus, buffer, -1, false);
return buffer.toString();
}
@@ -80,7 +80,7 @@ public class ResolutionResult {
// Answers null if there is nothing to say about the ius
public String getDetailedReport(IInstallableUnit[] ius) {
- StringBuffer buffer = new StringBuffer();
+ StringBuilder buffer = new StringBuilder();
for (IInstallableUnit iu : ius) {
MultiStatus iuStatus = iuToStatusMap.get(iu);
if (iuStatus != null)
@@ -92,7 +92,7 @@ public class ResolutionResult {
return report;
}
- void appendDetailText(IStatus status, StringBuffer buffer, int indent, boolean includeTopLevelMessage) {
+ void appendDetailText(IStatus status, StringBuilder buffer, int indent, boolean includeTopLevelMessage) {
if (includeTopLevelMessage) {
for (int i = 0; i < indent; i++)
buffer.append(NESTING_INDENT);
diff --git a/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/ProvisioningJob.java b/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/ProvisioningJob.java
index 438bd3c44..ceb4cb23e 100644
--- a/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/ProvisioningJob.java
+++ b/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/ProvisioningJob.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2017 IBM Corporation and others.
+ * Copyright (c) 2007, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -25,7 +25,7 @@ import org.eclipse.osgi.util.NLS;
* can be run in the background by scheduling them, or they can
* be run by a client in a modal context. An additional progress monitor
* can be set into the job for progress reporting.
- *
+ *
* @since 2.0
*/
public abstract class ProvisioningJob extends Job {
@@ -51,8 +51,7 @@ public abstract class ProvisioningJob extends Job {
@Override
public void clearBlocked() {
super.clearBlocked();
- if (additionalMonitor instanceof IProgressMonitorWithBlocking)
- ((IProgressMonitorWithBlocking) additionalMonitor).clearBlocked();
+ additionalMonitor.clearBlocked();
}
@Override
@@ -77,8 +76,7 @@ public abstract class ProvisioningJob extends Job {
@Override
public void setBlocked(IStatus reason) {
super.setBlocked(reason);
- if (additionalMonitor instanceof IProgressMonitorWithBlocking)
- ((IProgressMonitorWithBlocking) additionalMonitor).setBlocked(reason);
+ additionalMonitor.setBlocked(reason);
}
@Override
@@ -108,9 +106,9 @@ public abstract class ProvisioningJob extends Job {
/**
* Constant which indicates that the job does not require a restart
- * upon completion. This constant is typically used for operations that
+ * upon completion. This constant is typically used for operations that
* do not modify the running profile.
- *
+ *
* @since 2.0
*/
public static final int RESTART_NONE = 1;
@@ -120,16 +118,16 @@ public abstract class ProvisioningJob extends Job {
* restart or apply the configuration changes in order to pick up the
* changes performed by the job. This constant is typically used for
* operations that modify the running profile.
- *
+ *
* @since 2.0
*/
public static final int RESTART_OR_APPLY = 2;
/**
* Constant which indicates that the job requires the user to restart
* in order to pick up the changes performed by the job. This constant
- * is typically used for operations that modify the running profile but don't
+ * is typically used for operations that modify the running profile but don't
* handle dynamic changes without restarting the workbench.
- *
+ *
* @since 2.0
*/
public static final int RESTART_ONLY = 3;
@@ -141,7 +139,7 @@ public abstract class ProvisioningJob extends Job {
* Create a provisioning job with the given name that uses the
* provided provisioning session for retrieving any services
* needed.
- *
+ *
* @param name the name of the job
* @param session the session providing the services
*/
@@ -153,7 +151,7 @@ public abstract class ProvisioningJob extends Job {
/**
* Return the provisioning session that is used by the receiver
* when retrieving necessary provisioning services.
- *
+ *
* @return the session
* @see ProvisioningSession
*/
@@ -177,10 +175,10 @@ public abstract class ProvisioningJob extends Job {
* Executes this job. Returns the result of the execution.
* This method is overridden to look for a wrapped progress monitor for
* reporting progress.
- *
+ *
* @noreference This method is not intended to be referenced by clients.
* @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
- *
+ *
*/
@Override
public final IStatus run(IProgressMonitor monitor) {
@@ -199,20 +197,20 @@ public abstract class ProvisioningJob extends Job {
* the current thread. This method can be called directly by
* clients, or in the course of running the job in the
* background.
- *
+ *
* @param monitor
* the progress monitor to use for the operation
- *
+ *
* @return a status indicating the result of the operation.
- *
+ *
*/
public abstract IStatus runModal(IProgressMonitor monitor);
/**
* Return the restart policy that is appropriate for this job.
- *
+ *
* @return a constant indicating the restart policy
- *
+ *
* @see #RESTART_NONE
* @see #RESTART_ONLY
* @see #RESTART_OR_APPLY
@@ -223,7 +221,7 @@ public abstract class ProvisioningJob extends Job {
/**
* Return an error status that can be used to report the specified exception.
- *
+ *
* @param message the message that should be used in the status
* @param e the exception to be reported
* @return a status that can be used to describe the exception
diff --git a/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/UpdateOperation.java b/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/UpdateOperation.java
index f562ff3b3..afaa5745f 100644
--- a/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/UpdateOperation.java
+++ b/bundles/org.eclipse.equinox.p2.operations/src/org/eclipse/equinox/p2/operations/UpdateOperation.java
@@ -28,10 +28,10 @@ import org.eclipse.equinox.p2.query.*;
/**
* An UpdateOperation describes an operation that updates {@link IInstallableUnit}s in
* a profile.
- *
+ *
* The following snippet shows how one might use an UpdateOperation to check for updates
* to the profile and then install them in the background.
- *
+ *
* <pre>
* UpdateOperation op = new UpdateOperation(session);
* IStatus result = op.resolveModal(monitor);
@@ -39,13 +39,13 @@ import org.eclipse.equinox.p2.query.*;
* op.getProvisioningJob(monitor).schedule();
* }
* </pre>
- *
+ *
* The life cycle of an UpdateOperation is different than that of the other
* operations. Since assembling the list of possible updates may be costly,
* clients should not have to create a new update operation if the desired updates
* to be applied need to change. In this case, the client can set a new set of
* chosen updates on the update operation and resolve again.
- *
+ *
* <pre>
* UpdateOperation op = new UpdateOperation(session);
* IStatus result = op.resolveModal(monitor);
@@ -57,7 +57,7 @@ import org.eclipse.equinox.p2.query.*;
* IStatus result = op.resolveModal(monitor);
* }
* </pre>
- *
+ *
* @noextend This class is not intended to be subclassed by clients.
* @since 2.0
*/
@@ -77,7 +77,7 @@ public class UpdateOperation extends ProfileChangeOperation {
* Create an update operation on the specified provisioning session that updates
* the specified IInstallableUnits. Unless otherwise specified, the operation will
* be associated with the currently running profile.
- *
+ *
* @param session the session to use for obtaining provisioning services
* @param toBeUpdated the IInstallableUnits to be updated.
*/
@@ -89,7 +89,7 @@ public class UpdateOperation extends ProfileChangeOperation {
/**
* Create an update operation that will update all of the user-visible installable
* units in the profile (the profile roots).
- *
+ *
* @param session the session providing the provisioning services
*/
public UpdateOperation(ProvisioningSession session) {
@@ -100,9 +100,9 @@ public class UpdateOperation extends ProfileChangeOperation {
* Set the updates that should be selected from the set of available updates.
* If the selected updates are not specified, then the latest available update
* for each IInstallableUnit with updates will be chosen.
- *
+ *
* @param defaultUpdates the updates that should be chosen from all of the available
- * updates.
+ * updates.
*/
public void setSelectedUpdates(Update[] defaultUpdates) {
this.defaultUpdates = new ArrayList<>(Arrays.asList(defaultUpdates));
@@ -112,7 +112,7 @@ public class UpdateOperation extends ProfileChangeOperation {
* Get the updates that have been selected from the set of available updates.
* If none have been specified by the client, then the latest available update
* for each IInstallableUnit with updates will be chosen.
- *
+ *
* @return the updates that should be chosen from all of the available updates
*/
public Update[] getSelectedUpdates() {
@@ -124,7 +124,7 @@ public class UpdateOperation extends ProfileChangeOperation {
/**
* Get the list of all possible updates. This list may include multiple versions
* of updates for the same IInstallableUnit, as well as patches to the IInstallableUnit.
- *
+ *
* @return an array of all possible updates
*/
public Update[] getPossibleUpdates() {
@@ -143,12 +143,13 @@ public class UpdateOperation extends ProfileChangeOperation {
// We must consult the planner
IQueryResult<IInstallableUnit> replacements = session.getPlanner().updatesFor(iu, context, monitor);
updates = new ArrayList<>();
- for (Iterator<IInstallableUnit> replacementIterator = replacements.iterator(); replacementIterator.hasNext();) {
+ for (IInstallableUnit replacementIU : replacements) {
// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=273967
- // In the case of patches, it's possible that a patch is returned as an available update
- // even though it is already installed, because we are querying each IU for updates individually.
+ // In the case of patches, it's possible that a patch is returned as an
+ // available update
+ // even though it is already installed, because we are querying each IU for
+ // updates individually.
// For now, we ignore any proposed update that is already installed.
- IInstallableUnit replacementIU = replacementIterator.next();
IQueryResult<IInstallableUnit> alreadyInstalled = profile.query(QueryUtil.createIUQuery(replacementIU), null);
if (alreadyInstalled.isEmpty()) {
Update update = new Update(iu, replacementIU);
@@ -275,12 +276,12 @@ public class UpdateOperation extends ProfileChangeOperation {
/*
* Get the IInstallable units for the specified profile
- *
+ *
* @param profileId the profile in question
* @param all <code>true</code> if all IInstallableUnits in the profile should
* be returned, <code>false</code> only those IInstallableUnits marked as (user visible) roots
* should be returned.
- *
+ *
* @return an array of IInstallableUnits installed in the profile.
*/
private Collection<IInstallableUnit> getInstalledIUs() {
@@ -321,7 +322,7 @@ public class UpdateOperation extends ProfileChangeOperation {
* Overridden because our resolution job life cycle is different. We have a job
* before we've computed the profile change request, so we must ensure that we
* have already computed the profile change request.
- *
+ *
*/
@Override
public boolean hasResolved() {
diff --git a/bundles/org.eclipse.equinox.p2.publisher.eclipse/.classpath b/bundles/org.eclipse.equinox.p2.publisher.eclipse/.classpath
index 030607499..cc48f9f27 100644
--- a/bundles/org.eclipse.equinox.p2.publisher.eclipse/.classpath
+++ b/bundles/org.eclipse.equinox.p2.publisher.eclipse/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" output="bin_ant" path="src_ant"/>
diff --git a/bundles/org.eclipse.equinox.p2.publisher.eclipse/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.publisher.eclipse/.settings/org.eclipse.jdt.core.prefs
index aac18542e..3fefd7217 100644
--- a/bundles/org.eclipse.equinox.p2.publisher.eclipse/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.publisher.eclipse/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -92,6 +93,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -127,7 +129,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -141,7 +144,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -262,7 +264,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -333,7 +334,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -478,7 +478,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.publisher.eclipse/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.equinox.p2.publisher.eclipse/.settings/org.eclipse.jdt.ui.prefs
index 708515333..d3d075e63 100644
--- a/bundles/org.eclipse.equinox.p2.publisher.eclipse/.settings/org.eclipse.jdt.ui.prefs
+++ b/bundles/org.eclipse.equinox.p2.publisher.eclipse/.settings/org.eclipse.jdt.ui.prefs
@@ -23,7 +23,7 @@ sp_cleanup.always_use_this_for_non_static_method_access=false
sp_cleanup.convert_to_enhanced_for_loop=false
sp_cleanup.correct_indentation=false
sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.format_source_code_changes_only=true
sp_cleanup.make_local_variable_final=false
sp_cleanup.make_parameters_final=false
sp_cleanup.make_private_fields_final=true
diff --git a/bundles/org.eclipse.equinox.p2.publisher.eclipse/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.publisher.eclipse/META-INF/MANIFEST.MF
index 8edbfb523..0a8d62359 100644
--- a/bundles/org.eclipse.equinox.p2.publisher.eclipse/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.publisher.eclipse/META-INF/MANIFEST.MF
@@ -2,12 +2,12 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %bundleName
Bundle-SymbolicName: org.eclipse.equinox.p2.publisher.eclipse;singleton:=true
-Bundle-Version: 1.3.400.qualifier
+Bundle-Version: 1.4.2.qualifier
Bundle-Activator: org.eclipse.pde.internal.publishing.Activator
Bundle-ActivationPolicy: lazy
Bundle-Vendor: %providerName
Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Import-Package: org.eclipse.equinox.app;version="[1.0.0,2.0.0)",
org.eclipse.equinox.frameworkadmin;version="[2.0.0,3.0.0)",
org.eclipse.equinox.internal.frameworkadmin.equinox,
diff --git a/bundles/org.eclipse.equinox.p2.publisher.eclipse/forceQualifierUpdate.txt b/bundles/org.eclipse.equinox.p2.publisher.eclipse/forceQualifierUpdate.txt
index 56f1032a8..64c6b35ef 100644
--- a/bundles/org.eclipse.equinox.p2.publisher.eclipse/forceQualifierUpdate.txt
+++ b/bundles/org.eclipse.equinox.p2.publisher.eclipse/forceQualifierUpdate.txt
@@ -1,2 +1,3 @@
# To force a version qualifier update add the bug here
Bug 403352 - Update all parent versions to match our build stream
+Bug 566471 - I20200828-0150 - Comparator Errors Found \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.publisher.eclipse/pom.xml b/bundles/org.eclipse.equinox.p2.publisher.eclipse/pom.xml
index 98aea653e..cf46b80e9 100644
--- a/bundles/org.eclipse.equinox.p2.publisher.eclipse/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.publisher.eclipse/pom.xml
@@ -4,12 +4,12 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.publisher.eclipse</artifactId>
- <version>1.3.400-SNAPSHOT</version>
+ <version>1.4.2-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/compatibility/IGeneratorConstants.java b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/compatibility/IGeneratorConstants.java
index b2c980f8d..b81373dc0 100644
--- a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/compatibility/IGeneratorConstants.java
+++ b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/compatibility/IGeneratorConstants.java
@@ -21,7 +21,7 @@ package org.eclipse.equinox.internal.p2.publisher.compatibility;
public interface IGeneratorConstants {
public static final String DASH = "-"; //$NON-NLS-1$
- //arguments understood by the old metadata generator application
+ // arguments understood by the old metadata generator application
public static final String PUBLISH_ARTIFACTS = "-publishArtifacts"; //$NON-NLS-1$
public static final String PA = "-pa"; //$NON-NLS-1$
public static final String PUBLISH_ATIFACT_REPOSITORY = "-publishArtifactRepository"; //$NON-NLS-1$
@@ -29,6 +29,11 @@ public interface IGeneratorConstants {
public static final String APPEND = "-append"; //$NON-NLS-1$
public static final String NO_DEFAULT_IUS = "-noDefaultIUs"; //$NON-NLS-1$
public static final String COMPRESS = "-compress"; //$NON-NLS-1$
+ /**
+ * @noreference This field is not intended to be referenced by clients.
+ * @deprecated See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a> for details.
+ */
+ @Deprecated(forRemoval = true, since = "1.6.0")
public static final String REUSE_PACK200 = "-reusePack200Files"; //$NON-NLS-1$
public static final String SOURCE = "-source"; //$NON-NLS-1$
public static final String INPLACE = "-inplace"; //$NON-NLS-1$
diff --git a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/BrandingIron.java b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/BrandingIron.java
index fe2d176d4..a6c14f134 100644
--- a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/BrandingIron.java
+++ b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/BrandingIron.java
@@ -16,7 +16,11 @@ package org.eclipse.equinox.internal.p2.publisher.eclipse;
import java.io.*;
import javax.xml.transform.TransformerException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
import org.eclipse.equinox.p2.metadata.Version;
+import org.eclipse.pde.internal.publishing.Activator;
import org.eclipse.pde.internal.publishing.Utils;
import org.eclipse.pde.internal.swt.tools.IconExe;
@@ -69,7 +73,7 @@ public class BrandingIron {
icons = null;
}
}
- //trim whitespace
+ // trim whitespace
if (icons != null) {
for (int i = 0; i < icons.length; i++) {
icons[i] = icons[i].trim();
@@ -87,8 +91,9 @@ public class BrandingIron {
File root = descriptor.getLocation();
- // if the root does not exists (happens in some packaging cases) or
- // there is already a file with target name and we don't need to update its icons, don't do anything
+ // if the root does not exists (happens in some packaging cases) or
+ // there is already a file with target name and we don't need to update its
+ // icons, don't do anything
String testName = os.equals("win32") ? name + ".exe" : name; //$NON-NLS-1$ //$NON-NLS-2$
if (!root.exists() || (!brandIcons && new File(root, testName).exists()))
return;
@@ -103,9 +108,10 @@ public class BrandingIron {
}
descriptor.setLocation(root);
- if (os==null)
+ if (os == null)
renameLauncher(descriptor);
- else switch (os) {
+ else
+ switch (os) {
case "win32": //$NON-NLS-1$
brandWindows(descriptor);
break;
@@ -127,7 +133,7 @@ public class BrandingIron {
default:
renameLauncher(descriptor);
break;
- }
+ }
descriptor.setExecutableName(name, true);
}
@@ -145,8 +151,7 @@ public class BrandingIron {
File icon = null;
if (icons.length > 0) {
for (String icon1 : icons) {
- if (icon1.toLowerCase().endsWith(".xpm")) {
- //$NON-NLS-1$
+ if (icon1.toLowerCase().endsWith(".xpm")) { //$NON-NLS-1$
icon = new File(icon1);
break;
}
@@ -181,11 +186,11 @@ public class BrandingIron {
}
private void brandMac(ExecutablesDescriptor descriptor) throws Exception {
- //Initially the files are in: <root>/Eclipse.app/
- //and they must appear in <root>/MyAppName.app/
- //Because java does not support the rename of a folder, files are copied.
+ // Initially the files are in: <root>/Eclipse.app/
+ // and they must appear in <root>/MyAppName.app/
+ // Because java does not support the rename of a folder, files are copied.
- //Initialize the target folders
+ // Initialize the target folders
File root = descriptor.getLocation();
File target = root;
@@ -202,15 +207,16 @@ public class BrandingIron {
initialRoot = new File(root, "eclipse.app/Contents"); //$NON-NLS-1$
if (!initialRoot.exists())
throw new FileNotFoundException("cannot find launcher root (Eclipse.app or Launcher.app)"); //$NON-NLS-1$
- // use the canonical rep to avoid possible issues from case-insensitive file systems
+ // use the canonical rep to avoid possible issues from case-insensitive file
+ // systems
initialRoot = initialRoot.getCanonicalFile();
copyMacLauncher(descriptor, initialRoot, target);
String iconName = ""; //$NON-NLS-1$
if (brandIcons) {
File icon = null;
for (String icon1 : icons) {
- if (icon1.toLowerCase().endsWith(".icns")) {
- //$NON-NLS-1$
+ if (icon1.toLowerCase().endsWith(".icns")) { //$NON-NLS-1$
+ // $NON-NLS-1$
icon = new File(icon1);
if (icon.exists()) {
break;
@@ -223,7 +229,7 @@ public class BrandingIron {
try {
// canonicalize to ensure case matches
initialIcon = initialIcon.getCanonicalFile();
- } catch (IOException e) { /*ignore*/
+ } catch (IOException e) { /* ignore */
}
File targetIcon = new File(target, "Resources/" + iconName); //$NON-NLS-1$
@@ -246,8 +252,9 @@ public class BrandingIron {
}
/**
- * Brand the splash.app Info.plist and link or copy the mac launcher.
- * It is assumed that the mac launcher has been branded already.
+ * Brand the splash.app Info.plist and link or copy the mac launcher. It is
+ * assumed that the mac launcher has been branded already.
+ *
* @param descriptor
* @param initialRoot
* @param target
@@ -255,9 +262,10 @@ public class BrandingIron {
*/
private void brandMacSplash(ExecutablesDescriptor descriptor, File initialRoot, File target, String iconName) {
String splashContents = "Resources/Splash.app/Contents"; //$NON-NLS-1$
- modifyInfoPListFile(descriptor, new File(initialRoot, splashContents), new File(target, splashContents), iconName);
+ modifyInfoPListFile(descriptor, new File(initialRoot, splashContents), new File(target, splashContents),
+ iconName);
- //link the MacOS launcher for the splash app
+ // link the MacOS launcher for the splash app
String splashMacOS = splashContents + "/MacOS"; //$NON-NLS-1$
File macOSDir = new File(target, "MacOS"); //$NON-NLS-1$
File splashMacOSDir = new File(target, splashMacOS);
@@ -270,7 +278,7 @@ public class BrandingIron {
String osName = System.getProperty("os.name"); //$NON-NLS-1$
if (osName != null && !osName.startsWith("Windows")) { //$NON-NLS-1$
try {
- String[] command = new String[] {"ln", "-sf", "../../../MacOS/" + name, name}; //$NON-NLS-1$ //$NON-NLS-2$//$NON-NLS-3$
+ String[] command = new String[] { "ln", "-sf", "../../../MacOS/" + name, name }; //$NON-NLS-1$ //$NON-NLS-2$//$NON-NLS-3$
Process proc = Runtime.getRuntime().exec(command, null, splashMacOSDir);
result = proc.waitFor();
} catch (IOException e) {
@@ -281,16 +289,16 @@ public class BrandingIron {
}
if (result != 0) {
- //ln failed, or we are on windows, just copy the executable instead
+ // ln failed, or we are on windows, just copy the executable instead
try {
Utils.copy(new File(macOSDir, name), targetLauncher);
try {
- Runtime.getRuntime().exec(new String[] {"chmod", "755", targetLauncher.getAbsolutePath()}); //$NON-NLS-1$ //$NON-NLS-2$
+ Runtime.getRuntime().exec(new String[] { "chmod", "755", targetLauncher.getAbsolutePath() }); //$NON-NLS-1$ //$NON-NLS-2$
} catch (IOException e) {
// ignore
}
} catch (IOException e) {
- System.out.println("Could not copy macosx splash launcher"); //$NON-NLS-1$
+ LogHelper.log(new Status(IStatus.ERROR, Activator.ID, "Could not copy macosx splash launcher", e)); //$NON-NLS-1$
}
}
@@ -307,9 +315,11 @@ public class BrandingIron {
descriptor.addFile(targetLauncher);
}
- private File findLauncher(File root) {
- for (String launcherName : new String[] {"launcher", "eclipse"}) { //$NON-NLS-1$ //$NON-NLS-2$
- File launcher = new File(root, launcherName);
+ private File findLauncher(File root, String... candidates) {
+ if (candidates.length == 0)
+ candidates = new String[] { "launcher", "eclipse" }; //$NON-NLS-1$ //$NON-NLS-2$
+ for (String candidate : candidates) {
+ File launcher = new File(root, candidate);
if (launcher.exists())
return launcher;
}
@@ -323,7 +333,7 @@ public class BrandingIron {
source = source.getCanonicalFile();
target = target.getCanonicalFile();
} catch (IOException e) {
- System.out.println("Could not copy macosx resources."); //$NON-NLS-1$
+ LogHelper.log(new Status(IStatus.ERROR, Activator.ID, "Could not copy macosx resources.", e)); //$NON-NLS-1$
return;
}
if (source.equals(target))
@@ -351,26 +361,38 @@ public class BrandingIron {
private void brandWindows(ExecutablesDescriptor descriptor) throws Exception {
File root = descriptor.getLocation();
- File templateLauncher = new File(root, name + ".exe"); //$NON-NLS-1$
- if (!templateLauncher.exists())
- templateLauncher = new File(root, "launcher.exe"); //$NON-NLS-1$
- if (!templateLauncher.exists())
- templateLauncher = new File(root, "eclipse.exe"); //$NON-NLS-1$
- if (brandIcons) {
- if (templateLauncher.exists()) {
+ String binary = name + ".exe"; //$NON-NLS-1$
+ File templateLauncher = findLauncher(root, binary, "launcher.exe", "eclipse.exe"); //$NON-NLS-1$ //$NON-NLS-2$
+ if (templateLauncher != null) {
+ if (brandIcons) {
String[] args = new String[icons.length + 1];
args[0] = templateLauncher.getAbsolutePath();
System.arraycopy(icons, 0, args, 1, icons.length);
IconExe.main(args);
- } else {
- System.out.println("Could not find executable to brand"); //$NON-NLS-1$
}
+
+ if (!templateLauncher.getName().equals(binary)) {
+ File targetLauncher = new File(root, binary);
+ templateLauncher.renameTo(targetLauncher);
+ descriptor.replace(templateLauncher, targetLauncher);
+ }
+ } else {
+ LogHelper.log(new Status(IStatus.ERROR, Activator.ID, "Could not find executable to brand", null)); //$NON-NLS-1$
}
- File targetLauncher = new File(root, name + ".exe"); //$NON-NLS-1$
- if (templateLauncher.exists() && !templateLauncher.getName().equals(name + ".exe")) { //$NON-NLS-1$
- templateLauncher.renameTo(targetLauncher);
- descriptor.replace(templateLauncher, targetLauncher);
+
+ // Handle console application
+ binary = name + "c.exe"; //$NON-NLS-1$
+ templateLauncher = findLauncher(root, binary, "launcherc.exe", "eclipsec.exe"); //$NON-NLS-1$ //$NON-NLS-2$
+ if (templateLauncher != null) {
+ if (!templateLauncher.getName().equals(binary)) {
+ File targetLauncher = new File(root, binary);
+ templateLauncher.renameTo(targetLauncher);
+ descriptor.replace(templateLauncher, targetLauncher);
+ }
+ } else {
+ LogHelper.log(new Status(IStatus.ERROR, Activator.ID, "Could not find console executable to brand", null)); //$NON-NLS-1$
}
+
descriptor.setExecutableName(name, true);
}
@@ -392,7 +414,7 @@ public class BrandingIron {
if (!launcher.exists()) {
launcher = eclipseLauncher;
} else if (eclipseLauncher.exists() && !targetFile.equals(eclipseLauncher)) {
- //we may actually have both if exporting from the mac
+ // we may actually have both if exporting from the mac
eclipseLauncher.delete();
descriptor.removeFile(eclipseLauncher);
}
@@ -400,7 +422,7 @@ public class BrandingIron {
try {
Utils.copy(launcher, targetFile);
} catch (IOException e) {
- System.out.println("Could not copy macosx launcher"); //$NON-NLS-1$
+ LogHelper.log(new Status(IStatus.ERROR, Activator.ID, "Could not copy macosx launcher", e)); //$NON-NLS-1$
return;
}
launcher.delete();
@@ -408,10 +430,11 @@ public class BrandingIron {
descriptor.replace(launcher, targetFile);
}
try {
- //Force the executable bit on the exe because it has been lost when copying the file
- Runtime.getRuntime().exec(new String[] {"chmod", "755", targetFile.getAbsolutePath()}); //$NON-NLS-1$ //$NON-NLS-2$
+ // Force the executable bit on the exe because it has been lost when copying the
+ // file
+ Runtime.getRuntime().exec(new String[] { "chmod", "755", targetFile.getAbsolutePath() }); //$NON-NLS-1$ //$NON-NLS-2$
} catch (IOException e) {
- //ignore
+ // ignore
}
descriptor.setExecutableName(name, false);
}
@@ -427,17 +450,17 @@ public class BrandingIron {
private void copyMacIni(ExecutablesDescriptor descriptor, File initialRoot, File target, String iconName) {
String brandedIniName = "MacOS/" + name + ".ini"; //$NON-NLS-1$//$NON-NLS-2$
// 4 possibilities, in order of preference:
- // rcp.app/Contents/MacOS/rcp.ini (targetFile)
- // Eclipse.app/Contents/MacOS/rcp.ini (brandedIni)
- // Eclipse.app/Contents/MacOS/eclipse.ini (ini)
- // Eclipse.app/Contents/MacOS/Eclipse.ini (ini2)
+ // rcp.app/Contents/MacOS/rcp.ini (targetFile)
+ // Eclipse.app/Contents/MacOS/rcp.ini (brandedIni)
+ // Eclipse.app/Contents/MacOS/eclipse.ini (ini)
+ // Eclipse.app/Contents/MacOS/Eclipse.ini (ini2)
File targetFile = getCanonicalFile(new File(target, brandedIniName));
File brandedIni = getCanonicalFile(new File(initialRoot, brandedIniName));
File ini = getCanonicalFile(new File(initialRoot, "MacOS/eclipse.ini")); //$NON-NLS-1$
File ini2 = getCanonicalFile(new File(initialRoot, "MacOS/Eclipse.ini")); //$NON-NLS-1$
if (targetFile.exists()) {
- //an ini already exists at the target, use that
+ // an ini already exists at the target, use that
if (brandedIni.exists() && !brandedIni.equals(targetFile)) {
brandedIni.delete();
descriptor.removeFile(brandedIni);
@@ -452,7 +475,7 @@ public class BrandingIron {
}
ini = targetFile;
} else if (brandedIni.exists()) {
- //take the one that is already branded
+ // take the one that is already branded
if (ini.exists() && !ini.equals(brandedIni)) {
ini.delete();
descriptor.removeFile(ini);
@@ -466,7 +489,10 @@ public class BrandingIron {
if (ini.exists()) {
if (ini2.exists() && !ini2.equals(ini)) {
// this should not happen really
- System.out.printf("Found both %s and %s - discarding the latter", ini.getAbsolutePath(), ini2.getAbsolutePath()); //$NON-NLS-1$
+ LogHelper.log(new Status(IStatus.ERROR, Activator.ID,
+ String.format("Found both %s and %s - discarding the latter", ini.getAbsolutePath(), //$NON-NLS-1$
+ ini2.getAbsolutePath()),
+ null)); // $NON-NLS-1$
ini2.delete();
descriptor.removeFile(ini2);
}
@@ -480,7 +506,7 @@ public class BrandingIron {
try {
buffer = readFile(ini);
} catch (IOException e) {
- System.out.println("Impossible to brand ini file"); //$NON-NLS-1$
+ LogHelper.log(new Status(IStatus.ERROR, Activator.ID, "Impossible to brand ini file", e)); //$NON-NLS-1$
return;
}
@@ -498,22 +524,23 @@ public class BrandingIron {
ini.delete();
descriptor.replace(ini, targetFile);
}
- } catch (FileNotFoundException e) {
- System.out.println("Impossible to brand ini file"); //$NON-NLS-1$
- return;
} catch (IOException e) {
- System.out.println("Impossible to brand ini file"); //$NON-NLS-1$
+ LogHelper.log(new Status(IStatus.ERROR, Activator.ID, "Impossible to brand ini file", e)); //$NON-NLS-1$
return;
}
}
- private void modifyInfoPListFile(ExecutablesDescriptor descriptor, File initialRoot, File targetRoot, String iconName) {
+ private void modifyInfoPListFile(ExecutablesDescriptor descriptor, File initialRoot, File targetRoot,
+ String iconName) {
File infoPList = new File(initialRoot, "Info.plist"); //$NON-NLS-1$
InfoPListEditor infoPListEditor = null;
try {
infoPListEditor = InfoPListEditor.loadPListEditor(infoPList);
} catch (IOException e) {
- System.out.println("Impossible to create info.plist editor for " + infoPList.getAbsolutePath() + ". Caused by " + e.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
+ LogHelper.log(new Status(IStatus.ERROR, Activator.ID,
+ "Impossible to create info.plist editor for " + infoPList.getAbsolutePath() //$NON-NLS-1$
+ + ". Caused by " + e.getMessage(), //$NON-NLS-1$
+ e));
return;
}
@@ -528,7 +555,8 @@ public class BrandingIron {
if (version != null) {
// CFBundleShortVersionString is to be 3 segments only
// http://developer.apple.com/library/mac/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-111349
- StringBuilder sv = new StringBuilder(version.getSegmentCount() > 0 ? version.getSegment(0).toString() : "0"); //$NON-NLS-1$
+ StringBuilder sv = new StringBuilder(
+ version.getSegmentCount() > 0 ? version.getSegment(0).toString() : "0"); //$NON-NLS-1$
sv.append('.');
sv.append(version.getSegmentCount() > 1 ? version.getSegment(1).toString() : "0"); //$NON-NLS-1$
sv.append('.');
@@ -541,25 +569,26 @@ public class BrandingIron {
infoPListEditor.setKey(InfoPListEditor.ICON_KEY, iconName);
}
- File target = new File(targetRoot, "Info.plist"); //$NON-NLS-1$;
+ File target = new File(targetRoot, "Info.plist"); //$NON-NLS-1$ ;
try {
target.getParentFile().mkdirs();
infoPListEditor.save(target);
} catch (TransformerException e) {
- System.out.println("Impossible to save info.plist file " + target.getAbsolutePath()); //$NON-NLS-1$
+ LogHelper.log(new Status(IStatus.ERROR, Activator.ID,
+ "Impossible to save info.plist file " + target.getAbsolutePath(), e)); //$NON-NLS-1$
return;
}
try {
if (!infoPList.getCanonicalFile().equals(target.getCanonicalFile()))
infoPList.delete();
} catch (IOException e) {
- //ignore
+ // ignore
}
descriptor.replace(infoPList, target);
}
private int scan(StringBuffer buf, int start, String targetName) {
- return scan(buf, start, new String[] {targetName});
+ return scan(buf, start, new String[] { targetName });
}
private int scan(StringBuffer buf, int start, String[] targets) {
diff --git a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ExecutablesDescriptor.java b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ExecutablesDescriptor.java
index c7f44a01e..5b1c6f82e 100644
--- a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ExecutablesDescriptor.java
+++ b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ExecutablesDescriptor.java
@@ -113,12 +113,9 @@ public class ExecutablesDescriptor {
}
private static ExecutablesDescriptor createMacDescriptor(String os, String executable, File location) {
- File files[] = location.listFiles(new FilenameFilter() {
- @Override
- public boolean accept(File dir, String name) {
- int length = name.length();
- return length > 3 && name.substring(length - 4, length).equalsIgnoreCase(".app"); //$NON-NLS-1$
- }
+ File files[] = location.listFiles((FilenameFilter) (dir, name) -> {
+ int length = name.length();
+ return length > 3 && name.substring(length - 4, length).equalsIgnoreCase(".app"); //$NON-NLS-1$
});
ExecutablesDescriptor result = new ExecutablesDescriptor(os, executable, location, files);
result.iniFile = new File(location, executable + ".ini"); //$NON-NLS-1$
@@ -248,10 +245,6 @@ public class ExecutablesDescriptor {
private void updateExecutableName(String newName) {
if (newName.equalsIgnoreCase(executableName))
return;
- String targetIni = executableName + ".ini"; //$NON-NLS-1$
- String targetExecutable = executableName;
- String executableExtension = Constants.OS_WIN32.equals(os) ? ".exe" : ""; //$NON-NLS-1$ //$NON-NLS-2$
- targetExecutable = executableName + executableExtension;
Set<File> filesCopy = new HashSet<>(files);
for (File file : filesCopy) {
String base = file.getParent();
@@ -260,9 +253,13 @@ public class ExecutablesDescriptor {
base = base == null ? "" : base + "/"; //$NON-NLS-1$ //$NON-NLS-2$
if (Constants.OS_MACOSX.equals(os) && base.startsWith(executableName + ".app")) //$NON-NLS-1$
base = newName + ".app" + base.substring(executableName.length() + 4); //$NON-NLS-1$
- if (file.getName().equalsIgnoreCase(targetExecutable))
- replace(file, new File(base + newName + executableExtension));
- else if (file.getName().equalsIgnoreCase(targetIni))
+ if (file.getName().equalsIgnoreCase(executableName))
+ replace(file, new File(base + newName));
+ else if (file.getName().equalsIgnoreCase(executableName + ".exe")) //$NON-NLS-1$
+ replace(file, new File(base + newName + ".exe")); //$NON-NLS-1$
+ else if (file.getName().equalsIgnoreCase(executableName + "c.exe")) //$NON-NLS-1$
+ replace(file, new File(base + newName + "c.exe")); //$NON-NLS-1$
+ else if (file.getName().equalsIgnoreCase(executableName + ".ini")) //$NON-NLS-1$
replace(file, new File(base + newName + ".ini")); //$NON-NLS-1$
else if (Constants.OS_MACOSX.equals(os))
replace(file, new File(base + file.getName()));
diff --git a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/BundlesAction.java b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/BundlesAction.java
index 1eaa16014..f05207712 100644
--- a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/BundlesAction.java
+++ b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/BundlesAction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2018 Code 9 and others.
+ * Copyright (c) 2008, 2021 Code 9 and others.
*
* This
* program and the accompanying materials are made available under the terms of
@@ -14,6 +14,7 @@
* IBM - ongoing development
* SAP AG - make optional dependencies non-greedy by default; allow setting greedy through directive (bug 247099)
* Red Hat Inc. - Bug 460967
+ * Christoph Läubrich - Bug 574952 p2 should distinguish between "product plugins" and "configuration plugins" (gently sponsored by Compart AG)
******************************************************************************/
package org.eclipse.equinox.p2.publisher.eclipse;
@@ -55,9 +56,9 @@ import org.osgi.framework.wiring.BundleRequirement;
import org.osgi.resource.Namespace;
/**
- * Publish IUs for all of the bundles in a given set of locations or described by a set of
- * bundle descriptions. The locations can be actual locations of the bundles or folders
- * of bundles.
+ * Publish IUs for all of the bundles in a given set of locations or described
+ * by a set of bundle descriptions. The locations can be actual locations of the
+ * bundles or folders of bundles.
*
* This action consults the following types of advice:
* </ul>
@@ -72,15 +73,17 @@ import org.osgi.resource.Namespace;
public class BundlesAction extends AbstractPublisherAction {
/**
- * A capability name in the {@link PublisherHelper#NAMESPACE_ECLIPSE_TYPE} namespace
- * representing and OSGi bundle resource
+ * A capability name in the {@link PublisherHelper#NAMESPACE_ECLIPSE_TYPE}
+ * namespace representing and OSGi bundle resource
+ *
* @see IProvidedCapability#getName()
*/
public static final String TYPE_ECLIPSE_BUNDLE = "bundle"; //$NON-NLS-1$
/**
- * A capability name in the {@link PublisherHelper#NAMESPACE_ECLIPSE_TYPE} namespace
- * representing a source bundle
+ * A capability name in the {@link PublisherHelper#NAMESPACE_ECLIPSE_TYPE}
+ * namespace representing a source bundle
+ *
* @see IProvidedCapability#getName()
*/
public static final String TYPE_ECLIPSE_SOURCE = "source"; //$NON-NLS-1$
@@ -89,30 +92,37 @@ public class BundlesAction extends AbstractPublisherAction {
public static final String CAPABILITY_NS_OSGI_BUNDLE = "osgi.bundle"; //$NON-NLS-1$
public static final String CAPABILITY_NS_OSGI_FRAGMENT = "osgi.fragment"; //$NON-NLS-1$
- public static final IProvidedCapability BUNDLE_CAPABILITY = MetadataFactory.createProvidedCapability(PublisherHelper.NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_BUNDLE, Version.createOSGi(1, 0, 0));
- public static final IProvidedCapability SOURCE_BUNDLE_CAPABILITY = MetadataFactory.createProvidedCapability(PublisherHelper.NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_SOURCE, Version.createOSGi(1, 0, 0));
+ public static final IProvidedCapability BUNDLE_CAPABILITY = MetadataFactory.createProvidedCapability(
+ PublisherHelper.NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_BUNDLE, Version.createOSGi(1, 0, 0));
+ public static final IProvidedCapability SOURCE_BUNDLE_CAPABILITY = MetadataFactory.createProvidedCapability(
+ PublisherHelper.NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_SOURCE, Version.createOSGi(1, 0, 0));
static final String DEFAULT_BUNDLE_LOCALIZATION = "OSGI-INF/l10n/bundle"; //$NON-NLS-1$
- private static final String[] BUNDLE_IU_PROPERTY_MAP = {Constants.BUNDLE_NAME, IInstallableUnit.PROP_NAME, Constants.BUNDLE_DESCRIPTION, IInstallableUnit.PROP_DESCRIPTION, Constants.BUNDLE_VENDOR, IInstallableUnit.PROP_PROVIDER, Constants.BUNDLE_CONTACTADDRESS, IInstallableUnit.PROP_CONTACT, Constants.BUNDLE_DOCURL, IInstallableUnit.PROP_DOC_URL, Constants.BUNDLE_UPDATELOCATION, IInstallableUnit.PROP_BUNDLE_LOCALIZATION, Constants.BUNDLE_LOCALIZATION, IInstallableUnit.PROP_BUNDLE_LOCALIZATION};
+ private static final String[] BUNDLE_IU_PROPERTY_MAP = { Constants.BUNDLE_NAME, IInstallableUnit.PROP_NAME,
+ Constants.BUNDLE_DESCRIPTION, IInstallableUnit.PROP_DESCRIPTION, Constants.BUNDLE_VENDOR,
+ IInstallableUnit.PROP_PROVIDER, Constants.BUNDLE_CONTACTADDRESS, IInstallableUnit.PROP_CONTACT,
+ Constants.BUNDLE_DOCURL, IInstallableUnit.PROP_DOC_URL, Constants.BUNDLE_UPDATELOCATION,
+ IInstallableUnit.PROP_BUNDLE_LOCALIZATION, Constants.BUNDLE_LOCALIZATION,
+ IInstallableUnit.PROP_BUNDLE_LOCALIZATION };
public static final int BUNDLE_LOCALIZATION_INDEX = PublisherHelper.BUNDLE_LOCALIZED_PROPERTIES.length - 1;
public static final String DIR = "dir"; //$NON-NLS-1$
public static final String JAR = "jar"; //$NON-NLS-1$
public static final String BUNDLE_SHAPE = "Eclipse-BundleShape"; //$NON-NLS-1$
/**
- * Manifest header directive for specifying how optional runtime
- * requirements shall be handled during installation.
+ * Manifest header directive for specifying how optional runtime requirements
+ * shall be handled during installation.
*
* @see #INSTALLATION_GREEDY
*/
public static final String INSTALLATION_DIRECTIVE = "x-installation"; //$NON-NLS-1$
- /**
- * Value for {@link #INSTALLATION_DIRECTIVE} indicating that an optional
- * requirement shall be installed unless this is prevented by other
- * mandatory requirements. Optional requirements without this directive
- * value are ignored during installation.
+ /**
+ * Value for {@link #INSTALLATION_DIRECTIVE} indicating that an optional
+ * requirement shall be installed unless this is prevented by other mandatory
+ * requirements. Optional requirements without this directive value are ignored
+ * during installation.
*/
public static final String INSTALLATION_GREEDY = "greedy"; //$NON-NLS-1$
@@ -124,7 +134,16 @@ public class BundlesAction extends AbstractPublisherAction {
return new ArtifactKey(OSGI_BUNDLE_CLASSIFIER, bsn, Version.parseVersion(version));
}
- public static IInstallableUnit createBundleConfigurationUnit(String hostId, Version cuVersion, boolean isBundleFragment, GeneratorBundleInfo configInfo, String configurationFlavor, IMatchExpression<IInstallableUnit> filter) {
+ public static IInstallableUnit createBundleConfigurationUnit(String hostId, Version cuVersion,
+ boolean isBundleFragment, GeneratorBundleInfo configInfo, String configurationFlavor,
+ IMatchExpression<IInstallableUnit> filter) {
+ return createBundleConfigurationUnit(hostId, cuVersion, isBundleFragment, configInfo, configurationFlavor,
+ filter, false);
+ }
+
+ static IInstallableUnit createBundleConfigurationUnit(String hostId, Version cuVersion,
+ boolean isBundleFragment, GeneratorBundleInfo configInfo, String configurationFlavor,
+ IMatchExpression<IInstallableUnit> filter, boolean configOnly) {
if (configInfo == null)
return null;
@@ -133,16 +152,21 @@ public class BundlesAction extends AbstractPublisherAction {
cu.setId(configUnitId);
cu.setVersion(cuVersion);
- //Indicate the IU to which this CU apply
- Version hostVersion = Version.parseVersion(configInfo.getVersion());
- VersionRange range = hostVersion == Version.emptyVersion ? VersionRange.emptyRange : new VersionRange(hostVersion, true, Version.MAX_VERSION, true);
+ // Indicate the IU to which this CU apply
+ Version hostVersion = configOnly ? Version.emptyVersion : Version.parseVersion(configInfo.getVersion());
+ VersionRange range = hostVersion == Version.emptyVersion ? VersionRange.emptyRange
+ : new VersionRange(hostVersion, true, Version.MAX_VERSION, true);
cu.setHost(new IRequirement[] { //
MetadataFactory.createRequirement(CAPABILITY_NS_OSGI_BUNDLE, hostId, range, null, false, false, true), //
- MetadataFactory.createRequirement(PublisherHelper.NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_BUNDLE, new VersionRange(Version.createOSGi(1, 0, 0), true, Version.createOSGi(2, 0, 0), false), null, false, false, false)});
+ MetadataFactory.createRequirement(PublisherHelper.NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_BUNDLE,
+ new VersionRange(Version.createOSGi(1, 0, 0), true, Version.createOSGi(2, 0, 0), false), null,
+ false, false, false) });
- //Adds capabilities for fragment, self, and describing the flavor supported
+ // Adds capabilities for fragment, self, and describing the flavor supported
cu.setProperty(InstallableUnitDescription.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
- cu.setCapabilities(new IProvidedCapability[] {PublisherHelper.createSelfCapability(configUnitId, cuVersion), MetadataFactory.createProvidedCapability(PublisherHelper.NAMESPACE_FLAVOR, configurationFlavor, Version.createOSGi(1, 0, 0))});
+ cu.setCapabilities(new IProvidedCapability[] { PublisherHelper.createSelfCapability(configUnitId, cuVersion),
+ MetadataFactory.createProvidedCapability(PublisherHelper.NAMESPACE_FLAVOR, configurationFlavor,
+ Version.createOSGi(1, 0, 0)) });
Map<String, String> touchpointData = new HashMap<>();
touchpointData.put("install", "installBundle(bundle:${artifact})"); //$NON-NLS-1$ //$NON-NLS-2$
@@ -155,7 +179,7 @@ public class BundlesAction extends AbstractPublisherAction {
}
public static IInstallableUnit createBundleIU(BundleDescription bd, IArtifactKey key, IPublisherInfo info) {
- return new BundlesAction(new BundleDescription[] {bd}).doCreateBundleIU(bd, key, info);
+ return new BundlesAction(new BundleDescription[] { bd }).doCreateBundleIU(bd, key, info);
}
protected IInstallableUnit doCreateBundleIU(BundleDescription bd, IArtifactKey key, IPublisherInfo info) {
@@ -172,8 +196,9 @@ public class BundlesAction extends AbstractPublisherAction {
iu.setId(bd.getSymbolicName());
iu.setVersion(PublisherHelper.fromOSGiVersion(bd.getVersion()));
iu.setFilter(bd.getPlatformFilter());
- iu.setUpdateDescriptor(MetadataFactory.createUpdateDescriptor(bd.getSymbolicName(), computeUpdateRange(bd.getVersion()), IUpdateDescriptor.NORMAL, null));
- iu.setArtifacts(new IArtifactKey[] {key});
+ iu.setUpdateDescriptor(MetadataFactory.createUpdateDescriptor(bd.getSymbolicName(),
+ computeUpdateRange(bd.getVersion()), IUpdateDescriptor.NORMAL, null));
+ iu.setArtifacts(new IArtifactKey[] { key });
iu.setTouchpointType(PublisherHelper.TOUCHPOINT_OSGI);
boolean isFragment = (bd.getHost() != null);
@@ -183,17 +208,20 @@ public class BundlesAction extends AbstractPublisherAction {
// Process required fragment host
if (isFragment) {
- requirements.add(MetadataFactory.createRequirement(CAPABILITY_NS_OSGI_BUNDLE, bd.getHost().getName(), PublisherHelper.fromOSGiVersionRange(bd.getHost().getVersionRange()), null, false, false));
+ requirements.add(MetadataFactory.createRequirement(CAPABILITY_NS_OSGI_BUNDLE, bd.getHost().getName(),
+ PublisherHelper.fromOSGiVersionRange(bd.getHost().getVersionRange()), null, false, false));
}
// Process required bundles
- ManifestElement[] rawRequireBundleHeader = parseManifestHeader(Constants.REQUIRE_BUNDLE, manifest, bd.getLocation());
+ ManifestElement[] rawRequireBundleHeader = parseManifestHeader(Constants.REQUIRE_BUNDLE, manifest,
+ bd.getLocation());
for (BundleSpecification requiredBundle : bd.getRequiredBundles()) {
addRequireBundleRequirement(requirements, requiredBundle, rawRequireBundleHeader);
}
// Process the import packages
- ManifestElement[] rawImportPackageHeader = parseManifestHeader(Constants.IMPORT_PACKAGE, manifest, bd.getLocation());
+ ManifestElement[] rawImportPackageHeader = parseManifestHeader(Constants.IMPORT_PACKAGE, manifest,
+ bd.getLocation());
for (ImportPackageSpecification importedPackage : bd.getImportPackages()) {
if (!isDynamicImport(importedPackage)) {
addImportPackageRequirement(requirements, importedPackage, rawImportPackageHeader);
@@ -201,9 +229,10 @@ public class BundlesAction extends AbstractPublisherAction {
}
// Process generic requirements
- ManifestElement[] rawRequireCapHeader = parseManifestHeader(Constants.REQUIRE_CAPABILITY, manifest, bd.getLocation());
+ ManifestElement[] rawRequireCapHeader = parseManifestHeader(Constants.REQUIRE_CAPABILITY, manifest,
+ bd.getLocation());
for (GenericSpecification requiredCap : bd.getGenericRequires()) {
- addRequirement(requirements, requiredCap, rawRequireCapHeader);
+ addRequirement(requirements, requiredCap, rawRequireCapHeader, bd);
}
iu.setRequirements(requirements.toArray(new IRequirement[requirements.size()]));
@@ -212,22 +241,28 @@ public class BundlesAction extends AbstractPublisherAction {
List<IProvidedCapability> providedCapabilities = new ArrayList<>();
// Add identification capabilities
- providedCapabilities.add(PublisherHelper.createSelfCapability(bd.getSymbolicName(), PublisherHelper.fromOSGiVersion(bd.getVersion())));
- providedCapabilities.add(MetadataFactory.createProvidedCapability(CAPABILITY_NS_OSGI_BUNDLE, bd.getSymbolicName(), PublisherHelper.fromOSGiVersion(bd.getVersion())));
+ providedCapabilities.add(PublisherHelper.createSelfCapability(bd.getSymbolicName(),
+ PublisherHelper.fromOSGiVersion(bd.getVersion())));
+ providedCapabilities.add(MetadataFactory.createProvidedCapability(CAPABILITY_NS_OSGI_BUNDLE,
+ bd.getSymbolicName(), PublisherHelper.fromOSGiVersion(bd.getVersion())));
// Process exported packages
for (ExportPackageDescription packageExport : bd.getExportPackages()) {
- providedCapabilities.add(MetadataFactory.createProvidedCapability(PublisherHelper.CAPABILITY_NS_JAVA_PACKAGE, packageExport.getName(), PublisherHelper.fromOSGiVersion(packageExport.getVersion())));
+ providedCapabilities
+ .add(MetadataFactory.createProvidedCapability(PublisherHelper.CAPABILITY_NS_JAVA_PACKAGE,
+ packageExport.getName(), PublisherHelper.fromOSGiVersion(packageExport.getVersion())));
}
// Process generic capabilities
- // TODO
- // IProvidedCapability may have to be extended to contain the OSGi directives as well which may be needed for
+ // TODO
+ // IProvidedCapability may have to be extended to contain the OSGi directives as
+ // well which may be needed for
// Bug 360659, Bug 525368. E.g. with IProvidedCapability.getDirectives()
// TODO
- // It may be possible map the "osgi.identity" capability to elements of the IU like the id, the license, etc.
+ // It may be possible map the "osgi.identity" capability to elements of the IU
+ // like the id, the license, etc.
// It may be better to derive it at runtime.
int capNo = 0;
@@ -245,7 +280,8 @@ public class BundlesAction extends AbstractPublisherAction {
// If needed add an additional capability to identify this as an OSGi fragment
if (isFragment) {
- providedCapabilities.add(MetadataFactory.createProvidedCapability(CAPABILITY_NS_OSGI_FRAGMENT, bd.getHost().getName(), PublisherHelper.fromOSGiVersion(bd.getVersion())));
+ providedCapabilities.add(MetadataFactory.createProvidedCapability(CAPABILITY_NS_OSGI_FRAGMENT,
+ bd.getHost().getName(), PublisherHelper.fromOSGiVersion(bd.getVersion())));
}
if (manifestLocalizations != null) {
@@ -298,11 +334,13 @@ public class BundlesAction extends AbstractPublisherAction {
}
@Deprecated
- protected void addImportPackageRequirement(ArrayList<IRequirement> reqsDeps, ImportPackageSpecification importSpec, ManifestElement[] rawImportPackageHeader) {
+ protected void addImportPackageRequirement(ArrayList<IRequirement> reqsDeps, ImportPackageSpecification importSpec,
+ ManifestElement[] rawImportPackageHeader) {
addImportPackageRequirement((List<IRequirement>) reqsDeps, importSpec, rawImportPackageHeader);
}
- protected void addImportPackageRequirement(List<IRequirement> reqsDeps, ImportPackageSpecification importSpec, ManifestElement[] rawImportPackageHeader) {
+ protected void addImportPackageRequirement(List<IRequirement> reqsDeps, ImportPackageSpecification importSpec,
+ ManifestElement[] rawImportPackageHeader) {
VersionRange versionRange = PublisherHelper.fromOSGiVersionRange(importSpec.getVersionRange());
final boolean optional = isOptional(importSpec);
final boolean greedy;
@@ -311,28 +349,52 @@ public class BundlesAction extends AbstractPublisherAction {
} else {
greedy = true;
}
- //TODO this needs to be refined to take into account all the attribute handled by imports
- reqsDeps.add(MetadataFactory.createRequirement(PublisherHelper.CAPABILITY_NS_JAVA_PACKAGE, importSpec.getName(), versionRange, null, optional, false, greedy));
+ // TODO this needs to be refined to take into account all the attribute handled
+ // by imports
+ reqsDeps.add(MetadataFactory.createRequirement(PublisherHelper.CAPABILITY_NS_JAVA_PACKAGE, importSpec.getName(),
+ versionRange, null, optional, false, greedy));
}
@Deprecated
- protected void addRequireBundleRequirement(ArrayList<IRequirement> reqsDeps, BundleSpecification requiredBundle, ManifestElement[] rawRequireBundleHeader) {
+ protected void addRequireBundleRequirement(ArrayList<IRequirement> reqsDeps, BundleSpecification requiredBundle,
+ ManifestElement[] rawRequireBundleHeader) {
addRequireBundleRequirement((List<IRequirement>) reqsDeps, requiredBundle, rawRequireBundleHeader);
}
- protected void addRequireBundleRequirement(List<IRequirement> reqsDeps, BundleSpecification requiredBundle, ManifestElement[] rawRequireBundleHeader) {
+ protected void addRequireBundleRequirement(List<IRequirement> reqsDeps, BundleSpecification requiredBundle,
+ ManifestElement[] rawRequireBundleHeader) {
final boolean optional = requiredBundle.isOptional();
final boolean greedy;
if (optional) {
- greedy = INSTALLATION_GREEDY.equals(getInstallationDirective(requiredBundle.getName(), rawRequireBundleHeader));
+ greedy = INSTALLATION_GREEDY
+ .equals(getInstallationDirective(requiredBundle.getName(), rawRequireBundleHeader));
} else {
greedy = true;
}
- reqsDeps.add(MetadataFactory.createRequirement(CAPABILITY_NS_OSGI_BUNDLE, requiredBundle.getName(), PublisherHelper.fromOSGiVersionRange(requiredBundle.getVersionRange()), null, optional ? 0 : 1, 1, greedy));
+ reqsDeps.add(MetadataFactory.createRequirement(CAPABILITY_NS_OSGI_BUNDLE, requiredBundle.getName(),
+ PublisherHelper.fromOSGiVersionRange(requiredBundle.getVersionRange()), null, optional ? 0 : 1, 1,
+ greedy));
}
// TODO Handle the "effective:=" directive somehow?
- protected void addRequirement(List<IRequirement> reqsDeps, GenericSpecification requireCapSpec, ManifestElement[] rawRequireCapabilities) {
+ protected void addRequirement(List<IRequirement> reqsDeps, GenericSpecification requireCapSpec,
+ ManifestElement[] rawRequireCapabilities) {
+ BundleRequirement req = requireCapSpec.getRequirement();
+
+ String namespace = req.getNamespace();
+ Map<String, String> directives = req.getDirectives();
+
+ String capFilter = directives.get(Namespace.REQUIREMENT_FILTER_DIRECTIVE);
+ boolean optional = directives.get(Namespace.REQUIREMENT_RESOLUTION_DIRECTIVE) == Namespace.RESOLUTION_OPTIONAL;
+ boolean greedy = optional ? INSTALLATION_GREEDY.equals(directives.get(INSTALLATION_DIRECTIVE)) : true;
+
+ IRequirement requireCap = MetadataFactory.createRequirement(namespace, capFilter, null, optional ? 0 : 1, 1,
+ greedy);
+ reqsDeps.add(requireCap);
+ }
+
+ protected void addRequirement(List<IRequirement> reqsDeps, GenericSpecification requireCapSpec,
+ ManifestElement[] rawRequireCapabilities, BundleDescription bd) {
BundleRequirement req = requireCapSpec.getRequirement();
String namespace = req.getNamespace();
@@ -342,28 +404,39 @@ public class BundlesAction extends AbstractPublisherAction {
boolean optional = directives.get(Namespace.REQUIREMENT_RESOLUTION_DIRECTIVE) == Namespace.RESOLUTION_OPTIONAL;
boolean greedy = optional ? INSTALLATION_GREEDY.equals(directives.get(INSTALLATION_DIRECTIVE)) : true;
- IRequirement requireCap = MetadataFactory.createRequirement(namespace, capFilter, null, optional ? 0 : 1, 1, greedy);
+ IRequirement requireCap = MetadataFactory.createRequirement(namespace, capFilter, null, optional ? 0 : 1, 1,
+ greedy, bd.getSymbolicName());
reqsDeps.add(requireCap);
}
- protected void addCapability(List<IProvidedCapability> caps, GenericDescription provideCapDesc, InstallableUnitDescription iu, int capNo) {
+ protected void addCapability(List<IProvidedCapability> caps, GenericDescription provideCapDesc,
+ InstallableUnitDescription iu, int capNo) {
// Convert the values to String, Version, List of String or Version
- Map<String, Object> capAttrs = provideCapDesc.getDeclaredAttributes().entrySet().stream().collect(toMap(Entry::getKey, e -> convertAttribute(e.getValue())));
+ Map<String, Object> capAttrs = provideCapDesc.getDeclaredAttributes().entrySet().stream()
+ .collect(toMap(Entry::getKey, e -> convertAttribute(e.getValue())));
// Resolve the namespace
String capNs = provideCapDesc.getType();
// Resolve the mandatory p2 name
- // By convention OSGi capabilities have an attribute named like the capability namespace.
- // If this is not the case synthesize a unique name (e.g. "osgi.service" has an "objectClass" attribute instead).
- // TODO If present but not a String log a warning somehow that it is ignored? Or fail the publication?
- capAttrs.compute(capNs, (k, v) -> (v instanceof String) ? v : String.format("%s_%s-%s", iu.getId(), iu.getVersion(), capNo)); //$NON-NLS-1$
+ // By convention OSGi capabilities have an attribute named like the capability
+ // namespace.
+ // If this is not the case synthesize a unique name (e.g. "osgi.service" has an
+ // "objectClass" attribute instead).
+ // TODO If present but not a String log a warning somehow that it is ignored? Or
+ // fail the publication?
+ capAttrs.compute(capNs,
+ (k, v) -> (v instanceof String) ? v : String.format("%s_%s-%s", iu.getId(), iu.getVersion(), capNo)); //$NON-NLS-1$
// Resolve the mandatory p2 version
- // By convention versioned OSGi capabilities have a "version" attribute containing the OSGi Version object
- // If this is not the case use an empty version (e.g. "osgi.ee" has a list of versions).
- // TODO If present but not a Version log a warning somehow that it is ignored? Or fail the publication?
- capAttrs.compute(IProvidedCapability.PROPERTY_VERSION, (k, v) -> (v instanceof Version) ? v : Version.emptyVersion);
+ // By convention versioned OSGi capabilities have a "version" attribute
+ // containing the OSGi Version object
+ // If this is not the case use an empty version (e.g. "osgi.ee" has a list of
+ // versions).
+ // TODO If present but not a Version log a warning somehow that it is ignored?
+ // Or fail the publication?
+ capAttrs.compute(IProvidedCapability.PROPERTY_VERSION,
+ (k, v) -> (v instanceof Version) ? v : Version.emptyVersion);
caps.add(MetadataFactory.createProvidedCapability(capNs, capAttrs));
}
@@ -378,7 +451,8 @@ public class BundlesAction extends AbstractPublisherAction {
private Object convertScalarAttribute(Object attr) {
if (attr instanceof org.osgi.framework.Version) {
org.osgi.framework.Version osgiVer = (org.osgi.framework.Version) attr;
- return Version.createOSGi(osgiVer.getMajor(), osgiVer.getMinor(), osgiVer.getMicro(), osgiVer.getQualifier());
+ return Version.createOSGi(osgiVer.getMajor(), osgiVer.getMinor(), osgiVer.getMicro(),
+ osgiVer.getQualifier());
}
return attr.toString();
}
@@ -393,8 +467,10 @@ public class BundlesAction extends AbstractPublisherAction {
return updateRange;
}
- private IInstallableUnitFragment createHostLocalizationFragment(IInstallableUnit bundleIU, BundleDescription bd, String hostId, String[] hostBundleManifestValues) {
- Map<Locale, Map<String, String>> hostLocalizations = getHostLocalizations(new File(bd.getLocation()), hostBundleManifestValues);
+ private IInstallableUnitFragment createHostLocalizationFragment(IInstallableUnit bundleIU, BundleDescription bd,
+ String hostId, String[] hostBundleManifestValues) {
+ Map<Locale, Map<String, String>> hostLocalizations = getHostLocalizations(new File(bd.getLocation()),
+ hostBundleManifestValues);
if (hostLocalizations == null || hostLocalizations.isEmpty())
return null;
return createLocalizationFragmentOfHost(bd, hostId, hostBundleManifestValues, hostLocalizations);
@@ -402,26 +478,34 @@ public class BundlesAction extends AbstractPublisherAction {
/*
* @param hostId
+ *
* @param bd
+ *
* @param locale
+ *
* @param localizedStrings
+ *
* @return installableUnitFragment
*/
- private static IInstallableUnitFragment createLocalizationFragmentOfHost(BundleDescription bd, String hostId, String[] hostManifestValues, Map<Locale, Map<String, String>> hostLocalizations) {
+ private static IInstallableUnitFragment createLocalizationFragmentOfHost(BundleDescription bd, String hostId,
+ String[] hostManifestValues, Map<Locale, Map<String, String>> hostLocalizations) {
InstallableUnitFragmentDescription fragment = new MetadataFactory.InstallableUnitFragmentDescription();
String fragmentId = makeHostLocalizationFragmentId(bd.getSymbolicName());
fragment.setId(fragmentId);
fragment.setVersion(PublisherHelper.fromOSGiVersion(bd.getVersion())); // TODO: is this a meaningful version?
HostSpecification hostSpec = bd.getHost();
- IRequirement[] hostReqs = new IRequirement[] {MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, hostSpec.getName(), PublisherHelper.fromOSGiVersionRange(hostSpec.getVersionRange()), null, false, false, false)};
+ IRequirement[] hostReqs = new IRequirement[] {
+ MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, hostSpec.getName(),
+ PublisherHelper.fromOSGiVersionRange(hostSpec.getVersionRange()), null, false, false, false) };
fragment.setHost(hostReqs);
fragment.setSingleton(true);
fragment.setProperty(InstallableUnitDescription.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
- // Create a provided capability for each locale and add the translated properties.
- ArrayList<IProvidedCapability> providedCapabilities = new ArrayList<>(hostLocalizations.keySet().size());
+ // Create a provided capability for each locale and add the translated
+ // properties.
+ ArrayList<IProvidedCapability> providedCapabilities = new ArrayList<>(hostLocalizations.size());
providedCapabilities.add(PublisherHelper.createSelfCapability(fragmentId, fragment.getVersion()));
for (Entry<Locale, Map<String, String>> localeEntry : hostLocalizations.entrySet()) {
Locale locale = localeEntry.getKey();
@@ -438,8 +522,8 @@ public class BundlesAction extends AbstractPublisherAction {
/**
* @param id
- * @return the id for the iu fragment containing localized properties
- * for the fragment with the given id.
+ * @return the id for the iu fragment containing localized properties for the
+ * fragment with the given id.
*/
private static String makeHostLocalizationFragmentId(String id) {
return id + ".translated_host_properties"; //$NON-NLS-1$
@@ -468,7 +552,8 @@ public class BundlesAction extends AbstractPublisherAction {
return createConfigScript(configInfo, false);
}
- public static IInstallableUnit createDefaultBundleConfigurationUnit(GeneratorBundleInfo configInfo, GeneratorBundleInfo unconfigInfo, String configurationFlavor) {
+ public static IInstallableUnit createDefaultBundleConfigurationUnit(GeneratorBundleInfo configInfo,
+ GeneratorBundleInfo unconfigInfo, String configurationFlavor) {
InstallableUnitFragmentDescription cu = new InstallableUnitFragmentDescription();
String configUnitId = PublisherHelper.createDefaultConfigUnitId(OSGI_BUNDLE_CLASSIFIER, configurationFlavor);
cu.setId(configUnitId);
@@ -477,10 +562,15 @@ public class BundlesAction extends AbstractPublisherAction {
// Add capabilities for fragment, self, and describing the flavor supported
cu.setProperty(InstallableUnitDescription.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
- cu.setCapabilities(new IProvidedCapability[] {PublisherHelper.createSelfCapability(configUnitId, configUnitVersion), MetadataFactory.createProvidedCapability(PublisherHelper.NAMESPACE_FLAVOR, configurationFlavor, Version.createOSGi(1, 0, 0))});
+ cu.setCapabilities(
+ new IProvidedCapability[] { PublisherHelper.createSelfCapability(configUnitId, configUnitVersion),
+ MetadataFactory.createProvidedCapability(PublisherHelper.NAMESPACE_FLAVOR, configurationFlavor,
+ Version.createOSGi(1, 0, 0)) });
// Create a required capability on bundles
- IRequirement[] reqs = new IRequirement[] {MetadataFactory.createRequirement(PublisherHelper.NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_BUNDLE, VersionRange.emptyRange, null, false, true, false)};
+ IRequirement[] reqs = new IRequirement[] {
+ MetadataFactory.createRequirement(PublisherHelper.NAMESPACE_ECLIPSE_TYPE, TYPE_ECLIPSE_BUNDLE,
+ VersionRange.emptyRange, null, false, true, false) };
cu.setHost(reqs);
Map<String, String> touchpointData = new HashMap<>();
@@ -515,22 +605,28 @@ public class BundlesAction extends AbstractPublisherAction {
}
private static boolean isDynamicImport(ImportPackageSpecification importedPackage) {
- return importedPackage.getDirective(Constants.RESOLUTION_DIRECTIVE).equals(ImportPackageSpecification.RESOLUTION_DYNAMIC);
+ return importedPackage.getDirective(Constants.RESOLUTION_DIRECTIVE)
+ .equals(ImportPackageSpecification.RESOLUTION_DYNAMIC);
}
protected static boolean isOptional(ImportPackageSpecification importedPackage) {
- return importedPackage.getDirective(Constants.RESOLUTION_DIRECTIVE).equals(ImportPackageSpecification.RESOLUTION_OPTIONAL);
+ return importedPackage.getDirective(Constants.RESOLUTION_DIRECTIVE)
+ .equals(ImportPackageSpecification.RESOLUTION_OPTIONAL);
}
private static String toManifestString(Map<String, String> p) {
if (p == null)
return null;
StringBuilder result = new StringBuilder();
- // See https://bugs.eclipse.org/329386. We are trying to reduce the size of the manifest data in
- // the eclipse touchpoint. We've removed the code that requires it but in order for old clients
- // to still be able to use recent repositories, we're going to keep around the manifest properties
+ // See https://bugs.eclipse.org/329386. We are trying to reduce the size of the
+ // manifest data in
+ // the eclipse touchpoint. We've removed the code that requires it but in order
+ // for old clients
+ // to still be able to use recent repositories, we're going to keep around the
+ // manifest properties
// they need.
- final String[] interestingKeys = new String[] {Constants.BUNDLE_SYMBOLICNAME, Constants.BUNDLE_VERSION, Constants.FRAGMENT_HOST};
+ final String[] interestingKeys = new String[] { Constants.BUNDLE_SYMBOLICNAME, Constants.BUNDLE_VERSION,
+ Constants.FRAGMENT_HOST };
for (String key : interestingKeys) {
String value = p.get(key);
if (value != null)
@@ -542,19 +638,25 @@ public class BundlesAction extends AbstractPublisherAction {
// Return a map from locale to property set for the manifest localizations
// from the given bundle directory and given bundle localization path/name
// manifest property value.
- private static Map<Locale, Map<String, String>> getManifestLocalizations(Map<String, String> manifest, File bundleLocation) {
+ private static Map<Locale, Map<String, String>> getManifestLocalizations(Map<String, String> manifest,
+ File bundleLocation) {
Map<Locale, Map<String, String>> localizations;
Locale defaultLocale = null; // = Locale.ENGLISH; // TODO: get this from GeneratorInfo
String[] bundleManifestValues = getManifestCachedValues(manifest);
- String bundleLocalization = bundleManifestValues[BUNDLE_LOCALIZATION_INDEX]; // Bundle localization is the last one in the list
+ String bundleLocalization = bundleManifestValues[BUNDLE_LOCALIZATION_INDEX]; // Bundle localization is the last
+ // one in the list
if ("jar".equalsIgnoreCase(new Path(bundleLocation.getName()).getFileExtension()) && //$NON-NLS-1$
bundleLocation.isFile()) {
- localizations = LocalizationHelper.getJarPropertyLocalizations(bundleLocation, bundleLocalization, defaultLocale, bundleManifestValues);
- //localizations = getJarManifestLocalization(bundleLocation, bundleLocalization, defaultLocale, bundleManifestValues);
+ localizations = LocalizationHelper.getJarPropertyLocalizations(bundleLocation, bundleLocalization,
+ defaultLocale, bundleManifestValues);
+ // localizations = getJarManifestLocalization(bundleLocation,
+ // bundleLocalization, defaultLocale, bundleManifestValues);
} else {
- localizations = LocalizationHelper.getDirPropertyLocalizations(bundleLocation, bundleLocalization, defaultLocale, bundleManifestValues);
- // localizations = getDirManifestLocalization(bundleLocation, bundleLocalization, defaultLocale, bundleManifestValues);
+ localizations = LocalizationHelper.getDirPropertyLocalizations(bundleLocation, bundleLocalization,
+ defaultLocale, bundleManifestValues);
+ // localizations = getDirManifestLocalization(bundleLocation,
+ // bundleLocalization, defaultLocale, bundleManifestValues);
}
return localizations;
@@ -564,12 +666,14 @@ public class BundlesAction extends AbstractPublisherAction {
String[] result = new String[PublisherHelper.BUNDLE_LOCALIZED_PROPERTIES.length];
int j = 0;
for (int i = 1; i < BUNDLE_IU_PROPERTY_MAP.length - 1; i += 2) {
- if (iu.getProperty(BUNDLE_IU_PROPERTY_MAP[i]) != null && iu.getProperty(BUNDLE_IU_PROPERTY_MAP[i]).length() > 0 && iu.getProperty(BUNDLE_IU_PROPERTY_MAP[i]).charAt(0) == '%')
+ if (iu.getProperty(BUNDLE_IU_PROPERTY_MAP[i]) != null
+ && iu.getProperty(BUNDLE_IU_PROPERTY_MAP[i]).length() > 0
+ && iu.getProperty(BUNDLE_IU_PROPERTY_MAP[i]).charAt(0) == '%')
result[j++] = iu.getProperty(BUNDLE_IU_PROPERTY_MAP[i]).substring(1);
else
j++;
}
- // The last string is the location
+ // The last string is the location
result[BUNDLE_LOCALIZATION_INDEX] = iu.getProperty(IInstallableUnit.PROP_BUNDLE_LOCALIZATION);
return result;
@@ -593,7 +697,8 @@ public class BundlesAction extends AbstractPublisherAction {
// Return a map from locale to property set for the manifest localizations
// from the given bundle directory and given bundle localization path/name
// manifest property value.
- public static Map<Locale, Map<String, String>> getHostLocalizations(File bundleLocation, String[] hostBundleManifestValues) {
+ public static Map<Locale, Map<String, String>> getHostLocalizations(File bundleLocation,
+ String[] hostBundleManifestValues) {
Map<Locale, Map<String, String>> localizations;
Locale defaultLocale = null; // = Locale.ENGLISH; // TODO: get this from GeneratorInfo
String hostBundleLocalization = hostBundleManifestValues[BUNDLE_LOCALIZATION_INDEX];
@@ -602,23 +707,34 @@ public class BundlesAction extends AbstractPublisherAction {
if ("jar".equalsIgnoreCase(new Path(bundleLocation.getName()).getFileExtension()) && //$NON-NLS-1$
bundleLocation.isFile()) {
- localizations = LocalizationHelper.getJarPropertyLocalizations(bundleLocation, hostBundleLocalization, defaultLocale, hostBundleManifestValues);
- //localizations = getJarManifestLocalization(bundleLocation, hostBundleLocalization, defaultLocale, hostBundleManifestValues);
+ localizations = LocalizationHelper.getJarPropertyLocalizations(bundleLocation, hostBundleLocalization,
+ defaultLocale, hostBundleManifestValues);
+ // localizations = getJarManifestLocalization(bundleLocation,
+ // hostBundleLocalization, defaultLocale, hostBundleManifestValues);
} else {
- localizations = LocalizationHelper.getDirPropertyLocalizations(bundleLocation, hostBundleLocalization, defaultLocale, hostBundleManifestValues);
- // localizations = getDirManifestLocalization(bundleLocation, hostBundleLocalization, defaultLocale, hostBundleManifestValues);
+ localizations = LocalizationHelper.getDirPropertyLocalizations(bundleLocation, hostBundleLocalization,
+ defaultLocale, hostBundleManifestValues);
+ // localizations = getDirManifestLocalization(bundleLocation,
+ // hostBundleLocalization, defaultLocale, hostBundleManifestValues);
}
return localizations;
}
- public static BundleDescription createBundleDescription(Dictionary<String, String> enhancedManifest, File bundleLocation) {
+ public static BundleDescription createBundleDescription(Dictionary<String, String> enhancedManifest,
+ File bundleLocation) {
try {
- BundleDescription descriptor = StateObjectFactory.defaultFactory.createBundleDescription(null, enhancedManifest, bundleLocation == null ? null : bundleLocation.getAbsolutePath(), 1); //TODO Do we need to have a real bundle id
+ BundleDescription descriptor = StateObjectFactory.defaultFactory.createBundleDescription(null,
+ enhancedManifest, bundleLocation == null ? null : bundleLocation.getAbsolutePath(), 1); // TODO Do
+ // we need
+ // to have a
+ // real
+ // bundle id
descriptor.setUserObject(enhancedManifest);
return descriptor;
} catch (BundleException e) {
- String message = NLS.bind(Messages.exception_stateAddition, bundleLocation == null ? null : bundleLocation.getAbsoluteFile());
+ String message = NLS.bind(Messages.exception_stateAddition,
+ bundleLocation == null ? null : bundleLocation.getAbsoluteFile());
IStatus status = new Status(IStatus.WARNING, Activator.ID, message, e);
LogHelper.log(status);
return null;
@@ -673,7 +789,8 @@ public class BundlesAction extends AbstractPublisherAction {
Dictionary<String, String> manifest = basicLoadManifest(bundleLocation);
if (manifest == null)
return null;
- // if the bundle itself does not define its shape, infer the shape from the current form
+ // if the bundle itself does not define its shape, infer the shape from the
+ // current form
if (manifest.get(BUNDLE_SHAPE) == null)
manifest.put(BUNDLE_SHAPE, bundleLocation.isDirectory() ? DIR : JAR);
return manifest;
@@ -695,7 +812,8 @@ public class BundlesAction extends AbstractPublisherAction {
}
}
- public static Dictionary<String, String> basicLoadManifest(File bundleLocation) throws IOException, BundleException {
+ public static Dictionary<String, String> basicLoadManifest(File bundleLocation)
+ throws IOException, BundleException {
InputStream manifestStream = null;
ZipFile jarFile = null;
if ("jar".equalsIgnoreCase(new Path(bundleLocation.getName()).getFileExtension()) && bundleLocation.isFile()) { //$NON-NLS-1$
@@ -720,7 +838,7 @@ public class BundlesAction extends AbstractPublisherAction {
if (jarFile != null)
jarFile.close();
} catch (IOException e2) {
- //Ignore
+ // Ignore
}
}
@@ -729,13 +847,17 @@ public class BundlesAction extends AbstractPublisherAction {
}
/**
- * @return the same result as {@link Headers#parseManifest(InputStream)}, but with a modifiable {@link Headers} instance
+ * @return the same result as {@link Headers#parseManifest(InputStream)}, but
+ * with a modifiable {@link Headers} instance
*/
- private static Headers<String, String> parseBundleManifestIntoModifyableDictionaryWithCaseInsensitiveKeys(InputStream manifestStream) throws IOException, BundleException {
- return (Headers<String, String>) ManifestElement.parseBundleManifest(manifestStream, new Headers<String, String>(10));
+ private static Headers<String, String> parseBundleManifestIntoModifyableDictionaryWithCaseInsensitiveKeys(
+ InputStream manifestStream) throws IOException, BundleException {
+ return (Headers<String, String>) ManifestElement.parseBundleManifest(manifestStream,
+ new Headers<String, String>(10));
}
- private static ManifestElement[] parseManifestHeader(String header, Map<String, String> manifest, String bundleLocation) {
+ private static ManifestElement[] parseManifestHeader(String header, Map<String, String> manifest,
+ String bundleLocation) {
try {
return ManifestElement.parseHeader(header, manifest.get(header));
} catch (BundleException e) {
@@ -788,7 +910,8 @@ public class BundlesAction extends AbstractPublisherAction {
return Status.OK_STATUS;
}
- protected void publishArtifact(IArtifactDescriptor descriptor, File base, File[] inclusions, IPublisherInfo publisherInfo) {
+ protected void publishArtifact(IArtifactDescriptor descriptor, File base, File[] inclusions,
+ IPublisherInfo publisherInfo) {
IArtifactRepository destination = publisherInfo.getArtifactRepository();
if (descriptor == null || destination == null)
return;
@@ -812,11 +935,14 @@ public class BundlesAction extends AbstractPublisherAction {
// if we are assimilating pack200 files then add the packed descriptor
// into the repo assuming it does not already exist.
- boolean reuse = "true".equals(destination.getProperties().get(AbstractPublisherApplication.PUBLISH_PACK_FILES_AS_SIBLINGS)); //$NON-NLS-1$
+ boolean reuse = "true" //$NON-NLS-1$
+ .equals(destination.getProperties().get(AbstractPublisherApplication.PUBLISH_PACK_FILES_AS_SIBLINGS));
if (reuse && (publisherInfo.getArtifactOptions() & IPublisherInfo.A_PUBLISH) > 0) {
File packFile = new Path(jarFile.getAbsolutePath()).addFileExtension("pack.gz").toFile(); //$NON-NLS-1$
if (packFile.exists()) {
- IArtifactDescriptor ad200 = createPack200ArtifactDescriptor(descriptor.getArtifactKey(), packFile, descriptor.getProperty(IArtifactDescriptor.ARTIFACT_SIZE));
+ @SuppressWarnings("removal")
+ IArtifactDescriptor ad200 = createPack200ArtifactDescriptor(descriptor.getArtifactKey(), packFile,
+ descriptor.getProperty(IArtifactDescriptor.ARTIFACT_SIZE));
publishArtifact(ad200, packFile, publisherInfo);
}
}
@@ -833,11 +959,11 @@ public class BundlesAction extends AbstractPublisherAction {
return;
for (File location : list) {
if (location.isDirectory()) {
- // if the location is itself a bundle, just add it. Otherwise r down
+ // if the location is itself a bundle, just add it. Otherwise r down
if (new File(location, JarFile.MANIFEST_NAME).exists())
result.add(location);
else if (new File(location, "plugin.xml").exists() || new File(location, "fragment.xml").exists()) //$NON-NLS-1$ //$NON-NLS-2$
- result.add(location); //old style bundle without manifest
+ result.add(location); // old style bundle without manifest
else
expandLocations(location.listFiles(), result);
} else {
@@ -847,30 +973,38 @@ public class BundlesAction extends AbstractPublisherAction {
}
/**
- * Publishes bundle IUs to the p2 metadata and artifact repositories.
+ * Publishes bundle IUs to the p2 metadata and artifact repositories.
*
- * @param bundleDescriptions Equinox framework descriptions of the bundles to publish.
- * @param result Used to attach status for the publication operation.
- * @param monitor Used to fire progress events.
+ * @param bundleDescriptions Equinox framework descriptions of the bundles to
+ * publish.
+ * @param result Used to attach status for the publication
+ * operation.
+ * @param monitor Used to fire progress events.
*
- * @deprecated Use {@link #generateBundleIUs(BundleDescription[] bundleDescriptions, IPublisherInfo info, IPublisherResult result, IProgressMonitor monitor)} with
- * {@link IPublisherInfo} set to <code>null</code>
+ * @deprecated Use
+ * {@link #generateBundleIUs(BundleDescription[] bundleDescriptions, IPublisherInfo info, IPublisherResult result, IProgressMonitor monitor)}
+ * with {@link IPublisherInfo} set to <code>null</code>
*/
@Deprecated
- protected void generateBundleIUs(BundleDescription[] bundleDescriptions, IPublisherResult result, IProgressMonitor monitor) {
+ protected void generateBundleIUs(BundleDescription[] bundleDescriptions, IPublisherResult result,
+ IProgressMonitor monitor) {
generateBundleIUs(bundleDescriptions, null, result, monitor);
}
/**
- * Publishes bundle IUs to the p2 metadata and artifact repositories.
+ * Publishes bundle IUs to the p2 metadata and artifact repositories.
*
- * @param bundleDescriptions Equinox framework descriptions of the bundles to publish.
- * @param info Configuration and publication advice information.
- * @param result Used to attach status for the publication operation.
- * @param monitor Used to fire progress events.
+ * @param bundleDescriptions Equinox framework descriptions of the bundles to
+ * publish.
+ * @param info Configuration and publication advice information.
+ * @param result Used to attach status for the publication
+ * operation.
+ * @param monitor Used to fire progress events.
*/
- protected void generateBundleIUs(BundleDescription[] bundleDescriptions, IPublisherInfo info, IPublisherResult result, IProgressMonitor monitor) {
- // This assumes that hosts are processed before fragments because for each fragment the host
+ protected void generateBundleIUs(BundleDescription[] bundleDescriptions, IPublisherInfo info,
+ IPublisherResult result, IProgressMonitor monitor) {
+ // This assumes that hosts are processed before fragments because for each
+ // fragment the host
// is queried for the strings that should be translated.
for (BundleDescription bd : bundleDescriptions) {
if (monitor.isCanceled()) {
@@ -881,8 +1015,9 @@ public class BundlesAction extends AbstractPublisherAction {
continue;
}
- //First check to see if there is already an IU around for this
- IInstallableUnit bundleIU = queryForIU(result, bd.getSymbolicName(), PublisherHelper.fromOSGiVersion(bd.getVersion()));
+ // First check to see if there is already an IU around for this
+ IInstallableUnit bundleIU = queryForIU(result, bd.getSymbolicName(),
+ PublisherHelper.fromOSGiVersion(bd.getVersion()));
IArtifactKey bundleArtKey = createBundleArtifactKey(bd.getSymbolicName(), bd.getVersion().toString());
if (bundleIU == null) {
createAdviceFileAdvice(bd, info);
@@ -938,14 +1073,17 @@ public class BundlesAction extends AbstractPublisherAction {
if (location == null)
return;
- AdviceFileAdvice advice = new AdviceFileAdvice(bundleDescription.getSymbolicName(), PublisherHelper.fromOSGiVersion(bundleDescription.getVersion()), new Path(location), AdviceFileAdvice.BUNDLE_ADVICE_FILE);
+ AdviceFileAdvice advice = new AdviceFileAdvice(bundleDescription.getSymbolicName(),
+ PublisherHelper.fromOSGiVersion(bundleDescription.getVersion()), new Path(location),
+ AdviceFileAdvice.BUNDLE_ADVICE_FILE);
if (advice.containsAdvice())
publisherInfo.addAdvice(advice);
}
private static boolean isDir(BundleDescription bundle, IPublisherInfo info) {
- Collection<IBundleShapeAdvice> advice = info.getAdvice(null, true, bundle.getSymbolicName(), PublisherHelper.fromOSGiVersion(bundle.getVersion()), IBundleShapeAdvice.class);
+ Collection<IBundleShapeAdvice> advice = info.getAdvice(null, true, bundle.getSymbolicName(),
+ PublisherHelper.fromOSGiVersion(bundle.getVersion()), IBundleShapeAdvice.class);
// if the advice has a shape, use it
if (advice != null && !advice.isEmpty()) {
// we know there is some advice but if there is more than one, take the first.
@@ -953,7 +1091,8 @@ public class BundlesAction extends AbstractPublisherAction {
if (shape != null)
return shape.equals(IBundleShapeAdvice.DIR);
}
- // otherwise go with whatever we figured out from the manifest or the shape on disk
+ // otherwise go with whatever we figured out from the manifest or the shape on
+ // disk
@SuppressWarnings("unchecked")
Map<String, String> manifest = (Map<String, String>) bundle.getUserObject();
String format = manifest.get(BUNDLE_SHAPE);
@@ -987,6 +1126,7 @@ public class BundlesAction extends AbstractPublisherAction {
}
private void addPublishingErrorToFinalStatus(Throwable t, File bundleLocation) {
- finalStatus.add(new Status(IStatus.ERROR, Activator.ID, NLS.bind(Messages.exception_errorPublishingBundle, bundleLocation, t.getMessage()), t));
+ finalStatus.add(new Status(IStatus.ERROR, Activator.ID,
+ NLS.bind(Messages.exception_errorPublishingBundle, bundleLocation, t.getMessage()), t));
}
}
diff --git a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/ConfigCUsAction.java b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/ConfigCUsAction.java
index c92ba5417..ba349e047 100644
--- a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/ConfigCUsAction.java
+++ b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/ConfigCUsAction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2017 Code 9 and others.
+ * Copyright (c) 2008, 2021 Code 9 and others.
*
* This
* program and the accompanying materials are made available under the terms of
@@ -13,12 +13,14 @@
* Code 9 - initial API and implementation
* IBM - ongoing development
* Rapicorp - ongoing development
+ * Christoph Läubrich - Bug 574952 p2 should distinguish between "product plugins" and "configuration plugins" (gently sponsored by Compart AG)
******************************************************************************/
package org.eclipse.equinox.p2.publisher.eclipse;
import java.io.File;
import java.util.*;
import java.util.Map.Entry;
+import java.util.stream.Collectors;
import org.eclipse.core.runtime.*;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.p2.metadata.TouchpointInstruction;
@@ -41,7 +43,6 @@ import org.osgi.framework.Constants;
*/
public class ConfigCUsAction extends AbstractPublisherAction {
- protected static final String ORG_ECLIPSE_UPDATE_CONFIGURATOR = "org.eclipse.update.configurator"; //$NON-NLS-1$
protected static final String DEFAULT_START_LEVEL = "osgi.bundles.defaultStartLevel"; //$NON-NLS-1$
private static Collection<String> PROPERTIES_TO_SKIP;
private static HashSet<String> PROGRAM_ARGS_TO_SKIP;
@@ -107,7 +108,12 @@ public class ConfigCUsAction extends AbstractPublisherAction {
String configSpec = configSpec1;
Collection<IConfigAdvice> configAdvice = publisherInfo.getAdvice(configSpec, false, id, version, IConfigAdvice.class);
BundleInfo[] bundles = fillInBundles(configAdvice, results);
- publishBundleCUs(publisherInfo, bundles, configSpec, innerResult);
+ Set<String> configBundles = configAdvice.stream().filter(ProductFileAdvice.class::isInstance)
+ .map(ProductFileAdvice.class::cast).flatMap(pca -> pca.getBundles(true))
+ .map(BundleInfo::getSymbolicName).filter(Objects::nonNull)
+ .distinct()
+ .collect(Collectors.toSet());
+ publishBundleCUs(publisherInfo, bundles, configSpec, innerResult, configBundles);
publishConfigIUs(configAdvice, innerResult, configSpec);
Collection<IExecutableAdvice> launchingAdvice = publisherInfo.getAdvice(configSpec, false, id, version, IExecutableAdvice.class);
publishIniIUs(launchingAdvice, innerResult, configSpec);
@@ -325,10 +331,13 @@ public class ConfigCUsAction extends AbstractPublisherAction {
}
/**
- * Publish the CUs related to the given set of bundles. This generally covers the start-level and
- * and whether or not the bundle is to be started.
+ * Publish the CUs related to the given set of bundles. This generally covers
+ * the start-level and and whether or not the bundle is to be started.
+ *
+ * @param configBundles
*/
- protected void publishBundleCUs(IPublisherInfo publisherInfo, BundleInfo[] bundles, String configSpec, IPublisherResult result) {
+ protected void publishBundleCUs(IPublisherInfo publisherInfo, BundleInfo[] bundles, String configSpec,
+ IPublisherResult result, Set<String> configBundles) {
if (bundles == null)
return;
@@ -339,29 +348,28 @@ public class ConfigCUsAction extends AbstractPublisherAction {
filter = createFilterSpec(configSpec);
}
- for (BundleInfo bundle1 : bundles) {
- GeneratorBundleInfo bundle = createGeneratorBundleInfo(bundle1, result);
- if (bundle == null)
+ for (BundleInfo bundleInfo : bundles) {
+ GeneratorBundleInfo generatorBundle = createGeneratorBundleInfo(bundleInfo, result);
+ if (generatorBundle == null)
continue;
- IInstallableUnit iu = bundle.getIU();
+ IInstallableUnit iu = generatorBundle.getIU();
// If there is no host, or the filters don't match, skip this one.
if (iu == null || !filterMatches(iu.getFilter(), configSpec))
continue;
- // TODO need to factor this out into its own action
- if (bundle.getSymbolicName().equals(ORG_ECLIPSE_UPDATE_CONFIGURATOR)) {
- bundle.setStartLevel(BundleInfo.NO_LEVEL);
- bundle.setMarkedAsStarted(false);
- bundle.setSpecialConfigCommands("setProgramProperty(propName:org.eclipse.update.reconcile, propValue:false);"); //$NON-NLS-1$
- bundle.setSpecialUnconfigCommands("setProgramProperty(propName:org.eclipse.update.reconcile, propValue:);"); //$NON-NLS-1$
- } else if (bundle.getStartLevel() == BundleInfo.NO_LEVEL && !bundle.isMarkedAsStarted()) {
- // this bundle does not require any particular configuration, the plug-in default IU will handle installing it
+ if (generatorBundle.getStartLevel() == BundleInfo.NO_LEVEL && !generatorBundle.isMarkedAsStarted()) {
+ // this bundle does not require any particular configuration, the plug-in
+ // default IU will handle installing it
continue;
}
- IInstallableUnit cu = null;
- if (this.version != null && !this.version.equals(Version.emptyVersion))
- cu = BundlesAction.createBundleConfigurationUnit(bundle.getSymbolicName(), this.version, false, bundle, flavor + cuIdPrefix, filter);
- else
- cu = BundlesAction.createBundleConfigurationUnit(bundle.getSymbolicName(), Version.parseVersion(bundle.getVersion()), false, bundle, flavor + cuIdPrefix, filter);
+ IInstallableUnit cu;
+ if (configBundles.contains(bundleInfo.getSymbolicName())) {
+ cu = BundlesAction.createBundleConfigurationUnit(generatorBundle.getSymbolicName(), this.version, false, generatorBundle,
+ flavor + cuIdPrefix, filter, true);
+ } else if (this.version != null && !this.version.equals(Version.emptyVersion)) {
+ cu = BundlesAction.createBundleConfigurationUnit(generatorBundle.getSymbolicName(), this.version, false, generatorBundle, flavor + cuIdPrefix, filter);
+ } else {
+ cu = BundlesAction.createBundleConfigurationUnit(generatorBundle.getSymbolicName(), Version.parseVersion(generatorBundle.getVersion()), false, generatorBundle, flavor + cuIdPrefix, filter);
+ }
if (cu != null) {
// Product Query will run against the repo, make sure these CUs are in before then
// TODO review the aggressive addition to the metadata repo. perhaps the query can query the result as well.
diff --git a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/EquinoxExecutableAction.java b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/EquinoxExecutableAction.java
index 862574d17..e3ec91b39 100644
--- a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/EquinoxExecutableAction.java
+++ b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/EquinoxExecutableAction.java
@@ -245,9 +245,8 @@ public class EquinoxExecutableAction extends AbstractPublisherAction {
private IBrandingAdvice getBrandingAdvice() {
// there is expected to only be one branding advice for a given configspec so
// just return the first one we find.
- Collection<IBrandingAdvice> advice = info.getAdvice(configSpec, true, null, null, IBrandingAdvice.class);
- for (Iterator<IBrandingAdvice> i = advice.iterator(); i.hasNext();)
- return i.next();
+ for (IBrandingAdvice advice : info.getAdvice(configSpec, true, null, null, IBrandingAdvice.class))
+ return advice;
return null;
}
@@ -293,6 +292,10 @@ public class EquinoxExecutableAction extends AbstractPublisherAction {
File newFile = new File(file.getParentFile(), "eclipse.exe"); //$NON-NLS-1$
file.renameTo(newFile);
descriptor.replace(file, newFile);
+ } else if (file.getName().equals("launcherc.exe")) { //$NON-NLS-1$
+ File newFile = new File(file.getParentFile(), "eclipsec.exe"); //$NON-NLS-1$
+ file.renameTo(newFile);
+ descriptor.replace(file, newFile);
}
}
}
diff --git a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/EquinoxLauncherCUAction.java b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/EquinoxLauncherCUAction.java
index 0d15c6408..1c22d094e 100644
--- a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/EquinoxLauncherCUAction.java
+++ b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/EquinoxLauncherCUAction.java
@@ -24,7 +24,6 @@ import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.metadata.expression.IMatchExpression;
import org.eclipse.equinox.p2.publisher.*;
import org.eclipse.equinox.p2.publisher.actions.IVersionAdvice;
-import org.eclipse.osgi.service.environment.Constants;
/**
* Create CUs for all Equinox launcher related IUs for the given set of configurations
@@ -63,12 +62,7 @@ public class EquinoxLauncherCUAction extends AbstractPublisherAction {
for (String configSpec : configSpecs) {
String[] specs = Utils.getTokens(configSpec, "."); //$NON-NLS-1$
if (specs.length > 0 && !AbstractPublisherAction.CONFIG_ANY.equalsIgnoreCase(specs[0])) {
- if (specs.length > 2 && Constants.OS_MACOSX.equals(specs[1]) && !Constants.ARCH_X86_64.equals(specs[2])) {
- //launcher fragment for mac only has arch for x86_64
- id = ORG_ECLIPSE_EQUINOX_LAUNCHER + '.' + specs[0] + '.' + specs[1];
- } else {
- id = ORG_ECLIPSE_EQUINOX_LAUNCHER + '.' + configSpec;
- }
+ id = ORG_ECLIPSE_EQUINOX_LAUNCHER + '.' + configSpec;
publishCU(id, configSpec, results);
}
}
diff --git a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/FeaturesAction.java b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/FeaturesAction.java
index 5c3d9a2a5..d11aaa39d 100644
--- a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/FeaturesAction.java
+++ b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/FeaturesAction.java
@@ -254,8 +254,7 @@ public class FeaturesAction extends AbstractPublisherAction {
// link in all the children (if any) as requirements.
// TODO consider if these should be linked as exact version numbers. Should be ok but may be brittle.
if (childIUs != null) {
- for (int i = 0; i < childIUs.size(); i++) {
- IInstallableUnit child = childIUs.get(i);
+ for (IInstallableUnit child : childIUs) {
IMatchExpression<IInstallableUnit> filter = child.getFilter();
required.add(MetadataFactory.createRequirement(PublisherHelper.IU_NAMESPACE, child.getId(), new VersionRange(child.getVersion(), true, child.getVersion(), true), filter, false, false));
}
@@ -340,8 +339,7 @@ public class FeaturesAction extends AbstractPublisherAction {
//Always add a requirement on the IU containing the feature jar
if (childIUs != null) {
- for (int i = 0; i < childIUs.size(); i++) {
- IInstallableUnit child = childIUs.get(i);
+ for (IInstallableUnit child : childIUs) {
patchRequirements.add(MetadataFactory.createRequirement(PublisherHelper.IU_NAMESPACE, child.getId(), new VersionRange(child.getVersion(), true, child.getVersion(), true), child.getFilter(), false, false));
}
}
@@ -616,7 +614,14 @@ public class FeaturesAction extends AbstractPublisherAction {
// artifact per feature IU.
Collection<IArtifactKey> artifacts = featureIU.getArtifacts();
for (IArtifactKey artifactKey : artifacts) {
- File file = new File(feature.getLocation());
+ String location = feature.getLocation();
+ if (location == null) {
+ if (PublisherHelper.isArtifactPublish(publisherInfo)) {
+ throw new IllegalArgumentException(NLS.bind(Messages.exception_sourcePath, feature.getId()));
+ }
+ continue;
+ }
+ File file = new File(location);
ArtifactDescriptor ad = (ArtifactDescriptor) PublisherHelper.createArtifactDescriptor(info, artifactKey, file);
processArtifactPropertiesAdvice(featureIU, ad, publisherInfo);
ad.setProperty(IArtifactDescriptor.DOWNLOAD_CONTENTTYPE, IArtifactDescriptor.TYPE_ZIP);
diff --git a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/ProductFileAdvice.java b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/ProductFileAdvice.java
index 551796a7a..19258375b 100644
--- a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/ProductFileAdvice.java
+++ b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/ProductFileAdvice.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2017 Code 9 and others.
+ * Copyright (c) 2008, 2021 Code 9 and others.
*
* This
* program and the accompanying materials are made available under the terms of
@@ -14,11 +14,14 @@
* EclipseSource - ongoing development
* IBM Corporation - ongoing development
* Rapicorp - additional features
+ * Christoph Läubrich - Bug 574952 p2 should distinguish between "product plugins" and "configuration plugins" (gently sponsored by Compart AG)
******************************************************************************/
package org.eclipse.equinox.p2.publisher.eclipse;
import java.io.File;
import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.p2.core.helpers.CollectionUtils;
import org.eclipse.equinox.internal.p2.publisher.eclipse.DataLoader;
@@ -32,10 +35,11 @@ import org.eclipse.equinox.p2.publisher.actions.ILicenseAdvice;
import org.eclipse.equinox.p2.repository.IRepositoryReference;
/**
- * Provide advice derived from the .product file. The product can give some info on
- * launching as well as the configuration (bundles, properties, ...)
+ * Provide advice derived from the .product file. The product can give some info
+ * on launching as well as the configuration (bundles, properties, ...)
*/
-public class ProductFileAdvice extends AbstractAdvice implements ILicenseAdvice, IExecutableAdvice, IConfigAdvice, IBrandingAdvice {
+public class ProductFileAdvice extends AbstractAdvice
+ implements ILicenseAdvice, IExecutableAdvice, IConfigAdvice, IBrandingAdvice {
private final static String OSGI_SPLASH_PATH = "osgi.splashPath"; //$NON-NLS-1$
private final static String SPLASH_PREFIX = "platform:/base/plugins/"; //$NON-NLS-1$
private final IProductDescriptor product;
@@ -43,7 +47,7 @@ public class ProductFileAdvice extends AbstractAdvice implements ILicenseAdvice,
private String ws;
private String os;
private String arch;
- private ConfigData configData = null;
+ private final ProductConfigData configData;
@Override
protected String getId() {
@@ -56,12 +60,9 @@ public class ProductFileAdvice extends AbstractAdvice implements ILicenseAdvice,
}
/**
- * Constructs a new ProductFileAdvice for a given product file and a
- * particular configuration. Configurations are
- * specified as: ws.os.arch where:
- * ws is the windowing system
- * os is the operating system
- * arch is the architecture
+ * Constructs a new ProductFileAdvice for a given product file and a particular
+ * configuration. Configurations are specified as: ws.os.arch where: ws is the
+ * windowing system os is the operating system arch is the architecture
*/
public ProductFileAdvice(IProductDescriptor product, String configSpec) {
this.product = product;
@@ -82,7 +83,7 @@ public class ProductFileAdvice extends AbstractAdvice implements ILicenseAdvice,
}
/**
- * Returns the program arguments for this product.
+ * Returns the program arguments for this product.
*/
@Override
public String[] getProgramArguments() {
@@ -99,32 +100,34 @@ public class ProductFileAdvice extends AbstractAdvice implements ILicenseAdvice,
return AbstractPublisherAction.getArrayFromString(line, " "); //$NON-NLS-1$
}
- /**
- * Returns the Bundles that constitute this product. These
- * bundles may be specified in the .product file, .product file configuration
- * area, config.ini file, or a combination of these three places.
- */
@Override
public BundleInfo[] getBundles() {
- return configData.getBundles();
+ return Stream.concat(getBundles(false), getBundles(true))
+ .toArray(BundleInfo[]::new);
+ }
+
+ Stream<BundleInfo> getBundles(boolean configOnly) {
+ if (configOnly) {
+ return configData.configBundles.stream();
+ }
+ return Arrays.stream(configData.data.getBundles());
}
/**
- * Returns the properties associated with this product. These
- * properties may be defined in the .product file, the config.ini
- * file, or both.
+ * Returns the properties associated with this product. These properties may be
+ * defined in the .product file, the config.ini file, or both.
*/
@Override
public Map<String, String> getProperties() {
Map<String, String> result = new HashMap<>();
- CollectionUtils.putAll(configData.getProperties(), result);
+ CollectionUtils.putAll(configData.data.getProperties(), result);
result.putAll(product.getConfigurationProperties(os, arch));
return result;
}
/**
- * Returns the name of the launcher. This should be the OS-independent
- * name. That is, ".exe" etc. should not be included.
+ * Returns the name of the launcher. This should be the OS-independent name.
+ * That is, ".exe" etc. should not be included.
*
* @return the name of the branded launcher or <code>null</code> if none.
*/
@@ -179,16 +182,18 @@ public class ProductFileAdvice extends AbstractAdvice implements ILicenseAdvice,
return product.getRepositoryEntries();
}
- private ConfigData getConfigData() {
+ private ProductConfigData getConfigData() {
DataLoader loader = createDataLoader();
ConfigData result;
if (loader != null) {
result = loader.getConfigData();
- } else
+ } else {
result = generateConfigData();
-
- addProductFileBundles(result); // these are the bundles specified in the <plugins/> tag
- addProductFileConfigBundles(result); // these are the bundles specified in the <configurations> tag in the product file
+ }
+ ProductConfigData data = new ProductConfigData(result);
+ addProductFileBundles(data); // these are the bundles specified in the <plugins/> tag
+ addProductFileConfigBundles(data); // these are the bundles specified in the <configurations> tag in the
+ // product file
if (product.getProductId() != null)
result.setProperty("eclipse.product", product.getProductId()); //$NON-NLS-1$
if (product.getApplication() != null)
@@ -196,70 +201,42 @@ public class ProductFileAdvice extends AbstractAdvice implements ILicenseAdvice,
String location = getSplashLocation();
if (location != null)
result.setProperty(OSGI_SPLASH_PATH, SPLASH_PREFIX + location);
- return result;
+ return data;
}
- private void addProductFileConfigBundles(ConfigData data) {
- Set<BundleInfo> versionBoundBundles = new HashSet<>();
- Map<String, List<BundleInfo>> unboundedBundles = new HashMap<>();
-
- BundleInfo[] bundles = data.getBundles();
- for (BundleInfo bundleInfo : bundles) {
- // For each bundle we know about, cache it. If the bundle doesn't have a version
- // add it to a list of bundles by name
- if (bundleInfo.getVersion().equals(BundleInfo.EMPTY_VERSION)) {
- addUnboundedBundle(unboundedBundles, bundleInfo);
+ private void addProductFileConfigBundles(ProductConfigData productConfigData) {
+ Map<String, List<BundleInfo>> configBundleMap = Arrays.stream(productConfigData.data.getBundles())
+ .collect(Collectors.groupingBy(BundleInfo::getSymbolicName));
+ for (BundleInfo configBundleInfo : product.getBundleInfos()) {
+ List<BundleInfo> matches = configBundleMap.get(configBundleInfo.getSymbolicName());
+ if (matches == null || matches.isEmpty()) {
+ // if there is no match in the ConfigData (e.g. plugin or mixed type product)
+ // simply add this to the list of config bundles
+ productConfigData.configBundles.add(configBundleInfo);
} else {
- versionBoundBundles.add(bundleInfo);
- addUnboundedBundle(unboundedBundles, bundleInfo);
+ // otherwise just update the existing data
+ for (BundleInfo target : matches) {
+ target.setStartLevel(configBundleInfo.getStartLevel());
+ target.setMarkedAsStarted(configBundleInfo.isMarkedAsStarted());
+ }
}
}
-
- List<BundleInfo> bundleInfos = product.getBundleInfos();
- for (BundleInfo bundleInfo : bundleInfos) {
- // For each bundle that has configuration information, if the bundle is in the
- // bundles bound by version, add the "configured" bundle instead
- // If the bundle is not bound to a version, then replace all bounded versions
- // with this one. Otherwise, just add this one (don't replace)
- if (versionBoundBundles.contains(bundleInfo)) {
- // If we found a version with the same name and version, replace it with the "configured" bundle
- data.removeBundle(bundleInfo);
- data.addBundle(bundleInfo);
- } else if (bundleInfo.getVersion().equals(BundleInfo.EMPTY_VERSION)) {
- // If we don't have a version number, look for all bundles that match by name
- List<BundleInfo> list = unboundedBundles.get(bundleInfo.getSymbolicName());
- if (list == null)
- data.addBundle(bundleInfo);
- else
- for (BundleInfo target : list) {
- target.setStartLevel(bundleInfo.getStartLevel());
- target.setMarkedAsStarted(bundleInfo.isMarkedAsStarted());
- }
- } else {
- // Otherwise we have a version, but we could not match it, so just add this one.
- data.addBundle(bundleInfo);
- }
-
- }
- }
-
- private void addUnboundedBundle(Map<String, List<BundleInfo>> data, BundleInfo bundleInfo) {
- if (!data.containsKey(bundleInfo.getSymbolicName()))
- data.put(bundleInfo.getSymbolicName(), new LinkedList<BundleInfo>());
- data.get(bundleInfo.getSymbolicName()).add(bundleInfo);
}
- private void addProductFileBundles(ConfigData data) {
+ private void addProductFileBundles(ProductConfigData productConfigData) {
+ if (product.useFeatures()) {
+ return;
+ }
List<IVersionedId> bundles = product.getBundles(true);
Set<BundleInfo> set = new HashSet<>();
- set.addAll(Arrays.asList(data.getBundles()));
+ set.addAll(Arrays.asList(productConfigData.data.getBundles()));
for (IVersionedId vid : bundles) {
BundleInfo bundleInfo = new BundleInfo();
bundleInfo.setSymbolicName(vid.getId());
bundleInfo.setVersion(vid.getVersion().toString());
if (!set.contains(bundleInfo))
- data.addBundle(bundleInfo);
+ productConfigData.data.addBundle(bundleInfo);
}
}
@@ -268,7 +245,7 @@ public class ProductFileAdvice extends AbstractAdvice implements ILicenseAdvice,
if (product.useFeatures())
return result;
- // Add all the bundles here. We replace / update them later
+ // Add all the bundles here. We replace / update them later
// if we find configuration information
List<IVersionedId> bundles = product.getBundles(true);
for (IVersionedId vid : bundles) {
@@ -295,21 +272,24 @@ public class ProductFileAdvice extends AbstractAdvice implements ILicenseAdvice,
String targetWS = AbstractPublisherAction.parseConfigSpec(spec)[0];
if (targetWS == null)
targetWS = AbstractPublisherAction.CONFIG_ANY;
- if (!ws.equals(targetWS) && !ws.equals(AbstractPublisherAction.CONFIG_ANY) && !targetWS.equals(AbstractPublisherAction.CONFIG_ANY)) {
+ if (!ws.equals(targetWS) && !ws.equals(AbstractPublisherAction.CONFIG_ANY)
+ && !targetWS.equals(AbstractPublisherAction.CONFIG_ANY)) {
return false;
}
String targetOS = AbstractPublisherAction.parseConfigSpec(spec)[1];
if (targetOS == null)
targetOS = AbstractPublisherAction.CONFIG_ANY;
- if (!os.equals(targetOS) && !os.equals(AbstractPublisherAction.CONFIG_ANY) && !targetOS.equals(AbstractPublisherAction.CONFIG_ANY)) {
+ if (!os.equals(targetOS) && !os.equals(AbstractPublisherAction.CONFIG_ANY)
+ && !targetOS.equals(AbstractPublisherAction.CONFIG_ANY)) {
return false;
}
String targetArch = AbstractPublisherAction.parseConfigSpec(spec)[2];
if (targetArch == null)
targetArch = AbstractPublisherAction.CONFIG_ANY;
- if (!arch.equals(targetArch) && !arch.equals(AbstractPublisherAction.CONFIG_ANY) && !targetArch.equals(AbstractPublisherAction.CONFIG_ANY)) {
+ if (!arch.equals(targetArch) && !arch.equals(AbstractPublisherAction.CONFIG_ANY)
+ && !targetArch.equals(AbstractPublisherAction.CONFIG_ANY)) {
return false;
}
}
@@ -325,16 +305,29 @@ public class ProductFileAdvice extends AbstractAdvice implements ILicenseAdvice,
File configFile = new File(location);
// We are assuming we are always relative from the product file
- // However PDE tooling puts us relative from the workspace, that "relative" path also looks like an absolute path on linux
+ // However PDE tooling puts us relative from the workspace, that "relative" path
+ // also looks like an absolute path on linux
// Build may have copied the file to the correct place for us
if (!configFile.isAbsolute() || !configFile.exists())
configFile = new File(product.getLocation().getParentFile(), location);
- //We don't really have an executable location, get something reasonable based on the config.ini location
+ // We don't really have an executable location, get something reasonable based
+ // on the config.ini location
File parent = configFile.getParentFile();
if (parent.getName().equals("configuration") && parent.getParentFile() != null) //$NON-NLS-1$
parent = parent.getParentFile();
return new DataLoader(configFile, parent);
}
+ private static final class ProductConfigData {
+
+ private final List<BundleInfo> configBundles = new ArrayList<>();
+ private final ConfigData data;
+
+ public ProductConfigData(ConfigData data) {
+ this.data = data;
+ }
+
+ }
+
}
diff --git a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/pde/internal/swt/tools/IconExe.java b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/pde/internal/swt/tools/IconExe.java
index 64d908d60..0ba53b888 100644
--- a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/pde/internal/swt/tools/IconExe.java
+++ b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/pde/internal/swt/tools/IconExe.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2017 IBM Corporation and others.
+ * Copyright (c) 2000, 2019 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,11 +10,14 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Christoph Läubrich - refactor to use a more consistent API that allows error propagation to the caller
*******************************************************************************/
package org.eclipse.pde.internal.swt.tools;
import java.io.*;
+import java.text.MessageFormat;
import java.util.*;
+import java.util.function.Consumer;
/**
* Customize the icon of a Windows exe
@@ -70,24 +73,14 @@ public class IconExe {
System.err.println("Usage: IconExe <windows executable> <ico file>"); //$NON-NLS-1$
return;
}
- ImageLoader loader = new ImageLoader();
+ File[] iconFiles = new File[args.length - 1];
+ for (int i = 0; i < iconFiles.length; i++) {
+ iconFiles[i] = new File(args[i + 1]);
- List<ImageData> images = new ArrayList<>();
- for (int i = 1; i < args.length; i++) {
- try {
- //An ICO should contain 7 images, a BMP will contain 1
- ImageData[] current = loader.load(args[i]);
- for (ImageData id : current) {
- images.add(id);
- }
- } catch (RuntimeException e) {
- //ignore so that we process the other images
- }
}
- ImageData[] data = new ImageData[images.size()];
- data = images.toArray(data);
+ ImageData[] data = loadImages(iconFiles, System.err::println);
- List<IconResInfo> unchangedIcons = unloadIcons(args[0], data);
+ Collection<IconResInfo> unchangedIcons = replaceIcons(new File(args[0]), data, System.err::println);
if (unchangedIcons.size() != 0) {
System.err.println(String.format("[IconExe] Error - %d original icon(s) not replaced in %s:", unchangedIcons.size(), args[0])); //$NON-NLS-1$
for (IconResInfo icon : unchangedIcons) {
@@ -98,45 +91,39 @@ public class IconExe {
}
}
- /* Implementation */
-
- /**
- * Retrieve the Desktop icons provided in the Windows executable program.
- * These icons are typically shown in various places of the Windows desktop.
+ /**
+ * Loads images from files so they are prepared for used in replacing icons in a
+ * launcher executable
*
- * Note. The Eclipse 3.4 launcher returns the following 7 images (in any order).
- * 1. 48x48, 32 bit (RGB / Alpha Channel)
- * 2. 32x32, 32 bit (RGB / Alpha Channel)
- * 3. 16x16, 32 bit (RGB / Alpha Channel)
- * 4. 48x48, 8 bit (256 colors)
- * 5. 32x32, 8 bit (256 colors)
- * 6. 24x24, 8 bit (256 colors)
- * 7. 16x16, 8 bit (256 colors)
- *
- * Note 1. The Eclipse 4.2 launcher requires an .ico file with the following 7 images (in any order).
- * 1. 256x256, 32 bit (RGB / Alpha Channel)
- * 2. 48x48, 32 bit (RGB / Alpha Channel)
- * 3. 32x32, 32 bit (RGB / Alpha Channel)
- * 4. 16x16, 32 bit (RGB / Alpha Channel)
- * 5. 48x48, 8 bit (256 colors)
- * 6. 32x32, 8 bit (256 colors)
- * 7. 16x16, 8 bit (256 colors)
- *
- * @param program the Windows executable e.g c:/eclipse/eclipse.exe
+ * @param icons the icons to loader
+ * @param errorMessageConsumer a consumer that is informed about skipable errors
+ * while loading icons
+ * @return an array of image data that could be used to replace launcher icons
+ * @throws IOException if reading of files fails on the I/O level
*/
- static ImageData[] loadIcons(String program) throws FileNotFoundException, IOException {
- ImageData[] data;
- try (RandomAccessFile raf = new RandomAccessFile(program, "r") //$NON-NLS-1$
- ) {
- IconExe iconExe = new IconExe();
- IconResInfo[] iconInfo = iconExe.getIcons(raf);
- data = new ImageData[iconInfo.length];
- for (int i = 0; i < data.length; i++)
- data[i] = iconInfo[i].data;
+ public static ImageData[] loadImages(File[] icons, Consumer<String> errorMessageConsumer) throws IOException {
+ ImageLoader loader = new ImageLoader();
+ List<ImageData> images = new ArrayList<>();
+ for (File file : icons) {
+ if (!file.exists()) {
+ errorMessageConsumer.accept(MessageFormat.format("The specified icon file {0} does not exits", file)); //$NON-NLS-1$
+ continue;
+ }
+ try (FileInputStream stream = new FileInputStream(file)) {
+ try {
+ ImageData[] imageDatas = loader.load(stream);
+ images.addAll(Arrays.asList(imageDatas));
+ } catch (RuntimeException e) {
+ errorMessageConsumer
+ .accept(MessageFormat.format("Loading of image {0} failed: {1}", file, e.getMessage())); //$NON-NLS-1$
+ }
+ }
}
- return data;
+ return images.toArray(new ImageData[0]);
}
+ /* Implementation */
+
/**
* Replace the Desktop icons provided in the Windows executable program
* with icons provided by the user.
@@ -173,19 +160,21 @@ public class IconExe {
* Note 4. This function modifies the content of the executable program and may cause
* its corruption.
*
- * @param program the Windows executable e.g c:/eclipse/eclipse.exe
+ * @param launcherFile the Windows executable e.g c:/eclipse/eclipse.exe
* @param icons to write to the given executable
* @return the list of icons from the original program that were not successfully replaced (empty if success)
*/
- static List<IconResInfo> unloadIcons(String program, ImageData[] icons) throws FileNotFoundException, IOException {
- List<IconResInfo> iconInfo;
- try (RandomAccessFile raf = new RandomAccessFile(program, "rw") //$NON-NLS-1$
+ public static Collection<IconResInfo> replaceIcons(File launcherFile, ImageData[] icons,
+ Consumer<String> errorMessageConsumer)
+ throws FileNotFoundException, IOException {
+ Collection<IconResInfo> iconInfo;
+ try (RandomAccessFile raf = new RandomAccessFile(launcherFile, "rw") //$NON-NLS-1$
) {
- IconExe iconExe = new IconExe();
- iconInfo = new ArrayList<>(Arrays.asList(iconExe.getIcons(raf)));
+ iconInfo = getIcons(raf);
// Display an error if no icons found in target executable.
if (iconInfo.isEmpty()) {
- System.err.println("Warning - no icons detected in \"" + program + "\"."); //$NON-NLS-1$ //$NON-NLS-2$
+ errorMessageConsumer
+ .accept(MessageFormat.format("no icons detected in {0}.", launcherFile.getAbsolutePath())); //$NON-NLS-1$
raf.close();
return Collections.emptyList();
}
@@ -218,26 +207,46 @@ public class IconExe {
int size;
}
- IconResInfo[] iconInfo = null;
- int iconCnt;
+ /**
+ * Retrieve the Desktop icons provided in the Windows executable program.
+ * These icons are typically shown in various places of the Windows desktop.
+ *
+ * Note. The Eclipse 3.4 launcher returns the following 7 images (in any order).
+ * 1. 48x48, 32 bit (RGB / Alpha Channel)
+ * 2. 32x32, 32 bit (RGB / Alpha Channel)
+ * 3. 16x16, 32 bit (RGB / Alpha Channel)
+ * 4. 48x48, 8 bit (256 colors)
+ * 5. 32x32, 8 bit (256 colors)
+ * 6. 24x24, 8 bit (256 colors)
+ * 7. 16x16, 8 bit (256 colors)
+ *
+ * Note 1. The Eclipse 4.2 launcher requires an .ico file with the following 7 images (in any order).
+ * 1. 256x256, 32 bit (RGB / Alpha Channel)
+ * 2. 48x48, 32 bit (RGB / Alpha Channel)
+ * 3. 32x32, 32 bit (RGB / Alpha Channel)
+ * 4. 16x16, 32 bit (RGB / Alpha Channel)
+ * 5. 48x48, 8 bit (256 colors)
+ * 6. 32x32, 8 bit (256 colors)
+ * 7. 16x16, 8 bit (256 colors)
+ *
+ * @param raf RandomAccessFile for the the Windows executable e.g c:/eclipse/eclipse.exe
+ */
+ static Collection<IconResInfo> getIcons(RandomAccessFile raf) throws IOException {
- IconResInfo[] getIcons(RandomAccessFile raf) throws IOException {
- iconInfo = new IconResInfo[4];
- iconCnt = 0;
IMAGE_DOS_HEADER imageDosHeader = new IMAGE_DOS_HEADER();
read(raf, imageDosHeader);
if (imageDosHeader.e_magic != IMAGE_DOS_SIGNATURE)
- return new IconResInfo[0];
+ return Collections.emptyList();
int imageNtHeadersOffset = imageDosHeader.e_lfanew;
raf.seek(imageNtHeadersOffset);
IMAGE_NT_HEADERS imageNtHeaders = new IMAGE_NT_HEADERS();
read(raf, imageNtHeaders);
if (imageNtHeaders.Signature != IMAGE_NT_SIGNATURE)
- return new IconResInfo[0];
+ return Collections.emptyList();
// DumpResources
int resourcesRVA = imageNtHeaders.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_RESOURCE].VirtualAddress;
if (resourcesRVA == 0)
- return new IconResInfo[0];
+ return Collections.emptyList();
if (DEBUG)
System.out.println("* Resources (RVA= " + resourcesRVA + ")"); //$NON-NLS-1$ //$NON-NLS-2$
IMAGE_SECTION_HEADER imageSectionHeader = new IMAGE_SECTION_HEADER();
@@ -253,19 +262,16 @@ public class IconExe {
}
}
if (!found)
- return new IconResInfo[0];
+ return Collections.emptyList();
int delta = imageSectionHeader.VirtualAddress - imageSectionHeader.PointerToRawData;
int imageResourceDirectoryOffset = resourcesRVA - delta;
- dumpResourceDirectory(raf, imageResourceDirectoryOffset, imageResourceDirectoryOffset, delta, 0, 0, false);
- if (iconCnt < iconInfo.length) {
- IconResInfo[] newArray = new IconResInfo[iconCnt];
- System.arraycopy(iconInfo, 0, newArray, 0, iconCnt);
- iconInfo = newArray;
- }
- return iconInfo;
+ return dumpResourceDirectory(raf, imageResourceDirectoryOffset, imageResourceDirectoryOffset, delta, 0, 0,
+ false);
}
- void dumpResourceDirectory(RandomAccessFile raf, int imageResourceDirectoryOffset, int resourceBase, int delta, int type, int level, boolean rt_icon_root) throws IOException {
+ static Collection<IconResInfo> dumpResourceDirectory(RandomAccessFile raf, int imageResourceDirectoryOffset,
+ int resourceBase, int delta, int type, int level, boolean rt_icon_root) throws IOException {
+ Collection<IconResInfo> iconInfo = new ArrayList<>();
if (DEBUG)
System.out.println("** LEVEL " + level); //$NON-NLS-1$
@@ -293,7 +299,9 @@ public class IconExe {
}
for (IMAGE_RESOURCE_DIRECTORY_ENTRY imageResourceDirectoryEntry : imageResourceDirectoryEntries) {
if (imageResourceDirectoryEntry.DataIsDirectory) {
- dumpResourceDirectory(raf, imageResourceDirectoryEntry.OffsetToDirectory + resourceBase, resourceBase, delta, imageResourceDirectoryEntry.Id, level + 1, rt_icon_root ? true : type == RT_ICON);
+ iconInfo.addAll(dumpResourceDirectory(raf, imageResourceDirectoryEntry.OffsetToDirectory + resourceBase,
+ resourceBase, delta, imageResourceDirectoryEntry.Id, level + 1,
+ rt_icon_root ? true : type == RT_ICON));
} else {
// Resource found
/// pResDirEntry->Name
@@ -304,21 +312,15 @@ public class IconExe {
if (DEBUG)
System.out.println("Resource Id " + irde.Id + " Data Offset RVA " + data.OffsetToData + ", Size " + data.Size); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
if (rt_icon_root) {
- if (DEBUG)
- System.out.println("iconcnt " + iconCnt + " |" + iconInfo.length); //$NON-NLS-1$ //$NON-NLS-2$
- iconInfo[iconCnt] = new IconResInfo();
- iconInfo[iconCnt].data = parseIcon(raf, data.OffsetToData - delta, data.Size);
- iconInfo[iconCnt].offset = data.OffsetToData - delta;
- iconInfo[iconCnt].size = data.Size;
- iconCnt++;
- if (iconCnt == iconInfo.length) {
- IconResInfo[] newArray = new IconResInfo[iconInfo.length + 4];
- System.arraycopy(iconInfo, 0, newArray, 0, iconInfo.length);
- iconInfo = newArray;
- }
+ IconResInfo resInfo = new IconResInfo();
+ resInfo.data = parseIcon(raf, data.OffsetToData - delta, data.Size);
+ resInfo.offset = data.OffsetToData - delta;
+ resInfo.size = data.Size;
+ iconInfo.add(resInfo);
}
}
}
+ return iconInfo;
}
static ImageData parseIcon(RandomAccessFile raf, int offset, int size) throws IOException {
@@ -748,14 +750,14 @@ public class IconExe {
}
static long read8(RandomAccessFile raf) throws IOException {
- int b0 = raf.readByte() & 0xFF;
- int b1 = raf.readByte() & 0xFF;
- int b2 = raf.readByte() & 0xFF;
- int b3 = raf.readByte() & 0xFF;
- int b4 = raf.readByte() & 0xFF;
- int b5 = raf.readByte() & 0xFF;
- int b6 = raf.readByte() & 0xFF;
- int b7 = raf.readByte() & 0xFF;
+ long b0 = raf.readByte() & 0xFF;
+ long b1 = raf.readByte() & 0xFF;
+ long b2 = raf.readByte() & 0xFF;
+ long b3 = raf.readByte() & 0xFF;
+ long b4 = raf.readByte() & 0xFF;
+ long b5 = raf.readByte() & 0xFF;
+ long b6 = raf.readByte() & 0xFF;
+ long b7 = raf.readByte() & 0xFF;
return b7 << 56 | b6 << 48 | b5 << 40 | b4 << 32 | b3 << 24 | b2 << 16 | b1 << 8 | b0;
}
@@ -1282,49 +1284,12 @@ public class IconExe {
*/
public ImageData[] load(InputStream stream) {
if (stream == null)
- SWT.error(SWT.ERROR_NULL_ARGUMENT);
+ throw new NullPointerException("stream can't be null"); //$NON-NLS-1$
reset();
data = FileFormat.load(stream, this);
return data;
}
- /**
- * Loads an array of <code>ImageData</code> objects from the
- * file with the specified name. Throws an error if either
- * an error occurs while loading the images, or if the images are
- * not of a supported type. Returns the loaded image data array.
- *
- * @param filename the name of the file to load the images from
- * @return an array of <code>ImageData</code> objects loaded from the specified file
- *
- * @exception IllegalArgumentException <ul>
- * <li>ERROR_NULL_ARGUMENT - if the file name is null</li>
- * </ul>
- * @exception RuntimeException <ul>
- * <li>ERROR_INVALID_IMAGE - if the image file contains invalid data</li>
- * <li>ERROR_IO - if an IO error occurs while reading data</li>
- * <li>ERROR_UNSUPPORTED_FORMAT - if the image file contains an unrecognized format</li>
- * </ul>
- */
- public ImageData[] load(String filename) {
- if (filename == null)
- SWT.error(SWT.ERROR_NULL_ARGUMENT);
- InputStream stream = null;
- try {
- stream = new BufferedInputStream(new FileInputStream(filename));
- return load(stream);
- } catch (IOException e) {
- SWT.error(SWT.ERROR_IO, e);
- } finally {
- try {
- if (stream != null)
- stream.close();
- } catch (IOException e) {
- // Ignore error
- }
- }
- return null;
- }
}
static class ImageData {
@@ -1576,7 +1541,7 @@ public class IconExe {
* <code>ImageLoader.load()</code>.
* </p>
*
- * @param filename the name of the file to load the image from (must not be null)
+ * @param data the image data to use
*
* @exception IllegalArgumentException <ul>
* <li>ERROR_NULL_ARGUMENT - if the file name is null</li>
@@ -1587,8 +1552,7 @@ public class IconExe {
* <li>ERROR_UNSUPPORTED_FORMAT - if the image file contains an unrecognized format</li>
* </ul>
*/
- public ImageData(String filename) {
- ImageData[] data = new ImageLoader().load(filename);
+ public ImageData(ImageData[] data) {
if (data.length < 1)
SWT.error(SWT.ERROR_INVALID_IMAGE);
ImageData i = data[0];
@@ -2839,13 +2803,8 @@ public class IconExe {
abstract ImageData[] loadFromByteStream();
public ImageData[] loadFromStream(LEDataInputStream stream) {
- try {
- inputStream = stream;
- return loadFromByteStream();
- } catch (Exception e) {
- SWT.error(SWT.ERROR_IO, e);
- return null;
- }
+ inputStream = stream;
+ return loadFromByteStream();
}
public static ImageData[] load(InputStream is, ImageLoader loader) {
@@ -2882,7 +2841,9 @@ public class IconExe {
SWT.error(SWT.ERROR_INVALID_IMAGE);
return;
}
- SWT.error(SWT.ERROR_INVALID_IMAGE);
+ throw new IllegalArgumentException(MessageFormat.format(
+ "only BMP_RLE8_COMPRESSION(cmp=1) or BMP_RLE4_COMPRESSION(cmp=2) compression is currently supported (given cmp={0})", //$NON-NLS-1$
+ cmp));
}
int decompressRLE4Data(byte[] src, int numBytes, int stride, byte[] dest, int destSize) {
diff --git a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src_ant/org/eclipse/equinox/internal/p2/publisher/ant/AbstractPublishTask.java b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src_ant/org/eclipse/equinox/internal/p2/publisher/ant/AbstractPublishTask.java
index bb67873dd..c9a149b4e 100644
--- a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src_ant/org/eclipse/equinox/internal/p2/publisher/ant/AbstractPublishTask.java
+++ b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src_ant/org/eclipse/equinox/internal/p2/publisher/ant/AbstractPublishTask.java
@@ -41,10 +41,10 @@ public abstract class AbstractPublishTask extends Task {
/**
* Support nested repository elements that looking something like
- * <repo location="file:/foo" metadata="true" artifact="true" />
- * Both metadata and artifact are optional:
- * 1) if neither are set, the repo is used for both metadata and artifacts
- * 2) if only one is true, the repo is that type and not the other
+ * <repo location="file:/foo" metadata="true" artifact="true" /> Both metadata
+ * and artifact are optional: 1) if neither are set, the repo is used for both
+ * metadata and artifacts 2) if only one is true, the repo is that type and not
+ * the other
*/
static public class RepoEntry {
private URI repoLocation;
@@ -52,7 +52,7 @@ public abstract class AbstractPublishTask extends Task {
private Boolean artifact = null;
/**
- * If not set, default is true if we aren't set as an artifact repo
+ * If not set, default is true if we aren't set as an artifact repo
*/
public boolean isMetadataRepository() {
if (metadata != null)
@@ -61,7 +61,7 @@ public abstract class AbstractPublishTask extends Task {
}
/**
- * If not set, default is true if we aren't set as a metadata repo
+ * If not set, default is true if we aren't set as a metadata repo
*/
public boolean isArtifactRepository() {
if (artifact != null)
@@ -117,14 +117,18 @@ public abstract class AbstractPublishTask extends Task {
protected void initializeRepositories(PublisherInfo info) throws ProvisionException {
if (artifactLocation != null) {
- IArtifactRepository repo = Publisher.createArtifactRepository(getProvisioningAgent(), artifactLocation, artifactRepoName, compress, reusePackedFiles);
+ @SuppressWarnings("removal")
+ IArtifactRepository repo = Publisher.createArtifactRepository(getProvisioningAgent(), artifactLocation,
+ artifactRepoName, compress, reusePackedFiles);
if (!append && !isEmpty(repo)) {
File repoLocation = URIUtil.toFile(artifactLocation);
if (repoLocation != null && source != null) {
if (repoLocation.isFile())
repoLocation = repoLocation.getParentFile();
if (repoLocation.equals(new File(source)))
- throw new IllegalArgumentException(NLS.bind(Messages.exception_artifactRepoNoAppendDestroysInput, URIUtil.toUnencodedString(artifactLocation)));
+ throw new IllegalArgumentException(
+ NLS.bind(Messages.exception_artifactRepoNoAppendDestroysInput,
+ URIUtil.toUnencodedString(artifactLocation)));
}
repo.removeAll(new NullProgressMonitor());
}
@@ -133,11 +137,14 @@ public abstract class AbstractPublishTask extends Task {
throw new ProvisionException(createConfigurationEror(Messages.exception_noArtifactRepo));
if (metadataLocation == null)
throw new ProvisionException(createConfigurationEror(Messages.exception_noMetadataRepo));
- info.setMetadataRepository(Publisher.createMetadataRepository(getProvisioningAgent(), metadataLocation, metadataRepoName, append, compress));
+ info.setMetadataRepository(Publisher.createMetadataRepository(getProvisioningAgent(), metadataLocation,
+ metadataRepoName, append, compress));
if (contextRepositories.size() > 0) {
- CompositeMetadataRepository contextMetadata = CompositeMetadataRepository.createMemoryComposite(getProvisioningAgent());
- CompositeArtifactRepository contextArtifact = CompositeArtifactRepository.createMemoryComposite(getProvisioningAgent());
+ CompositeMetadataRepository contextMetadata = CompositeMetadataRepository
+ .createMemoryComposite(getProvisioningAgent());
+ CompositeArtifactRepository contextArtifact = CompositeArtifactRepository
+ .createMemoryComposite(getProvisioningAgent());
for (RepoEntry entry : contextRepositories) {
if (contextMetadata != null && entry.isMetadataRepository())
diff --git a/bundles/org.eclipse.equinox.p2.publisher/.classpath b/bundles/org.eclipse.equinox.p2.publisher/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.publisher/.classpath
+++ b/bundles/org.eclipse.equinox.p2.publisher/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.publisher/.settings/.api_filters b/bundles/org.eclipse.equinox.p2.publisher/.settings/.api_filters
new file mode 100644
index 000000000..5fbae6834
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.publisher/.settings/.api_filters
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<component id="org.eclipse.equinox.p2.publisher" version="2">
+ <resource path="META-INF/MANIFEST.MF">
+ <filter id="926941240">
+ <message_arguments>
+ <message_argument value="1.7.0"/>
+ <message_argument value="1.6.200"/>
+ </message_arguments>
+ </filter>
+ </resource>
+</component>
diff --git a/bundles/org.eclipse.equinox.p2.publisher/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.publisher/.settings/org.eclipse.jdt.core.prefs
index 0300aa8b3..cb0db2a19 100644
--- a/bundles/org.eclipse.equinox.p2.publisher/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.publisher/.settings/org.eclipse.jdt.core.prefs
@@ -16,9 +16,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -88,6 +89,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -124,7 +126,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -138,7 +141,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -155,6 +157,7 @@ org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_record_components=16
org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
@@ -162,6 +165,7 @@ org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0
org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
@@ -169,7 +173,9 @@ org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0
org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1
org.eclipse.jdt.core.formatter.blank_lines_before_field=0
org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
@@ -178,6 +184,7 @@ org.eclipse.jdt.core.formatter.blank_lines_before_method=1
org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
org.eclipse.jdt.core.formatter.blank_lines_before_package=0
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
@@ -189,6 +196,8 @@ org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
@@ -206,6 +215,7 @@ org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
org.eclipse.jdt.core.formatter.comment.line_length=80
org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
@@ -221,6 +231,7 @@ org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=fals
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
org.eclipse.jdt.core.formatter.indent_empty_lines=false
@@ -259,7 +270,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -286,6 +296,7 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arg
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
@@ -294,6 +305,7 @@ org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -310,6 +322,7 @@ org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not ins
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
@@ -330,7 +343,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -348,6 +360,7 @@ org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not in
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
@@ -374,6 +387,7 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_ar
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
@@ -393,6 +407,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
@@ -408,6 +424,7 @@ org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
@@ -447,6 +464,8 @@ org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
@@ -456,7 +475,12 @@ org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.lineSplit=120
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0
org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
@@ -466,16 +490,17 @@ org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=commo
org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.text_block_indentation=0
org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.publisher/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.equinox.p2.publisher/.settings/org.eclipse.jdt.ui.prefs
index 1f5e3b3ad..cdf4ca19e 100644
--- a/bundles/org.eclipse.equinox.p2.publisher/.settings/org.eclipse.jdt.ui.prefs
+++ b/bundles/org.eclipse.equinox.p2.publisher/.settings/org.eclipse.jdt.ui.prefs
@@ -1,7 +1,7 @@
eclipse.preferences.version=1
editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile
-formatter_settings_version=16
+formatter_settings_version=19
org.eclipse.jdt.ui.ignorelowercasenames=true
org.eclipse.jdt.ui.importorder=;
org.eclipse.jdt.ui.ondemandthreshold=3
@@ -24,7 +24,7 @@ sp_cleanup.convert_functional_interfaces=false
sp_cleanup.convert_to_enhanced_for_loop=false
sp_cleanup.correct_indentation=false
sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.format_source_code_changes_only=true
sp_cleanup.insert_inferred_type_arguments=false
sp_cleanup.make_local_variable_final=false
sp_cleanup.make_parameters_final=false
diff --git a/bundles/org.eclipse.equinox.p2.publisher/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.publisher/META-INF/MANIFEST.MF
index bdf0f1dcb..693d9e66b 100644
--- a/bundles/org.eclipse.equinox.p2.publisher/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.publisher/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %bundleName
Bundle-SymbolicName: org.eclipse.equinox.p2.publisher;singleton:=true
-Bundle-Version: 1.5.300.qualifier
+Bundle-Version: 1.7.0.qualifier
Bundle-Activator: org.eclipse.equinox.internal.p2.publisher.Activator
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -16,17 +16,15 @@ Export-Package: org.eclipse.equinox.internal.p2.publisher;
x-friends:="org.eclipse.equinox.p2.directorywatcher,
org.eclipse.equinox.p2.touchpoint.eclipse,
org.eclipse.equinox.p2.updatesite,
- org.eclipse.pde.publishing,
org.eclipse.equinox.p2.publisher.eclipse",
org.eclipse.equinox.p2.publisher.actions;
x-friends:="org.eclipse.equinox.p2.updatesite,
org.eclipse.equinox.p2.directorywatcher,
- org.eclipse.pde.publishing,
org.eclipse.equinox.p2.publisher.eclipse",
org.eclipse.equinox.spi.p2.publisher;x-friends:="org.eclipse.equinox.p2.updatesite,org.eclipse.equinox.p2.publisher.eclipse"
Require-Bundle: org.eclipse.equinox.common;bundle-version="[3.5.0,4.0.0)",
org.eclipse.osgi;bundle-version="3.8.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Import-Package: org.eclipse.equinox.app;version="1.0.0";resolution:=optional,
org.eclipse.equinox.internal.p2.artifact.processors.checksum,
diff --git a/bundles/org.eclipse.equinox.p2.publisher/build.properties b/bundles/org.eclipse.equinox.p2.publisher/build.properties
index 3e2e49a0d..adbece45b 100644
--- a/bundles/org.eclipse.equinox.p2.publisher/build.properties
+++ b/bundles/org.eclipse.equinox.p2.publisher/build.properties
@@ -19,5 +19,4 @@ bin.includes = META-INF/,\
.,\
about.html,\
plugin.properties
-javacWarnings..=+unusedThrown
src.includes = about.html
diff --git a/bundles/org.eclipse.equinox.p2.publisher/pom.xml b/bundles/org.eclipse.equinox.p2.publisher/pom.xml
index a0f08bdbc..b16ba1bd1 100644
--- a/bundles/org.eclipse.equinox.p2.publisher/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.publisher/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.publisher</artifactId>
- <version>1.5.300-SNAPSHOT</version>
+ <version>1.7.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/AbstractPublisherAction.java b/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/AbstractPublisherAction.java
index f5d890b08..5f1dc9d42 100644
--- a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/AbstractPublisherAction.java
+++ b/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/AbstractPublisherAction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2017 Code 9 and others.
+ * Copyright (c) 2008, 2017 Code 9 and others.
*
* This
* program and the accompanying materials are made available under the terms of
@@ -8,8 +8,8 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
+ *
+ * Contributors:
* Code 9 - initial API and implementation
* IBM - ongoing development
* SAP - ongoing development
@@ -63,6 +63,7 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
/**
* Returns a string array of { ws, os, arch } as parsed from the given string
+ *
* @param configSpec the string to parse
* @return the ws, os, arch form of the given string
*/
@@ -85,10 +86,11 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
/**
* Returns the canonical form of config spec with the given ws, os and arch.
- * Note that the result is intended to be machine readable (i.e., parseConfigSpec
- * will parse the the result).
- * @param ws the window system
- * @param os the operating system
+ * Note that the result is intended to be machine readable (i.e.,
+ * parseConfigSpec will parse the the result).
+ *
+ * @param ws the window system
+ * @param os the operating system
* @param arch the machine architecture
* @return the machine readable format of the given config spec
*/
@@ -97,15 +99,16 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
}
protected void addSelfCapability(InstallableUnitDescription root) {
- root.setCapabilities(new IProvidedCapability[] {createSelfCapability(root.getId(), root.getVersion())});
+ root.setCapabilities(new IProvidedCapability[] { createSelfCapability(root.getId(), root.getVersion()) });
}
/**
- * Returns the LDAP filter form that matches the given config spec. Returns
- * an empty String if the spec does not identify an ws, os or arch.
+ * Returns the LDAP filter form that matches the given config spec. Returns an
+ * empty String if the spec does not identify an ws, os or arch.
+ *
* @param configSpec a config spec to filter
- * @return the LDAP filter for the given spec. <code>null</code> if the given spec does not
- * parse into a filter.
+ * @return the LDAP filter for the given spec. <code>null</code> if the given
+ * spec does not parse into a filter.
*/
protected IMatchExpression<IInstallableUnit> createFilterSpec(String configSpec) {
String ldap = createLDAPString(configSpec);
@@ -117,9 +120,15 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
protected String createLDAPString(String configSpec) {
String[] config = parseConfigSpec(configSpec);
if (config[0] != null || config[1] != null || config[2] != null) {
- String filterWs = config[0] != null && !CONFIG_ANY.equalsIgnoreCase(config[0]) ? "(osgi.ws=" + config[0] + ")" : ""; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- String filterOs = config[1] != null && !CONFIG_ANY.equalsIgnoreCase(config[1]) ? "(osgi.os=" + config[1] + ")" : ""; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- String filterArch = config[2] != null && !CONFIG_ANY.equalsIgnoreCase(config[2]) ? "(osgi.arch=" + config[2] + ")" : ""; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ String filterWs = config[0] != null && !CONFIG_ANY.equalsIgnoreCase(config[0])
+ ? "(osgi.ws=" + config[0] + ")" //$NON-NLS-1$ //$NON-NLS-2$
+ : ""; //$NON-NLS-1$
+ String filterOs = config[1] != null && !CONFIG_ANY.equalsIgnoreCase(config[1])
+ ? "(osgi.os=" + config[1] + ")" //$NON-NLS-1$ //$NON-NLS-2$
+ : ""; //$NON-NLS-1$
+ String filterArch = config[2] != null && !CONFIG_ANY.equalsIgnoreCase(config[2])
+ ? "(osgi.arch=" + config[2] + ")" //$NON-NLS-1$ //$NON-NLS-2$
+ : ""; //$NON-NLS-1$
if (filterWs.length() == 0 && filterOs.length() == 0 && filterArch.length() == 0)
return null;
return "(& " + filterWs + filterOs + filterArch + ")"; //$NON-NLS-1$ //$NON-NLS-2$
@@ -136,9 +145,10 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
}
/**
- * Returns the normalized string form of the given config spec. This is useful for putting
- * in IU ids etc. Note that the result is not intended to be machine readable (i.e., parseConfigSpec
- * may not work on the result).
+ * Returns the normalized string form of the given config spec. This is useful
+ * for putting in IU ids etc. Note that the result is not intended to be machine
+ * readable (i.e., parseConfigSpec may not work on the result).
+ *
* @param configSpec the config spec to format
* @return the readable format of the given config spec
*/
@@ -152,9 +162,10 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
}
/**
- * Creates and returns a collection of RequiredCapabilities for the IUs represented
- * by the given collection. The collection may include a mixture of IInstallableUnits
- * or VersionedNames.
+ * Creates and returns a collection of RequiredCapabilities for the IUs
+ * represented by the given collection. The collection may include a mixture of
+ * IInstallableUnits or VersionedNames.
+ *
* @param children descriptions of the IUs on which requirements are to be made
* @return a collection of RequiredCapabilities representing the given IUs
*/
@@ -164,12 +175,15 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
if (next instanceof IInstallableUnit) {
IInstallableUnit iu = (IInstallableUnit) next;
VersionRange range = new VersionRange(iu.getVersion(), true, iu.getVersion(), true);
- result.add(MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, iu.getId(), range, iu.getFilter() == null ? null : iu.getFilter(), false, false));
+ result.add(MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, iu.getId(), range,
+ iu.getFilter() == null ? null : iu.getFilter(), false, false));
} else {
Version version = next.getVersion();
- VersionRange range = (version == null || Version.emptyVersion.equals(version)) ? VersionRange.emptyRange : new VersionRange(version, true, version, true);
+ VersionRange range = (version == null || Version.emptyVersion.equals(version)) ? VersionRange.emptyRange
+ : new VersionRange(version, true, version, true);
IMatchExpression<IInstallableUnit> filter = getFilterAdvice(next);
- result.add(MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, next.getId(), range, filter, false, false));
+ result.add(MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, next.getId(), range,
+ filter, false, false));
}
}
return result;
@@ -178,7 +192,8 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
private IMatchExpression<IInstallableUnit> getFilterAdvice(IVersionedId name) {
if (info == null)
return null;
- Collection<IFilterAdvice> filterAdvice = info.getAdvice(CONFIG_ANY, true, name.getId(), name.getVersion(), IFilterAdvice.class);
+ Collection<IFilterAdvice> filterAdvice = info.getAdvice(CONFIG_ANY, true, name.getId(), name.getVersion(),
+ IFilterAdvice.class);
for (IFilterAdvice advice : filterAdvice) {
IMatchExpression<IInstallableUnit> result = advice.getFilter(name.getId(), name.getVersion(), false);
if (result != null)
@@ -194,43 +209,55 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
return root;
}
- protected IArtifactDescriptor createPack200ArtifactDescriptor(IArtifactKey key, File pathOnDisk, String installSize) {
- ArtifactDescriptor result = (ArtifactDescriptor) PublisherHelper.createArtifactDescriptor(info, key, pathOnDisk);
- //TODO this size calculation is bogus
+ /**
+ * @noreference This method is not intended to be referenced by clients.
+ * @deprecated See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a> for details.
+ */
+ @Deprecated(forRemoval = true, since = "1.6.0")
+ protected IArtifactDescriptor createPack200ArtifactDescriptor(IArtifactKey key, File pathOnDisk,
+ String installSize) {
+ ArtifactDescriptor result = (ArtifactDescriptor) PublisherHelper.createArtifactDescriptor(info, key,
+ pathOnDisk);
+ // TODO this size calculation is bogus
if (pathOnDisk != null) {
result.setProperty(IArtifactDescriptor.ARTIFACT_SIZE, installSize);
// TODO - this is wrong but I'm testing a work-around for bug 205842
result.setProperty(IArtifactDescriptor.DOWNLOAD_SIZE, Long.toString(pathOnDisk.length()));
}
- IProcessingStepDescriptor[] steps = new IProcessingStepDescriptor[] {new ProcessingStepDescriptor("org.eclipse.equinox.p2.processing.Pack200Unpacker", null, true)}; //$NON-NLS-1$
+ IProcessingStepDescriptor[] steps = new IProcessingStepDescriptor[] {
+ new ProcessingStepDescriptor("org.eclipse.equinox.p2.processing.Pack200Unpacker", null, true) }; //$NON-NLS-1$
result.setProcessingSteps(steps);
result.setProperty(IArtifactDescriptor.FORMAT, IArtifactDescriptor.FORMAT_PACKED);
return result;
}
- protected InstallableUnitDescription createParentIU(Collection<? extends IVersionedId> children, String id, Version version) {
+ protected InstallableUnitDescription createParentIU(Collection<? extends IVersionedId> children, String id,
+ Version version) {
InstallableUnitDescription root = createIUShell(id, version);
root.addRequirements(createIURequirements(children));
addSelfCapability(root);
return root;
}
- //This is to hide FileUtils from other actions
+ // This is to hide FileUtils from other actions
protected IPathComputer createParentPrefixComputer(int segmentsToKeep) {
return FileUtils.createParentPrefixComputer(segmentsToKeep);
}
- //This is to hide FileUtils from other actions
+ // This is to hide FileUtils from other actions
protected IPathComputer createRootPrefixComputer(final File root) {
return FileUtils.createRootPathComputer(root);
}
protected IProvidedCapability createSelfCapability(String installableUnitId, Version installableUnitVersion) {
- return MetadataFactory.createProvidedCapability(PublisherHelper.IU_NAMESPACE, installableUnitId, installableUnitVersion);
+ return MetadataFactory.createProvidedCapability(PublisherHelper.IU_NAMESPACE, installableUnitId,
+ installableUnitVersion);
}
- protected static InstallableUnitDescription[] processAdditionalInstallableUnitsAdvice(IInstallableUnit iu, IPublisherInfo publisherInfo) {
- Collection<IAdditionalInstallableUnitAdvice> advice = publisherInfo.getAdvice(null, false, iu.getId(), iu.getVersion(), IAdditionalInstallableUnitAdvice.class);
+ protected static InstallableUnitDescription[] processAdditionalInstallableUnitsAdvice(IInstallableUnit iu,
+ IPublisherInfo publisherInfo) {
+ Collection<IAdditionalInstallableUnitAdvice> advice = publisherInfo.getAdvice(null, false, iu.getId(),
+ iu.getVersion(), IAdditionalInstallableUnitAdvice.class);
if (advice.isEmpty())
return null;
@@ -244,16 +271,20 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
}
/**
- * Add all of the advised artifact properties for the given IU and artifact descriptor.
- * @param iu the IU
+ * Add all of the advised artifact properties for the given IU and artifact
+ * descriptor.
+ *
+ * @param iu the IU
* @param descriptor the descriptor to decorate
- * @param info the publisher info supplying the advice
+ * @param info the publisher info supplying the advice
*/
- protected static void processArtifactPropertiesAdvice(IInstallableUnit iu, IArtifactDescriptor descriptor, IPublisherInfo info) {
+ protected static void processArtifactPropertiesAdvice(IInstallableUnit iu, IArtifactDescriptor descriptor,
+ IPublisherInfo info) {
if (!(descriptor instanceof SimpleArtifactDescriptor))
return;
- Collection<IPropertyAdvice> advice = info.getAdvice(null, false, iu.getId(), iu.getVersion(), IPropertyAdvice.class);
+ Collection<IPropertyAdvice> advice = info.getAdvice(null, false, iu.getId(), iu.getVersion(),
+ IPropertyAdvice.class);
for (IPropertyAdvice entry : advice) {
Map<String, String> props = entry.getArtifactProperties(iu, descriptor);
if (props == null)
@@ -266,11 +297,13 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
/**
* Add all of the advised IU properties for the given IU.
- * @param iu the IU to decorate
+ *
+ * @param iu the IU to decorate
* @param info the publisher info supplying the advice
*/
protected static void processInstallableUnitPropertiesAdvice(InstallableUnitDescription iu, IPublisherInfo info) {
- Collection<IPropertyAdvice> advice = info.getAdvice(null, false, iu.getId(), iu.getVersion(), IPropertyAdvice.class);
+ Collection<IPropertyAdvice> advice = info.getAdvice(null, false, iu.getId(), iu.getVersion(),
+ IPropertyAdvice.class);
for (IPropertyAdvice entry : advice) {
Map<String, String> props = entry.getInstallableUnitProperties(iu);
if (props == null)
@@ -283,17 +316,19 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
/**
* Add any update descriptor advice to the given IU
- * @param iu the IU to decorate
+ *
+ * @param iu the IU to decorate
* @param info the publisher info supplying the advice
*/
protected static void processUpdateDescriptorAdvice(InstallableUnitDescription iu, IPublisherInfo info) {
- Collection<IUpdateDescriptorAdvice> advice = info.getAdvice(null, false, iu.getId(), iu.getVersion(), IUpdateDescriptorAdvice.class);
+ Collection<IUpdateDescriptorAdvice> advice = info.getAdvice(null, false, iu.getId(), iu.getVersion(),
+ IUpdateDescriptorAdvice.class);
if (advice.isEmpty())
return;
for (IUpdateDescriptorAdvice entry : advice) {
- //process the IU Descriptor
+ // process the IU Descriptor
IUpdateDescriptor updateDescriptor = entry.getUpdateDescriptor(iu);
if (updateDescriptor != null) {
iu.setUpdateDescriptor(updateDescriptor);
@@ -302,23 +337,27 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
}
/**
- * Add all of the advised provided and required capabilities for the given installable unit.
- * @param iu the IU to decorate
+ * Add all of the advised provided and required capabilities for the given
+ * installable unit.
+ *
+ * @param iu the IU to decorate
* @param info the publisher info supplying the advice
*/
protected static void processCapabilityAdvice(InstallableUnitDescription iu, IPublisherInfo info) {
- Collection<ICapabilityAdvice> advice = info.getAdvice(null, false, iu.getId(), iu.getVersion(), ICapabilityAdvice.class);
+ Collection<ICapabilityAdvice> advice = info.getAdvice(null, false, iu.getId(), iu.getVersion(),
+ ICapabilityAdvice.class);
if (advice.isEmpty())
return;
for (ICapabilityAdvice entry : advice) {
- //process required capabilities
+ // process required capabilities
IRequirement[] requiredAdvice = entry.getRequiredCapabilities(iu);
if (requiredAdvice != null) {
List<IRequirement> current = iu.getRequirements();
Set<IRequirement> resultRequiredCapabilities = new HashSet<>(current);
- // remove current required capabilities that match (same name and namespace) advice.
+ // remove current required capabilities that match (same name and namespace)
+ // advice.
for (IRequirement currReq : current) {
IRequiredCapability currentRequiredCapability = toRequiredCapability(currReq);
if (currentRequiredCapability == null) {
@@ -331,7 +370,8 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
continue;
}
- if (requiredCapability.getNamespace().equals(currentRequiredCapability.getNamespace()) && requiredCapability.getName().equals(currentRequiredCapability.getName())) {
+ if (requiredCapability.getNamespace().equals(currentRequiredCapability.getNamespace())
+ && requiredCapability.getName().equals(currentRequiredCapability.getName())) {
resultRequiredCapabilities.remove(currentRequiredCapability);
break;
}
@@ -339,16 +379,18 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
}
// add all advice
resultRequiredCapabilities.addAll(Arrays.asList(requiredAdvice));
- iu.setRequirements(resultRequiredCapabilities.toArray(new IRequirement[resultRequiredCapabilities.size()]));
+ iu.setRequirements(
+ resultRequiredCapabilities.toArray(new IRequirement[resultRequiredCapabilities.size()]));
}
- //process meta required capabilities
+ // process meta required capabilities
IRequirement[] metaRequiredAdvice = entry.getMetaRequiredCapabilities(iu);
if (metaRequiredAdvice != null) {
Collection<IRequirement> current = iu.getMetaRequirements();
Set<IRequirement> resultMetaRequiredCapabilities = new HashSet<>(current);
- // remove current meta-required capabilities that match (same name and namespace) advice.
+ // remove current meta-required capabilities that match (same name and
+ // namespace) advice.
for (IRequirement currMetaReq : current) {
IRequiredCapability currentMetaRequiredCapability = toRequiredCapability(currMetaReq);
if (currentMetaRequiredCapability == null) {
@@ -361,7 +403,8 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
continue;
}
- if (metaRequiredCapability.getNamespace().equals(currentMetaRequiredCapability.getNamespace()) && metaRequiredCapability.getName().equals(currentMetaRequiredCapability.getName())) {
+ if (metaRequiredCapability.getNamespace().equals(currentMetaRequiredCapability.getNamespace())
+ && metaRequiredCapability.getName().equals(currentMetaRequiredCapability.getName())) {
resultMetaRequiredCapabilities.remove(currentMetaRequiredCapability);
break;
}
@@ -370,24 +413,27 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
// add all advice
resultMetaRequiredCapabilities.addAll(Arrays.asList(metaRequiredAdvice));
- iu.setMetaRequirements(resultMetaRequiredCapabilities.toArray(new IRequirement[resultMetaRequiredCapabilities.size()]));
+ iu.setMetaRequirements(resultMetaRequiredCapabilities
+ .toArray(new IRequirement[resultMetaRequiredCapabilities.size()]));
}
- //process provided capabilities
+ // process provided capabilities
IProvidedCapability[] providedAdvice = entry.getProvidedCapabilities(iu);
if (providedAdvice != null) {
Collection<IProvidedCapability> current = iu.getProvidedCapabilities();
Set<IProvidedCapability> resultProvidedCapabilities = new HashSet<>(current);
for (IProvidedCapability currentProvidedCapability : current) {
for (IProvidedCapability providedCapability : providedAdvice) {
- if (providedCapability.getNamespace().equals(currentProvidedCapability.getNamespace()) && providedCapability.getName().equals(currentProvidedCapability.getName())) {
+ if (providedCapability.getNamespace().equals(currentProvidedCapability.getNamespace())
+ && providedCapability.getName().equals(currentProvidedCapability.getName())) {
resultProvidedCapabilities.remove(currentProvidedCapability);
break;
}
}
}
resultProvidedCapabilities.addAll(Arrays.asList(providedAdvice));
- iu.setCapabilities(resultProvidedCapabilities.toArray(new IProvidedCapability[resultProvidedCapabilities.size()]));
+ iu.setCapabilities(
+ resultProvidedCapabilities.toArray(new IProvidedCapability[resultProvidedCapabilities.size()]));
}
}
}
@@ -407,16 +453,21 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
/**
* Adds all applicable touchpoint advice to the given installable unit.
- * @param iu The installable unit to add touchpoint advice to
- * @param currentInstructions The set of touchpoint instructions assembled for this IU so far
- * @param info The publisher info
+ *
+ * @param iu The installable unit to add touchpoint advice to
+ * @param currentInstructions The set of touchpoint instructions assembled for
+ * this IU so far
+ * @param info The publisher info
*/
- protected static void processTouchpointAdvice(InstallableUnitDescription iu, Map<String, ? extends Object> currentInstructions, IPublisherInfo info) {
+ protected static void processTouchpointAdvice(InstallableUnitDescription iu,
+ Map<String, ? extends Object> currentInstructions, IPublisherInfo info) {
processTouchpointAdvice(iu, currentInstructions, info, null);
}
- protected static void processTouchpointAdvice(InstallableUnitDescription iu, Map<String, ? extends Object> currentInstructions, IPublisherInfo info, String configSpec) {
- Collection<ITouchpointAdvice> advice = info.getAdvice(configSpec, false, iu.getId(), iu.getVersion(), ITouchpointAdvice.class);
+ protected static void processTouchpointAdvice(InstallableUnitDescription iu,
+ Map<String, ? extends Object> currentInstructions, IPublisherInfo info, String configSpec) {
+ Collection<ITouchpointAdvice> advice = info.getAdvice(configSpec, false, iu.getId(), iu.getVersion(),
+ ITouchpointAdvice.class);
if (currentInstructions == null) {
if (advice == null || advice.isEmpty())
return;
@@ -433,10 +484,13 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
}
/**
- * Publishes the artifact by zipping the <code>files</code> using <code>root</code>
- * as a base for relative paths. Then copying the zip into the repository.
- * @param descriptor used to identify the zip.
- * @param inclusion the file to be published. files can be <code>null</code> but no action is taken.
+ * Publishes the artifact by zipping the <code>files</code> using
+ * <code>root</code> as a base for relative paths. Then copying the zip into the
+ * repository.
+ *
+ * @param descriptor used to identify the zip.
+ * @param inclusion the file to be published. files can be <code>null</code>
+ * but no action is taken.
* @param publisherInfo the publisher info.
*/
protected void publishArtifact(IArtifactDescriptor descriptor, File inclusion, IPublisherInfo publisherInfo) {
@@ -448,13 +502,15 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
if (destination == null || destination.contains(descriptor))
return;
- // if all we are doing is indexing things then add the descriptor and get on with it
- if ((publisherInfo.getArtifactOptions() & IPublisherInfo.A_PUBLISH) == 0) {
+ // if all we are doing is indexing things then add the descriptor and get on
+ // with it
+ if (!PublisherHelper.isArtifactPublish(publisherInfo)) {
destination.addDescriptor(descriptor, new NullProgressMonitor());
return;
}
- // if the file is already in the same location the repo will put it, just add the descriptor and exit
+ // if the file is already in the same location the repo will put it, just add
+ // the descriptor and exit
if (destination instanceof IFileArtifactRepository) {
File descriptorFile = ((IFileArtifactRepository) destination).getArtifactFile(descriptor);
if (inclusion.equals(descriptorFile)) {
@@ -477,15 +533,20 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
}
/**
- * Publishes the artifact by zipping the <code>files</code> using <code>root</code>
- * as a base for relative paths. Then copying the zip into the repository.
- * @param descriptor used to identify the zip.
- * @param inclusions and folders to be included in the zip. files can be null.
- * @param exclusions and folders to be excluded in the zip. files can be null.
- * @param publisherInfo the publisher info.
+ * Publishes the artifact by zipping the <code>files</code> using
+ * <code>root</code> as a base for relative paths. Then copying the zip into the
+ * repository.
+ *
+ * @param descriptor used to identify the zip.
+ * @param inclusions and folders to be included in the zip. files can be
+ * null.
+ * @param exclusions and folders to be excluded in the zip. files can be
+ * null.
+ * @param publisherInfo the publisher info.
* @param prefixComputer
*/
- protected void publishArtifact(IArtifactDescriptor descriptor, File[] inclusions, File[] exclusions, IPublisherInfo publisherInfo, IPathComputer prefixComputer) {
+ protected void publishArtifact(IArtifactDescriptor descriptor, File[] inclusions, File[] exclusions,
+ IPublisherInfo publisherInfo, IPathComputer prefixComputer) {
// no files to publish so this is done.
if (inclusions == null || inclusions.length < 1)
return;
@@ -493,15 +554,18 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
IArtifactRepository destination = publisherInfo.getArtifactRepository();
if (destination == null || destination.contains(descriptor))
return;
- // if all we are doing is indexing things then add the descriptor and get on with it
- if ((publisherInfo.getArtifactOptions() & IPublisherInfo.A_PUBLISH) == 0) {
+ // if all we are doing is indexing things then add the descriptor and get on
+ // with it
+ if (!PublisherHelper.isArtifactPublish(publisherInfo)) {
destination.addDescriptor(descriptor, new NullProgressMonitor());
return;
}
// TODO need to implement the overwrite story in the repos
- // boolean overwrite = (info.getArtifactOptions() & IPublisherInfo.A_OVERWRITE) > 0;
- // if there is just one file and the mode is as-is, just copy the file into the repo
+ // boolean overwrite = (info.getArtifactOptions() & IPublisherInfo.A_OVERWRITE)
+ // > 0;
+ // if there is just one file and the mode is as-is, just copy the file into the
+ // repo
// otherwise, zip up the files and copy the zip into the repo
File tempFile = null;
try {
@@ -525,9 +589,10 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
}
/**
- * Loop over the known metadata repositories looking for the given IU.
- * Return the first IU found.
- * @param iuId the id of the IU to look for
+ * Loop over the known metadata repositories looking for the given IU. Return
+ * the first IU found.
+ *
+ * @param iuId the id of the IU to look for
* @return the first matching IU or <code>null</code> if none.
*/
protected IInstallableUnit queryForIU(IPublisherResult publisherResult, String iuId, Version version) {
@@ -549,13 +614,16 @@ public abstract class AbstractPublisherAction implements IPublisherAction {
}
/**
- * Loop over the known metadata repositories looking for the given IU within a particular range
+ * Loop over the known metadata repositories looking for the given IU within a
+ * particular range
+ *
* @param publisherResult
- * @param iuId the id of the IU to look for
- * @param versionRange the version range to consider
+ * @param iuId the id of the IU to look for
+ * @param versionRange the version range to consider
* @return The the IUs with the matching ids in the given range
*/
- protected IQueryResult<IInstallableUnit> queryForIUs(IPublisherResult publisherResult, String iuId, VersionRange versionRange) {
+ protected IQueryResult<IInstallableUnit> queryForIUs(IPublisherResult publisherResult, String iuId,
+ VersionRange versionRange) {
IQuery<IInstallableUnit> query = null;
IQueryResult<IInstallableUnit> queryResult = Collector.emptyCollector();
query = QueryUtil.createIUQuery(iuId, versionRange);
diff --git a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/AbstractPublisherApplication.java b/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/AbstractPublisherApplication.java
index 5a380a8e2..6f2dee301 100644
--- a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/AbstractPublisherApplication.java
+++ b/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/AbstractPublisherApplication.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* EclipseSource - ongoing development
@@ -37,14 +37,19 @@ import org.osgi.framework.ServiceReference;
public abstract class AbstractPublisherApplication implements IApplication {
- // The mapping rules for in-place generation need to construct paths into the structure
- // of an eclipse installation; in the future the default artifact mapping declared in
- // SimpleArtifactRepository may change, for example, to not have a 'bundles' directory
- // instead of a 'plugins' directory, so a separate constant is defined and used here.
- static final protected String[][] INPLACE_MAPPING_RULES = {{"(& (classifier=osgi.bundle) (format=packed)", "${repoUrl}/features/${id}_${version}.jar.pack.gz"}, //$NON-NLS-1$//$NON-NLS-2$
- {"(& (classifier=osgi.bundle))", "${repoUrl}/plugins/${id}_${version}.jar"}, //$NON-NLS-1$//$NON-NLS-2$
- {"(& (classifier=binary))", "${repoUrl}/binary/${id}_${version}"}, //$NON-NLS-1$//$NON-NLS-2$
- {"(& (classifier=org.eclipse.update.feature))", "${repoUrl}/features/${id}_${version}.jar"}}; //$NON-NLS-1$//$NON-NLS-2$
+ // The mapping rules for in-place generation need to construct paths into the
+ // structure
+ // of an eclipse installation; in the future the default artifact mapping
+ // declared in
+ // SimpleArtifactRepository may change, for example, to not have a 'bundles'
+ // directory
+ // instead of a 'plugins' directory, so a separate constant is defined and used
+ // here.
+ static final protected String[][] INPLACE_MAPPING_RULES = {
+ { "(& (classifier=osgi.bundle) (format=packed)", "${repoUrl}/features/${id}_${version}.jar.pack.gz" }, //$NON-NLS-1$//$NON-NLS-2$
+ { "(& (classifier=osgi.bundle))", "${repoUrl}/plugins/${id}_${version}.jar" }, //$NON-NLS-1$//$NON-NLS-2$
+ { "(& (classifier=binary))", "${repoUrl}/binary/${id}_${version}" }, //$NON-NLS-1$//$NON-NLS-2$
+ { "(& (classifier=org.eclipse.update.feature))", "${repoUrl}/features/${id}_${version}.jar" } }; //$NON-NLS-1$//$NON-NLS-2$
static final public String PUBLISH_PACK_FILES_AS_SIBLINGS = "publishPackFilesAsSiblings"; //$NON-NLS-1$
@@ -56,7 +61,7 @@ public abstract class AbstractPublisherApplication implements IApplication {
protected String artifactRepoName;
protected URI[] contextMetadataRepositories;
protected URI[] contextArtifactRepositories;
- //whether repository xml files should be compressed
+ // whether repository xml files should be compressed
protected boolean compress = false;
protected boolean inplace = false;
protected boolean append = false;
@@ -69,8 +74,8 @@ public abstract class AbstractPublisherApplication implements IApplication {
protected IProvisioningAgent agent;
/**
- * Returns the error message for this application, or the empty string
- * if the application terminated successfully.
+ * Returns the error message for this application, or the empty string if the
+ * application terminated successfully.
*/
public IStatus getStatus() {
return status;
@@ -83,7 +88,8 @@ public abstract class AbstractPublisherApplication implements IApplication {
metadataLocation = location.toURI();
if (artifactLocation == null)
artifactLocation = location.toURI();
- publisherInfo.setArtifactOptions(publisherInfo.getArtifactOptions() | IPublisherInfo.A_INDEX | IPublisherInfo.A_PUBLISH);
+ publisherInfo.setArtifactOptions(
+ publisherInfo.getArtifactOptions() | IPublisherInfo.A_INDEX | IPublisherInfo.A_PUBLISH);
}
initializeRepositories(publisherInfo);
}
@@ -99,14 +105,18 @@ public abstract class AbstractPublisherApplication implements IApplication {
protected void initializeRepositories(PublisherInfo publisherInfo) throws ProvisionException {
if (artifactLocation != null) {
- IArtifactRepository repo = Publisher.createArtifactRepository(agent, artifactLocation, artifactRepoName, compress, reusePackedFiles);
+ @SuppressWarnings("removal")
+ IArtifactRepository repo = Publisher.createArtifactRepository(agent, artifactLocation, artifactRepoName,
+ compress, reusePackedFiles);
if (!append && !isEmpty(repo)) {
File repoLocation = URIUtil.toFile(artifactLocation);
if (repoLocation != null && source != null) {
if (repoLocation.isFile())
repoLocation = repoLocation.getParentFile();
if (repoLocation.equals(new File(source)))
- throw new IllegalArgumentException(NLS.bind(Messages.exception_artifactRepoNoAppendDestroysInput, URIUtil.toUnencodedString(artifactLocation)));
+ throw new IllegalArgumentException(
+ NLS.bind(Messages.exception_artifactRepoNoAppendDestroysInput,
+ URIUtil.toUnencodedString(artifactLocation)));
}
repo.removeAll(new NullProgressMonitor());
}
@@ -115,7 +125,8 @@ public abstract class AbstractPublisherApplication implements IApplication {
throw new ProvisionException(createConfigurationEror(Messages.exception_noArtifactRepo));
if (metadataLocation == null)
throw new ProvisionException(createConfigurationEror(Messages.exception_noMetadataRepo));
- publisherInfo.setMetadataRepository(Publisher.createMetadataRepository(agent, metadataLocation, metadataRepoName, append, compress));
+ publisherInfo.setMetadataRepository(
+ Publisher.createMetadataRepository(agent, metadataLocation, metadataRepoName, append, compress));
if (contextMetadataRepositories != null && contextMetadataRepositories.length > 0) {
CompositeMetadataRepository contextMetadata = CompositeMetadataRepository.createMemoryComposite(agent);
@@ -147,8 +158,10 @@ public abstract class AbstractPublisherApplication implements IApplication {
// check for args without parameters (i.e., a flag arg)
processFlag(args[i], publisherInfo);
- // check for args with parameters. If we are at the last argument or if the next one
- // has a '-' as the first character, then we can't have an arg with a parm so continue.
+ // check for args with parameters. If we are at the last argument or if the next
+ // one
+ // has a '-' as the first character, then we can't have an arg with a parm so
+ // continue.
if (i == args.length - 1 || args[i + 1].startsWith("-")) //$NON-NLS-1$
continue;
processParameter(args[i], args[++i], publisherInfo);
@@ -157,9 +170,11 @@ public abstract class AbstractPublisherApplication implements IApplication {
/**
* Process application arguments.
+ *
* @throws URISyntaxException thrown by subclasses
*/
- protected void processParameter(String arg, String parameter, PublisherInfo publisherInfo) throws URISyntaxException {
+ protected void processParameter(String arg, String parameter, PublisherInfo publisherInfo)
+ throws URISyntaxException {
try {
if (arg.equalsIgnoreCase("-metadataRepository") || arg.equalsIgnoreCase("-mr")) //$NON-NLS-1$ //$NON-NLS-2$
metadataLocation = URIUtil.fromString(parameter);
@@ -174,8 +189,10 @@ public abstract class AbstractPublisherApplication implements IApplication {
metadataRepoName = parameter;
if (arg.equalsIgnoreCase("-source")) { //$NON-NLS-1$
- // check here to see if the location actually exists so we can fail gracefully now rather than unpredictably later
- // see bug 272956 where we would fail with an NPE if someone gave us a URL instead of a file-system path
+ // check here to see if the location actually exists so we can fail gracefully
+ // now rather than unpredictably later
+ // see bug 272956 where we would fail with an NPE if someone gave us a URL
+ // instead of a file-system path
if (!new File(parameter).exists())
throw new IllegalArgumentException(NLS.bind(Messages.exception_sourcePath, parameter));
source = parameter;
@@ -204,7 +221,7 @@ public abstract class AbstractPublisherApplication implements IApplication {
for (String uri : list) {
try {
result.add(URIUtil.fromString(uri));
- }catch (URISyntaxException e) {
+ } catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
@@ -220,7 +237,7 @@ public abstract class AbstractPublisherApplication implements IApplication {
if (arg.equalsIgnoreCase("-publishArtifactRepository") || arg.equalsIgnoreCase("-par")) //$NON-NLS-1$ //$NON-NLS-2$
publisherInfo.setArtifactOptions(publisherInfo.getArtifactOptions() | IPublisherInfo.A_INDEX);
- if (arg.equalsIgnoreCase("-overwriteArtifacts")) //$NON-NLS-1$
+ if (arg.equalsIgnoreCase("-overwriteArtifacts")) //$NON-NLS-1$
publisherInfo.setArtifactOptions(publisherInfo.getArtifactOptions() | IPublisherInfo.A_OVERWRITE);
if (arg.equalsIgnoreCase("-append")) //$NON-NLS-1$
@@ -243,13 +260,14 @@ public abstract class AbstractPublisherApplication implements IApplication {
if (agent != null)
return;
}
- ServiceReference<IProvisioningAgentProvider> providerRef = Activator.getContext().getServiceReference(IProvisioningAgentProvider.class);
+ ServiceReference<IProvisioningAgentProvider> providerRef = Activator.getContext()
+ .getServiceReference(IProvisioningAgentProvider.class);
if (providerRef == null)
throw new RuntimeException("No provisioning agent provider is available"); //$NON-NLS-1$
IProvisioningAgentProvider provider = Activator.getContext().getService(providerRef);
if (provider == null)
throw new RuntimeException("No provisioning agent provider is available"); //$NON-NLS-1$
- //obtain agent for currently running system
+ // obtain agent for currently running system
agent = provider.createAgent(null);
Activator.getContext().ungetService(providerRef);
}
@@ -304,7 +322,8 @@ public abstract class AbstractPublisherApplication implements IApplication {
}
}
if (!result.matches(IStatus.ERROR | IStatus.CANCEL)) {
- System.out.println(NLS.bind(Messages.message_generationCompleted, String.valueOf((after - before) / 1000)));
+ System.out.println(
+ NLS.bind(Messages.message_generationCompleted, String.valueOf((after - before) / 1000)));
return IApplication.EXIT_OK;
}
} catch (ProvisionException e) {
@@ -343,6 +362,13 @@ public abstract class AbstractPublisherApplication implements IApplication {
this.metadataLocation = location;
}
+ /**
+ * @noreference This method is not intended to be referenced by clients.
+ * @deprecated See <a href=
+ * "https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a>
+ * for details.
+ */
+ @Deprecated(forRemoval = true, since = "1.6.0")
public boolean reuseExistingPack200Files() {
return reusePackedFiles;
}
diff --git a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/AdviceFileParser.java b/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/AdviceFileParser.java
index 0fe334ddb..c54c9c1f3 100644
--- a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/AdviceFileParser.java
+++ b/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/AdviceFileParser.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2017 IBM Corporation and others.
+ * Copyright (c) 2009, 2020 IBM Corporation and others.
*
* This
* program and the accompanying materials are made available under the terms of
@@ -8,7 +8,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/
package org.eclipse.equinox.p2.publisher;
@@ -71,7 +71,8 @@ public class AdviceFileParser {
private static final String UPDATE_DESCRIPTOR_PREFIX = "update."; //$NON-NLS-1$
public static final Version COMPATIBLE_VERSION = Version.createOSGi(1, 0, 0);
- public static final VersionRange VERSION_TOLERANCE = new VersionRange(COMPATIBLE_VERSION, true, Version.createOSGi(2, 0, 0), false);
+ public static final VersionRange VERSION_TOLERANCE = new VersionRange(COMPATIBLE_VERSION, true,
+ Version.createOSGi(2, 0, 0), false);
private Map<String, String> adviceProperties = new HashMap<>();
private List<IProvidedCapability> adviceProvides = new ArrayList<>();
@@ -99,7 +100,7 @@ public class AdviceFileParser {
checkAdviceVersion(adviceVersion);
List<String> keys = new ArrayList<>(advice.keySet());
- Collections.sort(keys);
+ keys.sort(null);
keysIterator = keys.iterator();
next();
@@ -158,15 +159,15 @@ public class AdviceFileParser {
while (current != null && current.startsWith(prefix)) {
String token = current.substring(prefix.length());
switch (token) {
- case NAME:
- propertyName = currentValue();
- break;
- case VALUE:
- propertyValue = currentValue();
- break;
- // we ignore elements we do not understand
- default:
- break;
+ case NAME:
+ propertyName = currentValue();
+ break;
+ case VALUE:
+ propertyValue = currentValue();
+ break;
+ // we ignore elements we do not understand
+ default:
+ break;
}
next();
}
@@ -177,42 +178,43 @@ public class AdviceFileParser {
private IUpdateDescriptor parseUpdateDescriptor(String prefix, String id) {
String name = id;
String description = null;
- String range = "[0.0.0,$version$)"; //$NON-NLS-1$
+ String range = "[0.0.0,$version$)"; //$NON-NLS-1$
String severity = "0"; //$NON-NLS-1$
String match = null;
while (current != null && current.startsWith(prefix)) {
String token = current;
switch (token) {
- case UPDATE_MATCH_EXP:
- match = currentValue();
- break;
- case UPDATE_ID:
- name = currentValue();
- break;
- case UPDATE_DESCRIPTION:
- description = currentValue();
- break;
- case UPDATE_RANGE:
- range = currentValue();
- break;
- case UPDATE_SEVERITY:
- severity = currentValue();
- break;
- // ignore
- default:
- break;
+ case UPDATE_MATCH_EXP:
+ match = currentValue();
+ break;
+ case UPDATE_ID:
+ name = currentValue();
+ break;
+ case UPDATE_DESCRIPTION:
+ description = currentValue();
+ break;
+ case UPDATE_RANGE:
+ range = currentValue();
+ break;
+ case UPDATE_SEVERITY:
+ severity = currentValue();
+ break;
+ // ignore
+ default:
+ break;
}
next();
}
if (match != null) {
- //When update.match is specified, versionRange and id are ignored
+ // When update.match is specified, versionRange and id are ignored
IExpression expr = ExpressionUtil.parse(substituteVersionAndQualifier(match));
IMatchExpression<IInstallableUnit> matchExpression = ExpressionUtil.getFactory().matchExpression(expr);
Collection<IMatchExpression<IInstallableUnit>> descriptors = new ArrayList<>(1);
descriptors.add(matchExpression);
- return MetadataFactory.createUpdateDescriptor(descriptors, Integer.valueOf(severity), description, (URI) null);
+ return MetadataFactory.createUpdateDescriptor(descriptors, Integer.valueOf(severity), description,
+ (URI) null);
}
range = substituteVersionAndQualifier(range);
VersionRange versionRange = VersionRange.create(range);
@@ -236,18 +238,18 @@ public class AdviceFileParser {
while (current != null && current.startsWith(prefix)) {
String token = current.substring(prefix.length());
switch (token) {
- case NAME:
- name = currentValue();
- break;
- case NAMESPACE:
- namespace = currentValue();
- break;
- case VERSION:
- capabilityVersion = Version.parseVersion(substituteVersionAndQualifier(currentValue()));
- break;
- // we ignore elements we do not understand
- default:
- break;
+ case NAME:
+ name = currentValue();
+ break;
+ case NAMESPACE:
+ namespace = currentValue();
+ break;
+ case VERSION:
+ capabilityVersion = Version.parseVersion(substituteVersionAndQualifier(currentValue()));
+ break;
+ // we ignore elements we do not understand
+ default:
+ break;
}
next();
}
@@ -283,39 +285,39 @@ public class AdviceFileParser {
while (current != null && current.startsWith(prefix)) {
String token = current.substring(prefix.length());
switch (token) {
- case GREEDY:
- greedy = Boolean.parseBoolean(currentValue());
- break;
- case OPTIONAL:
- optional = Boolean.parseBoolean(currentValue());
- break;
- case MULTIPLE:
- multiple = Boolean.parseBoolean(currentValue());
- break;
- case FILTER:
- filter = currentValue();
- break;
- case NAME:
- name = currentValue();
- break;
- case NAMESPACE:
- namespace = currentValue();
- break;
- case RANGE:
- range = VersionRange.create(substituteVersionAndQualifier(currentValue()));
- break;
- case MIN:
- min = Integer.valueOf(currentValue()).intValue();
- break;
- case MAX:
- max = Integer.valueOf(currentValue()).intValue();
- break;
- case MATCH_EXP:
- matchExp = currentValue();
- break;
- // we ignore elements we do not understand
- default:
- break;
+ case GREEDY:
+ greedy = Boolean.parseBoolean(currentValue());
+ break;
+ case OPTIONAL:
+ optional = Boolean.parseBoolean(currentValue());
+ break;
+ case MULTIPLE:
+ multiple = Boolean.parseBoolean(currentValue());
+ break;
+ case FILTER:
+ filter = currentValue();
+ break;
+ case NAME:
+ name = currentValue();
+ break;
+ case NAMESPACE:
+ namespace = currentValue();
+ break;
+ case RANGE:
+ range = VersionRange.create(substituteVersionAndQualifier(currentValue()));
+ break;
+ case MIN:
+ min = Integer.valueOf(currentValue()).intValue();
+ break;
+ case MAX:
+ max = Integer.valueOf(currentValue()).intValue();
+ break;
+ case MATCH_EXP:
+ matchExp = currentValue();
+ break;
+ // we ignore elements we do not understand
+ default:
+ break;
}
next();
}
@@ -327,7 +329,8 @@ public class AdviceFileParser {
capability = createRequirement(namespace, name, range, filter, optional, multiple, greedy);
}
} else {
- //When a match expression is specified, namespace, name and versionRange are ignored
+ // When a match expression is specified, namespace, name and versionRange are
+ // ignored
if (optional && min == -1 && max == -1) {
min = 0;
max = 1;
@@ -339,19 +342,22 @@ public class AdviceFileParser {
}
}
- protected IRequirement createRequirement(String requirement, String filter, int min, int max, boolean greedy, String description) {
+ protected IRequirement createRequirement(String requirement, String filter, int min, int max, boolean greedy,
+ String description) {
IExpression expr = ExpressionUtil.parse(substituteVersionAndQualifier(requirement));
IMatchExpression<IInstallableUnit> requirementExp = ExpressionUtil.getFactory().matchExpression(expr);
IMatchExpression<IInstallableUnit> filterExp = InstallableUnit.parseFilter(filter);
return MetadataFactory.createRequirement(requirementExp, filterExp, min, max, greedy, description);
}
- protected IRequirement createRequirement(String namespace, String name, VersionRange range, String filter, int min, int max, boolean greedy) {
+ protected IRequirement createRequirement(String namespace, String name, VersionRange range, String filter, int min,
+ int max, boolean greedy) {
IMatchExpression<IInstallableUnit> filterExpression = InstallableUnit.parseFilter(filter);
return MetadataFactory.createRequirement(namespace, name, range, filterExpression, min, max, greedy);
}
- protected IRequirement createRequirement(String namespace, String name, VersionRange range, String filter, boolean optional, boolean multiple, boolean greedy) {
+ protected IRequirement createRequirement(String namespace, String name, VersionRange range, String filter,
+ boolean optional, boolean multiple, boolean greedy) {
return MetadataFactory.createRequirement(namespace, name, range, filter, optional, multiple, greedy);
}
@@ -417,7 +423,7 @@ public class AdviceFileParser {
List<IRequirement> unitMetaRequirements = new ArrayList<>();
List<ILicense> unitLicenses = new ArrayList<>();
Map<String, ITouchpointInstruction> unitInstructions = new HashMap<>();
- // updatedescriptor ??
+ // updatedescriptor ??
while (current != null && current.startsWith(prefix)) {
String token = current.substring(prefix.length());
@@ -479,7 +485,8 @@ public class AdviceFileParser {
}
}
- InstallableUnitDescription description = unitHostRequirements.isEmpty() ? new InstallableUnitDescription() : new InstallableUnitFragmentDescription();
+ InstallableUnitDescription description = unitHostRequirements.isEmpty() ? new InstallableUnitDescription()
+ : new InstallableUnitFragmentDescription();
description.setId(unitId);
description.setVersion(unitVersion);
description.setSingleton(unitSingleton);
@@ -493,10 +500,12 @@ public class AdviceFileParser {
}
}
if (unitTouchpointId != null)
- description.setTouchpointType(MetadataFactory.createTouchpointType(unitTouchpointId, unitTouchpointVersion));
+ description
+ .setTouchpointType(MetadataFactory.createTouchpointType(unitTouchpointId, unitTouchpointVersion));
if (unitUpdateId != null)
- description.setUpdateDescriptor(MetadataFactory.createUpdateDescriptor(unitUpdateId, unitUpdateRange, unitUpdateSeverity, unitUpdateDescription));
+ description.setUpdateDescriptor(MetadataFactory.createUpdateDescriptor(unitUpdateId, unitUpdateRange,
+ unitUpdateSeverity, unitUpdateDescription));
if (!unitLicenses.isEmpty())
description.setLicenses(unitLicenses.toArray(new ILicense[unitLicenses.size()]));
@@ -505,7 +514,8 @@ public class AdviceFileParser {
description.setArtifacts(unitArtifacts.toArray(new IArtifactKey[unitArtifacts.size()]));
if (!unitHostRequirements.isEmpty())
- ((InstallableUnitFragmentDescription) description).setHost(unitHostRequirements.toArray(new IRequirement[unitHostRequirements.size()]));
+ ((InstallableUnitFragmentDescription) description)
+ .setHost(unitHostRequirements.toArray(new IRequirement[unitHostRequirements.size()]));
if (!unitProperties.isEmpty()) {
for (Entry<String, String> entry : unitProperties.entrySet()) {
@@ -520,7 +530,8 @@ public class AdviceFileParser {
description.setRequirements(unitRequires.toArray(new IRequirement[unitRequires.size()]));
if (!unitMetaRequirements.isEmpty())
- description.setMetaRequirements(unitMetaRequirements.toArray(new IRequirement[unitMetaRequirements.size()]));
+ description
+ .setMetaRequirements(unitMetaRequirements.toArray(new IRequirement[unitMetaRequirements.size()]));
if (!unitInstructions.isEmpty())
description.addTouchpointData(MetadataFactory.createTouchpointData(unitInstructions));
@@ -579,18 +590,18 @@ public class AdviceFileParser {
while (current != null && current.startsWith(prefix)) {
String token = current.substring(prefix.length());
switch (token) {
- case CLASSIFIER:
- artifactClassifier = currentValue();
- break;
- case ID:
- artifactId = currentValue();
- break;
- case VERSION:
- artifactVersion = Version.parseVersion(substituteVersionAndQualifier(currentValue()));
- break;
- // we ignore elements we do not understand
- default:
- break;
+ case CLASSIFIER:
+ artifactClassifier = currentValue();
+ break;
+ case ID:
+ artifactId = currentValue();
+ break;
+ case VERSION:
+ artifactVersion = Version.parseVersion(substituteVersionAndQualifier(currentValue()));
+ break;
+ // we ignore elements we do not understand
+ default:
+ break;
}
next();
diff --git a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/IPublisherInfo.java b/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/IPublisherInfo.java
index 0e88610aa..33796f507 100644
--- a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/IPublisherInfo.java
+++ b/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/IPublisherInfo.java
@@ -8,8 +8,8 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
+ *
+ * Contributors:
* Code 9 - initial API and implementation
* IBM - ongoing development
******************************************************************************/
@@ -40,7 +40,7 @@ public interface IPublisherInfo {
public static final int A_OVERWRITE = 4;
/**
- * A bitwise flag indicating that MD5 hash should not be generated when
+ * A bitwise flag indicating that MD5 hash should not be generated when
* publishing an artifact. When this flag is not specified the MD5 hash will
* be generated by default.
*/
@@ -61,9 +61,9 @@ public interface IPublisherInfo {
public IMetadataRepository getMetadataRepository();
/**
- * Returns whether or not artifacts themselves should be published.
- * @return <code>true</code> if artifacts should be published.
- * <code>false</code> otherwise.
+ * Returns a bitflag that controls the publish operation, what is a bitwhise OR
+ * of {@link #A_INDEX},{@value #A_PUBLISH}, {@link #A_NO_MD5},
+ * {@link #A_OVERWRITE} or <code>0</code> if no flags are set.
*/
public int getArtifactOptions();
@@ -80,7 +80,7 @@ public interface IPublisherInfo {
public <T extends IPublisherAdvice> Collection<T> getAdvice(String configSpec, boolean includeDefault, String id, Version version, Class<T> type);
/**
- * Add the given advice to the set of publishing advices.
+ * Add the given advice to the set of publishing advices.
* @param advice the advice to retain
*/
public void addAdvice(IPublisherAdvice advice);
@@ -95,19 +95,19 @@ public interface IPublisherInfo {
public String[] getConfigurations();
/**
- * Returns the artifact repository given to the publisher as context for
- * the publisher actions. May be <code>null</code>. Note that multiple
+ * Returns the artifact repository given to the publisher as context for
+ * the publisher actions. May be <code>null</code>. Note that multiple
* repositories may be represented as one composite repository.
- *
+ *
* @return the context artifact repository or <code>null</code> if none.
*/
public IArtifactRepository getContextArtifactRepository();
/**
- * Returns the metadata repository given to the publisher as context for
- * the publisher actions. May be <code>null</code>. Note that multiple
+ * Returns the metadata repository given to the publisher as context for
+ * the publisher actions. May be <code>null</code>. Note that multiple
* repositories may be represented as one composite repository.
- *
+ *
* @return the context metadata repository or <code>null</code> if none.
*/
public IMetadataRepository getContextMetadataRepository();
diff --git a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/Publisher.java b/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/Publisher.java
index 9fcd96efd..ebbdde5ea 100644
--- a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/Publisher.java
+++ b/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/Publisher.java
@@ -8,8 +8,8 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
+ *
+ * Contributors:
* Code 9 - initial API and implementation
* IBM - ongoing development
******************************************************************************/
@@ -37,18 +37,21 @@ public class Publisher {
private IPublisherResult results;
/**
- * Returns a metadata repository that corresponds to the given settings. If a repository at the
- * given location already exists, it is updated with the settings and returned. If no repository
- * is found then a new Simple repository is created, configured and returned
- * @param agent the provisioning agent to use when creating the repository
+ * Returns a metadata repository that corresponds to the given settings. If a
+ * repository at the given location already exists, it is updated with the
+ * settings and returned. If no repository is found then a new Simple repository
+ * is created, configured and returned
+ *
+ * @param agent the provisioning agent to use when creating the repository
* @param location the URL location of the repository
- * @param name the name of the repository
- * @param append whether or not the repository should appended or cleared
+ * @param name the name of the repository
+ * @param append whether or not the repository should appended or cleared
* @param compress whether or not to compress the repository index
* @return the discovered or created repository
* @throws ProvisionException
*/
- public static IMetadataRepository createMetadataRepository(IProvisioningAgent agent, URI location, String name, boolean append, boolean compress) throws ProvisionException {
+ public static IMetadataRepository createMetadataRepository(IProvisioningAgent agent, URI location, String name,
+ boolean append, boolean compress) throws ProvisionException {
try {
IMetadataRepository result = loadMetadataRepository(agent, location, true, true);
if (result != null && result.isModifiable()) {
@@ -58,54 +61,75 @@ public class Publisher {
return result;
}
} catch (ProvisionException e) {
- //fall through and create a new repository
+ // fall through and create a new repository
}
- // the given repo location is not an existing repo so we have to create something
+ // the given repo location is not an existing repo so we have to create
+ // something
IMetadataRepositoryManager manager = getService(agent, IMetadataRepositoryManager.SERVICE_NAME);
String repositoryName = name == null ? location + " - metadata" : name; //$NON-NLS-1$
- IMetadataRepository result = manager.createRepository(location, repositoryName, IMetadataRepositoryManager.TYPE_SIMPLE_REPOSITORY, null);
+ IMetadataRepository result = manager.createRepository(location, repositoryName,
+ IMetadataRepositoryManager.TYPE_SIMPLE_REPOSITORY, null);
if (result != null) {
manager.removeRepository(result.getLocation());
result.setProperty(IRepository.PROP_COMPRESSED, compress ? "true" : "false"); //$NON-NLS-1$ //$NON-NLS-2$
return result;
}
- // I don't think we can really get here, but just in case, we better throw a provisioning exception
+ // I don't think we can really get here, but just in case, we better throw a
+ // provisioning exception
String msg = org.eclipse.equinox.internal.p2.metadata.repository.Messages.repoMan_internalError;
- throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.INTERNAL_ERROR, msg, null));
+ throw new ProvisionException(
+ new Status(IStatus.ERROR, Activator.ID, ProvisionException.INTERNAL_ERROR, msg, null));
}
/**
* Load a metadata repository from the given location.
- * @param location the URI location of the repository
- * @param modifiable whether to ask the manager for a modifiable repository
- * @param removeFromManager remove the loaded repository from the manager if it wasn't already loaded
+ *
+ * @param location the URI location of the repository
+ * @param modifiable whether to ask the manager for a modifiable
+ * repository
+ * @param removeFromManager remove the loaded repository from the manager if it
+ * wasn't already loaded
* @return the loaded repository
* @throws ProvisionException
*/
- public static IMetadataRepository loadMetadataRepository(IProvisioningAgent agent, URI location, boolean modifiable, boolean removeFromManager) throws ProvisionException {
+ public static IMetadataRepository loadMetadataRepository(IProvisioningAgent agent, URI location, boolean modifiable,
+ boolean removeFromManager) throws ProvisionException {
IMetadataRepositoryManager manager = getService(agent, IMetadataRepositoryManager.SERVICE_NAME);
boolean existing = manager.contains(location);
- IMetadataRepository result = manager.loadRepository(location, modifiable ? IRepositoryManager.REPOSITORY_HINT_MODIFIABLE : 0, null);
+ IMetadataRepository result = manager.loadRepository(location,
+ modifiable ? IRepositoryManager.REPOSITORY_HINT_MODIFIABLE : 0, null);
if (!existing && removeFromManager)
manager.removeRepository(location);
return result;
}
/**
- * Returns an artifact repository that corresponds to the given settings. If a repository at the
- * given location already exists, it is updated with the settings and returned. If no repository
- * is found then a new Simple repository is created, configured and returned
- * @param agent the provisioning agent to use when creating the repository
- * @param location the URL location of the repository
- * @param name the name of the repository
- * @param compress whether or not to compress the repository index
- * @param reusePackedFiles whether or not to include discovered Pack200 files in the repository
+ * Returns an artifact repository that corresponds to the given settings. If a
+ * repository at the given location already exists, it is updated with the
+ * settings and returned. If no repository is found then a new Simple repository
+ * is created, configured and returned
+ *
+ * @param agent the provisioning agent to use when creating the
+ * repository
+ * @param location the URL location of the repository
+ * @param name the name of the repository
+ * @param compress whether or not to compress the repository index
+ * @param reusePackedFiles whether or not to include discovered Pack200 files in
+ * the repository
* @return the discovered or created repository
* @throws ProvisionException
+ *
+ * @deprecated See <a href=
+ * "https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a>
+ * for details. Use
+ * {@link #createArtifactRepository(IprovisioningAgent, URI, String, boolean)}
+ * instead.
*/
- public static IArtifactRepository createArtifactRepository(IProvisioningAgent agent, URI location, String name, boolean compress, boolean reusePackedFiles) throws ProvisionException {
+ @Deprecated(forRemoval = true, since = "2.3.0")
+ public static IArtifactRepository createArtifactRepository(IProvisioningAgent agent, URI location, String name,
+ boolean compress, boolean reusePackedFiles) throws ProvisionException {
try {
IArtifactRepository result = loadArtifactRepository(agent, location, true, true);
if (result != null && result.isModifiable()) {
@@ -115,12 +139,13 @@ public class Publisher {
return result;
}
} catch (ProvisionException e) {
- //fall through and create a new repository
+ // fall through and create a new repository
}
IArtifactRepositoryManager manager = getService(agent, IArtifactRepositoryManager.SERVICE_NAME);
String repositoryName = name != null ? name : location + " - artifacts"; //$NON-NLS-1$
- IArtifactRepository result = manager.createRepository(location, repositoryName, IArtifactRepositoryManager.TYPE_SIMPLE_REPOSITORY, null);
+ IArtifactRepository result = manager.createRepository(location, repositoryName,
+ IArtifactRepositoryManager.TYPE_SIMPLE_REPOSITORY, null);
if (result != null) {
manager.removeRepository(result.getLocation());
if (reusePackedFiles)
@@ -128,24 +153,73 @@ public class Publisher {
result.setProperty(IRepository.PROP_COMPRESSED, compress ? "true" : "false"); //$NON-NLS-1$//$NON-NLS-2$
return result;
}
- // I don't think we can really get here, but just in case, we better throw a provisioning exception
+ // I don't think we can really get here, but just in case, we better throw a
+ // provisioning exception
+ String msg = org.eclipse.equinox.internal.p2.artifact.repository.Messages.repoMan_internalError;
+ throw new ProvisionException(
+ new Status(IStatus.ERROR, Activator.ID, ProvisionException.INTERNAL_ERROR, msg, null));
+ }
+
+ /**
+ * Returns an artifact repository that corresponds to the given settings. If a
+ * repository at the given location already exists, it is updated with the
+ * settings and returned. If no repository is found then a new Simple repository
+ * is created, configured and returned
+ *
+ * @param agent the provisioning agent to use when creating the repository
+ * @param location the URL location of the repository
+ * @param name the name of the repository
+ * @param compress whether or not to compress the repository index
+ * @return the discovered or created repository
+ * @throws ProvisionException
+ */
+ @Deprecated(forRemoval = true, since = "2.3.0")
+ public static IArtifactRepository createArtifactRepository(IProvisioningAgent agent, URI location, String name,
+ boolean compress) throws ProvisionException {
+ try {
+ IArtifactRepository result = loadArtifactRepository(agent, location, true, true);
+ if (result != null && result.isModifiable()) {
+ result.setProperty(IRepository.PROP_COMPRESSED, compress ? "true" : "false"); //$NON-NLS-1$//$NON-NLS-2$
+ return result;
+ }
+ } catch (ProvisionException e) {
+ // fall through and create a new repository
+ }
+
+ IArtifactRepositoryManager manager = getService(agent, IArtifactRepositoryManager.SERVICE_NAME);
+ String repositoryName = name != null ? name : location + " - artifacts"; //$NON-NLS-1$
+ IArtifactRepository result = manager.createRepository(location, repositoryName,
+ IArtifactRepositoryManager.TYPE_SIMPLE_REPOSITORY, null);
+ if (result != null) {
+ manager.removeRepository(result.getLocation());
+ result.setProperty(IRepository.PROP_COMPRESSED, compress ? "true" : "false"); //$NON-NLS-1$//$NON-NLS-2$
+ return result;
+ }
+ // I don't think we can really get here, but just in case, we better throw a
+ // provisioning exception
String msg = org.eclipse.equinox.internal.p2.artifact.repository.Messages.repoMan_internalError;
- throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.INTERNAL_ERROR, msg, null));
+ throw new ProvisionException(
+ new Status(IStatus.ERROR, Activator.ID, ProvisionException.INTERNAL_ERROR, msg, null));
}
/**
* Load an artifact repository from the given location.
- * @param location the URI location of the repository
- * @param modifiable whether to ask the manager for a modifiable repository
- * @param removeFromManager remove the loaded repository from the manager if it wasn't already loaded
+ *
+ * @param location the URI location of the repository
+ * @param modifiable whether to ask the manager for a modifiable
+ * repository
+ * @param removeFromManager remove the loaded repository from the manager if it
+ * wasn't already loaded
* @return the loaded repository
* @throws ProvisionException
*/
- public static IArtifactRepository loadArtifactRepository(IProvisioningAgent agent, URI location, boolean modifiable, boolean removeFromManager) throws ProvisionException {
+ public static IArtifactRepository loadArtifactRepository(IProvisioningAgent agent, URI location, boolean modifiable,
+ boolean removeFromManager) throws ProvisionException {
IArtifactRepositoryManager manager = getService(agent, IArtifactRepositoryManager.SERVICE_NAME);
boolean existing = manager.contains(location);
- IArtifactRepository result = manager.loadRepository(location, modifiable ? IRepositoryManager.REPOSITORY_HINT_MODIFIABLE : 0, null);
+ IArtifactRepository result = manager.loadRepository(location,
+ modifiable ? IRepositoryManager.REPOSITORY_HINT_MODIFIABLE : 0, null);
if (!existing && removeFromManager)
manager.removeRepository(location);
return result;
@@ -157,12 +231,13 @@ public class Publisher {
}
/**
- * Obtains a service from the agent, waiting for a reasonable timeout period
- * if the service is not yet available. This method never returns <code>null</code>;
- * an exception is thrown if the service could not be obtained.
- *
- * @param <T> The type of the service to return
- * @param agent The agent to obtain the service from
+ * Obtains a service from the agent, waiting for a reasonable timeout period if
+ * the service is not yet available. This method never returns
+ * <code>null</code>; an exception is thrown if the service could not be
+ * obtained.
+ *
+ * @param <T> The type of the service to return
+ * @param agent The agent to obtain the service from
* @param serviceName The name of the service to obtain
* @return The service instance
*/
@@ -176,13 +251,13 @@ public class Publisher {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
- //ignore and keep waiting
+ // ignore and keep waiting
}
service = (T) agent.getService(serviceName);
if (service != null)
return service;
} while ((System.currentTimeMillis() - start) < SERVICE_TIMEOUT);
- //could not obtain the service
+ // could not obtain the service
throw new IllegalStateException("Unable to obtain required service: " + serviceName); //$NON-NLS-1$
}
@@ -236,7 +311,7 @@ public class Publisher {
if (info.getArtifactRepository() != null) {
finalStatus = info.getArtifactRepository().executeBatch(artifactProcess, sub);
if (!finalStatus.matches(IStatus.ERROR | IStatus.CANCEL))
- // If the batch process didn't report any errors, then
+ // If the batch process didn't report any errors, then
// Use the status from our actions
finalStatus = artifactProcess.getStatus();
} else {
diff --git a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/actions/JREAction.java b/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/actions/JREAction.java
index 55bf28314..f9c52621f 100644
--- a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/actions/JREAction.java
+++ b/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/p2/publisher/actions/JREAction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2018 Code 9 and others.
+ * Copyright (c) 2008, 2021 Code 9 and others.
*
* This
* program and the accompanying materials are made available under the terms of
@@ -17,7 +17,10 @@
package org.eclipse.equinox.p2.publisher.actions;
import java.io.*;
+import java.lang.module.ModuleDescriptor;
+import java.lang.module.ModuleDescriptor.Exports;
import java.net.URL;
+import java.nio.file.Files;
import java.util.*;
import org.eclipse.core.runtime.*;
import org.eclipse.equinox.internal.p2.core.helpers.CollectionUtils;
@@ -38,8 +41,8 @@ import org.osgi.framework.*;
public class JREAction extends AbstractPublisherAction {
private static final String DEFAULT_JRE_NAME = "a.jre"; //$NON-NLS-1$
- private static final Version DEFAULT_JRE_VERSION = Version.parseVersion("9.0"); //$NON-NLS-1$
- private static final String DEFAULT_PROFILE = "JavaSE-9"; //$NON-NLS-1$
+ private static final Version DEFAULT_JRE_VERSION = Version.parseVersion("11.0"); //$NON-NLS-1$
+ private static final String DEFAULT_PROFILE = "JavaSE-11"; //$NON-NLS-1$
private static final String PROFILE_LOCATION = "jre.action.profile.location"; //$NON-NLS-1$
private static final String PROFILE_NAME = "osgi.java.profile.name"; //$NON-NLS-1$
private static final String PROFILE_TARGET_VERSION = "org.eclipse.jdt.core.compiler.codegen.targetPlatform"; //$NON-NLS-1$
@@ -102,7 +105,8 @@ public class JREAction extends AbstractPublisherAction {
cu.setId(configId);
cu.setVersion(iu.getVersion());
VersionRange range = iu.getVersion() == Version.emptyVersion ? VersionRange.emptyRange : new VersionRange(iu.getVersion(), true, Version.MAX_VERSION, true);
- cu.setHost(new IRequirement[] {MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, iu.getId(), range, null, false, false)});
+ cu.setHost(MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, iu.getId(), range, null, false,
+ false));
cu.setProperty(InstallableUnitDescription.PROP_TYPE_FRAGMENT, Boolean.TRUE.toString());
cu.setCapabilities(new IProvidedCapability[] {PublisherHelper.createSelfCapability(configId, iu.getVersion())});
cu.setTouchpointType(PublisherHelper.TOUCHPOINT_NATIVE);
@@ -195,10 +199,8 @@ public class JREAction extends AbstractPublisherAction {
for (String namespace : namespaces) {
if (NAMESPACE_OSGI_EE.equals(namespace)) { // this is the OSGi capability namespace "osgi.ee"
parseEECapability(systemCapability, parsingStatus, parsingResult);
-
} else {
parsingStatus.add(newWarningStatus(NLS.bind(Messages.message_eeIgnoringNamespace, namespace)));
- continue;
}
}
}
@@ -297,8 +299,22 @@ public class JREAction extends AbstractPublisherAction {
}
private void initialize(IPublisherInfo publisherInfo) {
+ File runtimeProfile = null;
this.info = publisherInfo;
-
+ if (jreLocation == null && environment == null) {
+ // create a runtime profile
+ StringBuilder buffer = createDefaultProfileFromRunningJvm();
+ try {
+ File tempDirectory = Files.createTempDirectory("JREAction").toFile(); //$NON-NLS-1$
+ runtimeProfile = new File(tempDirectory, DEFAULT_PROFILE + ".profile"); //$NON-NLS-1$
+ try (FileWriter writer = new FileWriter(runtimeProfile)) {
+ writer.write(buffer.toString());
+ }
+ jreLocation = runtimeProfile;
+ } catch (IOException e) {
+ // ignore
+ }
+ }
if (jreLocation != null) {
File javaProfile = null;
@@ -322,6 +338,122 @@ public class JREAction extends AbstractPublisherAction {
URL profileURL = getResouceFromSystemBundle(profileFile);
profileProperties = loadProfile(profileURL);
}
+ if (runtimeProfile != null) {
+ runtimeProfile.delete();
+ runtimeProfile.getParentFile().delete();
+ }
+ }
+
+ /*
+ * Copied from org.eclipse.osgi.storage.Storage.calculateVMPackages and adopted
+ * to Java 11
+ */
+ private String calculateVMPackages() {
+ try {
+ List<String> packages = new ArrayList<>();
+ ModuleLayer bootLayer = ModuleLayer.boot();
+ Set<Module> bootModules = bootLayer.modules();
+ for (Module m : bootModules) {
+ ModuleDescriptor descriptor = m.getDescriptor();
+ if (descriptor.isAutomatic()) {
+ /*
+ * Automatic modules are supposed to export all their packages. However,
+ * java.lang.module.ModuleDescriptor::exports returns an empty set for them. Add
+ * all their packages (as returned by
+ * java.lang.module.ModuleDescriptor::packages) to the list of VM supplied
+ * packages.
+ */
+ packages.addAll(descriptor.packages());
+ } else {
+ for (Exports export : descriptor.exports()) {
+ String pkg = export.source();
+ if (!export.isQualified()) {
+ packages.add(pkg);
+ }
+ }
+ }
+ }
+ Collections.sort(packages);
+ StringBuilder result = new StringBuilder();
+ for (String pkg : packages) {
+ if (result.length() != 0) {
+ result.append(',').append(' ');
+ }
+ result.append(pkg);
+ }
+ return result.toString();
+ } catch (Exception e) {
+
+ return null;
+ }
+ }
+
+ /**
+ * Creates default profile with minumum version as stated by
+ * {@link #DEFAULT_PROFILE} and adds packages observed on currently used JVM.
+ *
+ * @return generated profile content
+ */
+ @SuppressWarnings("nls")
+ private StringBuilder createDefaultProfileFromRunningJvm() {
+ StringBuilder buffer = new StringBuilder();
+ final String NEWLINE = System.lineSeparator();
+ // add systempackages
+ buffer.append("org.osgi.framework.system.packages = \\");
+ buffer.append(NEWLINE);
+ buffer.append(' ');
+ String calculateVMPackages = calculateVMPackages();
+ if (calculateVMPackages != null) {
+ String[] pack;
+ pack = calculateVMPackages.split(",");
+ for (int i = 0; i < pack.length; i++) {
+ buffer.append(pack[i]);
+ if (i != pack.length - 1) {
+ buffer.append(',');
+ buffer.append("\\");
+ }
+ buffer.append(NEWLINE);
+ }
+ }
+ // add EE
+ buffer.append("org.osgi.framework.executionenvironment = \\\n" + " OSGi/Minimum-1.0,\\\n"
+ + " OSGi/Minimum-1.1,\\\n" + " OSGi/Minimum-1.2,\\\n" + " JavaSE/compact1-1.8,\\\n"
+ + " JavaSE/compact2-1.8,\\\n" + " JavaSE/compact3-1.8,\\\n" + " JRE-1.1,\\\n" + " J2SE-1.2,\\\n"
+ + " J2SE-1.3,\\\n" + " J2SE-1.4,\\\n" + " J2SE-1.5,\\\n" + " JavaSE-1.6,\\\n" + " JavaSE-1.7,\\\n"
+ + " JavaSE-1.8,\\\n");
+ String version = DEFAULT_PROFILE.substring(DEFAULT_PROFILE.indexOf('-') + 1);
+ int ver = Integer.parseInt(version);
+ for (int i = 9; i < ver; i++) {
+ buffer.append(" JavaSE-" + String.valueOf(i) + ",\\\n");
+ }
+ buffer.append(" JavaSE-" + String.valueOf(ver));
+ buffer.append(NEWLINE);
+
+ // add capabilities
+ StringBuilder versionList = new StringBuilder();
+ versionList.append("1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8");
+ for (int i = 9; i <= ver; i++) {
+ versionList.append(", " + String.valueOf(i) + ".0");
+ }
+ buffer.append("org.osgi.framework.system.capabilities = \\\n"
+ + " osgi.ee; osgi.ee=\"OSGi/Minimum\"; version:List<Version>=\"1.0, 1.1, 1.2\",\\\n"
+ + " osgi.ee; osgi.ee=\"JRE\"; version:List<Version>=\"1.0, 1.1\",\\\n"
+ + " osgi.ee; osgi.ee=\"JavaSE\"; version:List<Version>=\"" + versionList.toString() + "\",\\\n"
+ + " osgi.ee; osgi.ee=\"JavaSE/compact1\"; version:List<Version>=\"1.8," + String.valueOf(ver)
+ + ".0\",\\\n" + " osgi.ee; osgi.ee=\"JavaSE/compact2\"; version:List<Version>=\"1.8,"
+ + String.valueOf(ver) + ".0\",\\\n"
+ + " osgi.ee; osgi.ee=\"JavaSE/compact3\"; version:List<Version>=\"1.8," + String.valueOf(ver) + ".0\"");
+ buffer.append(NEWLINE);
+
+ // add profile name and compiler options
+ buffer.append("osgi.java.profile.name = " + DEFAULT_PROFILE + "\n" + "org.eclipse.jdt.core.compiler.compliance="
+ + String.valueOf(ver) + "\n" + "org.eclipse.jdt.core.compiler.source=" + String.valueOf(ver) + "\n"
+ + "org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\n"
+ + "org.eclipse.jdt.core.compiler.codegen.targetPlatform=" + String.valueOf(ver) + "\n"
+ + "org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\n"
+ + "org.eclipse.jdt.core.compiler.problem.enumIdentifier=error");
+ buffer.append(NEWLINE);
+ return buffer;
}
private static URL getResouceFromSystemBundle(String entry) {
diff --git a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/spi/p2/publisher/LocalizationHelper.java b/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/spi/p2/publisher/LocalizationHelper.java
index f969d1766..4c9062946 100644
--- a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/spi/p2/publisher/LocalizationHelper.java
+++ b/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/spi/p2/publisher/LocalizationHelper.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2018 IBM Corporation and others.
+ * Copyright (c) 2008, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -22,15 +22,13 @@ import java.util.zip.ZipFile;
import org.eclipse.equinox.internal.p2.core.helpers.CollectionUtils;
/**
- * Helper functions supporting the processing of localized
- * property files.
+ * Helper functions supporting the processing of localized property files.
*
*/
public final class LocalizationHelper {
private static final String PROPERTIES_FILE_EXTENSION = ".properties"; //$NON-NLS-1$
private static final Locale DEFAULT_LOCALE = new Locale("df", "LT"); //$NON-NLS-1$//$NON-NLS-2$
- private static LocalizationHelper instance = new LocalizationHelper();
// Extract the locale string from the properties file with the given filename
// where the locale string follows the given prefix. For example, return "zh_HK"
@@ -39,7 +37,8 @@ public final class LocalizationHelper {
String localeString = null;
if (filename.startsWith(prefix) && filename.endsWith(PROPERTIES_FILE_EXTENSION)) {
if (filename.length() > prefix.length() + PROPERTIES_FILE_EXTENSION.length()) {
- localeString = filename.substring(prefix.length() + 1, filename.length() - PROPERTIES_FILE_EXTENSION.length());
+ localeString = filename.substring(prefix.length() + 1,
+ filename.length() - PROPERTIES_FILE_EXTENSION.length());
} else {
localeString = ""; //$NON-NLS-1$
}
@@ -58,9 +57,11 @@ public final class LocalizationHelper {
return locale;
}
- // For the given root directory and path to localization files within that directory
+ // For the given root directory and path to localization files within that
+ // directory
// get a map from locale to property set for the localization property files.
- public static Map<Locale, Map<String, String>> getDirPropertyLocalizations(File root, String localizationPath, Locale defaultLocale, String[] propertyKeys) {
+ public static Map<Locale, Map<String, String>> getDirPropertyLocalizations(File root, String localizationPath,
+ Locale defaultLocale, String[] propertyKeys) {
File fullPath = new File(root, localizationPath);
File localizationDir = fullPath.getParentFile();
final String localizationFile = fullPath.getName();
@@ -91,7 +92,8 @@ public final class LocalizationHelper {
return localizations;
}
- public static Map<Locale, Map<String, String>> getJarPropertyLocalizations(File root, String localizationPath, Locale defaultLocale, String[] propertyKeys) {
+ public static Map<Locale, Map<String, String>> getJarPropertyLocalizations(File root, String localizationPath,
+ Locale defaultLocale, String[] propertyKeys) {
Map<Locale, Map<String, String>> localizations = new HashMap<>(4);
try (ZipFile jarFile = new ZipFile(root, ZipFile.OPEN_READ)) {
for (Enumeration<? extends ZipEntry> entries = jarFile.entries(); entries.hasMoreElements();) {
@@ -103,7 +105,8 @@ public final class LocalizationHelper {
Locale nextLocale = LocalizationHelper.getLocale(localeString);
try (InputStream stream = jarFile.getInputStream(nextEntry)) {
Map<String, String> properties = CollectionUtils.loadProperties(stream);
- Map<String, String> localizedStrings = LocalizationHelper.getLocalizedProperties(propertyKeys, properties);
+ Map<String, String> localizedStrings = LocalizationHelper.getLocalizedProperties(propertyKeys,
+ properties);
if (localizedStrings.size() > 0) {
localizations.put(nextLocale, localizedStrings);
if (DEFAULT_LOCALE.equals(nextLocale) && defaultLocale != null) {
@@ -128,7 +131,8 @@ public final class LocalizationHelper {
if (root.isDirectory())
propertyStream = new FileInputStream(new File(root, propertyFilename));
else {
- URLConnection connection = new URL("jar:" + root.toURL().toExternalForm() + "!/" + propertyFilename).openConnection(); //$NON-NLS-1$ //$NON-NLS-2$
+ URLConnection connection = new URL("jar:" + root.toURL().toExternalForm() + "!/" + propertyFilename) //$NON-NLS-1$ //$NON-NLS-2$
+ .openConnection();
connection.setUseCaches(false);
propertyStream = connection.getInputStream();
}
@@ -158,22 +162,8 @@ public final class LocalizationHelper {
}
public static String[] getLocalizationFiles(File localizationDir, final String filenamePrefix) {
- return localizationDir.list(instance.new FileFilter() {
- @Override
- public boolean accept(File directory, String filename) {
- return (getLocaleString(filename, filenamePrefix) != null ? true : false);
- }
- });
- }
-
- private abstract class FileFilter implements FilenameFilter {
-
- public FileFilter() {
- // Nothing to do
- }
-
- @Override
- public abstract boolean accept(File directory, String filename);
+ return localizationDir
+ .list((directory, filename) -> (getLocaleString(filename, filenamePrefix) != null ? true : false));
}
private LocalizationHelper() {
diff --git a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/spi/p2/publisher/PublisherHelper.java b/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/spi/p2/publisher/PublisherHelper.java
index 1af645601..f074794b7 100644
--- a/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/spi/p2/publisher/PublisherHelper.java
+++ b/bundles/org.eclipse.equinox.p2.publisher/src/org/eclipse/equinox/spi/p2/publisher/PublisherHelper.java
@@ -112,7 +112,7 @@ public class PublisherHelper {
descriptor.setProperty(IArtifactDescriptor.ARTIFACT_SIZE, Long.toString(pathOnDisk.length()));
descriptor.setProperty(IArtifactDescriptor.DOWNLOAD_SIZE, Long.toString(pathOnDisk.length()));
- boolean generateChecksums = info == null || (info.getArtifactOptions() & IPublisherInfo.A_NO_MD5) == 0;
+ boolean generateChecksums = info == null || isArtifactGenerateChecksums(info);
if (generateChecksums) {
calculateChecksums(pathOnDisk, descriptor);
}
@@ -224,7 +224,7 @@ public class PublisherHelper {
if (version == null) {
return Version.MAX_VERSION;
}
- if (version.getMajor() == Integer.MAX_VALUE && version.getMicro() == Integer.MAX_VALUE && version.getMicro() == Integer.MAX_VALUE) {
+ if (version.getMajor() == Integer.MAX_VALUE && version.getMinor() == Integer.MAX_VALUE && version.getMicro() == Integer.MAX_VALUE) {
return Version.MAX_VERSION;
}
return Version.createOSGi(version.getMajor(), version.getMinor(), version.getMicro(), version.getQualifier());
@@ -252,4 +252,49 @@ public class PublisherHelper {
return new VersionRange(min, includeMin, max, includeMax);
}
+
+ /**
+ *
+ * @return <code>true</code> if md5 sums should be generated <code>false</code>
+ * otherwise
+ * @since 1.7.0
+ */
+ public static boolean isArtifactGenerateChecksums(IPublisherInfo publisherInfo) {
+ if ((publisherInfo.getArtifactOptions() & IPublisherInfo.A_NO_MD5) != 0) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ *
+ * @return <code>true</code> if existing artifacts should be overwritten
+ * <code>false</code> otherwise
+ * @since 1.7.0
+ */
+ public static boolean isArtifactOverwrite(IPublisherInfo publisherInfo) {
+ return (publisherInfo.getArtifactOptions() & IPublisherInfo.A_OVERWRITE) != 0;
+ }
+
+ /**
+ *
+ * @return <code>true</code> if artifacts should published <code>false</code>
+ * otherwise
+ * @since 1.7.0
+ */
+ public static boolean isArtifactPublish(IPublisherInfo publisherInfo) {
+ int artifactOptions = publisherInfo.getArtifactOptions();
+ return artifactOptions == 0 || (artifactOptions & IPublisherInfo.A_PUBLISH) != 0;
+ }
+
+ /**
+ *
+ * @return <code>true</code> if the artifact index should be updated
+ * <code>false</code> otherwise
+ * @since 1.7.0
+ */
+ public static boolean isArtifactIndex(IPublisherInfo publisherInfo) {
+ int artifactOptions = publisherInfo.getArtifactOptions();
+ return artifactOptions == 0 || (artifactOptions & IPublisherInfo.A_INDEX) != 0;
+ }
}
diff --git a/bundles/org.eclipse.equinox.p2.reconciler.dropins/.classpath b/bundles/org.eclipse.equinox.p2.reconciler.dropins/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.reconciler.dropins/.classpath
+++ b/bundles/org.eclipse.equinox.p2.reconciler.dropins/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.reconciler.dropins/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.reconciler.dropins/.settings/org.eclipse.jdt.core.prefs
index daddac459..83ab682e5 100644
--- a/bundles/org.eclipse.equinox.p2.reconciler.dropins/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.reconciler.dropins/.settings/org.eclipse.jdt.core.prefs
@@ -18,9 +18,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -37,6 +37,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -90,6 +91,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -126,7 +128,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -140,7 +143,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -261,7 +263,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -332,7 +333,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -477,7 +477,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.reconciler.dropins/Bootstrap.product b/bundles/org.eclipse.equinox.p2.reconciler.dropins/Bootstrap.product
index 0b8e0c2b2..f48bab7f0 100644
--- a/bundles/org.eclipse.equinox.p2.reconciler.dropins/Bootstrap.product
+++ b/bundles/org.eclipse.equinox.p2.reconciler.dropins/Bootstrap.product
@@ -3,6 +3,9 @@
<product name="p2 bootstrap" id="org.eclipse.equinox.p2.reconciler.dropins.product" application="org.eclipse.equinox.p2.reconciler.application" version="1.3.0.qualifier" useFeatures="false" includeLaunchers="true">
+ <configIni>
+ </configIni>
+
<launcherArgs>
<vmArgs>-Dorg.eclipse.equinox.p2.reconciler.noConfig=true
</vmArgs>
@@ -22,10 +25,12 @@
</vm>
<plugins>
+ <plugin id="org.apache.felix.scr"/>
<plugin id="org.eclipse.core.contenttype"/>
<plugin id="org.eclipse.core.expressions"/>
<plugin id="org.eclipse.core.jobs"/>
<plugin id="org.eclipse.core.net"/>
+ <plugin id="org.eclipse.core.net.linux" fragment="true"/>
<plugin id="org.eclipse.core.runtime"/>
<plugin id="org.eclipse.core.runtime.compatibility.registry" fragment="true"/>
<plugin id="org.eclipse.ecf"/>
@@ -36,7 +41,7 @@
<plugin id="org.eclipse.ecf.ssl" fragment="true"/>
<plugin id="org.eclipse.equinox.app"/>
<plugin id="org.eclipse.equinox.common"/>
- <plugin id="org.eclipse.equinox.ds"/>
+ <plugin id="org.eclipse.equinox.concurrent"/>
<plugin id="org.eclipse.equinox.frameworkadmin"/>
<plugin id="org.eclipse.equinox.frameworkadmin.equinox"/>
<plugin id="org.eclipse.equinox.p2.artifact.repository"/>
@@ -50,6 +55,7 @@
<plugin id="org.eclipse.equinox.p2.metadata"/>
<plugin id="org.eclipse.equinox.p2.metadata.repository"/>
<plugin id="org.eclipse.equinox.p2.publisher"/>
+ <plugin id="org.eclipse.equinox.p2.publisher.eclipse"/>
<plugin id="org.eclipse.equinox.p2.reconciler.dropins"/>
<plugin id="org.eclipse.equinox.p2.repository"/>
<plugin id="org.eclipse.equinox.p2.touchpoint.eclipse"/>
@@ -58,13 +64,17 @@
<plugin id="org.eclipse.equinox.preferences"/>
<plugin id="org.eclipse.equinox.registry"/>
<plugin id="org.eclipse.equinox.security"/>
+ <plugin id="org.eclipse.equinox.security.linux" fragment="true"/>
<plugin id="org.eclipse.equinox.simpleconfigurator"/>
<plugin id="org.eclipse.equinox.simpleconfigurator.manipulator"/>
<plugin id="org.eclipse.equinox.util"/>
<plugin id="org.eclipse.osgi"/>
+ <plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/>
<plugin id="org.eclipse.osgi.services"/>
+ <plugin id="org.eclipse.osgi.util"/>
<plugin id="org.sat4j.core"/>
<plugin id="org.sat4j.pb"/>
+ <plugin id="org.tukaani.xz"/>
</plugins>
diff --git a/bundles/org.eclipse.equinox.p2.reconciler.dropins/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.reconciler.dropins/META-INF/MANIFEST.MF
index d7f4bbfbf..104fdb8d6 100644
--- a/bundles/org.eclipse.equinox.p2.reconciler.dropins/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.reconciler.dropins/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.reconciler.dropins;singleton:=true
-Bundle-Version: 1.3.200.qualifier
+Bundle-Version: 1.4.100.qualifier
Bundle-Activator: org.eclipse.equinox.internal.p2.reconciler.dropins.Activator
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -10,7 +10,7 @@ Export-Package: org.eclipse.equinox.internal.p2.reconciler.dropins;x-internal:=t
Require-Bundle: org.eclipse.equinox.common;bundle-version="[3.5.0,4.0.0)",
org.eclipse.equinox.p2.touchpoint.eclipse;bundle-version="1.0.0",
org.eclipse.equinox.p2.metadata
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Import-Package: org.eclipse.equinox.app;version="1.0.0",
org.eclipse.equinox.internal.p2.artifact.repository,
org.eclipse.equinox.internal.p2.core.helpers,
diff --git a/bundles/org.eclipse.equinox.p2.reconciler.dropins/pom.xml b/bundles/org.eclipse.equinox.p2.reconciler.dropins/pom.xml
index d1fd5432e..d2362a506 100644
--- a/bundles/org.eclipse.equinox.p2.reconciler.dropins/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.reconciler.dropins/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.reconciler.dropins</artifactId>
- <version>1.3.200-SNAPSHOT</version>
+ <version>1.4.100-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/PlatformXmlListener.java b/bundles/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/PlatformXmlListener.java
index 5a4b64cf6..60fa77a44 100644
--- a/bundles/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/PlatformXmlListener.java
+++ b/bundles/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/PlatformXmlListener.java
@@ -257,8 +257,8 @@ public class PlatformXmlListener extends DirectoryChangeListener {
}
}
if (!toBeRemoved.isEmpty()) {
- for (Iterator<Site> iter = toBeRemoved.iterator(); iter.hasNext();)
- config.removeSite(iter.next());
+ for (Site site : toBeRemoved)
+ config.removeSite(site);
try {
config.save(root, Activator.getOSGiInstallArea());
} catch (ProvisionException e) {
diff --git a/bundles/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/ProfileSynchronizer.java b/bundles/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/ProfileSynchronizer.java
index 93064cd4e..633d32088 100644
--- a/bundles/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/ProfileSynchronizer.java
+++ b/bundles/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/ProfileSynchronizer.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2017 IBM Corporation and others.
+ * Copyright (c) 2007, 2020 IBM Corporation and others.
* All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which accompanies this distribution,
@@ -218,7 +218,7 @@ public class ProfileSynchronizer {
}
// We are now creating a backup of the original request that will be used to create the final plan (where no optional magic is used)
- ProfileChangeRequest finalRequest = (ProfileChangeRequest) request.clone();
+ ProfileChangeRequest finalRequest = request.clone();
// otherwise collect the roots, pretend they are optional, and see
// if the resulting plan affects them
@@ -449,7 +449,7 @@ public class ProfileSynchronizer {
OSGiInstallArea = URIUtil.toURI(installArea).toString() + Constants.EXTENSION_LOCATION;
// Sort the repositories so the extension location at the OSGi install folder is first.
// See https://bugs.eclipse.org/246310.
- Collections.sort(repositories, (left, right) -> {
+ repositories.sort((left, right) -> {
if (OSGiInstallArea.equals(left))
return -1;
if (OSGiInstallArea.equals(right))
diff --git a/bundles/org.eclipse.equinox.p2.repository.tools/.classpath b/bundles/org.eclipse.equinox.p2.repository.tools/.classpath
index 030607499..cc48f9f27 100644
--- a/bundles/org.eclipse.equinox.p2.repository.tools/.classpath
+++ b/bundles/org.eclipse.equinox.p2.repository.tools/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" output="bin_ant" path="src_ant"/>
diff --git a/bundles/org.eclipse.equinox.p2.repository.tools/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.repository.tools/.settings/org.eclipse.jdt.core.prefs
index 2e78065b1..cc029895e 100644
--- a/bundles/org.eclipse.equinox.p2.repository.tools/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.repository.tools/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -36,6 +36,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -89,6 +90,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -125,10 +127,11 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -136,20 +139,23 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -241,11 +247,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -276,6 +283,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -300,13 +309,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -354,6 +367,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -390,9 +405,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -428,10 +446,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.equinox.p2.repository.tools/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.equinox.p2.repository.tools/.settings/org.eclipse.jdt.ui.prefs
index 9a640320c..b0c22ad5e 100644
--- a/bundles/org.eclipse.equinox.p2.repository.tools/.settings/org.eclipse.jdt.ui.prefs
+++ b/bundles/org.eclipse.equinox.p2.repository.tools/.settings/org.eclipse.jdt.ui.prefs
@@ -7,36 +7,80 @@ org.eclipse.jdt.ui.importorder=;
org.eclipse.jdt.ui.ondemandthreshold=3
org.eclipse.jdt.ui.staticondemandthreshold=3
org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates/>
+sp_cleanup.add_all=false
sp_cleanup.add_default_serial_version_id=true
sp_cleanup.add_generated_serial_version_id=false
sp_cleanup.add_missing_annotations=true
sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
sp_cleanup.add_missing_nls_tags=false
sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
sp_cleanup.add_serial_version_id=false
sp_cleanup.always_use_blocks=true
sp_cleanup.always_use_parentheses_in_expressions=false
sp_cleanup.always_use_this_for_non_static_field_access=false
sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.arrays_fill=false
+sp_cleanup.bitwise_conditional_expression=false
+sp_cleanup.boolean_literal=false
+sp_cleanup.break_loop=false
+sp_cleanup.collection_cloning=false
+sp_cleanup.comparison_statement=false
+sp_cleanup.controlflow_merge=false
+sp_cleanup.convert_functional_interfaces=false
sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false
+sp_cleanup.convert_to_switch_expressions=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.double_negation=false
+sp_cleanup.else_if=false
+sp_cleanup.embedded_if=false
+sp_cleanup.evaluate_nullable=false
+sp_cleanup.extract_increment=false
sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.hash=false
+sp_cleanup.if_condition=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.instanceof=false
+sp_cleanup.join=false
+sp_cleanup.lazy_logical_operator=false
sp_cleanup.make_local_variable_final=false
sp_cleanup.make_parameters_final=false
sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_variable_declarations_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.map_cloning=false
+sp_cleanup.merge_conditional_blocks=false
+sp_cleanup.multi_catch=false
sp_cleanup.never_use_blocks=false
sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=false
+sp_cleanup.no_string_creation=false
+sp_cleanup.no_super=false
+sp_cleanup.number_suffix=false
+sp_cleanup.objects_equals=false
+sp_cleanup.on_save_use_additional_actions=true
sp_cleanup.organize_imports=true
+sp_cleanup.overridden_assignment=false
+sp_cleanup.precompile_regex=false
+sp_cleanup.primitive_serialization=false
+sp_cleanup.pull_up_assignment=false
+sp_cleanup.push_down_negation=false
sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.redundant_falling_through_block_end=false
sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=false
+sp_cleanup.remove_trailing_whitespaces=true
sp_cleanup.remove_trailing_whitespaces_all=true
sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_array_creation=true
sp_cleanup.remove_unnecessary_casts=true
sp_cleanup.remove_unnecessary_nls_tags=false
sp_cleanup.remove_unused_imports=false
@@ -45,12 +89,27 @@ sp_cleanup.remove_unused_private_fields=true
sp_cleanup.remove_unused_private_members=false
sp_cleanup.remove_unused_private_methods=true
sp_cleanup.remove_unused_private_types=true
+sp_cleanup.simplify_lambda_expression_and_method_ref=true
sp_cleanup.sort_members=false
sp_cleanup.sort_members_all=false
+sp_cleanup.static_inner_class=false
+sp_cleanup.strictly_equal_or_different=false
+sp_cleanup.stringbuilder=false
+sp_cleanup.switch=false
+sp_cleanup.ternary_operator=false
+sp_cleanup.try_with_resource=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_autoboxing=false
sp_cleanup.use_blocks=false
sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_directly_map_method=false
+sp_cleanup.use_lambda=false
sp_cleanup.use_parentheses_in_expressions=false
sp_cleanup.use_this_for_non_static_field_access=false
sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
sp_cleanup.use_this_for_non_static_method_access=false
sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_unboxing=false
+sp_cleanup.use_var=false
+sp_cleanup.useless_continue=false
+sp_cleanup.useless_return=false
diff --git a/bundles/org.eclipse.equinox.p2.repository.tools/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.repository.tools/META-INF/MANIFEST.MF
index 85b6c09a3..3dba706cb 100644
--- a/bundles/org.eclipse.equinox.p2.repository.tools/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.repository.tools/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %bundleName
Bundle-SymbolicName: org.eclipse.equinox.p2.repository.tools;singleton:=true
-Bundle-Version: 2.2.400.qualifier
+Bundle-Version: 2.3.0.qualifier
Bundle-Activator: org.eclipse.equinox.p2.internal.repository.tools.Activator
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -15,7 +15,7 @@ Export-Package: org.eclipse.equinox.p2.internal.repository.comparator;x-internal
Require-Bundle: org.eclipse.equinox.common;bundle-version="3.3.0",
org.eclipse.equinox.registry,
org.tukaani.xz;bundle-version="1.3.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Import-Package: org.eclipse.equinox.app;version="1.0.0",
org.eclipse.equinox.frameworkadmin;version="2.0.0",
diff --git a/bundles/org.eclipse.equinox.p2.repository.tools/pom.xml b/bundles/org.eclipse.equinox.p2.repository.tools/pom.xml
index 64e5d3641..379a11b8a 100644
--- a/bundles/org.eclipse.equinox.p2.repository.tools/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.repository.tools/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.repository.tools</artifactId>
- <version>2.2.400-SNAPSHOT</version>
+ <version>2.3.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/JarComparator.java b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/JarComparator.java
index da9914a31..dab298fb7 100644
--- a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/JarComparator.java
+++ b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/JarComparator.java
@@ -330,8 +330,8 @@ public class JarComparator implements IArtifactComparator {
return newErrorStatus(NLS.bind(Messages.propertiesSizesDifferent, entryName, String.valueOf(Math.abs(props1.size() - props2.size()))));
props1.keys();
- for (Iterator<Object> iterator = props1.keySet().iterator(); iterator.hasNext();) {
- String key = (String) iterator.next();
+ for (Object object : props1.keySet()) {
+ String key = (String) object;
if (!props2.containsKey(key))
return newErrorStatus(NLS.bind(Messages.missingProperty, key, entryName));
String prop1 = props1.getProperty(key);
@@ -396,8 +396,7 @@ public class JarComparator implements IArtifactComparator {
private String normalize(String entryName) {
StringBuffer buffer = new StringBuffer();
char[] chars = entryName.toCharArray();
- for (int i = 0, max = chars.length; i < max; i++) {
- char currentChar = chars[i];
+ for (char currentChar : chars) {
if (!Character.isJavaIdentifierPart(currentChar)) {
buffer.append('_');
} else {
diff --git a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/java/ClassFileReader.java b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/java/ClassFileReader.java
index 6ad7ce7e7..1616ea649 100644
--- a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/java/ClassFileReader.java
+++ b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/java/ClassFileReader.java
@@ -77,7 +77,6 @@ public class ClassFileReader extends ClassFileStruct {
private InnerClassesAttribute innerClassesAttribute;
private int[] interfaceIndexes;
private char[][] interfaceNames;
- private int interfacesCount;
private int magicNumber;
private int majorVersion;
private MethodInfo[] methods;
@@ -199,21 +198,21 @@ public class ClassFileReader extends ClassFileStruct {
}
// Read the interfaces, use exception handlers to catch bad format
- this.interfacesCount = u2At(classFileBytes, readOffset, 0);
+ int interfacesCount = u2At(classFileBytes, readOffset, 0);
readOffset += 2;
this.interfaceNames = NO_INTERFACES_NAMES;
this.interfaceIndexes = Utility.EMPTY_INT_ARRAY;
- if (this.interfacesCount != 0) {
+ if (interfacesCount != 0) {
if ((decodingFlags & SUPER_INTERFACES) != CONSTANT_POOL) {
- this.interfaceNames = new char[this.interfacesCount][];
- this.interfaceIndexes = new int[this.interfacesCount];
- for (int i = 0; i < this.interfacesCount; i++) {
+ this.interfaceNames = new char[interfacesCount][];
+ this.interfaceIndexes = new int[interfacesCount];
+ for (int i = 0; i < interfacesCount; i++) {
this.interfaceIndexes[i] = u2At(classFileBytes, readOffset, 0);
this.interfaceNames[i] = getConstantClassNameAt(classFileBytes, constantPoolOffsets, this.interfaceIndexes[i]);
readOffset += 2;
}
} else {
- readOffset += (2 * this.interfacesCount);
+ readOffset += (2 * interfacesCount);
}
}
// Read the this.fields, use exception handlers to catch bad format
diff --git a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/java/Disassembler.java b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/java/Disassembler.java
index 6bcc5e3f7..31364d2c3 100644
--- a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/java/Disassembler.java
+++ b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/java/Disassembler.java
@@ -57,8 +57,8 @@ public class Disassembler {
if (checkBits == null)
return;
boolean firstModifier = true;
- for (int i = 0, max = checkBits.length; i < max; i++) {
- switch (checkBits[i]) {
+ for (int checkBit : checkBits) {
+ switch (checkBit) {
case IModifierConstants.ACC_PUBLIC :
firstModifier = appendModifier(buffer, accessFlags, IModifierConstants.ACC_PUBLIC, "public", firstModifier); //$NON-NLS-1$
break;
@@ -180,8 +180,7 @@ public class Disassembler {
static String decodeStringValue(char[] chars) {
StringBuilder buffer = new StringBuilder();
- for (int i = 0, max = chars.length; i < max; i++) {
- char c = chars[i];
+ for (char c : chars) {
switch (c) {
case '\b' :
buffer.append("\\b"); //$NON-NLS-1$
@@ -248,9 +247,8 @@ public class Disassembler {
writeNewLine(buffer, lineSeparator, tabNumber + 1);
final char[] typeName = CharOperation.replaceOnCopy(annotation.getTypeName(), '/', '.');
buffer.append(NLS.bind(Messages.disassembler_annotationentrystart, new String[] {new String(returnClassName(Signature.toCharArray(typeName), '.', mode))}));
- final AnnotationComponent[] components = annotation.getComponents();
- for (int i = 0, max = components.length; i < max; i++) {
- disassemble(components[i], buffer, lineSeparator, tabNumber + 1, mode);
+ for (AnnotationComponent component : annotation.getComponents()) {
+ disassemble(component, buffer, lineSeparator, tabNumber + 1, mode);
}
writeNewLine(buffer, lineSeparator, tabNumber + 1);
buffer.append(Messages.disassembler_annotationentryend);
@@ -323,12 +321,13 @@ public class Disassembler {
Annotation annotation = annotationComponentValue.getAnnotationValue();
disassemble(annotation, buffer, lineSeparator, tabNumber + 1, mode);
break;
- case AnnotationComponentValue.ARRAY_TAG :
+ case AnnotationComponentValue.ARRAY_TAG:
buffer.append(Messages.disassembler_annotationarrayvaluestart);
- final AnnotationComponentValue[] annotationComponentValues = annotationComponentValue.getAnnotationComponentValues();
- for (int i = 0, max = annotationComponentValues.length; i < max; i++) {
+ final AnnotationComponentValue[] annotationComponentValues = annotationComponentValue
+ .getAnnotationComponentValues();
+ for (AnnotationComponentValue annotationComponentValue2 : annotationComponentValues) {
writeNewLine(buffer, lineSeparator, tabNumber + 1);
- disassemble(annotationComponentValues[i], buffer, lineSeparator, tabNumber + 1, mode);
+ disassemble(annotationComponentValue2, buffer, lineSeparator, tabNumber + 1, mode);
}
writeNewLine(buffer, lineSeparator, tabNumber + 1);
buffer.append(Messages.disassembler_annotationarrayvalueend);
@@ -567,8 +566,7 @@ public class Disassembler {
if (innerClassesAttribute != null) {
// search the right entry
InnerClassesAttributeEntry[] entries = innerClassesAttribute.getInnerClassAttributesEntries();
- for (int i = 0, max = entries.length; i < max; i++) {
- InnerClassesAttributeEntry entry = entries[i];
+ for (InnerClassesAttributeEntry entry : entries) {
char[] innerClassName = entry.getInnerClassName();
if (innerClassName != null) {
if (Arrays.equals(classFileReader.getClassName(), innerClassName)) {
@@ -876,8 +874,8 @@ public class Disassembler {
Annotation[] annotations = parameterAnnotation.getAnnotations();
writeNewLine(buffer, lineSeparator, tabNumber + 1);
buffer.append(NLS.bind(Messages.disassembler_parameterannotationentrystart, new String[] {Integer.toString(index), Integer.toString(annotations.length)}));
- for (int i = 0, max = annotations.length; i < max; i++) {
- disassemble(annotations[i], buffer, lineSeparator, tabNumber + 1, mode);
+ for (Annotation annotation : annotations) {
+ disassemble(annotation, buffer, lineSeparator, tabNumber + 1, mode);
}
}
@@ -885,8 +883,8 @@ public class Disassembler {
writeNewLine(buffer, lineSeparator, tabNumber + 1);
buffer.append(Messages.disassembler_runtimeinvisibleannotationsattributeheader);
Annotation[] annotations = runtimeInvisibleAnnotationsAttribute.getAnnotations();
- for (int i = 0, max = annotations.length; i < max; i++) {
- disassemble(annotations[i], buffer, lineSeparator, tabNumber + 1, mode);
+ for (Annotation annotation : annotations) {
+ disassemble(annotation, buffer, lineSeparator, tabNumber + 1, mode);
}
}
@@ -903,8 +901,8 @@ public class Disassembler {
writeNewLine(buffer, lineSeparator, tabNumber + 1);
buffer.append(Messages.disassembler_runtimevisibleannotationsattributeheader);
Annotation[] annotations = runtimeVisibleAnnotationsAttribute.getAnnotations();
- for (int i = 0, max = annotations.length; i < max; i++) {
- disassemble(annotations[i], buffer, lineSeparator, tabNumber + 1, mode);
+ for (Annotation annotation : annotations) {
+ disassemble(annotation, buffer, lineSeparator, tabNumber + 1, mode);
}
}
@@ -1019,9 +1017,8 @@ public class Disassembler {
}
private void disassembleAsModifier(RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute, StringBuffer buffer, String lineSeparator, int tabNumber, int mode) {
- Annotation[] annotations = runtimeInvisibleAnnotationsAttribute.getAnnotations();
- for (int i = 0, max = annotations.length; i < max; i++) {
- disassembleAsModifier(annotations[i], buffer, lineSeparator, tabNumber + 1, mode);
+ for (Annotation annotation : runtimeInvisibleAnnotationsAttribute.getAnnotations()) {
+ disassembleAsModifier(annotation, buffer, lineSeparator, tabNumber + 1, mode);
}
}
@@ -1069,9 +1066,9 @@ public class Disassembler {
}
return compare;
});
- for (int i = 0, max = fields.length; i < max; i++) {
+ for (FieldInfo field : fields) {
writeNewLine(buffer, lineSeparator, tabNumber);
- disassemble(fields[i], buffer, lineSeparator, tabNumber, mode);
+ disassemble(field, buffer, lineSeparator, tabNumber, mode);
}
MethodInfo[] methods = classFileReader.getMethodInfos();
// sort methods
@@ -1082,9 +1079,9 @@ public class Disassembler {
}
return compare;
});
- for (int i = 0, max = methods.length; i < max; i++) {
+ for (MethodInfo method : methods) {
writeNewLine(buffer, lineSeparator, tabNumber);
- disassemble(classFileReader, className, methods[i], buffer, lineSeparator, tabNumber, mode);
+ disassemble(classFileReader, className, method, buffer, lineSeparator, tabNumber, mode);
}
}
@@ -1095,10 +1092,9 @@ public class Disassembler {
}
private EnclosingMethodAttribute getEnclosingMethodAttribute(ClassFileReader classFileReader) {
- ClassFileAttribute[] attributes = classFileReader.getAttributes();
- for (int i = 0, max = attributes.length; i < max; i++) {
- if (Arrays.equals(attributes[i].getAttributeName(), AttributeNamesConstants.ENCLOSING_METHOD)) {
- return (EnclosingMethodAttribute) attributes[i];
+ for (ClassFileAttribute attribute : classFileReader.getAttributes()) {
+ if (Arrays.equals(attribute.getAttributeName(), AttributeNamesConstants.ENCLOSING_METHOD)) {
+ return (EnclosingMethodAttribute) attribute;
}
}
return null;
@@ -1113,9 +1109,8 @@ public class Disassembler {
}
private boolean isDeprecated(ClassFileReader classFileReader) {
- ClassFileAttribute[] attributes = classFileReader.getAttributes();
- for (int i = 0, max = attributes.length; i < max; i++) {
- if (Arrays.equals(attributes[i].getAttributeName(), AttributeNamesConstants.DEPRECATED)) {
+ for (ClassFileAttribute attribute : classFileReader.getAttributes()) {
+ if (Arrays.equals(attribute.getAttributeName(), AttributeNamesConstants.DEPRECATED)) {
return true;
}
}
@@ -1127,9 +1122,8 @@ public class Disassembler {
if ((flags & IModifierConstants.ACC_SYNTHETIC) != 0) {
return true;
}
- ClassFileAttribute[] attributes = classFileReader.getAttributes();
- for (int i = 0, max = attributes.length; i < max; i++) {
- if (Arrays.equals(attributes[i].getAttributeName(), AttributeNamesConstants.SYNTHETIC)) {
+ for (ClassFileAttribute attribute : classFileReader.getAttributes()) {
+ if (Arrays.equals(attribute.getAttributeName(), AttributeNamesConstants.SYNTHETIC)) {
return true;
}
}
diff --git a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/java/Utility.java b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/java/Utility.java
index cb950faf2..c55e67821 100644
--- a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/java/Utility.java
+++ b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/java/Utility.java
@@ -116,9 +116,9 @@ public class Utility {
public static ClassFileAttribute getAttribute(MethodInfo methodInfo, char[] attributeName) {
ClassFileAttribute[] attributes = methodInfo.getAttributes();
- for (int i = 0, max = attributes.length; i < max; i++) {
- if (Arrays.equals(attributes[i].getAttributeName(), attributeName)) {
- return attributes[i];
+ for (ClassFileAttribute attribute : attributes) {
+ if (Arrays.equals(attribute.getAttributeName(), attributeName)) {
+ return attribute;
}
}
return null;
@@ -126,9 +126,9 @@ public class Utility {
public static ClassFileAttribute getAttribute(FieldInfo fieldInfo, char[] attributeName) {
ClassFileAttribute[] attributes = fieldInfo.getAttributes();
- for (int i = 0, max = attributes.length; i < max; i++) {
- if (Arrays.equals(attributes[i].getAttributeName(), attributeName)) {
- return attributes[i];
+ for (ClassFileAttribute attribute : attributes) {
+ if (Arrays.equals(attribute.getAttributeName(), attributeName)) {
+ return attribute;
}
}
return null;
@@ -136,9 +136,9 @@ public class Utility {
public static ClassFileAttribute getAttribute(ClassFileReader classFileReader, char[] attributeName) {
ClassFileAttribute[] attributes = classFileReader.getAttributes();
- for (int i = 0, max = attributes.length; i < max; i++) {
- if (Arrays.equals(attributes[i].getAttributeName(), attributeName)) {
- return attributes[i];
+ for (ClassFileAttribute attribute : attributes) {
+ if (Arrays.equals(attribute.getAttributeName(), attributeName)) {
+ return attribute;
}
}
return null;
diff --git a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/mirroring/FileMirrorLog.java b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/mirroring/FileMirrorLog.java
index 9bd77d3ff..460955b9c 100644
--- a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/mirroring/FileMirrorLog.java
+++ b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/mirroring/FileMirrorLog.java
@@ -22,7 +22,7 @@ import org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor;
public class FileMirrorLog implements IArtifactMirrorLog {
private static final String INDENT = "\t"; //$NON-NLS-1$
- private static final String SEPARATOR = System.getProperty("line.separator"); //$NON-NLS-1$
+ private static final String SEPARATOR = System.lineSeparator();
private BufferedWriter out;
private boolean consoleMessage = false;
private int minSeverity = IStatus.OK;
diff --git a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/mirroring/Mirroring.java b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/mirroring/Mirroring.java
index 524c9faea..2a830635e 100644
--- a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/mirroring/Mirroring.java
+++ b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/mirroring/Mirroring.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Compeople AG (Stefan Liebig) - various ongoing maintenance
@@ -90,9 +90,11 @@ public class Mirroring {
public MultiStatus run(boolean failOnError, boolean verbose) {
if (!destination.isModifiable())
- throw new IllegalStateException(NLS.bind(Messages.exception_destinationNotModifiable, destination.getLocation()));
+ throw new IllegalStateException(
+ NLS.bind(Messages.exception_destinationNotModifiable, destination.getLocation()));
if (compare)
- getComparator(); //initialize the comparator. Only needed if we're comparing. Used to force error if comparatorID is invalid.
+ getComparator(); // initialize the comparator. Only needed if we're comparing. Used to force
+ // error if comparatorID is invalid.
MultiStatus multiStatus = new MultiStatus(Activator.ID, IStatus.OK, Messages.message_mirroringStatus, null);
Iterator<IArtifactKey> keys = null;
if (keysToMirror != null)
@@ -103,7 +105,8 @@ public class Mirroring {
}
if (compareExclusionQuery != null) {
- IQueryResult<IArtifactDescriptor> exclusions = source.descriptorQueryable().query(compareExclusionQuery, null);
+ IQueryResult<IArtifactDescriptor> exclusions = source.descriptorQueryable().query(compareExclusionQuery,
+ null);
compareExclusions = exclusions.toUnmodifiableSet();
}
@@ -112,10 +115,10 @@ public class Mirroring {
IArtifactDescriptor[] descriptors = source.getArtifactDescriptors(key);
for (IArtifactDescriptor descriptor : descriptors) {
IStatus result = mirror(descriptor, verbose);
- //Only log INFO and WARNING if we want verbose logging. Always log ERRORs
+ // Only log INFO and WARNING if we want verbose logging. Always log ERRORs
if (!result.isOK() && (verbose || result.getSeverity() == IStatus.ERROR))
multiStatus.add(result);
- //stop mirroring as soon as we have an error
+ // stop mirroring as soon as we have an error
if (failOnError && multiStatus.getSeverity() == IStatus.ERROR)
return multiStatus;
}
@@ -146,23 +149,26 @@ public class Mirroring {
return multiStatus;
}
+ @SuppressWarnings("removal")
private IStatus mirror(IArtifactDescriptor sourceDescriptor, boolean verbose) {
- if (!includePacked && IArtifactDescriptor.FORMAT_PACKED.equals(sourceDescriptor.getProperty(IArtifactDescriptor.FORMAT)))
+ if (!includePacked
+ && IArtifactDescriptor.FORMAT_PACKED.equals(sourceDescriptor.getProperty(IArtifactDescriptor.FORMAT)))
return Status.OK_STATUS;
IArtifactDescriptor targetDescriptor = raw ? sourceDescriptor : new ArtifactDescriptor(sourceDescriptor);
IArtifactDescriptor baselineDescriptor = getBaselineDescriptor(sourceDescriptor);
if (verbose)
- System.out.println("Mirroring: " + sourceDescriptor.getArtifactKey() + " (Descriptor: " + sourceDescriptor + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ System.out.println(
+ "Mirroring: " + sourceDescriptor.getArtifactKey() + " (Descriptor: " + sourceDescriptor + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
MultiStatus compareStatus = new MultiStatus(Activator.ID, IStatus.OK, null, null);
boolean comparing = compare && !compareExclusions.contains(sourceDescriptor);
if (comparing) {
if (baselineDescriptor != null) {
- //compare source & baseline
+ // compare source & baseline
compareStatus.add(compare(baseline, baselineDescriptor, source, sourceDescriptor));
- //compare baseline & destination
+ // compare baseline & destination
if (destination.contains(baselineDescriptor)) {
compareStatus.add(compareToDestination(baselineDescriptor));
return compareStatus;
@@ -173,13 +179,13 @@ public class Mirroring {
}
}
- //from source or baseline
+ // from source or baseline
IArtifactRepository sourceRepository = baselineDescriptor != null ? baseline : source;
sourceDescriptor = baselineDescriptor != null ? baselineDescriptor : sourceDescriptor;
targetDescriptor = baselineDescriptor != null ? baselineDescriptor : targetDescriptor;
IStatus status = null;
if (!destination.contains(targetDescriptor))
- //actual download
+ // actual download
status = downloadArtifact(sourceRepository, targetDescriptor, sourceDescriptor);
else {
String message = NLS.bind(Messages.mirror_alreadyExists, sourceDescriptor, destination);
@@ -194,10 +200,13 @@ public class Mirroring {
}
/**
- * Takes an IArtifactDescriptor descriptor and the ProvisionException that was thrown when destination.getOutputStream(descriptor)
- * and compares descriptor to the duplicate descriptor in the destination.
- *
- * Callers should verify the ProvisionException was thrown due to the artifact existing in the destination before invoking this method.
+ * Takes an IArtifactDescriptor descriptor and the ProvisionException that was
+ * thrown when destination.getOutputStream(descriptor) and compares descriptor
+ * to the duplicate descriptor in the destination.
+ *
+ * Callers should verify the ProvisionException was thrown due to the artifact
+ * existing in the destination before invoking this method.
+ *
* @param descriptor
* @return the status of the compare
*/
@@ -209,12 +218,15 @@ public class Mirroring {
destDescriptor = destDescriptors[i];
}
if (destDescriptor == null)
- return new Status(IStatus.INFO, Activator.ID, ProvisionException.ARTIFACT_EXISTS, Messages.Mirroring_noMatchingDescriptor, null);
+ return new Status(IStatus.INFO, Activator.ID, ProvisionException.ARTIFACT_EXISTS,
+ Messages.Mirroring_noMatchingDescriptor, null);
return compare(source, descriptor, destination, destDescriptor);
}
- private IStatus compare(IArtifactRepository sourceRepository, IArtifactDescriptor sourceDescriptor, IArtifactRepository destRepository, IArtifactDescriptor destDescriptor) {
- IStatus comparison = getComparator().compare(sourceRepository, sourceDescriptor, destRepository, destDescriptor);
+ private IStatus compare(IArtifactRepository sourceRepository, IArtifactDescriptor sourceDescriptor,
+ IArtifactRepository destRepository, IArtifactDescriptor destDescriptor) {
+ IStatus comparison = getComparator().compare(sourceRepository, sourceDescriptor, destRepository,
+ destDescriptor);
if (comparatorLog != null && !comparison.isOK())
comparatorLog.log(sourceDescriptor, comparison);
return comparison;
@@ -223,7 +235,8 @@ public class Mirroring {
/*
* Create, and execute a MirrorRequest for a given descriptor.
*/
- private IStatus downloadArtifact(IArtifactRepository sourceRepo, IArtifactDescriptor destDescriptor, IArtifactDescriptor srcDescriptor) {
+ private IStatus downloadArtifact(IArtifactRepository sourceRepo, IArtifactDescriptor destDescriptor,
+ IArtifactDescriptor srcDescriptor) {
RawMirrorRequest request = new RawMirrorRequest(srcDescriptor, destDescriptor, destination, transport);
request.perform(sourceRepo, new NullProgressMonitor());
@@ -235,7 +248,7 @@ public class Mirroring {
}
/*
- * Get the equivalent descriptor from the baseline repository
+ * Get the equivalent descriptor from the baseline repository
*/
private IArtifactDescriptor getBaselineDescriptor(IArtifactDescriptor descriptor) {
if (baseline == null || !baseline.contains(descriptor))
@@ -250,8 +263,9 @@ public class Mirroring {
return null;
}
- /*
- * Simple validation of a mirror to see if all source descriptors are present in the destination
+ /*
+ * Simple validation of a mirror to see if all source descriptors are present in
+ * the destination
*/
private IStatus validateMirror(boolean verbose) {
MultiStatus status = new MultiStatus(Activator.ID, 0, Messages.Mirroring_ValidationError, null);
@@ -280,7 +294,8 @@ public class Mirroring {
// Missing an artifact
if (verbose)
System.out.println(NLS.bind(Messages.Mirroring_missingDescriptor, srcDescriptors[src]));
- status.add(new Status(IStatus.ERROR, Activator.ID, NLS.bind(Messages.Mirroring_missingDescriptor, srcDescriptors[src++])));
+ status.add(new Status(IStatus.ERROR, Activator.ID,
+ NLS.bind(Messages.Mirroring_missingDescriptor, srcDescriptors[src++])));
} else {
// Its okay if there are extra descriptors in the destination
dest++;
@@ -294,7 +309,8 @@ public class Mirroring {
if (baselineDescriptor != null)
srcProperties = baselineDescriptor.getProperties();
}
- // Baseline not set, or could not find descriptor so we'll use the source descriptor
+ // Baseline not set, or could not find descriptor so we'll use the source
+ // descriptor
if (srcProperties == null)
srcProperties = srcDescriptors[src].getProperties();
@@ -302,8 +318,12 @@ public class Mirroring {
for (String key : srcProperties.keySet()) {
if (!srcProperties.get(key).equals(destMap.get(key))) {
if (verbose)
- System.out.println(NLS.bind(Messages.Mirroring_differentDescriptorProperty, new Object[] {destDescriptors[dest], key, srcProperties.get(key), destMap.get(key)}));
- status.add(new Status(IStatus.WARNING, Activator.ID, NLS.bind(Messages.Mirroring_differentDescriptorProperty, new Object[] {destDescriptors[dest], key, srcProperties.get(key), destMap.get(key)})));
+ System.out.println(NLS.bind(Messages.Mirroring_differentDescriptorProperty,
+ new Object[] { destDescriptors[dest], key, srcProperties.get(key),
+ destMap.get(key) }));
+ status.add(new Status(IStatus.WARNING, Activator.ID,
+ NLS.bind(Messages.Mirroring_differentDescriptorProperty, new Object[] {
+ destDescriptors[dest], key, srcProperties.get(key), destMap.get(key) })));
}
}
src++;
@@ -311,11 +331,13 @@ public class Mirroring {
}
}
- // If there are still source descriptors they're missing from the destination repository
+ // If there are still source descriptors they're missing from the destination
+ // repository
while (src < srcDescriptors.length) {
if (verbose)
System.out.println(NLS.bind(Messages.Mirroring_missingDescriptor, srcDescriptors[src]));
- status.add(new Status(IStatus.ERROR, Activator.ID, NLS.bind(Messages.Mirroring_missingDescriptor, srcDescriptors[src++])));
+ status.add(new Status(IStatus.ERROR, Activator.ID,
+ NLS.bind(Messages.Mirroring_missingDescriptor, srcDescriptors[src++])));
}
}
diff --git a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/AbstractApplication.java b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/AbstractApplication.java
index 90d958ea0..e2848334e 100644
--- a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/AbstractApplication.java
+++ b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/AbstractApplication.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2017 IBM Corporation and others.
+ * Copyright (c) 2009, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -35,7 +35,7 @@ import org.osgi.framework.ServiceReference;
public abstract class AbstractApplication {
protected boolean removeAddedRepositories = true;
- protected List<RepositoryDescriptor> sourceRepositories = new ArrayList<>(); //List of repository descriptors
+ protected List<RepositoryDescriptor> sourceRepositories = new ArrayList<>(); // List of repository descriptors
protected List<URI> artifactReposToRemove = new ArrayList<>();
protected List<URI> metadataReposToRemove = new ArrayList<>();
protected List<IInstallableUnit> sourceIUs = new ArrayList<>();
@@ -59,22 +59,24 @@ public abstract class AbstractApplication {
}
private void setupAgent() throws ProvisionException {
- //note if we ever wanted these applications to act on a different agent than
- //the currently running system we would need to set it here
- ServiceReference<IProvisioningAgent> agentRef = Activator.getBundleContext().getServiceReference(IProvisioningAgent.class);
+ // note if we ever wanted these applications to act on a different agent than
+ // the currently running system we would need to set it here
+ ServiceReference<IProvisioningAgent> agentRef = Activator.getBundleContext()
+ .getServiceReference(IProvisioningAgent.class);
if (agentRef != null) {
agent = Activator.getBundleContext().getService(agentRef);
if (agent != null)
return;
}
- //there is no agent around so we need to create one
- ServiceReference<IProvisioningAgentProvider> providerRef = Activator.getBundleContext().getServiceReference(IProvisioningAgentProvider.class);
+ // there is no agent around so we need to create one
+ ServiceReference<IProvisioningAgentProvider> providerRef = Activator.getBundleContext()
+ .getServiceReference(IProvisioningAgentProvider.class);
if (providerRef == null)
throw new RuntimeException("No provisioning agent provider is available"); //$NON-NLS-1$
IProvisioningAgentProvider provider = Activator.getBundleContext().getService(providerRef);
if (provider == null)
throw new RuntimeException("No provisioning agent provider is available"); //$NON-NLS-1$
- //obtain agent for currently running system
+ // obtain agent for currently running system
agent = provider.createAgent(null);
Activator.getBundleContext().ungetService(providerRef);
}
@@ -101,11 +103,11 @@ public abstract class AbstractApplication {
}
protected IMetadataRepositoryManager getMetadataRepositoryManager() {
- return (IMetadataRepositoryManager) agent.getService(IMetadataRepositoryManager.SERVICE_NAME);
+ return agent.getService(IMetadataRepositoryManager.class);
}
protected IArtifactRepositoryManager getArtifactRepositoryManager() {
- return (IArtifactRepositoryManager) agent.getService(IArtifactRepositoryManager.SERVICE_NAME);
+ return agent.getService(IArtifactRepositoryManager.class);
}
public void initializeRepos(IProgressMonitor progress) throws ProvisionException {
@@ -136,21 +138,26 @@ public abstract class AbstractApplication {
processDestinationRepos(artifactRepositoryManager, metadataRepositoryManager);
}
- //Helper to add a repository. It takes care of adding the repos to the deletion list and loading it
- protected IMetadataRepository addRepository(IMetadataRepositoryManager manager, URI location, int flags, IProgressMonitor monitor) throws ProvisionException {
+ // Helper to add a repository. It takes care of adding the repos to the deletion
+ // list and loading it
+ protected IMetadataRepository addRepository(IMetadataRepositoryManager manager, URI location, int flags,
+ IProgressMonitor monitor) throws ProvisionException {
if (!manager.contains(location))
metadataReposToRemove.add(location);
return manager.loadRepository(location, flags, monitor);
}
- //Helper to add a repository. It takes care of adding the repos to the deletion list and loading it
- protected IArtifactRepository addRepository(IArtifactRepositoryManager manager, URI location, int flags, IProgressMonitor monitor) throws ProvisionException {
+ // Helper to add a repository. It takes care of adding the repos to the deletion
+ // list and loading it
+ protected IArtifactRepository addRepository(IArtifactRepositoryManager manager, URI location, int flags,
+ IProgressMonitor monitor) throws ProvisionException {
if (!manager.contains(location))
artifactReposToRemove.add(location);
return manager.loadRepository(location, flags, monitor);
}
- private void processDestinationRepos(IArtifactRepositoryManager artifactRepositoryManager, IMetadataRepositoryManager metadataRepositoryManager) throws ProvisionException {
+ private void processDestinationRepos(IArtifactRepositoryManager artifactRepositoryManager,
+ IMetadataRepositoryManager metadataRepositoryManager) throws ProvisionException {
RepositoryDescriptor artifactRepoDescriptor = null;
RepositoryDescriptor metadataRepoDescriptor = null;
@@ -180,13 +187,15 @@ public abstract class AbstractApplication {
return destinationArtifactRepository;
}
- protected IMetadataRepository initializeDestination(RepositoryDescriptor toInit, IMetadataRepositoryManager mgr) throws ProvisionException {
+ protected IMetadataRepository initializeDestination(RepositoryDescriptor toInit, IMetadataRepositoryManager mgr)
+ throws ProvisionException {
try {
- IMetadataRepository repository = addRepository(mgr, toInit.getRepoLocation(), IRepositoryManager.REPOSITORY_HINT_MODIFIABLE, null);
+ IMetadataRepository repository = addRepository(mgr, toInit.getRepoLocation(),
+ IRepositoryManager.REPOSITORY_HINT_MODIFIABLE, null);
if (initDestinationRepository(repository, toInit))
return repository;
} catch (ProvisionException e) {
- //fall through and create a new repository below
+ // fall through and create a new repository below
}
IMetadataRepository source = null;
@@ -194,45 +203,57 @@ public abstract class AbstractApplication {
if (toInit.getFormat() != null)
source = mgr.loadRepository(toInit.getFormat(), 0, null);
} catch (ProvisionException e) {
- //Ignore.
+ // Ignore.
}
- //This code assumes source has been successfully loaded before this point
- //No existing repository; create a new repository at destinationLocation but with source's attributes.
+ // This code assumes source has been successfully loaded before this point
+ // No existing repository; create a new repository at destinationLocation but
+ // with source's attributes.
try {
- IMetadataRepository result = mgr.createRepository(toInit.getRepoLocation(), toInit.getName() != null ? toInit.getName() : (source != null ? source.getName() : toInit.getRepoLocation().toString()), IMetadataRepositoryManager.TYPE_SIMPLE_REPOSITORY, source != null ? source.getProperties() : null);
+ IMetadataRepository result = mgr.createRepository(toInit.getRepoLocation(),
+ toInit.getName() != null ? toInit.getName()
+ : (source != null ? source.getName() : toInit.getRepoLocation().toString()),
+ IMetadataRepositoryManager.TYPE_SIMPLE_REPOSITORY, source != null ? source.getProperties() : null);
if (toInit.isCompressed() && !result.getProperties().containsKey(IRepository.PROP_COMPRESSED))
result.setProperty(IRepository.PROP_COMPRESSED, "true"); //$NON-NLS-1$
return (IMetadataRepository) RepositoryHelper.validDestinationRepository(result);
} catch (UnsupportedOperationException e) {
- throw new ProvisionException(NLS.bind(Messages.exception_invalidDestination, toInit.getRepoLocation()), e.getCause());
+ throw new ProvisionException(NLS.bind(Messages.exception_invalidDestination, toInit.getRepoLocation()),
+ e.getCause());
}
}
- protected IArtifactRepository initializeDestination(RepositoryDescriptor toInit, IArtifactRepositoryManager mgr) throws ProvisionException {
+ protected IArtifactRepository initializeDestination(RepositoryDescriptor toInit, IArtifactRepositoryManager mgr)
+ throws ProvisionException {
try {
- IArtifactRepository repository = addRepository(mgr, toInit.getRepoLocation(), IRepositoryManager.REPOSITORY_HINT_MODIFIABLE, null);
+ IArtifactRepository repository = addRepository(mgr, toInit.getRepoLocation(),
+ IRepositoryManager.REPOSITORY_HINT_MODIFIABLE, null);
if (initDestinationRepository(repository, toInit))
return repository;
} catch (ProvisionException e) {
- //fall through and create a new repository below
+ // fall through and create a new repository below
}
IArtifactRepository source = null;
try {
if (toInit.getFormat() != null)
source = mgr.loadRepository(toInit.getFormat(), 0, null);
} catch (ProvisionException e) {
- //Ignore.
+ // Ignore.
}
- //This code assumes source has been successfully loaded before this point
- //No existing repository; create a new repository at destinationLocation but with source's attributes.
+ // This code assumes source has been successfully loaded before this point
+ // No existing repository; create a new repository at destinationLocation but
+ // with source's attributes.
// TODO for now create a Simple repo by default.
try {
- IArtifactRepository result = mgr.createRepository(toInit.getRepoLocation(), toInit.getName() != null ? toInit.getName() : (source != null ? source.getName() : toInit.getRepoLocation().toString()), IArtifactRepositoryManager.TYPE_SIMPLE_REPOSITORY, source != null ? source.getProperties() : null);
+ IArtifactRepository result = mgr.createRepository(toInit.getRepoLocation(),
+ toInit.getName() != null ? toInit.getName()
+ : (source != null ? source.getName() : toInit.getRepoLocation().toString()),
+ IArtifactRepositoryManager.TYPE_SIMPLE_REPOSITORY, source != null ? source.getProperties() : null);
if (toInit.isCompressed() && !result.getProperties().containsKey(IRepository.PROP_COMPRESSED))
result.setProperty(IRepository.PROP_COMPRESSED, "true"); //$NON-NLS-1$
return (IArtifactRepository) RepositoryHelper.validDestinationRepository(result);
} catch (UnsupportedOperationException e) {
- throw new ProvisionException(NLS.bind(Messages.exception_invalidDestination, toInit.getRepoLocation()), e.getCause());
+ throw new ProvisionException(NLS.bind(Messages.exception_invalidDestination, toInit.getRepoLocation()),
+ e.getCause());
}
}
diff --git a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/Activator.java b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/Activator.java
index 0a449ecd7..567e2ccf7 100644
--- a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/Activator.java
+++ b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/Activator.java
@@ -1,13 +1,13 @@
/*******************************************************************************
- * Copyright (c) 2009, 2017 IBM Corporation and others.
+ * Copyright (c) 2009, 2021 IBM Corporation and others.
*
- * This program and the accompanying materials
+ * This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Red Hat Inc. - Bug 460967
@@ -51,8 +51,8 @@ public class Activator implements BundleActivator {
}
/*
- * Construct and return a URI from the given String. Log
- * and return null if there was a problem.
+ * Construct and return a URI from the given String. Log and return null if
+ * there was a problem.
*/
public static URI getURI(String spec) {
if (spec == null)
@@ -76,10 +76,11 @@ public class Activator implements BundleActivator {
}
/*
- * Return the artifact repository manager. Throw an exception if it cannot be obtained.
+ * Return the artifact repository manager. Throw an exception if it cannot be
+ * obtained.
*/
public static IArtifactRepositoryManager getArtifactRepositoryManager() throws ProvisionException {
- IArtifactRepositoryManager manager = (IArtifactRepositoryManager) getAgent().getService(IArtifactRepositoryManager.SERVICE_NAME);
+ IArtifactRepositoryManager manager = getAgent().getService(IArtifactRepositoryManager.class);
if (manager == null)
throw new ProvisionException(Messages.no_artifactRepo_manager);
return manager;
@@ -89,17 +90,18 @@ public class Activator implements BundleActivator {
* Return the profile registry. Throw an exception if it cannot be found.
*/
static IProfileRegistry getProfileRegistry() throws ProvisionException {
- IProfileRegistry registry = (IProfileRegistry) getAgent().getService(IProfileRegistry.SERVICE_NAME);
+ IProfileRegistry registry = getAgent().getService(IProfileRegistry.class);
if (registry == null)
throw new ProvisionException(Messages.no_profile_registry);
return registry;
}
/*
- * Return the metadata repository manager. Throw an exception if it cannot be obtained.
+ * Return the metadata repository manager. Throw an exception if it cannot be
+ * obtained.
*/
public static IMetadataRepositoryManager getMetadataRepositoryManager() throws ProvisionException {
- IMetadataRepositoryManager manager = (IMetadataRepositoryManager) getAgent().getService(IMetadataRepositoryManager.SERVICE_NAME);
+ IMetadataRepositoryManager manager = getAgent().getService(IMetadataRepositoryManager.class);
if (manager == null)
throw new ProvisionException(Messages.no_metadataRepo_manager);
return manager;
diff --git a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/MirrorApplication.java b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/MirrorApplication.java
index 3a918b62e..21b99553d 100644
--- a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/MirrorApplication.java
+++ b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/MirrorApplication.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2017 IBM Corporation and others.
+ * Copyright (c) 2009, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -26,7 +26,7 @@ import org.eclipse.equinox.internal.p2.repository.Transport;
import org.eclipse.equinox.internal.p2.repository.helpers.RepositoryHelper;
import org.eclipse.equinox.p2.core.ProvisionException;
import org.eclipse.equinox.p2.engine.*;
-import org.eclipse.equinox.p2.internal.repository.comparator.MD5ArtifactComparator;
+import org.eclipse.equinox.p2.internal.repository.comparator.ArtifactChecksumComparator;
import org.eclipse.equinox.p2.internal.repository.mirroring.*;
import org.eclipse.equinox.p2.metadata.*;
import org.eclipse.equinox.p2.planner.IPlanner;
@@ -38,6 +38,7 @@ import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
import org.eclipse.osgi.util.NLS;
public class MirrorApplication extends AbstractApplication implements IApplication, IExecutableExtension {
+ private static final String MD5_COMPARATOR = ArtifactChecksumComparator.COMPARATOR_ID + ".md5"; //$NON-NLS-1$
private static final String LOG_ROOT = "p2.mirror"; //$NON-NLS-1$
private static final String MIRROR_MODE = "metadataOrArtifacts"; //$NON-NLS-1$
@@ -97,8 +98,10 @@ public class MirrorApplication extends AbstractApplication implements IApplicati
}
/*
- * The old "org.eclipse.equinox.p2.artifact.repository.mirrorApplication" application only does artifacts
- * Similary, "org.eclipse.equinox.p2.metadata.repository.mirrorApplication" only does metadata
+ * The old "org.eclipse.equinox.p2.artifact.repository.mirrorApplication"
+ * application only does artifacts Similary,
+ * "org.eclipse.equinox.p2.metadata.repository.mirrorApplication" only does
+ * metadata
*/
@Override
public void setInitializationData(IConfigurationElement config, String propertyName, Object data) {
@@ -141,8 +144,8 @@ public class MirrorApplication extends AbstractApplication implements IApplicati
else if (args[i].equalsIgnoreCase("-properties")) //$NON-NLS-1$
mirrorProperties = true;
- // check for args with parameters. If we are at the last argument or
- // if the next one has a '-' as the first character, then we can't have
+ // check for args with parameters. If we are at the last argument or
+ // if the next one has a '-' as the first character, then we can't have
// an arg with a param so continue.
if (i == args.length - 1 || args[i + 1].startsWith("-")) //$NON-NLS-1$
continue;
@@ -153,7 +156,7 @@ public class MirrorApplication extends AbstractApplication implements IApplicati
comparatorID = arg;
else if (args[i - 1].equalsIgnoreCase("-comparatorLog")) //$NON-NLS-1$
comparatorLogLocation = new File(arg);
- else if (args[i - 1].equalsIgnoreCase("-destinationName")) //$NON-NLS-1$
+ else if (args[i - 1].equalsIgnoreCase("-destinationName")) //$NON-NLS-1$
destination.setName(arg);
else if (args[i - 1].equalsIgnoreCase("-writeMode")) { //$NON-NLS-1$
if (args[i].equalsIgnoreCase("clean")) //$NON-NLS-1$
@@ -231,14 +234,13 @@ public class MirrorApplication extends AbstractApplication implements IApplicati
IQueryResult<IInstallableUnit> ius = slice.query(QueryUtil.createIUAnyQuery(), monitor);
boolean iusSpecified = !ius.isEmpty(); // call before ius.iterator() to avoid bug 420318
ArrayList<IArtifactKey> keys = new ArrayList<>();
- for (Iterator<IInstallableUnit> iterator = ius.iterator(); iterator.hasNext();) {
- IInstallableUnit iu = iterator.next();
+ for (IInstallableUnit iu : ius) {
keys.addAll(iu.getArtifacts());
}
Mirroring mirror = new Mirroring(getCompositeArtifactRepository(), destinationArtifactRepository, raw);
mirror.setCompare(compare);
- mirror.setComparatorId(comparatorID == null ? MD5ArtifactComparator.MD5_COMPARATOR_ID : comparatorID);
+ mirror.setComparatorId(comparatorID == null ? MD5_COMPARATOR : comparatorID);
mirror.setBaseline(initializeBaseline());
mirror.setValidate(validate);
mirror.setCompareExclusions(compareExclusions);
@@ -246,7 +248,8 @@ public class MirrorApplication extends AbstractApplication implements IApplicati
mirror.setIncludePacked(includePacked);
mirror.setMirrorProperties(mirrorProperties);
- // If IUs have been specified then only they should be mirrored, otherwise mirror everything.
+ // If IUs have been specified then only they should be mirrored, otherwise
+ // mirror everything.
if (iusSpecified)
mirror.setArtifactKeys(keys.toArray(new IArtifactKey[keys.size()]));
@@ -276,9 +279,9 @@ public class MirrorApplication extends AbstractApplication implements IApplicati
/*
* Ensure all mandatory parameters have been set. Throw an exception if there
- * are any missing. We don't require the user to specify the artifact repository here,
- * we will default to the ones already registered in the manager. (callers are free
- * to add more if they wish)
+ * are any missing. We don't require the user to specify the artifact repository
+ * here, we will default to the ones already registered in the manager. (callers
+ * are free to add more if they wish)
*/
private void validate() throws ProvisionException {
if (sourceRepositories.isEmpty())
@@ -300,7 +303,8 @@ public class MirrorApplication extends AbstractApplication implements IApplicati
for (String rootIU : rootIUs) {
String[] segments = getArrayArgsFromString(rootIU, "/"); //$NON-NLS-1$
VersionRange range = segments.length > 1 ? VersionRange.create(segments[1]) : null;
- Iterator<IInstallableUnit> queryResult = metadataRepo.query(QueryUtil.createIUQuery(segments[0], range), null).iterator();
+ Iterator<IInstallableUnit> queryResult = metadataRepo
+ .query(QueryUtil.createIUQuery(segments[0], range), null).iterator();
while (queryResult.hasNext())
sourceIUs.add(queryResult.next());
}
@@ -349,7 +353,7 @@ public class MirrorApplication extends AbstractApplication implements IApplicati
IProfileRegistry registry = Activator.getProfileRegistry();
String profileId = "MirrorApplication-" + System.currentTimeMillis(); //$NON-NLS-1$
IProfile profile = registry.addProfile(profileId, slicingOptions.getFilter());
- IPlanner planner = (IPlanner) Activator.getAgent().getService(IPlanner.SERVICE_NAME);
+ IPlanner planner = Activator.getAgent().getService(IPlanner.class);
if (planner == null)
throw new IllegalStateException();
IProfileChangeRequest pcr = planner.createChangeRequest(profile);
@@ -370,8 +374,12 @@ public class MirrorApplication extends AbstractApplication implements IApplicati
if (slicingOptions.getInstallTimeLikeResolution())
return performResolution(monitor);
- PermissiveSlicer slicer = new PermissiveSlicer(getCompositeMetadataRepository(), slicingOptions.getFilter(), slicingOptions.includeOptionalDependencies(), slicingOptions.isEverythingGreedy(), slicingOptions.forceFilterTo(), slicingOptions.considerStrictDependencyOnly(), slicingOptions.followOnlyFilteredRequirements());
- IQueryable<IInstallableUnit> slice = slicer.slice(sourceIUs.toArray(new IInstallableUnit[sourceIUs.size()]), monitor);
+ PermissiveSlicer slicer = new PermissiveSlicer(getCompositeMetadataRepository(), slicingOptions.getFilter(),
+ slicingOptions.includeOptionalDependencies(), slicingOptions.isEverythingGreedy(),
+ slicingOptions.forceFilterTo(), slicingOptions.considerStrictDependencyOnly(),
+ slicingOptions.followOnlyFilteredRequirements());
+ IQueryable<IInstallableUnit> slice = slicer.slice(sourceIUs.toArray(new IInstallableUnit[sourceIUs.size()]),
+ monitor);
if (slice != null && slicingOptions.latestVersionOnly()) {
IQueryResult<IInstallableUnit> queryResult = slice.query(QueryUtil.createLatestIUQuery(), monitor);
@@ -407,14 +415,16 @@ public class MirrorApplication extends AbstractApplication implements IApplicati
}
/*
- * Set whether or not the application should be calling a comparator when mirroring.
+ * Set whether or not the application should be calling a comparator when
+ * mirroring.
*/
public void setCompare(boolean value) {
compare = value;
}
/*
- * Set whether or not we should ignore errors when running the mirror application.
+ * Set whether or not we should ignore errors when running the mirror
+ * application.
*/
public void setIgnoreErrors(boolean value) {
failOnError = !value;
@@ -442,7 +452,7 @@ public class MirrorApplication extends AbstractApplication implements IApplicati
}
/*
- * Set the location of the log for mirroring.
+ * Set the location of the log for mirroring.
*/
public void setLog(File mirrorLog) {
this.mirrorLogFile = mirrorLog;
diff --git a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/RecreateRepositoryApplication.java b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/RecreateRepositoryApplication.java
index 43720af14..0e1bb9335 100644
--- a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/RecreateRepositoryApplication.java
+++ b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/RecreateRepositoryApplication.java
@@ -65,10 +65,12 @@ public class RecreateRepositoryApplication extends AbstractApplication {
IArtifactRepositoryManager repositoryManager = getArtifactRepositoryManager();
removeArtifactRepo = !repositoryManager.contains(repoLocation);
- IArtifactRepository repository = repositoryManager.loadRepository(repoLocation, IRepositoryManager.REPOSITORY_HINT_MODIFIABLE, monitor);
+ IArtifactRepository repository = repositoryManager.loadRepository(repoLocation,
+ IRepositoryManager.REPOSITORY_HINT_MODIFIABLE, monitor);
if (repository == null || !repository.isModifiable())
- throw new ProvisionException(NLS.bind(Messages.exception_destinationNotModifiable, repository.getLocation()));
+ throw new ProvisionException(
+ NLS.bind(Messages.exception_destinationNotModifiable, repository.getLocation()));
if (!(repository instanceof IFileArtifactRepository))
throw new ProvisionException(NLS.bind(Messages.exception_notLocalFileRepo, repository.getLocation()));
@@ -77,8 +79,7 @@ public class RecreateRepositoryApplication extends AbstractApplication {
repoMap = new HashMap<>();
IQueryResult<IArtifactKey> keys = repository.query(ArtifactKeyQuery.ALL_KEYS, null);
- for (Iterator<IArtifactKey> iterator = keys.iterator(); iterator.hasNext();) {
- IArtifactKey key = iterator.next();
+ for (IArtifactKey key : keys) {
IArtifactDescriptor[] descriptors = repository.getArtifactDescriptors(key);
repoMap.put(key, descriptors);
}
@@ -100,10 +101,11 @@ public class RecreateRepositoryApplication extends AbstractApplication {
private void recreateRepository(IProgressMonitor monitor) throws ProvisionException {
IArtifactRepositoryManager manager = getArtifactRepositoryManager();
- //add pack200 mappings, the existing repoProperties is not modifiable
+ // add pack200 mappings, the existing repoProperties is not modifiable
Map<String, String> newProperties = new HashMap<>(repoProperties);
newProperties.put(PUBLISH_PACK_FILES_AS_SIBLINGS, "true"); //$NON-NLS-1$
- IArtifactRepository repository = manager.createRepository(repoLocation, repoName, IArtifactRepositoryManager.TYPE_SIMPLE_REPOSITORY, newProperties);
+ IArtifactRepository repository = manager.createRepository(repoLocation, repoName,
+ IArtifactRepositoryManager.TYPE_SIMPLE_REPOSITORY, newProperties);
if (!(repository instanceof IFileArtifactRepository))
throw new ProvisionException(NLS.bind(Messages.exception_notLocalFileRepo, repository.getLocation()));
@@ -131,7 +133,8 @@ public class RecreateRepositoryApplication extends AbstractApplication {
// TODO handle errors in some way
LogHelper.log(status);
- Map<String, String> checksumsToProperties = ChecksumUtilities.checksumsToProperties(IArtifactDescriptor.DOWNLOAD_CHECKSUM, checksums);
+ Map<String, String> checksumsToProperties = ChecksumUtilities
+ .checksumsToProperties(IArtifactDescriptor.DOWNLOAD_CHECKSUM, checksums);
newDescriptor.addProperties(checksumsToProperties);
File temp = new File(artifactFile.getParentFile(), artifactFile.getName() + ".pack.gz"); //$NON-NLS-1$
@@ -149,13 +152,15 @@ public class RecreateRepositoryApplication extends AbstractApplication {
}
}
+ @Deprecated(forRemoval = true, since = "2.3.0")
private ArtifactDescriptor createPack200ArtifactDescriptor(IArtifactKey key, File packFile, String installSize) {
if (packFile != null && packFile.exists()) {
ArtifactDescriptor result = new ArtifactDescriptor(key);
result.setProperty(IArtifactDescriptor.ARTIFACT_SIZE, installSize);
result.setProperty(IArtifactDescriptor.DOWNLOAD_SIZE, Long.toString(packFile.length()));
- IProcessingStepDescriptor[] steps = new IProcessingStepDescriptor[] {new ProcessingStepDescriptor("org.eclipse.equinox.p2.processing.Pack200Unpacker", null, true)}; //$NON-NLS-1$
+ IProcessingStepDescriptor[] steps = new IProcessingStepDescriptor[] {
+ new ProcessingStepDescriptor("org.eclipse.equinox.p2.processing.Pack200Unpacker", null, true) }; //$NON-NLS-1$
result.setProcessingSteps(steps);
result.setProperty(IArtifactDescriptor.FORMAT, IArtifactDescriptor.FORMAT_PACKED);
return result;
diff --git a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/Repo2Runnable.java b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/Repo2Runnable.java
index edc10ed95..397cb4b05 100644
--- a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/Repo2Runnable.java
+++ b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/Repo2Runnable.java
@@ -150,8 +150,8 @@ public class Repo2Runnable extends AbstractApplication implements IApplication {
context.setMetadataRepositories(getRepositories(true));
context.setArtifactRepositories(getRepositories(false));
IProvisioningPlan plan = engine.createPlan(profile, context);
- for (Iterator<IInstallableUnit> iterator = processedIUs.iterator(); iterator.hasNext();) {
- plan.addInstallableUnit(iterator.next());
+ for (IInstallableUnit iu : processedIUs) {
+ plan.addInstallableUnit(iu);
}
IStatus result = engine.perform(plan, getPhaseSet(), progress.newChild(1));
PhaseSet nativeSet = getNativePhase();
@@ -170,21 +170,20 @@ public class Repo2Runnable extends AbstractApplication implements IApplication {
File fragmentInfo = new File(parentDir, "fragment.info");
HashSet<BundleInfo> bundles = new HashSet<>();
try {
- for (Iterator<IInstallableUnit> iterator = processedIUs.iterator(); iterator.hasNext();) {
- IInstallableUnit unit = iterator.next();
- if (unit.getId().equals("a.jre"))
+ for (IInstallableUnit iu : processedIUs) {
+ if (iu.getId().equals("a.jre"))
continue;
- Collection<IProvidedCapability> providedCapabilities = unit.getProvidedCapabilities();
+ Collection<IProvidedCapability> providedCapabilities = iu.getProvidedCapabilities();
for (IProvidedCapability cap : providedCapabilities) {
if ("org.eclipse.equinox.p2.eclipse.type".equals(cap.getNamespace())) {
if ("bundle".equals(cap.getName())) {
- File candidate = new File(pluginsDir, unit.getId() + "_" + unit.getVersion());
+ File candidate = new File(pluginsDir, iu.getId() + "_" + iu.getVersion());
if (candidate.exists()) {
- bundles.add(new BundleInfo(unit.getId(), unit.getVersion().toString(), candidate.toURI(), 4, false));
+ bundles.add(new BundleInfo(iu.getId(), iu.getVersion().toString(), candidate.toURI(), 4, false));
}
- candidate = new File(pluginsDir, unit.getId() + "_" + unit.getVersion() + ".jar");
+ candidate = new File(pluginsDir, iu.getId() + "_" + iu.getVersion() + ".jar");
if (candidate.exists()) {
- bundles.add(new BundleInfo(unit.getId(), unit.getVersion().toString(), candidate.toURI(), 4, false));
+ bundles.add(new BundleInfo(iu.getId(), iu.getVersion().toString(), candidate.toURI(), 4, false));
}
break;
}
diff --git a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/XZCompressor.java b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/XZCompressor.java
index 9a1779f5b..f0a0fa94b 100644
--- a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/XZCompressor.java
+++ b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/XZCompressor.java
@@ -120,8 +120,8 @@ public class XZCompressor {
}
private void deleteFiles() {
- for (Iterator<File> iterator = filesToDelete.iterator(); iterator.hasNext();) {
- iterator.next().delete();
+ for (File file : filesToDelete) {
+ file.delete();
}
}
diff --git a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/messages.properties b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/messages.properties
index 3babdd987..4f512da83 100644
--- a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/messages.properties
+++ b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/tools/messages.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2009, 2018 IBM Corporation and others.
+# Copyright (c) 2009, 2021 IBM Corporation and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
@@ -20,7 +20,7 @@ CompositeRepository_default_metadataRepo_name=Composite Artifact Repository
info_noMD5Infomation=No MD5 information available for the artifact [{0}].
info_noMD5InRepository=The repository {0} does not contain MD5 information for artifact [{1}].
-warning_differentMD5=The repositories {0} and {1} have different MD5 sums for the artifact [{2}].
+warning_differentMD5=The repositories {0} and {1} have different MessageDigest=MD5 sums for the artifact [{2}].
info_noChecksumInfomation=No {0} information available for the artifact [{1}].
info_noChecksumInRepository=The repository {0} does not contain {1} information for artifact [{2}].
diff --git a/bundles/org.eclipse.equinox.p2.repository.tools/src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/ProcessRepoTask.java b/bundles/org.eclipse.equinox.p2.repository.tools/src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/ProcessRepoTask.java
index 243e468d2..6a41e1dcc 100644
--- a/bundles/org.eclipse.equinox.p2.repository.tools/src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/ProcessRepoTask.java
+++ b/bundles/org.eclipse.equinox.p2.repository.tools/src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/ProcessRepoTask.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2017 IBM Corporation and others.
+ * Copyright (c) 2009, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -17,8 +17,7 @@ package org.eclipse.equinox.p2.internal.repository.tools.tasks;
import java.io.File;
import java.net.URI;
import java.net.URISyntaxException;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
+import org.apache.tools.ant.*;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.internal.p2.jarprocessor.ant.JarProcessorTask;
@@ -64,6 +63,7 @@ public class ProcessRepoTask extends Task {
private SigningOptions signing = null;
private JarProcessorTask jarProcessor = null;
+ @SuppressWarnings("removal")
@Override
public void execute() throws BuildException {
File file = URIUtil.toFile(repository);
@@ -112,11 +112,15 @@ public class ProcessRepoTask extends Task {
}
}
+ @Deprecated(forRemoval = true, since = "2.3.0")
public void setPack(boolean pack) {
+ log("Support for pack200 is scheduled for removal after June 2023.", Project.MSG_WARN); //$NON-NLS-1$
this.pack = pack;
}
+ @Deprecated(forRemoval = true, since = "2.3.0")
public void setNormalize(boolean normalize) {
+ log("Support for pack200 is scheduled for removal after June 2023.", Project.MSG_WARN); //$NON-NLS-1$
this.repack = normalize;
}
diff --git a/bundles/org.eclipse.equinox.p2.repository/.classpath b/bundles/org.eclipse.equinox.p2.repository/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.repository/.classpath
+++ b/bundles/org.eclipse.equinox.p2.repository/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.repository/.options b/bundles/org.eclipse.equinox.p2.repository/.options
new file mode 100644
index 000000000..c2d3dc538
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.repository/.options
@@ -0,0 +1,3 @@
+org.eclipse.equinox.p2.repository/credentials/debug = false
+org.eclipse.equinox.p2.repository/transport/debug = false
+org.eclipse.equinox.p2.repository/keyservice/debug = false
diff --git a/bundles/org.eclipse.equinox.p2.repository/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.repository/.settings/org.eclipse.jdt.core.prefs
index c48fa2164..1372e1569 100644
--- a/bundles/org.eclipse.equinox.p2.repository/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.repository/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -36,6 +36,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -89,6 +90,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -126,8 +128,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -141,7 +143,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -262,7 +263,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -333,7 +333,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -478,7 +477,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.repository/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.repository/META-INF/MANIFEST.MF
index 28e6db88f..0f0800872 100644
--- a/bundles/org.eclipse.equinox.p2.repository/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.repository/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.repository;singleton:=true
-Bundle-Version: 2.4.600.qualifier
+Bundle-Version: 2.6.0.qualifier
Bundle-Activator: org.eclipse.equinox.internal.p2.repository.Activator
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -39,10 +39,19 @@ Export-Package: org.eclipse.equinox.internal.p2.persistence;
org.eclipse.equinox.p2.repository.spi;version="2.0.0"
Require-Bundle: org.eclipse.equinox.common,
org.eclipse.equinox.registry;bundle-version="3.3.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Import-Package: javax.crypto,
- javax.xml.parsers,
+ org.bouncycastle;version="1.69.0",
+ org.bouncycastle.bcpg;version="1.69.0",
+ org.bouncycastle.gpg.keybox;version="1.69.0",
+ org.bouncycastle.gpg.keybox.jcajce;version="1.69.0",
+ org.bouncycastle.openpgp;version="1.69.0",
+ org.bouncycastle.openpgp.jcajce;version="1.69.0",
+ org.bouncycastle.openpgp.operator;version="1.69.0",
+ org.bouncycastle.openpgp.operator.bc;version="1.69.0",
+ org.bouncycastle.openpgp.operator.jcajce;version="1.69.0",
+ org.bouncycastle.util.encoders;version="1.69.0",
org.eclipse.core.runtime.jobs,
org.eclipse.core.runtime.preferences;version="3.2.0",
org.eclipse.equinox.internal.p2.core,
@@ -61,8 +70,6 @@ Import-Package: javax.crypto,
org.osgi.framework;version="1.6.0",
org.osgi.service.packageadmin;version="1.2.0",
org.osgi.service.prefs;version="1.0.0",
- org.osgi.util.tracker;version="1.4.0",
- org.xml.sax,
- org.xml.sax.helpers
-Service-Component: OSGI-INF/cacheManager.xml
+ org.osgi.util.tracker;version="1.4.0"
+Service-Component: OSGI-INF/cacheManager.xml, OSGI-INF/pgpPublicKeyService.xml
Automatic-Module-Name: org.eclipse.equinox.p2.repository
diff --git a/bundles/org.eclipse.equinox.p2.repository/OSGI-INF/pgpPublicKeyService.xml b/bundles/org.eclipse.equinox.p2.repository/OSGI-INF/pgpPublicKeyService.xml
new file mode 100644
index 000000000..e303cd93e
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.repository/OSGI-INF/pgpPublicKeyService.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.equinox.p2.repository.spi.pgpPublicKeyService">
+ <implementation class="org.eclipse.equinox.internal.p2.repository.PGPKeyServiceComponent"/>
+ <service>
+ <provide interface="org.eclipse.equinox.p2.core.spi.IAgentServiceFactory"/>
+ </service>
+ <property name="p2.agent.servicename" type="String" value="org.eclipse.equinox.p2.repository.spi.PGPPublicKeyService"/>
+</scr:component>
diff --git a/bundles/org.eclipse.equinox.p2.repository/build.properties b/bundles/org.eclipse.equinox.p2.repository/build.properties
index f3b28f666..89e396d06 100644
--- a/bundles/org.eclipse.equinox.p2.repository/build.properties
+++ b/bundles/org.eclipse.equinox.p2.repository/build.properties
@@ -17,6 +17,7 @@ bin.includes = META-INF/,\
about.html,\
plugin.properties,\
OSGI-INF/cacheManager.xml,\
- OSGI-INF/
+ OSGI-INF/,\
+ .options
src.includes = about.html
source.. = src/
diff --git a/bundles/org.eclipse.equinox.p2.repository/pom.xml b/bundles/org.eclipse.equinox.p2.repository/pom.xml
index b7df0f82d..7b16ab7c0 100644
--- a/bundles/org.eclipse.equinox.p2.repository/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.repository/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.repository</artifactId>
- <version>2.4.600-SNAPSHOT</version>
+ <version>2.6.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/persistence/XMLWriter.java b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/persistence/XMLWriter.java
index 011417df1..cfcd0bbe7 100644
--- a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/persistence/XMLWriter.java
+++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/persistence/XMLWriter.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -22,6 +22,8 @@ import org.eclipse.equinox.p2.metadata.Version;
public class XMLWriter implements XMLConstants {
+ static final boolean ignoreWhitespace = Boolean.getBoolean("p2.ignoreWhitespace"); //$NON-NLS-1$
+
public static class ProcessingInstruction {
private String target;
@@ -82,7 +84,9 @@ public class XMLWriter implements XMLConstants {
if (this.open) {
println('>');
}
- indent();
+ if (!ignoreWhitespace) {
+ indent();
+ }
print('<');
print(name);
this.elements.push(name);
@@ -118,7 +122,7 @@ public class XMLWriter implements XMLConstants {
}
public static String escape(String txt) {
- StringBuffer buffer = null;
+ StringBuilder buffer = null;
for (int i = 0; i < txt.length(); ++i) {
String replace;
char c = txt.charAt(i);
@@ -158,7 +162,7 @@ public class XMLWriter implements XMLConstants {
replace = Character.isWhitespace(c) ? " " : null; //$NON-NLS-1$
}
if (buffer == null) {
- buffer = new StringBuffer(txt.length() + 16);
+ buffer = new StringBuilder(txt.length() + 16);
buffer.append(txt.substring(0, i));
}
if (replace != null)
@@ -308,15 +312,25 @@ public class XMLWriter implements XMLConstants {
}
private void println(char c) {
- this.pw.println(c);
+ if (ignoreWhitespace) {
+ this.pw.print(c);
+ } else {
+ this.pw.println(c);
+ }
}
private void println(String s) {
- this.pw.println(s);
+ if (ignoreWhitespace) {
+ this.pw.print(s);
+ } else {
+ this.pw.println(s);
+ }
}
private void println() {
- this.pw.println();
+ if (!ignoreWhitespace) {
+ this.pw.println();
+ }
}
private void print(char c) {
@@ -331,14 +345,18 @@ public class XMLWriter implements XMLConstants {
if (s.length() == 0) {
println();
} else {
- indent();
+ if (!ignoreWhitespace) {
+ indent();
+ }
println(escape ? escape(s) : s);
}
}
private void indent() {
- for (int i = this.elements.size(); i > 0; i -= 1) {
- print(this.indent);
+ if (!ignoreWhitespace) {
+ for (int i = this.elements.size(); i > 0; i -= 1) {
+ print(this.indent);
+ }
}
}
diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/CacheManager.java b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/CacheManager.java
index 99b3e9f41..aeda92105 100644
--- a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/CacheManager.java
+++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/CacheManager.java
@@ -27,12 +27,13 @@ import org.eclipse.equinox.internal.provisional.p2.repository.RepositoryEvent;
import org.eclipse.equinox.p2.core.IAgentLocation;
import org.eclipse.equinox.p2.core.ProvisionException;
import org.eclipse.equinox.p2.repository.IRepository;
+import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
import org.eclipse.osgi.util.NLS;
/**
* A class to manage metadata cache files. Creating the cache files will place
* the file in the AgentData location in a cache directory.
- *
+ *
* Using the bus listeners will allow the manager to listen for repository
* events. When a repository is removed, it will remove the cache file if one
* was created for the repository.
@@ -94,6 +95,7 @@ public class CacheManager {
if (!isURL(remoteFile)) {
throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_NOT_FOUND, NLS.bind(Messages.CacheManager_CannotLoadNonUrlLocation, remoteFile), null));
}
+ checkLocationIsSecure(remoteFile);
SubMonitor submonitor = SubMonitor.convert(monitor, 1000);
try {
@@ -144,13 +146,13 @@ public class CacheManager {
/**
* Returns a local cache file with the contents of the given remote location,
* or <code>null</code> if a local cache could not be created.
- *
+ *
* @param repositoryLocation The remote location to be cached
* @param prefix The prefix to use when creating the cache file
* @param monitor a progress monitor
* @return A {@link File} object pointing to the cache file or <code>null</code>
* if the location is not a repository.
- * @throws FileNotFoundException if neither jar nor xml index file exists at given location
+ * @throws FileNotFoundException if neither jar nor xml index file exists at given location
* @throws AuthenticationFailedException if jar not available and xml causes authentication fail
* @throws IOException on general IO errors
* @throws ProvisionException on any error (e.g. user cancellation, unknown host, malformed address, connection refused, etc.)
@@ -160,7 +162,7 @@ public class CacheManager {
if (!isURL(repositoryLocation)) {
throw new ProvisionException(new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_NOT_FOUND, NLS.bind(Messages.CacheManager_CannotLoadNonUrlLocation, repositoryLocation), null));
}
-
+ checkLocationIsSecure(repositoryLocation);
SubMonitor submonitor = SubMonitor.convert(monitor, 1000);
try {
knownPrefixes.add(prefix);
@@ -169,7 +171,7 @@ public class CacheManager {
URI xmlLocation = URIUtil.append(repositoryLocation, prefix + XML_EXTENSION);
int hashCode = computeHash(repositoryLocation);
- // Knowing if cache is stale is complicated by the fact that a jar could have been
+ // Knowing if cache is stale is complicated by the fact that a jar could have been
// produced after an xml index (and vice versa), and by the need to capture any
// errors, as these needs to be reported to the user as something meaningful - instead of
// just a general "can't read repository".
@@ -189,7 +191,7 @@ public class CacheManager {
// bug 269588 - server may return 0 when file exists, so extra flag is needed
boolean useJar = true;
try {
- lastModifiedRemote = transport.getLastModified(jarLocation, submonitor.newChild(1));
+ lastModifiedRemote = getLastModified(jarLocation, submonitor.newChild(1));
if (lastModifiedRemote <= 0)
LogHelper.log(new Status(IStatus.WARNING, Activator.ID, "Server returned lastModified <= 0 for " + jarLocation)); //$NON-NLS-1$
} catch (AuthenticationFailedException e) {
@@ -226,8 +228,8 @@ public class CacheManager {
// (Status is reported based on finding the XML file as giving up on certain errors
// when checking for the jar may not be correct).
try {
- lastModifiedRemote = transport.getLastModified(xmlLocation, submonitor.newChild(1));
- // if lastModifiedRemote is 0 - something is wrong in the communication stack, as
+ lastModifiedRemote = getLastModified(xmlLocation, submonitor.newChild(1));
+ // if lastModifiedRemote is 0 - something is wrong in the communication stack, as
// a FileNotFound exception should have been thrown.
// bug 269588 - server may return 0 when file exists - site is not correctly configured
if (lastModifiedRemote <= 0)
@@ -267,6 +269,30 @@ public class CacheManager {
}
}
+ private void checkLocationIsSecure(URI repositoryLocation) {
+ if ("http".equals(repositoryLocation.getScheme())) { //$NON-NLS-1$
+ LogHelper.log(new Status(IStatus.WARNING, Activator.ID, NLS.bind(Messages.unsafeHttp, repositoryLocation)));
+ }
+ }
+
+ private long getLastModified(URI location, IProgressMonitor monitor) throws AuthenticationFailedException, FileNotFoundException, CoreException {
+ CoreException exception = null;
+ long lastModifiedRemote = -1L;
+ do {
+ try {
+ lastModifiedRemote = transport.getLastModified(location, monitor);
+ } catch (CoreException e) {
+ if (e.getStatus() == null) {
+ throw e;
+ }
+ exception = e;
+ }
+ } while (exception != null && exception.getStatus() != null && exception.getStatus().getCode() == IArtifactRepository.CODE_RETRY);
+ if (exception != null)
+ throw exception;
+ return lastModifiedRemote;
+ }
+
/**
* Deletes the local cache file(s) for the given repository
* @param repositoryLocation
@@ -386,7 +412,7 @@ public class CacheManager {
if (!downloadDir.exists())
downloadDir.mkdir();
File tempFile = new File(downloadDir, cacheFile.getName());
- // Ensure that the file from a previous download attempt is removed
+ // Ensure that the file from a previous download attempt is removed
if (tempFile.exists())
safeDelete(tempFile);
@@ -402,6 +428,9 @@ public class CacheManager {
try {
submonitor.setWorkRemaining(1000);
result = transport.download(remoteFile, stream, submonitor.newChild(1000));
+ while (result.getCode() == IArtifactRepository.CODE_RETRY) {
+ result = transport.download(remoteFile, stream, submonitor.newChild(1000));
+ }
} catch (OperationCanceledException e) {
// need to pick up the status - a new operation canceled exception is thrown at the end
// as status will be CANCEL.
diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/Credentials.java b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/Credentials.java
index cae79e971..f59059df3 100644
--- a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/Credentials.java
+++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/Credentials.java
@@ -14,9 +14,9 @@
package org.eclipse.equinox.internal.p2.repository;
import java.io.IOException;
-import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
import java.util.*;
import org.eclipse.core.runtime.*;
import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
@@ -92,22 +92,7 @@ public class Credentials {
*/
public static UIServices.AuthenticationInfo forLocation(URI location, boolean prompt, UIServices.AuthenticationInfo lastUsed) throws LoginCanceledException, CoreException {
String host = uriToHost(location);
- String nodeKey;
- try {
- nodeKey = URLEncoder.encode(host, "UTF-8"); //$NON-NLS-1$
- } catch (UnsupportedEncodingException e2) {
- // fall back to default platform encoding
- try {
- // Uses getProperty "file.encoding" instead of using deprecated URLEncoder.encode(String location)
- // which does the same, but throws NPE on missing property.
- String enc = System.getProperty("file.encoding");//$NON-NLS-1$
- if (enc == null)
- throw new UnsupportedEncodingException("No UTF-8 encoding and missing system property: file.encoding"); //$NON-NLS-1$
- nodeKey = URLEncoder.encode(host, enc);
- } catch (UnsupportedEncodingException e) {
- throw internalError(e);
- }
- }
+ String nodeKey = URLEncoder.encode(host, StandardCharsets.UTF_8);
if (DebugHelper.DEBUG_REPOSITORY_CREDENTIALS) {
DebugHelper.debug("Credentials", "forLocation:ENTER", // //$NON-NLS-1$ //$NON-NLS-2$
new Object[] {"host", location, "prompt", Boolean.toString(prompt)}); //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/Messages.java b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/Messages.java
index cd508f561..cd53a09b0 100644
--- a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/Messages.java
+++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/Messages.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Cloudsmith Inc - additional messages
@@ -89,6 +89,7 @@ public class Messages extends NLS {
public static String UnableToRead_0_UserCanceled;
public static String RepositoryTransport_failedReadRepo;
+ public static String unsafeHttp;
static {
// initialize resource bundles
diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/PGPKeyServiceComponent.java b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/PGPKeyServiceComponent.java
new file mode 100644
index 000000000..dfb73bc90
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/PGPKeyServiceComponent.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2022 Eclipse contributors and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.equinox.internal.p2.repository;
+
+import org.eclipse.equinox.internal.provisional.p2.repository.DefaultPGPPublicKeyService;
+import org.eclipse.equinox.p2.core.IProvisioningAgent;
+import org.eclipse.equinox.p2.core.spi.IAgentServiceFactory;
+
+public class PGPKeyServiceComponent implements IAgentServiceFactory {
+ @Override
+ public Object createService(IProvisioningAgent agent) {
+ return new DefaultPGPPublicKeyService(agent);
+ }
+}
diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/RepositoryPreferences.java b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/RepositoryPreferences.java
index a126e80b6..23ce204bf 100644
--- a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/RepositoryPreferences.java
+++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/RepositoryPreferences.java
@@ -15,25 +15,44 @@ package org.eclipse.equinox.internal.p2.repository;
*/
public class RepositoryPreferences {
+ /** See bug 574173: allow to retry download if specified */
+ private static boolean retryOnSocketTimeout = Boolean.getBoolean("p2.RepositoryPreferences.retryOnSocketTimeout"); //$NON-NLS-1$
+
+ /** See bug 574173 */
+ private static int connectionRetryCount = Integer.getInteger("p2.RepositoryPreferences.connectionRetryCount", 1); //$NON-NLS-1$
+
+ /** See bug 574173 */
+ private static int connectionMsRetryDelay = Integer.getInteger("p2.RepositoryPreferences.connectionMsRetryDelay", //$NON-NLS-1$
+ 200);
+
/**
- * Number of attempts to connect (with same credentials) before giving up.
- * Note that newer ECF using apache HTTPclient has retry by default.
- * TODO - make this configurable via a property.
- * TODO - consider removing this option
+ * Number of attempts to connect (with same credentials) before giving up. Note
+ * that newer ECF using apache HTTPclient has retry by default. TODO - consider
+ * removing this option
+ *
* @return the value 1
*/
public static int getConnectionRetryCount() {
- return 1;
+ return connectionRetryCount;
}
/**
* Reconnect delay after failure to connect (with same credentials)- in milliseconds.
* Current implementation returns 200ms.
- * TODO - make this configurable via a property
* @return the value 200
*/
public static long getConnectionMsRetryDelay() {
- return 200;
+ return connectionMsRetryDelay;
+ }
+
+ /**
+ * Whether an attempt should be made to retry download if the connection was
+ * terminated by SocketTimeoutException
+ *
+ * @return {@code false} by default
+ */
+ public static boolean getRetryOnSocketTimeout() {
+ return retryOnSocketTimeout;
}
/**
diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/AbstractRepositoryManager.java b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/AbstractRepositoryManager.java
index 06a338c2a..e85bdb2cb 100644
--- a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/AbstractRepositoryManager.java
+++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/AbstractRepositoryManager.java
@@ -32,8 +32,8 @@ import org.eclipse.equinox.internal.provisional.p2.repository.RepositoryEvent;
import org.eclipse.equinox.p2.core.*;
import org.eclipse.equinox.p2.core.spi.IAgentService;
import org.eclipse.equinox.p2.query.*;
-import org.eclipse.equinox.p2.repository.IRepository;
-import org.eclipse.equinox.p2.repository.IRepositoryManager;
+import org.eclipse.equinox.p2.repository.*;
+import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
import org.eclipse.equinox.security.storage.EncodingUtils;
import org.eclipse.osgi.util.NLS;
import org.osgi.service.prefs.BackingStoreException;
@@ -196,6 +196,7 @@ public abstract class AbstractRepositoryManager<T> implements IRepositoryManager
clearNotFound(location);
boolean wasEnabled = isEnabled(location);
String nick = getRepositoryProperty(location, IRepository.PROP_NICKNAME);
+ String system = getRepositoryProperty(location, IRepository.PROP_SYSTEM);
//remove the repository so event is broadcast and repositories can clear their caches
if (!removeRepository(location))
fail(location, ProvisionException.REPOSITORY_NOT_FOUND);
@@ -204,6 +205,11 @@ public abstract class AbstractRepositoryManager<T> implements IRepositoryManager
IRepository<T> result = loadRepository(location, monitor, null, 0);
loaded = true;
setEnabled(location, wasEnabled);
+ if (result instanceof ICompositeRepository<?>) {
+ for (URI childLocation : ((ICompositeRepository<?>) result).getChildren()) {
+ basicRefreshRepository(childLocation, monitor);
+ }
+ }
return result;
} finally {
//if we failed to load, make sure the repository is not lost
@@ -211,6 +217,9 @@ public abstract class AbstractRepositoryManager<T> implements IRepositoryManager
addRepository(location, wasEnabled, true);
if (nick != null)
setRepositoryProperty(location, IRepository.PROP_NICKNAME, nick);
+ if (system != null) {
+ setRepositoryProperty(location, IRepository.PROP_SYSTEM, system);
+ }
}
}
@@ -727,6 +736,9 @@ public abstract class AbstractRepositoryManager<T> implements IRepositoryManager
ByteArrayOutputStream index = new ByteArrayOutputStream();
IStatus indexFileStatus = null;
indexFileStatus = getTransport().download(indexFileURI, index, monitor);
+ while (indexFileStatus.getCode() == IArtifactRepository.CODE_RETRY) {
+ indexFileStatus = getTransport().download(indexFileURI, index, monitor);
+ }
if (indexFileStatus != null && indexFileStatus.isOK())
return LocationProperties.create(new ByteArrayInputStream(index.toByteArray()));
return LocationProperties.createEmptyIndexFile();
diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/ChecksumHelper.java b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/ChecksumHelper.java
index 6fb253ae7..825d5f34d 100644
--- a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/ChecksumHelper.java
+++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/ChecksumHelper.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015, 2018 Mykola Nikishov
+ * Copyright (c) 2015, 2020 Mykola Nikishov
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -46,10 +46,7 @@ public class ChecksumHelper {
.substring(property.length()) // ".sha3"
.substring(1); // "sha3"
String checksumValue = Objects.requireNonNull(p.getValue());
- String duplicatedChecksum = checksumsByAlgo.put(checksumAlgorithmId, checksumValue);
- if (duplicatedChecksum != null)
- // should never happen - duplicated checksum
- ;
+ checksumsByAlgo.put(checksumAlgorithmId, checksumValue);
}
}
diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/DebugHelper.java b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/DebugHelper.java
index 3cef71ce3..e4955cefe 100644
--- a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/DebugHelper.java
+++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/helpers/DebugHelper.java
@@ -21,19 +21,22 @@ import org.eclipse.equinox.internal.p2.repository.Activator;
import org.eclipse.osgi.service.debug.DebugOptions;
public class DebugHelper {
- public static final String LINE_SEPARATOR = System.getProperty("line.separator"); //$NON-NLS-1$
+ public static final String LINE_SEPARATOR = System.lineSeparator();
public static final boolean DEBUG_REPOSITORY_CREDENTIALS;
public static final boolean DEBUG_REPOSITORY_TRANSPORT;
+ public static final boolean DEBUG_KEY_SERVICE;
static {
DebugOptions options = ServiceHelper.getService(Activator.getContext(), DebugOptions.class);
if (options != null) {
DEBUG_REPOSITORY_CREDENTIALS = options.getBooleanOption(Activator.ID + "/credentials/debug", false); //$NON-NLS-1$
DEBUG_REPOSITORY_TRANSPORT = options.getBooleanOption(Activator.ID + "/transport/debug", false); //$NON-NLS-1$
+ DEBUG_KEY_SERVICE = options.getBooleanOption(Activator.ID + "/keyservice/debug", false); //$NON-NLS-1$
} else {
DEBUG_REPOSITORY_CREDENTIALS = false;
DEBUG_REPOSITORY_TRANSPORT = false;
+ DEBUG_KEY_SERVICE = false;
}
}
@@ -50,7 +53,7 @@ public class DebugHelper {
System.out.println(buffer.toString());
}
- public static void debug(String name, String message, Object[] keyValueArray) {
+ public static void debug(String name, String message, Object... keyValueArray) {
if (keyValueArray == null || keyValueArray.length == 0)
debug(name, message);
else {
diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/messages.properties b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/messages.properties
index 8c920be73..a2b8daa56 100644
--- a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/messages.properties
+++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/messages.properties
@@ -80,3 +80,4 @@ connection_to_0_failed_on_1_retry_attempt_2=Connection to {0} failed on {1}. Ret
UnableToRead_0_TooManyAttempts=Unable to read repository at: {0}. Too many failed login attempts.
UnableToRead_0_UserCanceled=Unable to read repository at: {0}. Login canceled by user.
RepositoryTransport_failedReadRepo=Error while reading from repository: {0}.
+unsafeHttp=Using unsafe http transport to retrieve {0}, see CVE-2021-41033. Consider using https instead. \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/provisional/p2/repository/DefaultPGPPublicKeyService.java b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/provisional/p2/repository/DefaultPGPPublicKeyService.java
new file mode 100644
index 000000000..3aa501986
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/provisional/p2/repository/DefaultPGPPublicKeyService.java
@@ -0,0 +1,869 @@
+/*******************************************************************************
+ * Copyright (c) 2022 Eclipse contributors and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.equinox.internal.provisional.p2.repository;
+
+import java.io.*;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.nio.ByteBuffer;
+import java.nio.file.*;
+import java.nio.file.Path;
+import java.nio.file.attribute.FileTime;
+import java.util.*;
+import java.util.function.*;
+import org.bouncycastle.bcpg.ArmoredInputStream;
+import org.bouncycastle.bcpg.ArmoredOutputStream;
+import org.bouncycastle.gpg.keybox.*;
+import org.bouncycastle.gpg.keybox.jcajce.JcaKeyBoxBuilder;
+import org.bouncycastle.openpgp.*;
+import org.bouncycastle.openpgp.jcajce.JcaPGPObjectFactory;
+import org.bouncycastle.openpgp.operator.bc.BcPGPContentVerifierBuilderProvider;
+import org.bouncycastle.openpgp.operator.jcajce.JcaKeyFingerprintCalculator;
+import org.eclipse.core.runtime.*;
+import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
+import org.eclipse.equinox.internal.p2.repository.Transport;
+import org.eclipse.equinox.internal.p2.repository.helpers.DebugHelper;
+import org.eclipse.equinox.p2.core.IAgentLocation;
+import org.eclipse.equinox.p2.core.IProvisioningAgent;
+import org.eclipse.equinox.p2.repository.spi.PGPPublicKeyService;
+
+/**
+ * @since 2.6
+ */
+public class DefaultPGPPublicKeyService extends PGPPublicKeyService {
+
+ /**
+ * Enable debug tracing either via debug options or via a system property.
+ */
+ private static final boolean DEBUG_KEY_SERVICE = DebugHelper.DEBUG_KEY_SERVICE
+ || Boolean.TRUE.toString().equalsIgnoreCase(System.getProperty("p2.keyserver.debug")); //$NON-NLS-1$
+
+ /**
+ * The system property used to initialized the {@link #keyServer}.
+ */
+ private static final String KEY_SERVERS_PROPERTY = "p2.keyservers"; //$NON-NLS-1$
+
+ /**
+ * The system property used to determine where to look for the GPG pubring.
+ *
+ * @see #getGPPDirectory()
+ */
+ private static final String GPG_HOME_PROPERTY = "p2.gpg.home"; //$NON-NLS-1$
+
+ /**
+ * The system property used to determine whether to enable GPG pubring lookup.
+ *
+ * @see #gpg
+ * @see #setGPG(boolean)
+ */
+ private static final String GPG_PROPERTY = "p2.gpg"; //$NON-NLS-1$
+
+ /**
+ * The number of elapsed milliseconds after which keys cached from a key server
+ * are considered stale such that they will be re-fetched if possible.
+ */
+ private static final long STALE_AFTER_MILLIS = Long.getLong("p2.keyserver.cache.stale", 24) * 1000 * 60 * 60; //$NON-NLS-1$
+
+ /**
+ * Reuse p2's transport layer for fetching keys from the key server.
+ */
+ private final Transport transport;
+
+ /**
+ * Keys {@link #addKey(PGPPublicKey) added} to this key service are cached via
+ * this map.
+ */
+ private final Map<Long, LocalKeyCache> localKeys = new LinkedHashMap<>();
+
+ /**
+ * A folder with locally cached keys, indexed on {@link PGPPublicKey#getKeyID()
+ * key ID}.
+ */
+ private final Path keyCache;
+
+ /**
+ * The current key servers.
+ */
+ private final Map<String, PGPKeyServer> keyServers = new LinkedHashMap<>();
+
+ /**
+ * Whether to load from GPG's pubring.
+ */
+ private boolean gpg;
+
+ /**
+ * Creates an instance associated with the given agent.
+ *
+ * @param agent the agent for which a key service is provided.
+ */
+ public DefaultPGPPublicKeyService(IProvisioningAgent agent) {
+ IAgentLocation agentLocation = agent.getService(IAgentLocation.class);
+ URI dataArea = agentLocation.getDataArea(org.eclipse.equinox.internal.p2.repository.Activator.ID);
+ keyCache = Paths.get(dataArea).resolve("pgp"); //$NON-NLS-1$
+ try {
+ Files.createDirectories(keyCache);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+
+ if (DEBUG_KEY_SERVICE) {
+ DebugHelper.debug("KeyServer", "Cache", "location", keyCache); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ }
+
+ String keyServersProperty = System.getProperty(KEY_SERVERS_PROPERTY, ""); //$NON-NLS-1$
+ if (!keyServersProperty.isBlank()) {
+ Set<String> keyServersSet = new LinkedHashSet<>();
+ for (String keyServer : keyServersProperty.split("[,; \t]+")) { //$NON-NLS-1$
+ if (!keyServer.isEmpty()) {
+ keyServersSet.add(keyServer);
+ }
+ }
+
+ setKeyServers(keyServersSet);
+ }
+
+ setGPG(Boolean.TRUE.toString().equalsIgnoreCase(System.getProperty(GPG_PROPERTY, Boolean.TRUE.toString()))
+ || !System.getProperty(GPG_HOME_PROPERTY, "").isBlank()); //$NON-NLS-1$
+
+ transport = agent.getService(Transport.class);
+ }
+
+ public Set<String> getKeyServers() {
+ return Collections.unmodifiableSet(keyServers.keySet());
+ }
+
+ public void setKeyServers(Set<String> keyServers) {
+ Map<String, PGPKeyServer> newKeyServers = new LinkedHashMap<>();
+ for (String keyServer : keyServers) {
+ PGPKeyServer pgpKeyServer = this.keyServers.get(keyServer);
+ if (pgpKeyServer == null) {
+ pgpKeyServer = new PGPKeyServer(keyServer, this.keyCache) {
+ @Override
+ protected boolean isStale(Path path) {
+ return DefaultPGPPublicKeyService.this.isStale(path);
+ }
+
+ @Override
+ protected IStatus download(URI uri, OutputStream receiver, IProgressMonitor monitor) {
+ return DefaultPGPPublicKeyService.this.download(uri, receiver, monitor);
+ }
+
+ @Override
+ protected void log(Throwable throwable) {
+ DefaultPGPPublicKeyService.this.log(throwable);
+ }
+ };
+ }
+ newKeyServers.put(keyServer, pgpKeyServer);
+ }
+
+ this.keyServers.clear();
+ this.keyServers.putAll(newKeyServers);
+ }
+
+ @Override
+ public PGPPublicKey getKey(String fingerprint) {
+ int length = fingerprint.length();
+ if (length >= 16) {
+ long keyID = Long.parseUnsignedLong(fingerprint.substring(length - 16, length), 16);
+ Collection<PGPPublicKey> keys = getKeys(keyID);
+ for (PGPPublicKey key : keys) {
+ if (toHexFingerprint(key).equalsIgnoreCase(fingerprint)) {
+ return key;
+ }
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public Collection<PGPPublicKey> getKeys(long keyID) {
+ List<PGPPublicKey> keys = new ArrayList<>();
+ for (PGPKeyServer keyServer : keyServers.values()) {
+ keys.addAll(keyServer.getKeys(keyID));
+ }
+
+ keys.addAll(getLocalKeyCache(keyID).get());
+
+ keys.addAll(getDefaultKeys(keyID));
+
+ return reconcileKeys(keys);
+ }
+
+ public boolean isGGP() {
+ return gpg;
+ }
+
+ public void setGPG(boolean gpg) {
+ this.gpg = gpg;
+ }
+
+ protected List<PGPPublicKey> getDefaultKeys(long keyID) {
+ return gpg ? getGPGPubringKeys(keyID) : Collections.emptyList();
+ }
+
+ protected List<PGPPublicKey> reconcileKeys(List<PGPPublicKey> keys) {
+ if (keys.size() <= 1) {
+ return new ArrayList<>(keys);
+ }
+
+ Map<ByteBuffer, PGPPublicKey> encodings = new LinkedHashMap<>();
+ Map<ByteBuffer, PGPPublicKey> fingerprints = new LinkedHashMap<>();
+ for (PGPPublicKey key : keys) {
+ try {
+ ByteBuffer encoding = ByteBuffer.wrap(key.getEncoded());
+ PGPPublicKey existingKey = encodings.put(encoding, key);
+ if (existingKey == null) {
+ ByteBuffer fingerprint = ByteBuffer.wrap(key.getFingerprint());
+ PGPPublicKey otherKey = fingerprints.put(fingerprint, key);
+ if (otherKey != null) {
+ fingerprints.put(fingerprint, choose(otherKey, key));
+ }
+ }
+ } catch (IOException e) {
+ log(e);
+ }
+ }
+
+ return new ArrayList<>(fingerprints.values());
+ }
+
+ /**
+ * While {@link #reconcileKeys(List) reconciling}, when two keys have the same
+ * fingerprint, this method must be chosen in favor of the other to be retained
+ * in the result.
+ *
+ * @param key1 the first key from which to choose.
+ * @param key2 the second key from which to choose.
+ * @return the key with the newest or most complete details.
+ */
+ protected PGPPublicKey choose(PGPPublicKey key1, PGPPublicKey key2) {
+ // Favor the one with the newest information.
+ long signatureTime1 = getNewestSignature(key1);
+ long signatureTime2 = getNewestSignature(key2);
+ if (signatureTime1 > signatureTime2) {
+ return key1;
+ } else if (signatureTime1 < signatureTime2) {
+ return key2;
+ }
+
+ // Favor the one with the most information.
+ int signatureCount1 = getSignatureCount(key1);
+ int signatureCount2 = getSignatureCount(key2);
+ if (signatureCount1 > signatureCount2) {
+ return key1;
+ } else if (signatureCount1 < signatureCount2) {
+ return key2;
+ }
+
+ return key1;
+ }
+
+ protected static int getSignatureCount(PGPPublicKey key) {
+ int result = 0;
+ for (Iterator<PGPSignature> signatures = key.getSignatures(); signatures.hasNext(); signatures.next()) {
+ ++result;
+ }
+ for (Iterator<PGPSignature> signatures = key.getKeySignatures(); signatures.hasNext(); signatures.next()) {
+ ++result;
+ }
+ return result;
+ }
+
+ protected static long getNewestSignature(PGPPublicKey key) {
+ long result = 0;
+ for (Iterator<PGPSignature> signatures = key.getSignatures(); signatures.hasNext();) {
+ PGPSignature signature = signatures.next();
+ long time = signature.getCreationTime().getTime();
+ result = Math.max(result, time);
+ }
+ for (Iterator<PGPSignature> signatures = key.getKeySignatures(); signatures.hasNext();) {
+ PGPSignature signature = signatures.next();
+ long time = signature.getCreationTime().getTime();
+ result = Math.max(result, time);
+ }
+
+ return result;
+ }
+
+ @Override
+ public PGPPublicKey addKey(PGPPublicKey key) {
+ long keyID = key.getKeyID();
+ LocalKeyCache localKeyCache = getLocalKeyCache(keyID);
+ localKeyCache.add(key);
+
+ Collection<PGPPublicKey> keys = getKeys(keyID);
+ byte[] fingerprint = key.getFingerprint();
+ for (PGPPublicKey otherKey : keys) {
+ if (Arrays.equals(otherKey.getFingerprint(), fingerprint)) {
+ return otherKey;
+ }
+ }
+
+ // We should never get this far.
+ return key;
+ }
+
+ protected boolean isStale(Path path) {
+ try {
+ FileTime lastModifiedTime = Files.getLastModifiedTime(path);
+ long lastModified = lastModifiedTime.toMillis();
+ long currentTime = System.currentTimeMillis();
+ return currentTime - lastModified > STALE_AFTER_MILLIS;
+ } catch (IOException e) {
+ return true;
+ }
+ }
+
+ @Override
+ public Set<PGPPublicKey> getVerifiedCertifications(PGPPublicKey key) {
+ Set<PGPPublicKey> certifications = new LinkedHashSet<>();
+ LOOP: for (Iterator<PGPSignature> signatures = key.getSignatures(); signatures.hasNext();) {
+ PGPSignature signature = signatures.next();
+ long signingKeyID = signature.getKeyID();
+ for (PGPPublicKey signingKey : getKeys(signingKeyID)) {
+ switch (signature.getSignatureType()) {
+ case PGPSignature.SUBKEY_BINDING:
+ case PGPSignature.PRIMARYKEY_BINDING: {
+ try {
+ signature.init(new BcPGPContentVerifierBuilderProvider(), signingKey);
+ if (signature.verifyCertification(signingKey, key)
+ && isCreatedBeforeRevocation(signature, signingKey)) {
+ certifications.add(signingKey);
+ continue LOOP;
+ }
+ } catch (PGPException e) {
+ //$FALL-THROUGH$
+ }
+ break;
+ }
+ case PGPSignature.DEFAULT_CERTIFICATION:
+ case PGPSignature.NO_CERTIFICATION:
+ case PGPSignature.CASUAL_CERTIFICATION:
+ case PGPSignature.POSITIVE_CERTIFICATION: {
+ for (Iterator<String> userIDs = key.getUserIDs(); userIDs.hasNext();) {
+ String userID = userIDs.next();
+ try {
+ signature.init(new BcPGPContentVerifierBuilderProvider(), signingKey);
+ if (signature.verifyCertification(userID, key)
+ && isCreatedBeforeRevocation(signature, signingKey)) {
+ certifications.add(signingKey);
+ continue LOOP;
+ }
+ } catch (PGPException e) {
+ //$FALL-THROUGH$
+ }
+ }
+ break;
+ }
+ }
+ }
+ }
+ return certifications;
+ }
+
+ @Override
+ public Date getVerifiedRevocationDate(PGPPublicKey key) {
+ for (Iterator<PGPSignature> signatures = key.getSignatures(); signatures.hasNext();) {
+ PGPSignature signature = signatures.next();
+ long signingKeyID = signature.getKeyID();
+ for (PGPPublicKey signingKey : getKeys(signingKeyID)) {
+ switch (signature.getSignatureType()) {
+ case PGPSignature.KEY_REVOCATION:
+ case PGPSignature.CERTIFICATION_REVOCATION: {
+ try {
+ signature.init(new BcPGPContentVerifierBuilderProvider(), signingKey);
+ if (signature.verifyCertification(key)) {
+ return signature.getCreationTime();
+ }
+ } catch (PGPException e) {
+ //$FALL-THROUGH$
+ }
+ break;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ private LocalKeyCache getLocalKeyCache(long keyID) {
+ LocalKeyCache localKeyCache = localKeys.get(keyID);
+ if (localKeyCache == null) {
+ String hexKeyID = toHex(keyID);
+ Path cache = keyCache.resolve(hexKeyID + ".asc"); //$NON-NLS-1$
+ localKeyCache = new LocalKeyCache(cache) {
+ @Override
+ protected List<PGPPublicKey> reconcileKeys(List<PGPPublicKey> keys) {
+ return DefaultPGPPublicKeyService.this.reconcileKeys(keys);
+ }
+
+ @Override
+ protected void log(Throwable throwable) {
+ DefaultPGPPublicKeyService.this.log(throwable);
+ }
+ };
+ localKeys.put(keyID, localKeyCache);
+ }
+ return localKeyCache;
+ }
+
+ protected Collection<PGPPublicKey> fetchKeys(URI uri, Path cache) throws IOException {
+ try {
+ ByteArrayOutputStream reciever = new ByteArrayOutputStream();
+ IStatus download = download(uri, reciever, new NullProgressMonitor());
+ if (!download.isOK()) {
+ Throwable exception = download.getException();
+ if (exception != null) {
+ throw new IOException(download.getMessage(), exception);
+ }
+ throw new IOException(download.getMessage());
+ }
+ List<PGPPublicKey> result = new ArrayList<>();
+ byte[] bytes = reciever.toByteArray();
+ try (InputStream input = new ArmoredInputStream(new ByteArrayInputStream(bytes))) {
+ result.addAll(loadKeys(input));
+ }
+
+ try (OutputStream out = newAtomicOutputStream(cache)) {
+ out.write(bytes);
+ }
+
+ return result;
+ } catch (IOException ex) {
+ if (Files.isRegularFile(cache)) {
+ try (InputStream input = new ArmoredInputStream(new BufferedInputStream(Files.newInputStream(cache)))) {
+ return loadKeys(input);
+ } catch (IOException ex1) {
+ try {
+ // Assume the cache is corrupt so delete it.
+ Files.delete(cache);
+ } catch (IOException ex2) {
+ log(ex2);
+ }
+ // Rethrow original network failure exception
+ throw new IOException("Error while processing " + uri + " as well while processing the cache " //$NON-NLS-1$ //$NON-NLS-2$
+ + cache + ": " + ex1.getMessage(), ex); //$NON-NLS-1$
+ }
+ }
+ throw new IOException("Error while processing " + uri, ex); //$NON-NLS-1$
+ }
+ }
+
+ protected IStatus download(URI uri, OutputStream receiver, IProgressMonitor monitor) {
+ return transport.download(uri, receiver, monitor);
+ }
+
+ protected void log(Throwable throwable) {
+ if (DEBUG_KEY_SERVICE) {
+ LogHelper.log(new Status(IStatus.ERROR, org.eclipse.equinox.internal.p2.repository.Activator.ID,
+ throwable.getMessage(), throwable));
+ }
+ }
+
+ protected static OutputStream newAtomicOutputStream(Path cache) throws IOException {
+ Path temp = Files.createTempFile(cache.getParent(), "out", ".tmp"); //$NON-NLS-1$ //$NON-NLS-2$
+ return new BufferedOutputStream(Files.newOutputStream(temp)) {
+ @Override
+ public void close() throws IOException {
+ super.close();
+ Files.move(temp, cache, StandardCopyOption.ATOMIC_MOVE, StandardCopyOption.REPLACE_EXISTING);
+ }
+ };
+ }
+
+ protected static List<PGPPublicKey> loadKeys(InputStream input) throws IOException {
+ try {
+ List<PGPPublicKey> result = new ArrayList<>();
+ for (Object o : new JcaPGPObjectFactory(input)) {
+ if (o instanceof PGPPublicKeyRingCollection) {
+ collectKeys((PGPPublicKeyRingCollection) o, result::add);
+ } else if (o instanceof PGPPublicKeyRing) {
+ collectKeys((PGPPublicKeyRing) o, result::add);
+ } else if (o instanceof PGPPublicKey) {
+ result.add((PGPPublicKey) o);
+ }
+ }
+ return result;
+ } catch (RuntimeException ex) {
+ throw new IOException(ex);
+ }
+ }
+
+ private static void collectKeys(PGPPublicKeyRingCollection pgpPublicKeyRingCollection,
+ Consumer<PGPPublicKey> collector) {
+ pgpPublicKeyRingCollection.forEach(keyring -> collectKeys(keyring, collector));
+ }
+
+ private static void collectKeys(PGPPublicKeyRing pgpPublicKeyRing, Consumer<PGPPublicKey> collector) {
+ pgpPublicKeyRing.getPublicKeys().forEachRemaining(collector::accept);
+ }
+
+ private static abstract class LocalKeyCache {
+ private Path cache;
+ private FileTime lastModifiedTime;
+ private List<PGPPublicKey> keys;
+
+ public LocalKeyCache(Path cache) {
+ this.cache = cache;
+ }
+
+ protected abstract void log(Throwable throwable);
+
+ protected abstract List<PGPPublicKey> reconcileKeys(List<PGPPublicKey> keysToReconcile);
+
+ public List<PGPPublicKey> get() {
+ if (keys != null) {
+ try {
+ FileTime newLastModifiedTime = Files.getLastModifiedTime(cache);
+ if (lastModifiedTime == null || lastModifiedTime.compareTo(newLastModifiedTime) < 0) {
+ lastModifiedTime = newLastModifiedTime;
+ } else {
+ return keys;
+ }
+ } catch (Exception e) {
+ //$FALL-THROUGH$
+ }
+ }
+
+ if (!Files.isRegularFile(cache)) {
+ return List.of();
+ }
+
+ try (InputStream input = new ArmoredInputStream(new BufferedInputStream(Files.newInputStream(cache)))) {
+ keys = loadKeys(input);
+ return keys;
+ } catch (IOException ex) {
+ log(ex);
+ try {
+ // Assume the cache is corrupt so delete it.
+ Files.delete(cache);
+ } catch (IOException ex2) {
+ log(ex2);
+ }
+ return List.of();
+ }
+ }
+
+ public void add(PGPPublicKey key) {
+ List<PGPPublicKey> oldKeys = get();
+ List<PGPPublicKey> newKeys = new ArrayList<>(oldKeys);
+ newKeys.add(key);
+ newKeys = reconcileKeys(newKeys);
+ if (!oldKeys.equals(newKeys)) {
+ try (OutputStream underlyingStream = newAtomicOutputStream(cache);
+ OutputStream output = new ArmoredOutputStream(underlyingStream)) {
+ for (PGPPublicKey newKey : newKeys) {
+ newKey.encode(output);
+ }
+ } catch (IOException e) {
+ log(e);
+ return;
+ }
+ keys = newKeys;
+ }
+ }
+ }
+
+ private static abstract class PGPKeyServer {
+ private final Map<Long, List<PGPPublicKey>> keyIDMap = new LinkedHashMap<>();
+
+ private final String keyServer;
+
+ private final Path keyCache;
+
+ public PGPKeyServer(String keyServer, Path baseCache) {
+ this.keyServer = keyServer;
+ keyCache = baseCache.resolve(keyServer.replace(':', '_'));
+ if (!Files.isDirectory(this.keyCache)) {
+ try {
+ Files.createDirectory(keyCache);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ protected abstract boolean isStale(Path path);
+
+ protected abstract IStatus download(URI uri, OutputStream receiver, IProgressMonitor monitor);
+
+ protected abstract void log(Throwable throwable);
+
+ public List<PGPPublicKey> getKeys(long keyID) {
+ List<PGPPublicKey> keys = keyIDMap.get(keyID);
+ String hexKeyID = toHex(keyID);
+ Path cache = keyCache.resolve(hexKeyID + ".asc"); //$NON-NLS-1$
+ boolean needsRemoteFetch = !Files.isRegularFile(cache) || isStale(cache);
+ if (keys == null || needsRemoteFetch) {
+ try {
+ Iterable<PGPPublicKey> fetchedKeys;
+ if (needsRemoteFetch) {
+ String link = "https://" + keyServer + "/pks/lookup?op=get&search=0x" + hexKeyID; //$NON-NLS-1$ //$NON-NLS-2$
+ if (DEBUG_KEY_SERVICE) {
+ DebugHelper.debug("KeyServer", "Searching", "uri", link); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ }
+ URI uri = new URI(link);
+ fetchedKeys = fetchKeys(uri, cache);
+ } else {
+ try (InputStream input = new ArmoredInputStream(
+ new BufferedInputStream(Files.newInputStream(cache)))) {
+ fetchedKeys = loadKeys(input);
+ }
+ }
+
+ List<PGPPublicKey> newKeys = new ArrayList<>();
+ for (PGPPublicKey fetchedKey : fetchedKeys) {
+ long fetchedKeyID = fetchedKey.getKeyID();
+ if (fetchedKeyID == keyID) {
+ newKeys.add(fetchedKey);
+ }
+ }
+
+ keyIDMap.put(keyID, newKeys);
+ keys = newKeys;
+ } catch (URISyntaxException | IOException e) {
+ log(e);
+ if (keys == null || keys.isEmpty()) {
+ List<PGPPublicKey> newKeys = List.of();
+ keyIDMap.put(keyID, newKeys);
+ keys = newKeys;
+ }
+ }
+ }
+
+ return Collections.unmodifiableList(keys);
+ }
+
+ protected Collection<PGPPublicKey> fetchKeys(URI uri, Path cache) throws IOException {
+ try {
+ ByteArrayOutputStream reciever = new ByteArrayOutputStream();
+ IStatus download = download(uri, reciever, new NullProgressMonitor());
+ if (!download.isOK()) {
+ // If the file is not found, save an empty file to prevent repeated attempts to
+ // download from this URI.
+ Throwable exception = download.getException();
+ if (exception instanceof FileNotFoundException) {
+ log(exception);
+ } else {
+ if (exception != null) {
+ throw new IOException(download.getMessage(), exception);
+ }
+ throw new IOException(download.getMessage());
+ }
+ }
+ List<PGPPublicKey> result;
+ byte[] bytes = reciever.toByteArray();
+ try {
+ try (InputStream input = new ArmoredInputStream(new ByteArrayInputStream(bytes))) {
+ result = loadKeys(input);
+ }
+ } catch (IOException ex) {
+ log(ex);
+ // If the bytes can't be processed cache an empty file to prevent repeated
+ // attempts.
+ bytes = new byte[0];
+ result = List.of();
+ }
+
+ try (OutputStream out = newAtomicOutputStream(cache)) {
+ out.write(bytes);
+ }
+
+ return result;
+ } catch (IOException ex) {
+ // If the key server fails, load the cache if it exists.
+ if (Files.isRegularFile(cache)) {
+ try (InputStream input = new ArmoredInputStream(
+ new BufferedInputStream(Files.newInputStream(cache)))) {
+ return loadKeys(input);
+ } catch (IOException ex1) {
+ try {
+ // Assume the cache is corrupt so delete it.
+ Files.delete(cache);
+ } catch (IOException ex2) {
+ log(ex2);
+ }
+ // Rethrow original network failure exception with additional details
+ throw new IOException("Error while processing " + uri + " as well while processing the cache " //$NON-NLS-1$ //$NON-NLS-2$
+ + cache + ": " + ex1.getMessage(), ex); //$NON-NLS-1$
+ }
+ }
+ throw new IOException("Error while processing " + uri, ex); //$NON-NLS-1$
+ }
+ }
+
+ }
+
+ private static List<PGPPublicKey> getGPGPubringKeys(long keyID) {
+ return GPGPubringCache.getKeys(keyID);
+ }
+
+ private static class GPGPubringCache {
+ private static final Supplier<PGPPublicKeyRingCollection> GPG_PUBRING = getGPGPubring();
+ private static volatile PGPPublicKeyRingCollection cachePubring;
+ private static volatile Map<Long, List<PGPPublicKey>> cache;
+
+ public static List<PGPPublicKey> getKeys(long keyID) {
+ PGPPublicKeyRingCollection pubring = GPG_PUBRING.get();
+ if (pubring != cachePubring) {
+ Map<Long, List<PGPPublicKey>> newCache = new LinkedHashMap<>();
+ for (Iterator<PGPPublicKeyRing> keyRings = pubring.getKeyRings(); keyRings.hasNext();) {
+ for (PGPPublicKey key : keyRings.next()) {
+ long keyID2 = key.getKeyID();
+ List<PGPPublicKey> keys = newCache.computeIfAbsent(keyID2, it -> new ArrayList<>());
+ keys.add(key);
+ }
+ }
+ cache = newCache;
+ cachePubring = pubring;
+ }
+
+ List<PGPPublicKey> result = cache.get(keyID);
+ return result == null ? List.of() : result;
+ }
+ }
+
+ private static abstract class GPGPubringSupplier implements Supplier<PGPPublicKeyRingCollection> {
+
+ private final Path pubring;
+
+ private PGPPublicKeyRingCollection keyRingCollection;
+
+ private FileTime lastModifiedTime;
+
+ public GPGPubringSupplier(Path pubring) {
+ this.pubring = pubring;
+ try {
+ keyRingCollection = new PGPPublicKeyRingCollection(Collections.emptyList());
+ } catch (IOException | PGPException e) {
+ // Cannot happen for an empty collection.
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public PGPPublicKeyRingCollection get() {
+ try {
+ FileTime newLastModifiedTime = Files.getLastModifiedTime(pubring);
+ if (lastModifiedTime == null || lastModifiedTime.compareTo(newLastModifiedTime) < 0) {
+ lastModifiedTime = newLastModifiedTime;
+ keyRingCollection = buildPubring();
+ }
+ } catch (Exception e) {
+ //$FALL-THROUGH$
+ }
+ return keyRingCollection;
+ }
+
+ protected abstract PGPPublicKeyRingCollection buildPubring() throws Exception;
+ }
+
+ private static Supplier<PGPPublicKeyRingCollection> getGPGPubring() {
+ Path gpgDirectory = getGPPDirectory();
+ Path pubringGpg = gpgDirectory.resolve("pubring.gpg"); //$NON-NLS-1$
+ Path pubringKbx = gpgDirectory.resolve("pubring.kbx"); //$NON-NLS-1$
+
+ if (Files.isRegularFile(pubringGpg)) {
+ return new GPGPubringSupplier(pubringGpg) {
+ @Override
+ protected PGPPublicKeyRingCollection buildPubring() throws Exception {
+ try (InputStream input = new BufferedInputStream(Files.newInputStream(pubringGpg))) {
+ PGPPublicKeyRingCollection keyRingCollection = new PGPPublicKeyRingCollection(input,
+ new JcaKeyFingerprintCalculator());
+ return keyRingCollection;
+ }
+ }
+ };
+ } else if (Files.isRegularFile(pubringKbx)) {
+ return new GPGPubringSupplier(pubringKbx) {
+ @Override
+ protected PGPPublicKeyRingCollection buildPubring() throws Exception {
+ try (InputStream input = new BufferedInputStream(Files.newInputStream(pubringKbx))) {
+ KeyBox keyBox = new JcaKeyBoxBuilder().build(input);
+ List<PGPPublicKeyRing> pgpPublicKeyRings = new ArrayList<>();
+ for (KeyBlob keyBlob : keyBox.getKeyBlobs()) {
+ switch (keyBlob.getType()) {
+ case OPEN_PGP_BLOB: {
+ PGPPublicKeyRing pgpPublicKeyRing = ((PublicKeyRingBlob) keyBlob).getPGPPublicKeyRing();
+ pgpPublicKeyRings.add(pgpPublicKeyRing);
+ }
+ default: {
+ //$FALL-THROUGH$
+ }
+ }
+ }
+ PGPPublicKeyRingCollection keyRingCollection = new PGPPublicKeyRingCollection(
+ pgpPublicKeyRings);
+ return keyRingCollection;
+ }
+ }
+ };
+ } else {
+ PGPPublicKeyRingCollection empty;
+ try {
+ empty = new PGPPublicKeyRingCollection(Collections.emptyList());
+ } catch (IOException | PGPException e) {
+ // Cannot happen for an empty collection.
+ throw new RuntimeException(e);
+ }
+ return () -> empty;
+ }
+ }
+
+ @SuppressWarnings("nls")
+ private static Path getGPPDirectory() {
+ // Handle ~ as might be used on macos and linux.
+ Function<String, Path> resolveTilde = s -> {
+ if (s.startsWith("~/") || s.startsWith("~" + File.separatorChar)) {
+ return new File(System.getProperty("user.home"), s.substring(2)).getAbsoluteFile().toPath();
+ }
+ return Paths.get(s);
+ };
+
+ // Allow the user to specify the GPG home used by p2 specifically.
+ Path path = checkDirectory(System.getProperty(GPG_HOME_PROPERTY), resolveTilde);
+ if (path != null) {
+ return path;
+ }
+
+ path = checkDirectory(System.getenv("GNUPGHOME"), resolveTilde);
+ if (path != null) {
+ return path;
+ }
+
+ if ("win32".equals(System.getProperty("osgi.os"))) {
+ // On Windows prefer %APPDATA%\gnupg if it exists, even if Cygwin is used.
+ path = checkDirectory(System.getenv("APPDATA"), //$NON-NLS-1$
+ s -> Paths.get(s).resolve("gnupg")); //$NON-NLS-1$
+ if (path != null) {
+ return path;
+ }
+ }
+ // All systems, including Cygwin and even Windows if %APPDATA%\gnupg doesn't
+ // exist.
+ return resolveTilde.apply("~/.gnupg"); //$NON-NLS-1$
+ }
+
+ private static Path checkDirectory(String dir, Function<String, Path> toPath) {
+ if (dir != null && !dir.isBlank()) {
+ try {
+ Path directory = toPath.apply(dir);
+ if (Files.isDirectory(directory)) {
+ return directory;
+ }
+ } catch (RuntimeException e) {
+ //$FALL-THROUGH$
+ }
+ }
+ return null;
+ }
+}
diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/artifact/IArtifactDescriptor.java b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/artifact/IArtifactDescriptor.java
index 9b5cd4d9b..2403402ac 100644
--- a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/artifact/IArtifactDescriptor.java
+++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/artifact/IArtifactDescriptor.java
@@ -23,7 +23,7 @@ import org.eclipse.equinox.p2.repository.artifact.spi.ArtifactDescriptor;
* descriptor defines the artifact it contains, as well as any processing steps that
* must be performed when the artifact is transferred out of the repository (such
* as decompression, error checking, etc).
- *
+ *
* @noextend This interface is not intended to be extended by clients.
* @noimplement This interface is not intended to be implemented by clients. Instead subclass the {@link ArtifactDescriptor} class
* @since 2.0
@@ -34,37 +34,36 @@ public interface IArtifactDescriptor {
* An artifact descriptor property (value "download.size") indicating the number
* of bytes that will be transferred when this artifact is transferred out of the repository.
*/
- public static final String DOWNLOAD_SIZE = "download.size"; //$NON-NLS-1$
+ String DOWNLOAD_SIZE = "download.size"; //$NON-NLS-1$
/**
* An artifact descriptor property (value "artifact.size") indicating the size in
* bytes of the artifact in its native format (after processing steps have been applied).
*/
- public static final String ARTIFACT_SIZE = "artifact.size"; //$NON-NLS-1$
+ String ARTIFACT_SIZE = "artifact.size"; //$NON-NLS-1$
/**
* A prefix of an artifact descriptor properties storing checksum
* of the artifact bytes that are transferred.
* @since 2.4
*/
- public static final String DOWNLOAD_CHECKSUM = "download.checksum"; //$NON-NLS-1$
+ String DOWNLOAD_CHECKSUM = "download.checksum"; //$NON-NLS-1$
/**
* An artifact descriptor property (value "download.md5") indicating the MD5
* checksum of the artifact bytes that are transferred.
* @see #DOWNLOAD_CHECKSUM
*/
- @Deprecated
- public static final String DOWNLOAD_MD5 = "download.md5"; //$NON-NLS-1$
+ @Deprecated String DOWNLOAD_MD5 = "download.md5"; //$NON-NLS-1$
/**
- * An artifact descriptor property (value "download.contentType") indicating the
+ * An artifact descriptor property (value "download.contentType") indicating the
* content type of the artifact bytes that are transferred.
*/
- public static final String DOWNLOAD_CONTENTTYPE = "download.contentType"; //$NON-NLS-1$
+ String DOWNLOAD_CONTENTTYPE = "download.contentType"; //$NON-NLS-1$
/**
* An content type (value "application/zip") indicating the content is a zip file.
*/
- public static final String TYPE_ZIP = "application/zip"; //$NON-NLS-1$
+ String TYPE_ZIP = "application/zip"; //$NON-NLS-1$
/**
* A prefix of an artifact descriptor property storing list of
@@ -72,7 +71,7 @@ public interface IArtifactDescriptor {
* been applied).
* @since 2.4
*/
- public static final String ARTIFACT_CHECKSUM = "artifact.checksum"; //$NON-NLS-1$
+ String ARTIFACT_CHECKSUM = "artifact.checksum"; //$NON-NLS-1$
/**
* An artifact descriptor property (value "artifact.md5") indicating the MD5
@@ -80,59 +79,61 @@ public interface IArtifactDescriptor {
* been applied).
* @see #ARTIFACT_CHECKSUM
*/
- @Deprecated
- public static final String ARTIFACT_MD5 = "artifact.md5"; //$NON-NLS-1$
+ @Deprecated String ARTIFACT_MD5 = "artifact.md5"; //$NON-NLS-1$
/**
* An artifact descriptor property (value "format") indicating the storage format
* of the artifact in the repository.
* @see #FORMAT_PACKED
*/
- public static final String FORMAT = "format"; //$NON-NLS-1$
+ String FORMAT = "format"; //$NON-NLS-1$
/**
* A property value for the {@link #FORMAT} artifact descriptor property (value "packed")
* indicating the storage format is using pack200 compression.
* @see #FORMAT
+ * @noreference This field is not intended to be referenced by clients.
+ *
+ * @deprecated See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a> for details.
*/
- public static final String FORMAT_PACKED = "packed"; //$NON-NLS-1$
+ @Deprecated(forRemoval = true, since = "2.5.0") String FORMAT_PACKED = "packed"; //$NON-NLS-1$
/**
* Return the key for the artifact described by this descriptor.
* @return the key associated with this descriptor
*/
- public abstract IArtifactKey getArtifactKey();
+ IArtifactKey getArtifactKey();
/**
- * Return the value of the given property in this descriptor <code>null</code>
+ * Return the value of the given property in this descriptor <code>null</code>
* is returned if no such property exists
* @param key the property key to look for
* @return the value of the given property or <code>null</code>
*/
- public abstract String getProperty(String key);
+ String getProperty(String key);
/**
* Returns a read-only collection of the properties of the artifact descriptor.
* @return the properties of this artifact descriptor.
*/
- public Map<String, String> getProperties();
+ Map<String, String> getProperties();
- /**
+ /**
* Return the list of processing steps associated with this descriptor.
* An empty set of steps implies that this descriptor describes a complete
* copy of the artifact in its native form. If one or more steps are present,
* they may be performed when the artifact is transferred from the repository
* that contains it.
- *
+ *
* @return the list of processing steps for this descriptor
*/
- public abstract IProcessingStepDescriptor[] getProcessingSteps();
+ IProcessingStepDescriptor[] getProcessingSteps();
/**
* Return the artifact repository that holds the artifact described by this descriptor.
* <code>null</code> is returned if this descriptor is not held in a repository.
- *
+ *
* @return the repository holding this artifact or <code>null</code> if none.
*/
- public abstract IArtifactRepository getRepository();
+ IArtifactRepository getRepository();
}
diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/artifact/spi/IArtifactUIServices.java b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/artifact/spi/IArtifactUIServices.java
new file mode 100644
index 000000000..b5cc328f5
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/artifact/spi/IArtifactUIServices.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2022 Eclipse contributors and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.equinox.p2.repository.artifact.spi;
+
+import java.io.File;
+import java.security.cert.Certificate;
+import java.util.*;
+import org.bouncycastle.openpgp.PGPPublicKey;
+import org.eclipse.equinox.p2.core.UIServices;
+import org.eclipse.equinox.p2.core.UIServices.TrustInfo;
+import org.eclipse.equinox.p2.metadata.IArtifactKey;
+
+/**
+ * An interface optionally implemented by {@link UIServices} to provide richer
+ * information for the users. In particular, the users often wish to know which
+ * artifacts are signed by which certificates or which keys when they are
+ * {@link UIServices#getTrustInfo(Certificate[][], Collection, String[])
+ * prompted} whether to trust such certificates or keys.
+ *
+ * @since 2.6
+ *
+ * @see UIServices#getTrustInfo(Certificate[][], Collection, String[])
+ */
+public interface IArtifactUIServices {
+
+ /**
+ * Opens a UI prompt to capture information about trusted content.
+ *
+ * @param untrustedCertificateChains a map from untrusted certificate chains to
+ * the set of keys of the artifacts signed by
+ * that chain.
+ * @param untrustedPGPKeys a map of untrusted PGP public keys to the
+ * set of keys of the artifacts signed by that
+ * key.
+ * @param unsignedArtifacts a set of keys of the artifacts that are not
+ * signed.
+ * @param artifactFiles a map from artifact keys to the file
+ * associated with that artifact key.
+ *
+ * @return the TrustInfo that describes the user's choices for trusting
+ * certificates, keys, and unsigned content.
+ *
+ * @see #getTrustInfo(UIServices, Map, Map, Set, Map)
+ * @see UIServices
+ */
+ TrustInfo getTrustInfo( //
+ Map<List<Certificate>, Set<IArtifactKey>> untrustedCertificateChains, //
+ Map<PGPPublicKey, Set<IArtifactKey>> untrustedPGPKeys, //
+ Set<IArtifactKey> unsignedArtifacts, //
+ Map<IArtifactKey, File> artifactFiles);
+
+ /**
+ * Opens a UI prompt to capture information about trusted content. This
+ * implementation is useful for delegating to an old-style
+ * {@link UIServices#getTrustInfo(Certificate[][], Collection, String[])
+ * UIServices implementation} that does not support the IArtifactUIServices
+ * interface.
+ *
+ * @param uiServices the delegate UI services.
+ * @param untrustedCertificateChains a map from untrusted certificate chains to
+ * the set of keys of the artifacts signed by
+ * that chain.
+ * @param untrustedPGPKeys a map of untrusted PGP public keys to the
+ * set of keys of the artifacts signed by that
+ * key.
+ * @param unsignedArtifacts a set of keys of the artifacts that are not
+ * signed.
+ * @param artifactFiles a map from artifact keys to the file
+ * associated with that artifact key.
+ *
+ * @return the TrustInfo that describes the user's choices for trusting
+ * certificates, keys, and unsigned content.
+ *
+ * @see #getTrustInfo(Map, Map, Set, Map)
+ * @see UIServices#getTrustInfo(Certificate[][], Collection, String[])
+ */
+ static TrustInfo getTrustInfo(UIServices uiServices, //
+ Map<List<Certificate>, Set<IArtifactKey>> untrustedCertificateChains, //
+ Map<PGPPublicKey, Set<IArtifactKey>> untrustedPGPKeys, //
+ Set<IArtifactKey> unsignedArtifacts, //
+ Map<IArtifactKey, File> artifactFiles) {
+ Certificate[][] unTrustedCertificateChainsArray = untrustedCertificateChains.keySet().stream()
+ .map(c -> c.toArray(Certificate[]::new)).toArray(Certificate[][]::new);
+ String[] details = unsignedArtifacts.isEmpty() ? null
+ : unsignedArtifacts.stream().map(artifactFiles::get).map(Objects::toString).toArray(String[]::new);
+ return uiServices.getTrustInfo(unTrustedCertificateChainsArray, untrustedPGPKeys.keySet(), details);
+ }
+}
diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/spi/PGPPublicKeyService.java b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/spi/PGPPublicKeyService.java
new file mode 100644
index 000000000..6fbdff286
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/spi/PGPPublicKeyService.java
@@ -0,0 +1,243 @@
+/*******************************************************************************
+ * Copyright (c) 2022 Eclipse contributors and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.equinox.p2.repository.spi;
+
+import java.util.*;
+import org.bouncycastle.openpgp.PGPPublicKey;
+import org.bouncycastle.openpgp.PGPSignature;
+import org.bouncycastle.util.encoders.Hex;
+import org.eclipse.equinox.p2.core.IProvisioningAgent;
+import org.eclipse.equinox.p2.core.spi.IAgentServiceFactory;
+
+/**
+ * A service for managing and searching {@link PGPPublicKey keys}.
+ * Implementations may make use of a
+ * <a href="https://datatracker.ietf.org/doc/html/draft-shaw-openpgp-hkp-00">key
+ * server</a> to fetch up-to-date information about keys. Implementations should
+ * generally provide support for caching and efficient lookup of keys,
+ * especially lookup based on {@link PGPPublicKey#getKeyID() key ID} because
+ * signatures generally use {@link PGPSignature#getKeyID() key IDs} and this is
+ * the primary use case.
+ *
+ * <p>
+ * Implementors of this service are responsible for registering the
+ * implementation with the {@link IProvisioningAgent provisioning agent} either
+ * {@link IProvisioningAgent#registerService(String, Object) explicitly} or via
+ * an {@link IAgentServiceFactory agent service factory}.
+ * </p>
+ *
+ * @see PGPPublicKey#getKeyID()
+ * @see PGPSignature#getKeyID()
+ * @see IAgentServiceFactory
+ * @see IProvisioningAgent#registerService(String, Object)
+ *
+ * @since 2.6
+ */
+public abstract class PGPPublicKeyService {
+ /**
+ * The name used for obtaining a reference to the key service.
+ *
+ * @see IProvisioningAgent#getService(Class)
+ * @see IProvisioningAgent#getService(String)
+ */
+ public static final String SERVICE_NAME = PGPPublicKeyService.class.getName();
+
+ /**
+ * Returns the key associated with the given
+ * {@link PGPPublicKey#getFingerprint() fingerprint}.
+ *
+ * @param fingerprint the fingerprint for which to search.
+ * @return the key with the matching fingerprint.
+ *
+ * @see PGPPublicKey#getFingerprint()
+ */
+ public PGPPublicKey getKey(byte[] fingerprint) {
+ return getKey(toHex(fingerprint));
+ }
+
+ /**
+ * Returns the key associated with the given
+ * {@link PGPPublicKey#getFingerprint() fingerprint} represented as a
+ * {@link #toHex(byte[]) hexadecimal} string value.
+ *
+ * @param fingerprint the fingerprint for which to search.
+ * @return the key with the matching fingerprint.
+ *
+ * @see PGPPublicKey#getFingerprint()
+ * @see #toHex(byte[])
+ */
+ public abstract PGPPublicKey getKey(String fingerprint);
+
+ /**
+ * Returns the keys associated with the given {@link PGPPublicKey#getKeyID() key
+ * ID}. In general, key ID collisions are possible so implementations must be
+ * tolerant of that.
+ *
+ * @param keyID the key ID for which to search.
+ * @return the keys with the matching key IDs.
+ *
+ * @see PGPPublicKey#getKeyID()
+ * @see PGPSignature#getKeyID()
+ */
+ public abstract Collection<PGPPublicKey> getKeys(long keyID);
+
+ /**
+ * Adds the given key to this key service. An implementations may fetch more
+ * up-to-date information about this key from a key server and may return a
+ * different key than the one passed in here. In general an implementation may
+ * also return an existing key, with the same fingerprint, already known to the
+ * key service.
+ *
+ * @param key the key to add.
+ * @return the normalized key available in this key service.
+ */
+ public abstract PGPPublicKey addKey(PGPPublicKey key);
+
+ /**
+ * Returns the set of keys that have been verified to have signed the given key.
+ * These are the links in the web of trust.
+ *
+ * @param key the key for which to find keys that have signed it.
+ * @return the set of keys that have been verified to have signed the given key.
+ *
+ * @see PGPSignature#verifyCertification(String, PGPPublicKey)
+ * @see PGPSignature#verifyCertification(PGPPublicKey, PGPPublicKey)
+ */
+ public abstract Set<PGPPublicKey> getVerifiedCertifications(PGPPublicKey key);
+
+ /**
+ * If this key has a revocation signature that is verified to have been signed
+ * by the public key of that revocation signature, this returns the
+ * {@link PGPSignature#getCreationTime() creation time} of that signature,
+ * otherwise it returns <code>null</code>.
+ *
+ * @param key the key to test for revocation.
+ * @return when this key was verifiably revoked, or <code>null</code> if it is
+ * not revoked.
+ *
+ * @see PGPSignature#getKeyID()
+ * @see PGPPublicKey#hasRevocation()
+ * @see PGPSignature#getCreationTime()
+ * @see PGPSignature#KEY_REVOCATION
+ * @see PGPSignature#SUBKEY_REVOCATION
+ */
+ public abstract Date getVerifiedRevocationDate(PGPPublicKey key);
+
+ /**
+ * Returns whether the signature's {@link PGPSignature creation time} is before
+ * the key's {@link #getVerifiedRevocationDate(PGPPublicKey) verified revocation
+ * date}, if that key has one.
+ *
+ * @param signature the signature to test.
+ * @param key the corresponding key of this signature against which to
+ * test.
+ * @return <code>true</code> if the signature was created before the key was
+ * revoked or if the key is not revoked, <code>false</code> otherwise.
+ *
+ * @throws IllegalArgumentException if the signature's
+ * {@link PGPSignature#getKeyID() key} is not
+ * the same as the key's
+ * {@link PGPPublicKey#getKeyID() key ID}
+ */
+ public boolean isCreatedBeforeRevocation(PGPSignature signature, PGPPublicKey key) {
+ if (signature.getKeyID() != key.getKeyID()) {
+ throw new IllegalArgumentException("The signature's key ID must be the same as the key's key ID"); //$NON-NLS-1$
+ }
+ Date verifiedRevocationDate = getVerifiedRevocationDate(key);
+ if (verifiedRevocationDate != null) {
+ long signatureCreationTime = signature.getCreationTime().getTime();
+ if (signatureCreationTime >= verifiedRevocationDate.getTime()) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Returns the hexadecimal representation of the key's
+ * {@link PGPPublicKey#getFingerprint() fingerprint}.
+ *
+ * @param key the key for which to get the hexadecimal fingerprint.
+ *
+ * @return the hexadecimal representation of the key's fingerprint.
+ */
+ public static String toHexFingerprint(PGPPublicKey key) {
+ return Hex.toHexString(key.getFingerprint());
+ }
+
+ /**
+ * Returns the hexadecimal representation of the given bytes.
+ *
+ * @param bytes the bytes to convert to a hexadecimal representation.
+ * @return the hexadecimal representation of the given bytes.
+ */
+ public static String toHex(byte[] bytes) {
+ return Hex.toHexString(bytes);
+ }
+
+ /**
+ * Returns the hexadecimal representation of the given long value, typically a
+ * key ID, padded with leading zeros to a length of 16.
+ *
+ * @param keyID the long value, typically a key ID, to convert to a hexadecimal
+ * representation.
+ * @return the hexadecimal representation of the given long value, padded with
+ * leading zeros.
+ */
+ public static String toHex(long keyID) {
+ return String.format("%1$016x", keyID); //$NON-NLS-1$
+ }
+
+ /**
+ * If the signature's {@link PGPSignature#getCreationTime() creation time} is
+ * before the key's {@link PGPPublicKey#getCreationTime() creation time}, this
+ * returns a negative value equal to the number of milliseconds that the
+ * signature was created before the key was created. If the key has a
+ * {@link PGPPublicKey#getValidSeconds() validity period}, i.e., if the key
+ * expires, and the signature's creation time is after the key's expiration,
+ * returns a positive value equal to the number of milliseconds that the
+ * signature was created after the key's expiration. Otherwise, the signature
+ * was created during the period of time that the key was valid and this returns
+ * <code>0</code>.
+ *
+ * @param signature the signature to test.
+ * @param key the corresponding key of this signature against which to
+ * test.
+ * @return a negative value representing the number of milliseconds the
+ * signature was created before the key was created, a positive value
+ * representing the number of milliseconds the signature as created
+ * after the key expired, or <code>0</code> if the signature was created
+ * during the valid period of the key.
+ * @throws IllegalArgumentException if the signature's
+ * {@link PGPSignature#getKeyID() key} is not
+ * the same as the key's
+ * {@link PGPPublicKey#getKeyID() key ID}
+ */
+ public static long compareSignatureTimeToKeyValidityTime(PGPSignature signature, PGPPublicKey key) {
+ if (signature.getKeyID() != key.getKeyID()) {
+ throw new IllegalArgumentException("The signature's key ID must be the same as the key's key ID"); //$NON-NLS-1$
+ }
+ long keyCreationTime = key.getCreationTime().getTime();
+ long signatureCreationTime = signature.getCreationTime().getTime();
+ long delta = signatureCreationTime - keyCreationTime;
+ if (delta < 0) {
+ return delta;
+ }
+ long validSeconds = key.getValidSeconds();
+ if (validSeconds != 0) {
+ delta = signatureCreationTime - (keyCreationTime + validSeconds * 1000);
+ if (delta > 0) {
+ return delta;
+ }
+ }
+ return 0;
+ }
+}
diff --git a/bundles/org.eclipse.equinox.p2.sar/.classpath b/bundles/org.eclipse.equinox.p2.sar/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.sar/.classpath
+++ b/bundles/org.eclipse.equinox.p2.sar/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.sar/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.sar/.settings/org.eclipse.jdt.core.prefs
index 2ac7183aa..53cfcf706 100644
--- a/bundles/org.eclipse.equinox.p2.sar/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.sar/.settings/org.eclipse.jdt.core.prefs
@@ -18,9 +18,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -37,6 +37,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -90,6 +91,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -126,10 +128,11 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -137,20 +140,23 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -242,11 +248,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -277,6 +284,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -301,13 +310,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -355,6 +368,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -391,9 +406,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -429,10 +447,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.equinox.p2.sar/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.sar/META-INF/MANIFEST.MF
index 14256c8cb..00469f5fe 100644
--- a/bundles/org.eclipse.equinox.p2.sar/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.sar/META-INF/MANIFEST.MF
@@ -2,9 +2,9 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Sar Plug-in
Bundle-SymbolicName: org.eclipse.equinox.p2.sar;singleton:=true
-Bundle-Version: 0.2.0.qualifier
+Bundle-Version: 0.3.0.qualifier
Import-Package: org.osgi.framework;version="1.3.0"
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.equinox.internal.p2.sar;x-friends:="org.eclipse.equinox.p2.artifact.optimizers,org.eclipse.equinox.p2.artifact.processors"
Automatic-Module-Name: org.eclipse.equinox.p2.sar
diff --git a/bundles/org.eclipse.equinox.p2.sar/pom.xml b/bundles/org.eclipse.equinox.p2.sar/pom.xml
index 2b87473ea..fb9f99428 100644
--- a/bundles/org.eclipse.equinox.p2.sar/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.sar/pom.xml
@@ -4,15 +4,12 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.sar</artifactId>
- <version>0.2.0-SNAPSHOT</version>
+ <version>0.3.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
- <properties>
- <skipAPIAnalysis>true</skipAPIAnalysis>
- </properties>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.tests.discovery/.classpath b/bundles/org.eclipse.equinox.p2.tests.discovery/.classpath
index c552bdbf4..0632a4d48 100644
--- a/bundles/org.eclipse.equinox.p2.tests.discovery/.classpath
+++ b/bundles/org.eclipse.equinox.p2.tests.discovery/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">
<accessrules>
<accessrule kind="accessible" pattern="**/internal/**"/>
diff --git a/bundles/org.eclipse.equinox.p2.tests.discovery/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.tests.discovery/.settings/org.eclipse.jdt.core.prefs
index c28a10615..3d432ca34 100644
--- a/bundles/org.eclipse.equinox.p2.tests.discovery/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.tests.discovery/.settings/org.eclipse.jdt.core.prefs
@@ -18,9 +18,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -37,6 +37,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -90,6 +91,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -126,10 +128,11 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -137,20 +140,23 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -242,11 +248,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -277,6 +284,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -301,13 +310,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -355,6 +368,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -391,9 +406,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -429,10 +447,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.equinox.p2.tests.discovery/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.tests.discovery/META-INF/MANIFEST.MF
index 154242c9a..361f71e5e 100644
--- a/bundles/org.eclipse.equinox.p2.tests.discovery/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.tests.discovery/META-INF/MANIFEST.MF
@@ -2,8 +2,8 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.equinox.p2.tests.discovery;singleton:=true
-Bundle-Version: 1.2.0.qualifier
-Bundle-Vendor: %Bundle-Provider
+Bundle-Version: 1.3.200.qualifier
+Bundle-Vendor: %Bundle-Vendor
Bundle-Localization: plugin
Export-Package: org.eclipse.equinox.p2.discovery.tests;x-internal:=true,
org.eclipse.equinox.p2.discovery.tests.core;x-internal:=true,
@@ -15,6 +15,6 @@ Require-Bundle: org.eclipse.equinox.p2.discovery;bundle-version="1.0.0",
org.junit;bundle-version="3.8.0",
org.eclipse.core.runtime;bundle-version="3.1.0",
org.eclipse.ui;bundle-version="3.1.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Eclipse-BundleShape: dir
Automatic-Module-Name: org.eclipse.equinox.p2.tests.discovery
diff --git a/bundles/org.eclipse.equinox.p2.tests.discovery/plugin.xml b/bundles/org.eclipse.equinox.p2.tests.discovery/plugin.xml
index 968754bef..f6f6a95f0 100644
--- a/bundles/org.eclipse.equinox.p2.tests.discovery/plugin.xml
+++ b/bundles/org.eclipse.equinox.p2.tests.discovery/plugin.xml
@@ -86,7 +86,7 @@
style="push">
<parameter
name="org.eclipse.equinox.p2.ui.discovery.commands.DirectoryParameter"
- value="http://www.eclipse.org/mylyn/discovery/directory-3.3.xml">
+ value="https://www.eclipse.org/mylyn/discovery/directory-3.3.xml">
</parameter>
<parameter
name="org.eclipse.equinox.p2.ui.discovery.commands.TagsParameter"
@@ -99,7 +99,7 @@
style="push">
<parameter
name="org.eclipse.equinox.p2.ui.discovery.commands.RepositoryParameter"
- value="http://download.eclipse.org/tools/mylyn/update/e3.4">
+ value="https://download.eclipse.org/tools/mylyn/update/e3.4">
</parameter>
</command>
</menuContribution>
diff --git a/bundles/org.eclipse.equinox.p2.tests.discovery/pom.xml b/bundles/org.eclipse.equinox.p2.tests.discovery/pom.xml
index 5b0c73f83..ce3ff89b1 100644
--- a/bundles/org.eclipse.equinox.p2.tests.discovery/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.tests.discovery/pom.xml
@@ -4,12 +4,12 @@
<parent>
<artifactId>org.eclipse.equinox.p2.tests-parent</artifactId>
<groupId>org.eclipse</groupId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../../org.eclipse.equinox.p2.releng/org.eclipse.equinox.p2.tests-parent</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.tests.discovery</artifactId>
- <version>1.2.0-SNAPSHOT</version>
+ <version>1.3.200-SNAPSHOT</version>
<packaging>eclipse-test-plugin</packaging>
<properties>
diff --git a/bundles/org.eclipse.equinox.p2.tests.optimizers/.classpath b/bundles/org.eclipse.equinox.p2.tests.optimizers/.classpath
index 3e5654f17..a42a828e0 100644
--- a/bundles/org.eclipse.equinox.p2.tests.optimizers/.classpath
+++ b/bundles/org.eclipse.equinox.p2.tests.optimizers/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src">
<attributes>
diff --git a/bundles/org.eclipse.equinox.p2.tests.optimizers/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.tests.optimizers/.settings/org.eclipse.jdt.core.prefs
index e2a30177b..ed9fa7d81 100644
--- a/bundles/org.eclipse.equinox.p2.tests.optimizers/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.tests.optimizers/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -36,6 +36,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -89,6 +90,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -125,10 +127,11 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=warning
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -136,20 +139,23 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -241,11 +247,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -276,6 +283,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -300,13 +309,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -354,6 +367,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -390,9 +405,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -428,10 +446,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.equinox.p2.tests.optimizers/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.tests.optimizers/META-INF/MANIFEST.MF
index 146dc00cf..722aaa7af 100644
--- a/bundles/org.eclipse.equinox.p2.tests.optimizers/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.tests.optimizers/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: p2 Optimizers Test Plug-in
Bundle-SymbolicName: org.eclipse.equinox.p2.tests.optimizers;singleton:=true
-Bundle-Version: 1.1.0.qualifier
+Bundle-Version: 1.2.0.qualifier
Bundle-Activator: org.eclipse.equinox.p2.tests.optimizers.TestActivator
Export-Package: org.eclipse.equinox.p2.tests.artifact.optimizers;version="2.0.0",
org.eclipse.equinox.p2.tests.artifact.processors;version="2.0.0",
@@ -16,7 +16,7 @@ Require-Bundle: org.eclipse.equinox.common;bundle-version="3.4.0",
org.eclipse.equinox.p2.artifact.processors;bundle-version="1.0.100",
org.eclipse.equinox.p2.metadata;bundle-version="2.2.0",
org.eclipse.equinox.p2.core;bundle-version="2.3.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Import-Package: org.eclipse.equinox.internal.p2.artifact.optimizers,
org.eclipse.equinox.internal.p2.artifact.optimizers.jardelta,
org.eclipse.equinox.internal.p2.artifact.optimizers.pack200,
diff --git a/bundles/org.eclipse.equinox.p2.tests.optimizers/pom.xml b/bundles/org.eclipse.equinox.p2.tests.optimizers/pom.xml
index 9e736eef5..089a4d389 100644
--- a/bundles/org.eclipse.equinox.p2.tests.optimizers/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.tests.optimizers/pom.xml
@@ -4,17 +4,16 @@
<parent>
<artifactId>org.eclipse.equinox.p2.tests-parent</artifactId>
<groupId>org.eclipse</groupId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../../org.eclipse.equinox.p2.releng/org.eclipse.equinox.p2.tests-parent</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.tests.optimizers</artifactId>
- <version>1.1.0-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<packaging>eclipse-test-plugin</packaging>
<properties>
<testSuite>${project.artifactId}</testSuite>
<testClass>org.eclipse.equinox.p2.tests.optimizers.AutomatedTests</testClass>
- <skipAPIAnalysis>true</skipAPIAnalysis>
</properties>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.tests.optimizers/src/org/eclipse/equinox/p2/tests/artifact/processors/AllTests.java b/bundles/org.eclipse.equinox.p2.tests.optimizers/src/org/eclipse/equinox/p2/tests/artifact/processors/AllTests.java
index f50c28e2f..e1a937c48 100644
--- a/bundles/org.eclipse.equinox.p2.tests.optimizers/src/org/eclipse/equinox/p2/tests/artifact/processors/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests.optimizers/src/org/eclipse/equinox/p2/tests/artifact/processors/AllTests.java
@@ -13,7 +13,6 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.artifact.processors;
-import junit.framework.TestCase;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@@ -21,7 +20,7 @@ import org.junit.runners.Suite;
* Performs all automated director tests.
*/
@RunWith(Suite.class)
-@Suite.SuiteClasses({JarDeltaProcessorTest.class})
-public class AllTests extends TestCase {
- //test suite
+@Suite.SuiteClasses({ JarDeltaProcessorTest.class })
+public class AllTests {
+ // test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests.optimizers/src/org/eclipse/equinox/p2/tests/optimizers/AutomatedTests.java b/bundles/org.eclipse.equinox.p2.tests.optimizers/src/org/eclipse/equinox/p2/tests/optimizers/AutomatedTests.java
index 43628ced6..a6753b496 100644
--- a/bundles/org.eclipse.equinox.p2.tests.optimizers/src/org/eclipse/equinox/p2/tests/optimizers/AutomatedTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests.optimizers/src/org/eclipse/equinox/p2/tests/optimizers/AutomatedTests.java
@@ -13,15 +13,13 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.optimizers;
-import junit.framework.TestCase;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
-/**
- * @since 1.0
- */
@RunWith(Suite.class)
-@Suite.SuiteClasses({org.eclipse.equinox.p2.tests.artifact.optimizers.AllTests.class, org.eclipse.equinox.p2.tests.artifact.processors.AllTests.class, org.eclipse.equinox.p2.tests.sar.AllTests.class})
-public class AutomatedTests extends TestCase {
+@Suite.SuiteClasses({ org.eclipse.equinox.p2.tests.artifact.optimizers.AllTests.class,
+ org.eclipse.equinox.p2.tests.artifact.processors.AllTests.class,
+ org.eclipse.equinox.p2.tests.sar.AllTests.class })
+public class AutomatedTests {
// test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests.optimizers/src/org/eclipse/equinox/p2/tests/sar/AllTests.java b/bundles/org.eclipse.equinox.p2.tests.optimizers/src/org/eclipse/equinox/p2/tests/sar/AllTests.java
index ca2c4c0cd..650b2b414 100644
--- a/bundles/org.eclipse.equinox.p2.tests.optimizers/src/org/eclipse/equinox/p2/tests/sar/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests.optimizers/src/org/eclipse/equinox/p2/tests/sar/AllTests.java
@@ -13,7 +13,6 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.sar;
-import junit.framework.TestCase;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@@ -21,7 +20,7 @@ import org.junit.runners.Suite;
* Performs all sar tests.
*/
@RunWith(Suite.class)
-@Suite.SuiteClasses({DirectByteArrayOutputStreamTest.class, SarTest.class, SarEntryTest.class})
-public class AllTests extends TestCase {
+@Suite.SuiteClasses({ DirectByteArrayOutputStreamTest.class, SarTest.class, SarEntryTest.class })
+public class AllTests {
// test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests.reconciler.product/forceQualifierUpdate.txt b/bundles/org.eclipse.equinox.p2.tests.reconciler.product/forceQualifierUpdate.txt
index e415d165d..623363fc5 100644
--- a/bundles/org.eclipse.equinox.p2.tests.reconciler.product/forceQualifierUpdate.txt
+++ b/bundles/org.eclipse.equinox.p2.tests.reconciler.product/forceQualifierUpdate.txt
@@ -1,3 +1,4 @@
# To force a version qualifier update add the bug here
Bug 532094 - Update releng with new hamcrest and apache batik
Update to Tycho 1.2.0
+Update to JUnit 4.13
diff --git a/bundles/org.eclipse.equinox.p2.tests.reconciler.product/pom.xml b/bundles/org.eclipse.equinox.p2.tests.reconciler.product/pom.xml
index d0089307b..13eefc82a 100644
--- a/bundles/org.eclipse.equinox.p2.tests.reconciler.product/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.tests.reconciler.product/pom.xml
@@ -11,7 +11,7 @@
<parent>
<groupId>org.eclipse</groupId>
<artifactId>org.eclipse.equinox.p2.tests-parent</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../../org.eclipse.equinox.p2.releng/org.eclipse.equinox.p2.tests-parent</relativePath>
</parent>
diff --git a/bundles/org.eclipse.equinox.p2.tests.reconciler.product/reconciler.product b/bundles/org.eclipse.equinox.p2.tests.reconciler.product/reconciler.product
index 1ce9fca7b..0532b3ab5 100644
--- a/bundles/org.eclipse.equinox.p2.tests.reconciler.product/reconciler.product
+++ b/bundles/org.eclipse.equinox.p2.tests.reconciler.product/reconciler.product
@@ -24,6 +24,8 @@
<plugins>
<plugin id="com.ibm.icu"/>
+ <plugin id="com.sun.jna"/>
+ <plugin id="com.sun.jna.platform"/>
<plugin id="javax.annotation"/>
<plugin id="javax.inject"/>
<plugin id="javax.xml"/>
@@ -36,8 +38,8 @@
<plugin id="org.apache.commons.jxpath"/>
<plugin id="org.apache.commons.logging"/>
<plugin id="org.apache.felix.scr"/>
- <plugin id="org.apache.httpcomponents.httpclient"/>
- <plugin id="org.apache.httpcomponents.httpcore"/>
+ <plugin id="org.apache.httpcomponents.client5.httpclient5"/>
+ <plugin id="org.apache.httpcomponents.core5.httpcore5"/>
<plugin id="org.apache.xmlgraphics"/>
<plugin id="org.eclipse.core.commands"/>
<plugin id="org.eclipse.core.contenttype"/>
@@ -47,7 +49,7 @@
<plugin id="org.eclipse.core.expressions"/>
<plugin id="org.eclipse.core.jobs"/>
<plugin id="org.eclipse.core.net"/>
- <plugin id="org.eclipse.core.net.linux.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.core.net.linux" fragment="true"/>
<plugin id="org.eclipse.core.runtime"/>
<plugin id="org.eclipse.e4.core.commands"/>
<plugin id="org.eclipse.e4.core.contexts"/>
@@ -62,6 +64,7 @@
<plugin id="org.eclipse.e4.ui.css.swt"/>
<plugin id="org.eclipse.e4.ui.css.swt.theme"/>
<plugin id="org.eclipse.e4.ui.di"/>
+ <plugin id="org.eclipse.e4.ui.dialogs"/>
<plugin id="org.eclipse.e4.ui.model.workbench"/>
<plugin id="org.eclipse.e4.ui.services"/>
<plugin id="org.eclipse.e4.ui.swt.gtk" fragment="true"/>
@@ -75,7 +78,7 @@
<plugin id="org.eclipse.ecf.filetransfer"/>
<plugin id="org.eclipse.ecf.identity"/>
<plugin id="org.eclipse.ecf.provider.filetransfer"/>
- <plugin id="org.eclipse.ecf.provider.filetransfer.httpclient45"/>
+ <plugin id="org.eclipse.ecf.provider.filetransfer.httpclient5"/>
<plugin id="org.eclipse.ecf.provider.filetransfer.source"/>
<plugin id="org.eclipse.ecf.provider.filetransfer.ssl" fragment="true"/>
<plugin id="org.eclipse.ecf.ssl" fragment="true"/>
@@ -85,12 +88,10 @@
<plugin id="org.eclipse.emf.ecore.xmi"/>
<plugin id="org.eclipse.equinox.app"/>
<plugin id="org.eclipse.equinox.common"/>
- <plugin id="org.eclipse.equinox.ds"/>
+ <plugin id="org.eclipse.equinox.concurrent"/>
<plugin id="org.eclipse.equinox.event"/>
<plugin id="org.eclipse.equinox.frameworkadmin"/>
<plugin id="org.eclipse.equinox.frameworkadmin.equinox"/>
- <plugin id="org.eclipse.equinox.p2.artifact.optimizers"/>
- <plugin id="org.eclipse.equinox.p2.artifact.processors"/>
<plugin id="org.eclipse.equinox.p2.artifact.repository"/>
<plugin id="org.eclipse.equinox.p2.core"/>
<plugin id="org.eclipse.equinox.p2.director"/>
@@ -110,7 +111,6 @@
<plugin id="org.eclipse.equinox.p2.publisher.eclipse"/>
<plugin id="org.eclipse.equinox.p2.reconciler.dropins"/>
<plugin id="org.eclipse.equinox.p2.repository"/>
- <plugin id="org.eclipse.equinox.p2.sar"/>
<plugin id="org.eclipse.equinox.p2.touchpoint.eclipse"/>
<plugin id="org.eclipse.equinox.p2.touchpoint.natives"/>
<plugin id="org.eclipse.equinox.p2.transport.ecf"/>
@@ -120,13 +120,14 @@
<plugin id="org.eclipse.equinox.preferences"/>
<plugin id="org.eclipse.equinox.registry"/>
<plugin id="org.eclipse.equinox.security"/>
- <plugin id="org.eclipse.equinox.security.linux.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.equinox.security.linux" fragment="true"/>
<plugin id="org.eclipse.equinox.security.ui"/>
<plugin id="org.eclipse.equinox.simpleconfigurator"/>
<plugin id="org.eclipse.equinox.simpleconfigurator.manipulator"/>
<plugin id="org.eclipse.help"/>
<plugin id="org.eclipse.jface"/>
<plugin id="org.eclipse.jface.databinding"/>
+ <plugin id="org.eclipse.jface.notifications"/>
<plugin id="org.eclipse.osgi"/>
<plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/>
<plugin id="org.eclipse.osgi.services"/>
@@ -137,6 +138,7 @@
<plugin id="org.eclipse.swt.win32.win32.x86_64" fragment="true"/>
<plugin id="org.eclipse.ui"/>
<plugin id="org.eclipse.ui.workbench"/>
+ <plugin id="org.eclipse.urischeme"/>
<plugin id="org.sat4j.core"/>
<plugin id="org.sat4j.pb"/>
<plugin id="org.tukaani.xz"/>
@@ -147,9 +149,9 @@
</plugins>
<configurations>
+ <plugin id="org.apache.felix.scr" autoStart="true" startLevel="3" />
<plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
- <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="3" />
<plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="3" />
<plugin id="org.eclipse.equinox.p2.reconciler.dropins" autoStart="true" startLevel="4" />
<plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />
diff --git a/bundles/org.eclipse.equinox.p2.tests.ui/.classpath b/bundles/org.eclipse.equinox.p2.tests.ui/.classpath
index 3e5654f17..a42a828e0 100644
--- a/bundles/org.eclipse.equinox.p2.tests.ui/.classpath
+++ b/bundles/org.eclipse.equinox.p2.tests.ui/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src">
<attributes>
diff --git a/bundles/org.eclipse.equinox.p2.tests.ui/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.tests.ui/.settings/org.eclipse.jdt.core.prefs
index ad18d9818..6d4bd9887 100644
--- a/bundles/org.eclipse.equinox.p2.tests.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.tests.ui/.settings/org.eclipse.jdt.core.prefs
@@ -18,9 +18,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -37,6 +37,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -94,6 +95,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -130,9 +132,11 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -140,21 +144,24 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -246,11 +253,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -281,6 +289,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -305,13 +315,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -359,6 +373,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -395,9 +411,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -436,10 +455,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.equinox.p2.tests.ui/All p2 UI tests.launch b/bundles/org.eclipse.equinox.p2.tests.ui/All p2 UI tests.launch
index f58743255..d1009331c 100644
--- a/bundles/org.eclipse.equinox.p2.tests.ui/All p2 UI tests.launch
+++ b/bundles/org.eclipse.equinox.p2.tests.ui/All p2 UI tests.launch
@@ -1,72 +1,428 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
-<booleanAttribute key="append.args" value="true"/>
-<booleanAttribute key="askclear" value="false"/>
-<booleanAttribute key="automaticAdd" value="true"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="true"/>
-<booleanAttribute key="clearws" value="true"/>
-<booleanAttribute key="clearwslog" value="false"/>
-<booleanAttribute key="com.mountainminds.eclemma.core.INPLACE_INSTRUMENTATION" value="true"/>
-<listAttribute key="com.mountainminds.eclemma.core.INSTRUMENTATION_PATHS">
-<listEntry value="/org.eclipse.equinox.p2.updatechecker/bin"/>
-<listEntry value="/org.eclipse.equinox.frameworkadmin.equinox/bin"/>
-<listEntry value="/org.eclipse.equinox.p2.updatesite/bin"/>
-<listEntry value="/org.eclipse.equinox.p2.core/bin"/>
-<listEntry value="/org.eclipse.equinox.p2.extensionlocation/bin"/>
-<listEntry value="/org.eclipse.equinox.p2.director.app/bin"/>
-<listEntry value="/org.eclipse.equinox.p2.console/bin"/>
-<listEntry value="/org.eclipse.equinox.frameworkadmin/bin"/>
-<listEntry value="/org.eclipse.equinox.p2.engine/bin"/>
-<listEntry value="/org.eclipse.equinox.p2.exemplarysetup/bin"/>
-<listEntry value="/org.eclipse.equinox.p2.metadata.repository/bin"/>
-<listEntry value="/org.eclipse.equinox.p2.publisher/bin"/>
-<listEntry value="/org.eclipse.equinox.p2.ui.sdk/bin"/>
-<listEntry value="/org.eclipse.equinox.p2.directorywatcher/bin"/>
-<listEntry value="/org.eclipse.equinox.simpleconfigurator.manipulator/bin"/>
-<listEntry value="/org.eclipse.equinox.p2.metadata/bin"/>
-<listEntry value="/org.eclipse.equinox.p2.touchpoint.natives/bin"/>
-<listEntry value="/org.eclipse.equinox.p2.artifact.repository/bin"/>
-<listEntry value="/org.eclipse.equinox.p2.metadata.generator/bin"/>
-<listEntry value="/org.eclipse.equinox.p2.jarprocessor/bin"/>
-<listEntry value="/org.eclipse.equinox.p2.reconciler.dropins/bin"/>
-<listEntry value="/org.eclipse.equinox.simpleconfigurator/bin"/>
-<listEntry value="/org.eclipse.equinox.p2.director/bin"/>
-<listEntry value="/org.eclipse.equinox.p2.ui/bin"/>
-<listEntry value="/org.eclipse.equinox.p2.garbagecollector/bin"/>
-<listEntry value="/org.eclipse.equinox.p2.touchpoint.eclipse/bin"/>
-</listAttribute>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
-<booleanAttribute key="default" value="false"/>
-<booleanAttribute key="generateProfile" value="true"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/AutomatedTests.java"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="1"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
-<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
-<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
-<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.equinox.p2.tests.ui.AutomatedTests"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -console -consoleLog"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.equinox.p2.tests.ui"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
-<booleanAttribute key="run_in_ui_thread" value="true"/>
-<stringAttribute key="selected_target_plugins" value="ch.qos.logback.classic@default:default,ch.qos.logback.core@default:default,ch.qos.logback.slf4j@default:default,com.google.gson*2.8.2.v20180104-1110@default:default,com.google.guava@default:default,com.ibm.icu@default:default,com.jcraft.jsch@default:default,com.jcraft.jzlib@default:default,javaewah@default:default,javax.annotation@default:default,javax.el@default:default,javax.inject@default:default,javax.servlet.jsp@default:default,javax.servlet@default:default,javax.xml@default:default,org.apache.ant@default:default,org.apache.batik.constants@default:default,org.apache.batik.css@default:default,org.apache.batik.i18n@default:default,org.apache.batik.util@default:default,org.apache.commons.codec@default:default,org.apache.commons.httpclient@default:default,org.apache.commons.io@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.lang@default:default,org.apache.commons.logging@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.scr@1:true,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.apache.jasper.glassfish@default:default,org.apache.log4j@default:default,org.apache.lucene.analyzers-common*7.1.0.v20180122-2126@default:default,org.apache.lucene.analyzers-smartcn@default:default,org.apache.lucene.core*7.1.0.v20171214-1510@default:default,org.apache.xerces@default:default,org.apache.xml.resolver@default:default,org.apache.xml.serializer@default:default,org.apache.xmlgraphics@default:default,org.apiguardian@default:default,org.easymock@default:default,org.eclipse.ant.core@default:default,org.eclipse.ant.launching@default:default,org.eclipse.ant.optional.junit@default:default,org.eclipse.ant.ui@default:default,org.eclipse.compare.core@default:default,org.eclipse.compare@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.beans@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.externaltools@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.linux.x86_64@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.linux.x86_64@default:default,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.tests.harness@default:default,org.eclipse.core.variables@default:default,org.eclipse.debug.core@default:default,org.eclipse.debug.ui@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions.supplier@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.swt.gtk@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.httpclient4.ssl@default:default,org.eclipse.ecf.provider.filetransfer.httpclient4@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.egit.core@default:default,org.eclipse.egit.ui.smartimport@default:default,org.eclipse.egit.ui@default:default,org.eclipse.egit@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.bidi@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.jsp.jasper.registry@default:default,org.eclipse.equinox.jsp.jasper@default:default,org.eclipse.equinox.launcher.gtk.linux.x86_64@default:default,org.eclipse.equinox.launcher@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.p2.console@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.director.app@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.equinox.p2.directorywatcher@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.extensionlocation@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.operations@default:default,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.equinox.p2.reconciler.dropins@default:default,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.p2.touchpoint.eclipse@default:default,org.eclipse.equinox.p2.touchpoint.natives@default:default,org.eclipse.equinox.p2.ui.sdk.scheduler@default:default,org.eclipse.equinox.p2.ui.sdk@default:default,org.eclipse.equinox.p2.ui@default:default,org.eclipse.equinox.p2.updatechecker@default:default,org.eclipse.equinox.p2.updatesite@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.linux.x86_64@default:default,org.eclipse.equinox.security.ui@default:default,org.eclipse.equinox.security@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.equinox.util@default:default,org.eclipse.help.base@default:default,org.eclipse.help.ui@default:default,org.eclipse.help.webapp@default:default,org.eclipse.help@default:default,org.eclipse.jdt.annotation*2.2.100.v20180626-0953@default:default,org.eclipse.jdt.apt.core@default:default,org.eclipse.jdt.apt.pluggable.core@default:default,org.eclipse.jdt.apt.ui@default:default,org.eclipse.jdt.compiler.apt@default:false,org.eclipse.jdt.compiler.tool@default:false,org.eclipse.jdt.core.manipulation@default:default,org.eclipse.jdt.core@default:default,org.eclipse.jdt.debug.ui@default:default,org.eclipse.jdt.debug@default:default,org.eclipse.jdt.doc.isv@default:default,org.eclipse.jdt.doc.user@default:default,org.eclipse.jdt.junit.core@default:default,org.eclipse.jdt.junit.runtime@default:default,org.eclipse.jdt.junit4.runtime@default:default,org.eclipse.jdt.junit@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.jdt.ui@default:default,org.eclipse.jdt@default:default,org.eclipse.jem.util@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.jgit.lfs@default:default,org.eclipse.jgit@default:default,org.eclipse.jsch.core@default:default,org.eclipse.jsch.ui@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.m2e.archetype.common@default:default,org.eclipse.m2e.core.ui@default:default,org.eclipse.m2e.core@default:default,org.eclipse.m2e.logback.appender@default:default,org.eclipse.m2e.maven.indexer@default:default,org.eclipse.m2e.maven.runtime.slf4j.simple@default:default,org.eclipse.m2e.maven.runtime@default:default,org.eclipse.m2e.model.edit@default:default,org.eclipse.m2e.workspace.cli@default:default,org.eclipse.mylyn.commons.core@default:default,org.eclipse.mylyn.commons.net@default:default,org.eclipse.mylyn.discovery.core@default:default,org.eclipse.osgi.compatibility.state@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.pde.api.tools.ui@default:default,org.eclipse.pde.api.tools@default:default,org.eclipse.pde.build@default:default,org.eclipse.pde.core@default:default,org.eclipse.pde.doc.user@default:default,org.eclipse.pde.ds.core@default:default,org.eclipse.pde.ds.ui@default:default,org.eclipse.pde.junit.runtime@default:default,org.eclipse.pde.launching@default:default,org.eclipse.pde.runtime@default:default,org.eclipse.pde.ua.core@default:default,org.eclipse.pde.ua.ui@default:default,org.eclipse.pde.ui.templates@default:default,org.eclipse.pde.ui@default:default,org.eclipse.pde@default:default,org.eclipse.platform.doc.isv@default:default,org.eclipse.platform.doc.user@default:default,org.eclipse.platform@default:default,org.eclipse.rcp@default:default,org.eclipse.releng.tools@default:default,org.eclipse.sdk@default:default,org.eclipse.search@default:default,org.eclipse.swt.gtk.linux.x86_64@default:default,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.team.ui@default:default,org.eclipse.test.performance.win32@default:default,org.eclipse.test.performance@default:default,org.eclipse.text@default:default,org.eclipse.ui.browser@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.console@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ui.externaltools@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.genericeditor@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro.quicklinks@default:default,org.eclipse.ui.intro.universal@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.net@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views.log@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.eclipse.update.configurator@default:default,org.eclipse.urischeme@default:default,org.eclipse.wst.common.core@default:default,org.eclipse.wst.common.emf@default:default,org.eclipse.wst.common.environment@default:default,org.eclipse.wst.common.frameworks.ui@default:default,org.eclipse.wst.common.frameworks@default:default,org.eclipse.wst.common.project.facet.core@default:default,org.eclipse.wst.common.ui@default:default,org.eclipse.wst.common.uriresolver@default:default,org.eclipse.wst.sse.core@default:default,org.eclipse.wst.sse.ui@default:default,org.eclipse.wst.validation.ui@default:default,org.eclipse.wst.validation@default:default,org.eclipse.wst.xml.core@default:default,org.eclipse.wst.xml.ui@default:default,org.eclipse.wst.xsd.core@default:default,org.eclipse.xsd@default:default,org.hamcrest.core@default:default,org.junit.platform.commons@default:default,org.junit.platform.engine@default:default,org.junit.platform.launcher@default:default,org.junit@default:default,org.objectweb.asm*6.0.0.v20180116-1719@default:default,org.objectweb.asm*6.2.0.v20180807-1520@default:default,org.objectweb.asm.tree*6.2.0.v20180807-1520@default:default,org.opentest4j@default:default,org.sat4j.core@default:default,org.sat4j.pb@default:default,org.slf4j.api@default:default,org.slf4j.impl.log4j12@default:default,org.tukaani.xz@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil@default:default,org.w3c.dom.svg@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.equinox.frameworkadmin.test@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.equinox.p2.artifact.optimizers@default:default,org.eclipse.equinox.p2.artifact.processors@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.p2.console@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.director.app@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.equinox.p2.directorywatcher@default:default,org.eclipse.equinox.p2.discovery.compatibility@default:default,org.eclipse.equinox.p2.discovery@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.extensionlocation@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.equinox.p2.installer@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.operations@default:default,org.eclipse.equinox.p2.publisher.eclipse@default:default,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.equinox.p2.reconciler.dropins@default:default,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.p2.sar@default:default,org.eclipse.equinox.p2.tests.discovery@default:default,org.eclipse.equinox.p2.tests.optimizers@default:default,org.eclipse.equinox.p2.tests.ui@default:default,org.eclipse.equinox.p2.tests.verifier@default:default,org.eclipse.equinox.p2.tests@default:default,org.eclipse.equinox.p2.testserver@default:default,org.eclipse.equinox.p2.touchpoint.eclipse@default:default,org.eclipse.equinox.p2.touchpoint.natives@default:default,org.eclipse.equinox.p2.transport.ecf@default:default,org.eclipse.equinox.p2.ui.admin.rcp@default:default,org.eclipse.equinox.p2.ui.admin@default:default,org.eclipse.equinox.p2.ui.discovery@default:default,org.eclipse.equinox.p2.ui.importexport@default:default,org.eclipse.equinox.p2.ui.sdk.scheduler@default:default,org.eclipse.equinox.p2.ui.sdk@default:default,org.eclipse.equinox.p2.ui@default:default,org.eclipse.equinox.p2.updatechecker@default:default,org.eclipse.equinox.p2.updatesite@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.equinox.simpleconfigurator@1:true"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfig" value="true"/>
-<booleanAttribute key="useDefaultConfigArea" value="false"/>
-<booleanAttribute key="useProduct" value="false"/>
+ <booleanAttribute key="append.args" value="true"/>
+ <booleanAttribute key="askclear" value="false"/>
+ <booleanAttribute key="automaticAdd" value="true"/>
+ <booleanAttribute key="automaticValidate" value="false"/>
+ <stringAttribute key="bootstrap" value=""/>
+ <stringAttribute key="checked" value="[NONE]"/>
+ <booleanAttribute key="clearConfig" value="true"/>
+ <booleanAttribute key="clearws" value="true"/>
+ <booleanAttribute key="clearwslog" value="false"/>
+ <booleanAttribute key="com.mountainminds.eclemma.core.INPLACE_INSTRUMENTATION" value="true"/>
+ <listAttribute key="com.mountainminds.eclemma.core.INSTRUMENTATION_PATHS">
+ <listEntry value="/org.eclipse.equinox.p2.updatechecker/bin"/>
+ <listEntry value="/org.eclipse.equinox.frameworkadmin.equinox/bin"/>
+ <listEntry value="/org.eclipse.equinox.p2.updatesite/bin"/>
+ <listEntry value="/org.eclipse.equinox.p2.core/bin"/>
+ <listEntry value="/org.eclipse.equinox.p2.extensionlocation/bin"/>
+ <listEntry value="/org.eclipse.equinox.p2.director.app/bin"/>
+ <listEntry value="/org.eclipse.equinox.p2.console/bin"/>
+ <listEntry value="/org.eclipse.equinox.frameworkadmin/bin"/>
+ <listEntry value="/org.eclipse.equinox.p2.engine/bin"/>
+ <listEntry value="/org.eclipse.equinox.p2.exemplarysetup/bin"/>
+ <listEntry value="/org.eclipse.equinox.p2.metadata.repository/bin"/>
+ <listEntry value="/org.eclipse.equinox.p2.publisher/bin"/>
+ <listEntry value="/org.eclipse.equinox.p2.ui.sdk/bin"/>
+ <listEntry value="/org.eclipse.equinox.p2.directorywatcher/bin"/>
+ <listEntry value="/org.eclipse.equinox.simpleconfigurator.manipulator/bin"/>
+ <listEntry value="/org.eclipse.equinox.p2.metadata/bin"/>
+ <listEntry value="/org.eclipse.equinox.p2.touchpoint.natives/bin"/>
+ <listEntry value="/org.eclipse.equinox.p2.artifact.repository/bin"/>
+ <listEntry value="/org.eclipse.equinox.p2.metadata.generator/bin"/>
+ <listEntry value="/org.eclipse.equinox.p2.jarprocessor/bin"/>
+ <listEntry value="/org.eclipse.equinox.p2.reconciler.dropins/bin"/>
+ <listEntry value="/org.eclipse.equinox.simpleconfigurator/bin"/>
+ <listEntry value="/org.eclipse.equinox.p2.director/bin"/>
+ <listEntry value="/org.eclipse.equinox.p2.ui/bin"/>
+ <listEntry value="/org.eclipse.equinox.p2.garbagecollector/bin"/>
+ <listEntry value="/org.eclipse.equinox.p2.touchpoint.eclipse/bin"/>
+ </listAttribute>
+ <stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
+ <booleanAttribute key="default" value="false"/>
+ <setAttribute key="deselected_workspace_bundles"/>
+ <booleanAttribute key="generateProfile" value="true"/>
+ <booleanAttribute key="includeOptional" value="true"/>
+ <stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
+ <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+ <listEntry value="/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/AutomatedTests.java"/>
+ </listAttribute>
+ <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+ <listEntry value="1"/>
+ </listAttribute>
+ <stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+ <booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+ <stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+ <stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+ <booleanAttribute key="org.eclipse.jdt.launching.ATTR_ATTR_USE_ARGFILE" value="false"/>
+ <stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.equinox.p2.tests.ui.AutomatedTests"/>
+ <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -console -consoleLog"/>
+ <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.equinox.p2.tests.ui"/>
+ <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+ <stringAttribute key="pde.version" value="3.3"/>
+ <stringAttribute key="product" value="org.eclipse.sdk.ide"/>
+ <booleanAttribute key="run_in_ui_thread" value="true"/>
+ <setAttribute key="selected_target_bundles">
+ <setEntry value="com.google.gson@default:default"/>
+ <setEntry value="com.google.guava*21.0.0.v20170206-1425@default:default"/>
+ <setEntry value="com.google.guava*27.1.0.v20190517-1946@default:default"/>
+ <setEntry value="com.ibm.icu@default:default"/>
+ <setEntry value="com.jcraft.jsch@default:default"/>
+ <setEntry value="com.sun.jna.platform@default:default"/>
+ <setEntry value="com.sun.jna@default:default"/>
+ <setEntry value="jakarta.activation@default:default"/>
+ <setEntry value="javaewah@default:default"/>
+ <setEntry value="javax.activation*2.0.0.v20201118-1818@default:default"/>
+ <setEntry value="javax.annotation@default:default"/>
+ <setEntry value="javax.el@default:default"/>
+ <setEntry value="javax.inject@default:default"/>
+ <setEntry value="javax.servlet.jsp@default:default"/>
+ <setEntry value="javax.xml@default:default"/>
+ <setEntry value="net.i2p.crypto.eddsa@default:default"/>
+ <setEntry value="org.apache.ant@default:default"/>
+ <setEntry value="org.apache.batik.constants@default:default"/>
+ <setEntry value="org.apache.batik.css@default:default"/>
+ <setEntry value="org.apache.batik.i18n@default:default"/>
+ <setEntry value="org.apache.batik.util@default:default"/>
+ <setEntry value="org.apache.commons.codec@default:default"/>
+ <setEntry value="org.apache.commons.fileupload@default:default"/>
+ <setEntry value="org.apache.commons.httpclient@default:default"/>
+ <setEntry value="org.apache.commons.io@default:default"/>
+ <setEntry value="org.apache.commons.jxpath@default:default"/>
+ <setEntry value="org.apache.commons.lang@default:default"/>
+ <setEntry value="org.apache.commons.logging@default:default"/>
+ <setEntry value="org.apache.felix.gogo.command@default:default"/>
+ <setEntry value="org.apache.felix.gogo.runtime@default:default"/>
+ <setEntry value="org.apache.felix.gogo.shell@default:default"/>
+ <setEntry value="org.apache.felix.scr@1:true"/>
+ <setEntry value="org.apache.httpcomponents.httpclient@default:default"/>
+ <setEntry value="org.apache.httpcomponents.httpcore@default:default"/>
+ <setEntry value="org.apache.jasper.glassfish@default:default"/>
+ <setEntry value="org.apache.lucene.analyzers-common*8.4.1.v20200122-1459@default:default"/>
+ <setEntry value="org.apache.lucene.analyzers-smartcn@default:default"/>
+ <setEntry value="org.apache.lucene.core*8.4.1.v20200122-1459@default:default"/>
+ <setEntry value="org.apache.sshd.osgi@default:default"/>
+ <setEntry value="org.apache.sshd.sftp@default:default"/>
+ <setEntry value="org.apache.xerces@default:default"/>
+ <setEntry value="org.apache.xml.resolver@default:default"/>
+ <setEntry value="org.apache.xmlgraphics@default:default"/>
+ <setEntry value="org.apiguardian@default:default"/>
+ <setEntry value="org.bouncycastle.bcpg@default:default"/>
+ <setEntry value="org.bouncycastle.bcprov@default:default"/>
+ <setEntry value="org.easymock@default:default"/>
+ <setEntry value="org.eclipse.ant.core@default:default"/>
+ <setEntry value="org.eclipse.ant.launching@default:default"/>
+ <setEntry value="org.eclipse.ant.optional.junit@default:false"/>
+ <setEntry value="org.eclipse.ant.ui@default:default"/>
+ <setEntry value="org.eclipse.compare.core@default:default"/>
+ <setEntry value="org.eclipse.compare@default:default"/>
+ <setEntry value="org.eclipse.core.commands@default:default"/>
+ <setEntry value="org.eclipse.core.contenttype@default:default"/>
+ <setEntry value="org.eclipse.core.databinding.beans@default:default"/>
+ <setEntry value="org.eclipse.core.databinding.observable@default:default"/>
+ <setEntry value="org.eclipse.core.databinding.property@default:default"/>
+ <setEntry value="org.eclipse.core.databinding@default:default"/>
+ <setEntry value="org.eclipse.core.expressions@default:default"/>
+ <setEntry value="org.eclipse.core.externaltools@default:default"/>
+ <setEntry value="org.eclipse.core.filebuffers@default:default"/>
+ <setEntry value="org.eclipse.core.filesystem.linux.x86_64@default:false"/>
+ <setEntry value="org.eclipse.core.filesystem@default:default"/>
+ <setEntry value="org.eclipse.core.jobs@default:default"/>
+ <setEntry value="org.eclipse.core.net.linux.x86_64@default:false"/>
+ <setEntry value="org.eclipse.core.net@default:default"/>
+ <setEntry value="org.eclipse.core.resources@default:default"/>
+ <setEntry value="org.eclipse.core.runtime@default:true"/>
+ <setEntry value="org.eclipse.core.tests.harness@default:default"/>
+ <setEntry value="org.eclipse.core.variables@default:default"/>
+ <setEntry value="org.eclipse.debug.core@default:default"/>
+ <setEntry value="org.eclipse.debug.ui@default:default"/>
+ <setEntry value="org.eclipse.e4.core.commands@default:default"/>
+ <setEntry value="org.eclipse.e4.core.contexts@default:default"/>
+ <setEntry value="org.eclipse.e4.core.di.annotations@default:default"/>
+ <setEntry value="org.eclipse.e4.core.di.extensions.supplier@default:default"/>
+ <setEntry value="org.eclipse.e4.core.di.extensions@default:default"/>
+ <setEntry value="org.eclipse.e4.core.di@default:default"/>
+ <setEntry value="org.eclipse.e4.core.services@default:default"/>
+ <setEntry value="org.eclipse.e4.emf.xpath@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.bindings@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.css.core@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.css.swt.theme@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.css.swt@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.di@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.dialogs@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.ide@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.model.workbench@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.services@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.swt.gtk@default:false"/>
+ <setEntry value="org.eclipse.e4.ui.widgets@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.workbench.addons.swt@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.workbench.renderers.swt@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.workbench.swt@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.workbench3@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.workbench@default:default"/>
+ <setEntry value="org.eclipse.ecf.filetransfer@default:default"/>
+ <setEntry value="org.eclipse.ecf.identity@default:default"/>
+ <setEntry value="org.eclipse.ecf.provider.filetransfer.httpclient45@default:default"/>
+ <setEntry value="org.eclipse.ecf.provider.filetransfer.ssl@default:false"/>
+ <setEntry value="org.eclipse.ecf.provider.filetransfer@default:default"/>
+ <setEntry value="org.eclipse.ecf.ssl@default:false"/>
+ <setEntry value="org.eclipse.ecf@default:default"/>
+ <setEntry value="org.eclipse.egit.core@default:default"/>
+ <setEntry value="org.eclipse.egit.ui@default:default"/>
+ <setEntry value="org.eclipse.egit@default:default"/>
+ <setEntry value="org.eclipse.emf.common@default:default"/>
+ <setEntry value="org.eclipse.emf.ecore.change@default:default"/>
+ <setEntry value="org.eclipse.emf.ecore.edit@default:default"/>
+ <setEntry value="org.eclipse.emf.ecore.xmi@default:default"/>
+ <setEntry value="org.eclipse.emf.ecore@default:default"/>
+ <setEntry value="org.eclipse.emf.edit@default:default"/>
+ <setEntry value="org.eclipse.equinox.app@default:default"/>
+ <setEntry value="org.eclipse.equinox.bidi@default:default"/>
+ <setEntry value="org.eclipse.equinox.common@2:true"/>
+ <setEntry value="org.eclipse.equinox.concurrent@default:default"/>
+ <setEntry value="org.eclipse.equinox.console@default:default"/>
+ <setEntry value="org.eclipse.equinox.event@default:default"/>
+ <setEntry value="org.eclipse.equinox.frameworkadmin.equinox@default:default"/>
+ <setEntry value="org.eclipse.equinox.frameworkadmin@default:default"/>
+ <setEntry value="org.eclipse.equinox.http.jetty@default:default"/>
+ <setEntry value="org.eclipse.equinox.http.registry@default:default"/>
+ <setEntry value="org.eclipse.equinox.http.servlet@default:default"/>
+ <setEntry value="org.eclipse.equinox.jsp.jasper.registry@default:default"/>
+ <setEntry value="org.eclipse.equinox.jsp.jasper@default:default"/>
+ <setEntry value="org.eclipse.equinox.launcher.gtk.linux.x86_64@default:false"/>
+ <setEntry value="org.eclipse.equinox.launcher@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.artifact.repository@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.console@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.core@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.director.app@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.director@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.directorywatcher@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.engine@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.extensionlocation@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.garbagecollector@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.jarprocessor@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.metadata.repository@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.metadata@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.operations@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.publisher@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.reconciler.dropins@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.repository.tools@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.repository@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.touchpoint.eclipse@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.touchpoint.natives@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.ui.sdk.scheduler@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.ui.sdk@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.ui@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.updatechecker@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.updatesite@default:default"/>
+ <setEntry value="org.eclipse.equinox.preferences@default:default"/>
+ <setEntry value="org.eclipse.equinox.registry@default:default"/>
+ <setEntry value="org.eclipse.equinox.security.linux.x86_64@default:false"/>
+ <setEntry value="org.eclipse.equinox.security.ui@default:default"/>
+ <setEntry value="org.eclipse.equinox.security@default:default"/>
+ <setEntry value="org.eclipse.equinox.simpleconfigurator.manipulator@default:default"/>
+ <setEntry value="org.eclipse.equinox.simpleconfigurator@1:true"/>
+ <setEntry value="org.eclipse.help.base@default:default"/>
+ <setEntry value="org.eclipse.help.ui@default:default"/>
+ <setEntry value="org.eclipse.help.webapp@default:default"/>
+ <setEntry value="org.eclipse.help@default:default"/>
+ <setEntry value="org.eclipse.jdt.annotation*2.2.600.v20200408-1511@default:default"/>
+ <setEntry value="org.eclipse.jdt.apt.core@default:default"/>
+ <setEntry value="org.eclipse.jdt.apt.pluggable.core@default:default"/>
+ <setEntry value="org.eclipse.jdt.apt.ui@default:default"/>
+ <setEntry value="org.eclipse.jdt.compiler.apt@default:false"/>
+ <setEntry value="org.eclipse.jdt.compiler.tool@default:false"/>
+ <setEntry value="org.eclipse.jdt.core.manipulation@default:default"/>
+ <setEntry value="org.eclipse.jdt.core@default:default"/>
+ <setEntry value="org.eclipse.jdt.debug.ui@default:default"/>
+ <setEntry value="org.eclipse.jdt.debug@default:default"/>
+ <setEntry value="org.eclipse.jdt.doc.isv@default:default"/>
+ <setEntry value="org.eclipse.jdt.doc.user@default:default"/>
+ <setEntry value="org.eclipse.jdt.junit.core@default:default"/>
+ <setEntry value="org.eclipse.jdt.junit.runtime@default:default"/>
+ <setEntry value="org.eclipse.jdt.junit4.runtime@default:default"/>
+ <setEntry value="org.eclipse.jdt.junit@default:default"/>
+ <setEntry value="org.eclipse.jdt.launching@default:default"/>
+ <setEntry value="org.eclipse.jdt.ui@default:default"/>
+ <setEntry value="org.eclipse.jdt@default:default"/>
+ <setEntry value="org.eclipse.jetty.http@default:default"/>
+ <setEntry value="org.eclipse.jetty.io@default:default"/>
+ <setEntry value="org.eclipse.jetty.security@default:default"/>
+ <setEntry value="org.eclipse.jetty.server@default:default"/>
+ <setEntry value="org.eclipse.jetty.servlet@default:default"/>
+ <setEntry value="org.eclipse.jetty.util.ajax@default:default"/>
+ <setEntry value="org.eclipse.jetty.util@default:default"/>
+ <setEntry value="org.eclipse.jface.databinding@default:default"/>
+ <setEntry value="org.eclipse.jface.notifications@default:default"/>
+ <setEntry value="org.eclipse.jface.text@default:default"/>
+ <setEntry value="org.eclipse.jface@default:default"/>
+ <setEntry value="org.eclipse.jgit.gpg.bc@default:false"/>
+ <setEntry value="org.eclipse.jgit.http.apache@default:default"/>
+ <setEntry value="org.eclipse.jgit.ssh.apache@default:default"/>
+ <setEntry value="org.eclipse.jgit@default:default"/>
+ <setEntry value="org.eclipse.jsch.core@default:default"/>
+ <setEntry value="org.eclipse.jsch.ui@default:default"/>
+ <setEntry value="org.eclipse.ltk.core.refactoring@default:default"/>
+ <setEntry value="org.eclipse.ltk.ui.refactoring@default:default"/>
+ <setEntry value="org.eclipse.m2e.archetype.common@default:default"/>
+ <setEntry value="org.eclipse.m2e.core.ui@default:default"/>
+ <setEntry value="org.eclipse.m2e.core@default:default"/>
+ <setEntry value="org.eclipse.m2e.maven.indexer@default:default"/>
+ <setEntry value="org.eclipse.m2e.maven.runtime.slf4j.simple@default:default"/>
+ <setEntry value="org.eclipse.m2e.maven.runtime@default:default"/>
+ <setEntry value="org.eclipse.m2e.model.edit@default:default"/>
+ <setEntry value="org.eclipse.m2e.workspace.cli@default:default"/>
+ <setEntry value="org.eclipse.mylyn.commons.core@default:default"/>
+ <setEntry value="org.eclipse.mylyn.commons.net@default:default"/>
+ <setEntry value="org.eclipse.mylyn.discovery.core@default:default"/>
+ <setEntry value="org.eclipse.osgi.compatibility.state@default:false"/>
+ <setEntry value="org.eclipse.osgi.services@default:default"/>
+ <setEntry value="org.eclipse.osgi.util@default:default"/>
+ <setEntry value="org.eclipse.osgi@-1:true"/>
+ <setEntry value="org.eclipse.pde.api.tools.ui@default:default"/>
+ <setEntry value="org.eclipse.pde.api.tools@default:default"/>
+ <setEntry value="org.eclipse.pde.build@default:default"/>
+ <setEntry value="org.eclipse.pde.core@default:default"/>
+ <setEntry value="org.eclipse.pde.doc.user@default:default"/>
+ <setEntry value="org.eclipse.pde.ds.core@default:default"/>
+ <setEntry value="org.eclipse.pde.ds.ui@default:default"/>
+ <setEntry value="org.eclipse.pde.junit.runtime@default:default"/>
+ <setEntry value="org.eclipse.pde.launching@default:default"/>
+ <setEntry value="org.eclipse.pde.runtime@default:default"/>
+ <setEntry value="org.eclipse.pde.ua.core@default:default"/>
+ <setEntry value="org.eclipse.pde.ua.ui@default:default"/>
+ <setEntry value="org.eclipse.pde.ui.templates@default:default"/>
+ <setEntry value="org.eclipse.pde.ui@default:default"/>
+ <setEntry value="org.eclipse.pde@default:default"/>
+ <setEntry value="org.eclipse.platform.doc.isv@default:default"/>
+ <setEntry value="org.eclipse.platform.doc.user@default:default"/>
+ <setEntry value="org.eclipse.platform@default:default"/>
+ <setEntry value="org.eclipse.rcp@default:default"/>
+ <setEntry value="org.eclipse.sdk@default:default"/>
+ <setEntry value="org.eclipse.search@default:default"/>
+ <setEntry value="org.eclipse.swt.gtk.linux.x86_64@default:false"/>
+ <setEntry value="org.eclipse.swt@default:default"/>
+ <setEntry value="org.eclipse.team.core@default:default"/>
+ <setEntry value="org.eclipse.team.ui@default:default"/>
+ <setEntry value="org.eclipse.test.performance.win32@default:false"/>
+ <setEntry value="org.eclipse.test.performance@default:default"/>
+ <setEntry value="org.eclipse.text@default:default"/>
+ <setEntry value="org.eclipse.ui.browser@default:default"/>
+ <setEntry value="org.eclipse.ui.cheatsheets@default:default"/>
+ <setEntry value="org.eclipse.ui.console@default:default"/>
+ <setEntry value="org.eclipse.ui.editors@default:default"/>
+ <setEntry value="org.eclipse.ui.externaltools@default:default"/>
+ <setEntry value="org.eclipse.ui.forms@default:default"/>
+ <setEntry value="org.eclipse.ui.genericeditor@default:default"/>
+ <setEntry value="org.eclipse.ui.ide.application@default:default"/>
+ <setEntry value="org.eclipse.ui.ide@default:default"/>
+ <setEntry value="org.eclipse.ui.intro.quicklinks@default:default"/>
+ <setEntry value="org.eclipse.ui.intro.universal@default:default"/>
+ <setEntry value="org.eclipse.ui.intro@default:default"/>
+ <setEntry value="org.eclipse.ui.navigator.resources@default:default"/>
+ <setEntry value="org.eclipse.ui.navigator@default:default"/>
+ <setEntry value="org.eclipse.ui.net@default:default"/>
+ <setEntry value="org.eclipse.ui.trace@default:default"/>
+ <setEntry value="org.eclipse.ui.views.log@default:default"/>
+ <setEntry value="org.eclipse.ui.views.properties.tabbed@default:default"/>
+ <setEntry value="org.eclipse.ui.views@default:default"/>
+ <setEntry value="org.eclipse.ui.workbench.texteditor@default:default"/>
+ <setEntry value="org.eclipse.ui.workbench@default:default"/>
+ <setEntry value="org.eclipse.ui@default:default"/>
+ <setEntry value="org.eclipse.urischeme@default:default"/>
+ <setEntry value="org.eclipse.wst.common.core@default:default"/>
+ <setEntry value="org.eclipse.wst.common.emf@default:default"/>
+ <setEntry value="org.eclipse.wst.common.environment@default:default"/>
+ <setEntry value="org.eclipse.wst.common.frameworks.ui@default:default"/>
+ <setEntry value="org.eclipse.wst.common.frameworks@default:default"/>
+ <setEntry value="org.eclipse.wst.common.project.facet.core@default:default"/>
+ <setEntry value="org.eclipse.wst.common.ui@default:default"/>
+ <setEntry value="org.eclipse.wst.common.uriresolver@default:default"/>
+ <setEntry value="org.eclipse.wst.sse.core@default:default"/>
+ <setEntry value="org.eclipse.wst.sse.ui@default:default"/>
+ <setEntry value="org.eclipse.wst.validation.ui@default:default"/>
+ <setEntry value="org.eclipse.wst.validation@default:default"/>
+ <setEntry value="org.eclipse.wst.xml.core@default:default"/>
+ <setEntry value="org.eclipse.wst.xml.ui@default:default"/>
+ <setEntry value="org.eclipse.wst.xsd.core@default:default"/>
+ <setEntry value="org.eclipse.xsd@default:default"/>
+ <setEntry value="org.hamcrest.core@default:default"/>
+ <setEntry value="org.junit.jupiter.api@default:default"/>
+ <setEntry value="org.junit.platform.commons@default:default"/>
+ <setEntry value="org.junit.platform.engine@default:default"/>
+ <setEntry value="org.junit.platform.launcher@default:default"/>
+ <setEntry value="org.junit@default:default"/>
+ <setEntry value="org.opentest4j@default:default"/>
+ <setEntry value="org.sat4j.core@default:default"/>
+ <setEntry value="org.sat4j.pb@default:default"/>
+ <setEntry value="org.slf4j.api@default:default"/>
+ <setEntry value="org.tukaani.xz@default:default"/>
+ <setEntry value="org.w3c.css.sac@default:default"/>
+ <setEntry value="org.w3c.dom.events@default:default"/>
+ <setEntry value="org.w3c.dom.smil@default:default"/>
+ <setEntry value="org.w3c.dom.svg@default:default"/>
+ </setAttribute>
+ <setAttribute key="selected_workspace_bundles">
+ <setEntry value="org.eclipse.equinox.frameworkadmin.equinox@default:default"/>
+ <setEntry value="org.eclipse.equinox.frameworkadmin.test@default:default"/>
+ <setEntry value="org.eclipse.equinox.frameworkadmin@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.artifact.checksums.bouncycastle@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.artifact.optimizers@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.artifact.processors@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.artifact.repository@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.console@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.core@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.director.app@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.director@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.directorywatcher@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.discovery.compatibility@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.discovery@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.engine@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.examples.rcp.cloud@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.examples.rcp.discovery@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.examples.rcp.prestartupdate@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.examples.rcp.sdkbundlevisibility@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.examples.rcp.sdknoautoupdates@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.examples.rcp.sdkui@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.extensionlocation@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.garbagecollector@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.installer@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.jarprocessor@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.metadata.repository@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.metadata@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.operations@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.publisher.eclipse@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.publisher@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.reconciler.dropins@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.repository.tools@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.repository@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.sar@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.tests.discovery@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.tests.optimizers@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.tests.ui@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.tests.verifier@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.tests@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.testserver@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.touchpoint.eclipse@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.touchpoint.natives@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.transport.ecf@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.ui.admin.rcp@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.ui.admin@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.ui.discovery@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.ui.importexport@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.ui.sdk.scheduler@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.ui.sdk@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.ui@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.updatechecker@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.updatesite@default:default"/>
+ <setEntry value="org.eclipse.equinox.simpleconfigurator.manipulator@default:default"/>
+ <setEntry value="org.eclipse.equinox.simpleconfigurator@1:true"/>
+ </setAttribute>
+ <booleanAttribute key="show_selected_only" value="false"/>
+ <booleanAttribute key="tracing" value="false"/>
+ <booleanAttribute key="useCustomFeatures" value="false"/>
+ <booleanAttribute key="useDefaultConfig" value="true"/>
+ <booleanAttribute key="useDefaultConfigArea" value="false"/>
+ <booleanAttribute key="useProduct" value="false"/>
</launchConfiguration>
diff --git a/bundles/org.eclipse.equinox.p2.tests.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.tests.ui/META-INF/MANIFEST.MF
index 6a2296558..58c4adbf1 100644
--- a/bundles/org.eclipse.equinox.p2.tests.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.tests.ui/META-INF/MANIFEST.MF
@@ -2,14 +2,14 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.tests.ui
-Bundle-Version: 1.2.400.qualifier
+Bundle-Version: 1.3.400.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.4.100",
org.eclipse.ui;bundle-version="3.6.0",
org.eclipse.equinox.p2.metadata;bundle-version="1.0.0",
org.eclipse.equinox.p2.metadata.repository;bundle-version="1.0.100",
- org.eclipse.equinox.p2.ui;bundle-version="1.0.100",
+ org.eclipse.equinox.p2.ui;bundle-version="2.6.0",
org.eclipse.core.tests.harness;bundle-version="3.4.0",
org.eclipse.equinox.p2.core;bundle-version="1.0.100",
org.eclipse.equinox.p2.engine;bundle-version="1.0.100",
@@ -20,7 +20,7 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.4.100",
org.eclipse.equinox.p2.tests;bundle-version="1.2.0",
org.eclipse.equinox.p2.ui.sdk;bundle-version="1.0.200",
org.eclipse.equinox.p2.ui.importexport;bundle-version="1.0.1"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Import-Package: org.eclipse.equinox.internal.p2.operations,
org.eclipse.equinox.p2.operations;version="[2.0.0,3.0.0)"
Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.p2.tests.ui/build.properties b/bundles/org.eclipse.equinox.p2.tests.ui/build.properties
index e715d4bc7..0264e2b00 100644
--- a/bundles/org.eclipse.equinox.p2.tests.ui/build.properties
+++ b/bundles/org.eclipse.equinox.p2.tests.ui/build.properties
@@ -19,4 +19,3 @@ bin.includes = META-INF/,\
plugin.properties,\
test.xml
src.includes = about.html
-javacWarnings..=-raw,-unchecked,-varargsCast
diff --git a/bundles/org.eclipse.equinox.p2.tests.ui/pom.xml b/bundles/org.eclipse.equinox.p2.tests.ui/pom.xml
index 314f68373..f941878fb 100644
--- a/bundles/org.eclipse.equinox.p2.tests.ui/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.tests.ui/pom.xml
@@ -15,13 +15,13 @@
<parent>
<artifactId>org.eclipse.equinox.p2.tests-parent</artifactId>
<groupId>org.eclipse</groupId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../../org.eclipse.equinox.p2.releng/org.eclipse.equinox.p2.tests-parent</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.tests.ui</artifactId>
- <version>1.2.400-SNAPSHOT</version>
+ <version>1.3.400-SNAPSHOT</version>
<packaging>eclipse-test-plugin</packaging>
<properties>
diff --git a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/importexport/ImportExportRemoteTests.java b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/importexport/ImportExportRemoteTests.java
index 048f7e5af..fdb0c5299 100644
--- a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/importexport/ImportExportRemoteTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/importexport/ImportExportRemoteTests.java
@@ -78,7 +78,7 @@ public class ImportExportRemoteTests extends ServerBasedTestCase {
try (InputStream input = new FileInputStream(testFile)) {
List<IUDetail> ius = importexportService.importP2F(input);
assertEquals("Exported the number of features is not expected.", 1, ius.size());
- assertTrue("Exported feature is not expected.", iu.equals(ius.get(0).getIU()));
+ assertEquals("Exported feature is not expected.", iu, ius.get(0).getIU());
assertEquals("Exported the number of referred repositories is not expected.", 1,
ius.get(0).getReferencedRepositories().size());
assertEquals("Exported referred repository is not expected.", uri,
@@ -128,7 +128,7 @@ public class ImportExportRemoteTests extends ServerBasedTestCase {
try (InputStream input = new FileInputStream(testFile)) {
List<IUDetail> ius = importexportService.importP2F(input);
assertEquals("Exported the number of features is not expected.", 1, ius.size());
- assertTrue("Exported feature is not expected.", iu.equals(ius.get(0).getIU()));
+ assertEquals("Exported feature is not expected.", iu, ius.get(0).getIU());
assertEquals("Exported the number of referred repositories is not expected.", 1,
ius.get(0).getReferencedRepositories().size());
assertEquals("Exported referred repository is not expected.", uri,
diff --git a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/importexport/ImportExportTests.java b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/importexport/ImportExportTests.java
index 84353aeea..cbde87226 100644
--- a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/importexport/ImportExportTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/importexport/ImportExportTests.java
@@ -14,6 +14,8 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.importexport;
+import static org.junit.Assert.assertThrows;
+
import java.io.*;
import java.util.ArrayList;
import java.util.List;
@@ -67,16 +69,16 @@ public class ImportExportTests extends AbstractProvisioningTest {
try (InputStream input = new FileInputStream(p2fFile)) {
List<IUDetail> iuDetails = importexportService.importP2F(input);
- assertTrue("Should load two features from the p2f file.", iuDetails.size() == 2);
+ assertEquals("Should load two features from the p2f file.", 2, iuDetails.size());
int counter = 0;
for (IUDetail iu : iuDetails) {
if ("org.polarion.eclipse.team.svn.connector.feature.group".equals(iu.getIU().getId())) {
counter++;
- assertTrue("Should have two referred repository.", iu.getReferencedRepositories().size() == 2);
+ assertEquals("Should have two referred repository.", 2, iu.getReferencedRepositories().size());
} else if ("org.polarion.eclipse.team.svn.connector.svnkit16.feature.group"
.equals(iu.getIU().getId())) {
counter++;
- assertTrue("Should have one referred repository", iu.getReferencedRepositories().size() == 1);
+ assertEquals("Should have one referred repository", 1, iu.getReferencedRepositories().size());
}
}
assertEquals("Load unexpected content.", 2, counter);
@@ -96,10 +98,8 @@ public class ImportExportTests extends AbstractProvisioningTest {
File p2fFile = getTestData("Error load test file.", "testData/importexport/incompatible.p2f");
try (InputStream input = new FileInputStream(p2fFile)) {
- importexportService.importP2F(input);
- assertTrue("Didn't complain the given file is not supported by current version.", false);
- } catch (VersionIncompatibleException e) {
- // expected
+ assertThrows("Didn't complain the given file is not supported by current version.",
+ VersionIncompatibleException.class, () -> importexportService.importP2F(input));
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/actions/ElementUtilsTest.java b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/actions/ElementUtilsTest.java
index 319338c91..a4cfbd144 100644
--- a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/actions/ElementUtilsTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/actions/ElementUtilsTest.java
@@ -14,6 +14,8 @@
package org.eclipse.equinox.p2.tests.ui.actions;
+import static org.junit.Assert.assertNotEquals;
+
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
@@ -35,7 +37,7 @@ public class ElementUtilsTest extends ProfileModificationActionTest {
}
public void testInvalid() {
- assertTrue(ElementUtils.elementsToIUs(getInvalidSelection()).size() == 0);
+ assertTrue(ElementUtils.elementsToIUs(getInvalidSelection()).isEmpty());
}
public void testIUs() {
@@ -47,7 +49,7 @@ public class ElementUtilsTest extends ProfileModificationActionTest {
}
public void testMixedIUsAndNonIUs() {
- assertTrue(getMixedIUsAndNonIUs().length != ElementUtils.elementsToIUs(getMixedIUsAndNonIUs()).size());
+ assertNotEquals(getMixedIUsAndNonIUs().length, ElementUtils.elementsToIUs(getMixedIUsAndNonIUs()).size());
}
public void testMixedIUsAndElements() {
@@ -56,15 +58,15 @@ public class ElementUtilsTest extends ProfileModificationActionTest {
public void testUpdateUsingElements() throws URISyntaxException {
// Two visible repos, one is added, the other is not
- URI known1 = new URI("http://example.com/known1");
- URI known2 = new URI("http://example.com/known2");
+ URI known1 = new URI("https://example.com/known1");
+ URI known2 = new URI("https://example.com/known2");
IMetadataRepositoryManager manager = getMetadataRepositoryManager();
manager.addRepository(known1);
// Add system repos that should not be known or affected by ElementUtils
// One is an enabled system repo, one is disabled system repo
- URI uri = new URI("http://example.com/1");
- URI uri2 = new URI("http://example.com/2");
+ URI uri = new URI("https://example.com/1");
+ URI uri2 = new URI("https://example.com/2");
manager.addRepository(uri);
manager.setRepositoryProperty(uri, IRepository.PROP_SYSTEM, Boolean.toString(true));
manager.addRepository(uri2);
@@ -80,10 +82,10 @@ public class ElementUtilsTest extends ProfileModificationActionTest {
MetadataRepositoryElement[] elements = children.toArray(new MetadataRepositoryElement[children.size()]);
// Add a visible repo not known by the elements
- URI uri3 = new URI("http://example.com/3");
+ URI uri3 = new URI("https://example.com/3");
manager.addRepository(uri3);
- // Now update the repo using the elements.
+ // Now update the repo using the elements.
// We expect known2 to get added because it was in the elements
// We expect uri3 to get removed (as if it had been removed from a pref page)
// System repos shouldn't be touched
diff --git a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/dialogs/AllTests.java b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/dialogs/AllTests.java
index fc5afecde..116f1df1e 100644
--- a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/dialogs/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/dialogs/AllTests.java
@@ -22,7 +22,8 @@ import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({ InstallWizardTest.class, InstalledSoftwarePageTest.class, InstallWithRemediationTest.class,
InstallationHistoryPageTest.class, UpdateWizardTest.class, UninstallWizardTest.class,
- RepositoryManipulationPageTest.class, IUPropertyPagesTest.class, PreferencePagesTest.class })
+ RepositoryManipulationPageTest.class, IUPropertyPagesTest.class, PreferencePagesTest.class,
+ EECompatibilityTest.class })
public class AllTests {
// test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/dialogs/EECompatibilityTest.java b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/dialogs/EECompatibilityTest.java
new file mode 100644
index 000000000..e0e8e44f0
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/dialogs/EECompatibilityTest.java
@@ -0,0 +1,166 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Red Hat Inc., and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.equinox.p2.tests.ui.dialogs;
+
+import static org.junit.Assume.assumeTrue;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.equinox.internal.p2.metadata.ProvidedCapability;
+import org.eclipse.equinox.internal.p2.ui.ProvUI;
+import org.eclipse.equinox.internal.p2.ui.dialogs.*;
+import org.eclipse.equinox.p2.engine.IProfile;
+import org.eclipse.equinox.p2.metadata.*;
+import org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitDescription;
+import org.eclipse.equinox.p2.operations.InstallOperation;
+import org.eclipse.swt.widgets.Shell;
+import org.junit.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.BlockJUnit4ClassRunner;
+
+@RunWith(BlockJUnit4ClassRunner.class)
+public class EECompatibilityTest extends WizardTest {
+
+ private static final int latestKnownJavaVersion = 14;
+
+ private final class ProvisioningWizardDialogExtension extends ProvisioningWizardDialog {
+ private ProvisioningWizardDialogExtension(Shell parent, ProvisioningOperationWizard wizard) {
+ super(parent, wizard);
+ }
+
+ @Override
+ public void nextPressed() {
+ super.nextPressed();
+ }
+ }
+
+ private boolean previewCheckJREValue = false;
+ private IInstallableUnit iuRequiringTooRecentEE;
+
+ @Before
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ addAJREJavaSEUnit(getProfile(TESTPROFILE));
+ previewCheckJREValue = getPolicy().getCheckAgainstCurrentExecutionEnvironment();
+ getPolicy().setCheckAgainstCurrentExecutionEnvironment(true);
+ this.iuRequiringTooRecentEE = iuRequiringTooRecentEE();
+ assumeTrue("Tests are skipped on latest known Java version", Integer
+ .parseInt(System.getProperty("java.version").split("\\.")[0].split("-")[0]) < latestKnownJavaVersion);
+ }
+
+ @After
+ @Override
+ public void tearDown() throws Exception {
+ super.tearDown();
+ getPolicy().setCheckAgainstCurrentExecutionEnvironment(previewCheckJREValue);
+ }
+
+ @Test
+ public void testSingleIUPreventInstallation() {
+ PreselectedIUInstallWizard wizard = new PreselectedIUInstallWizard(getProvisioningUI(), null,
+ Collections.singletonList(iuRequiringTooRecentEE), null);
+ wizard.setBypassLicensePage(true);
+ ProvisioningWizardDialogExtension dialog = new ProvisioningWizardDialogExtension(ProvUI.getDefaultParentShell(),
+ wizard);
+ dialog.setBlockOnOpen(false);
+ dialog.open();
+ dialog.nextPressed();
+ IResolutionErrorReportingPage page = (IResolutionErrorReportingPage) dialog.getCurrentPage();
+ page.getMessage();
+ assertFalse(wizard.canFinish());
+ }
+
+ @Test
+ @Ignore(value = "This test is not relevant as it doesn't build an interesting remediation. Feel free to improve!")
+ public void testEEIssueSkipsRemediation() {
+ IInstallableUnit unsatisfiableUnit = unsatisfiableUnit();
+ IInstallableUnit unsatisfiedFeature = createFeature(unsatisfiableUnit);
+ createTestMetdataRepository(new IInstallableUnit[] { unsatisfiableUnit, unsatisfiedFeature });
+ IInstallableUnit[] units = new IInstallableUnit[] { iuRequiringTooRecentEE, createFeature(unsatisfiedFeature) };
+ PreselectedIUInstallWizard wizard = new PreselectedIUInstallWizard(getProvisioningUI(), null,
+ Arrays.asList(units), null);
+ wizard.setBypassLicensePage(true);
+ ProvisioningWizardDialogExtension dialog = new ProvisioningWizardDialogExtension(ProvUI.getDefaultParentShell(),
+ wizard);
+ dialog.setBlockOnOpen(false);
+ dialog.open();
+ dialog.nextPressed(); // to remediation page
+ assertTrue(dialog.getCurrentPage() instanceof RemediationPage);
+ // Here, we'd like to have remediation pre-selecting "Keep my installation the
+ // same and modify the items being installed to be compatible" and keeping the
+ // iuRequiringTooRecentEE as part of the plan.
+ // but this is not happening with current test scenario, so test it ignored so
+ // far.
+ assertFalse(wizard.canFinish());
+ dialog.nextPressed();
+ assertFalse(wizard.canFinish());
+ dialog.close();
+ }
+
+ private IInstallableUnit unsatisfiableUnit() {
+ InstallableUnitDescription desc = new InstallableUnitDescription();
+ desc.setId("unsatisfiable-unit"); //$NON-NLS-1$
+ desc.setVersion(Version.create("0.0.1"));
+ desc.addProvidedCapabilities(Collections.singletonList(
+ new ProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, desc.getId(), desc.getVersion())));
+ desc.addRequirements(Collections.singletonList(MetadataFactory.createRequirement(
+ IInstallableUnit.NAMESPACE_IU_ID, "blah", VersionRange.create("1.0.0"), null, false, true)));
+ return MetadataFactory.createInstallableUnit(desc);
+ }
+
+ private static IInstallableUnit iuRequiringTooRecentEE() {
+ InstallableUnitDescription desc = new InstallableUnitDescription();
+ desc.setId("dummyIU"); //$NON-NLS-1$
+ desc.setVersion(Version.create("0.0.1"));
+ desc.addProvidedCapabilities(Collections.singletonList(
+ new ProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, desc.getId(), desc.getVersion())));
+ desc.addRequirements(Collections.singletonList(MetadataFactory.createRequirement("osgi.ee", "JavaSE",
+ VersionRange.create(latestKnownJavaVersion + ".0.0"), null, false, true)));
+ return MetadataFactory.createInstallableUnit(desc);
+ }
+
+ private static IInstallableUnit createFeature(IInstallableUnit... included) {
+ InstallableUnitDescription iu = new MetadataFactory.InstallableUnitDescription();
+ iu.setId("dummyFeatureIncluding"
+ + Stream.of(included).map(IInstallableUnit::getId).collect(Collectors.joining()) + ".feature.group");
+ iu.setVersion(Version.create("0.0.1"));
+ iu.addProvidedCapabilities(Collections.singleton(MetadataFactory
+ .createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, iu.getId(), iu.getVersion())));
+ iu.addRequirements(Stream.of(included)
+ .map(unit -> MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, unit.getId(),
+ new VersionRange(unit.getVersion(), true, iu.getVersion(), true), null, false, false))
+ .collect(Collectors.toList()));
+ iu.setProperty(InstallableUnitDescription.PROP_TYPE_GROUP, Boolean.TRUE.toString());
+ return MetadataFactory.createInstallableUnit(iu);
+ }
+
+ private void addAJREJavaSEUnit(IProfile profile) {
+ InstallOperation installOperation = new InstallOperation(getSession(),
+ Collections.singletonList(aJREJavaSE(latestKnownJavaVersion)));
+ installOperation.setProfileId(TESTPROFILE);
+ installOperation.resolveModal(new NullProgressMonitor());
+ installOperation.getProvisioningJob(new NullProgressMonitor()).run(new NullProgressMonitor());
+ }
+
+ private IInstallableUnit aJREJavaSE(int javaSEVersion) {
+ InstallableUnitDescription desc = new InstallableUnitDescription();
+ desc.setId("a.jre.javase"); //$NON-NLS-1$
+ desc.setVersion(Version.create(javaSEVersion + ".0.0"));
+ desc.addProvidedCapabilities(Arrays.asList(new ProvidedCapability[] {
+ new ProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, desc.getId(), desc.getVersion()),
+ new ProvidedCapability("osgi.ee", "JavaSE", desc.getVersion()) }));
+ return MetadataFactory.createInstallableUnit(desc);
+ }
+}
diff --git a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/dialogs/InstallWithRemediationTest.java b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/dialogs/InstallWithRemediationTest.java
index acf2fe1d4..bedcda8ae 100644
--- a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/dialogs/InstallWithRemediationTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/dialogs/InstallWithRemediationTest.java
@@ -35,9 +35,9 @@ import org.eclipse.swt.widgets.TreeItem;
*/
public class InstallWithRemediationTest extends WizardTest {
- // private static final String SELECTION_PAGE = "IUSelectionPage";
+ // private static final String SELECTION_PAGE = "IUSelectionPage";
private static final String AVAILABLE_SOFTWARE_PAGE = "AvailableSoftwarePage";
- // private static final String MAIN_IU = "MainIU";
+ // private static final String MAIN_IU = "MainIU";
IInstallableUnit toInstall;
@@ -54,154 +54,175 @@ public class InstallWithRemediationTest extends WizardTest {
iu.setProperty(InstallableUnitDescription.PROP_TYPE_GROUP, "true");
iu.setVersion(Version.createOSGi(2, 0, 0));
iu.setSingleton(true);
- iu.setLicenses(new ILicense[] {new License(null, "There is a license to accept!", null)});
- iu.setCapabilities(new IProvidedCapability[] {MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, TOPLEVELIU, iu.getVersion())});
+ iu.setLicenses(new ILicense[] { new License(null, "There is a license to accept!", null) });
+ iu.setCapabilities(new IProvidedCapability[] { MetadataFactory
+ .createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, TOPLEVELIU, iu.getVersion()) });
toInstall = MetadataFactory.createInstallableUnit(iu);
- createTestMetdataRepository(new IInstallableUnit[] {toInstall, anotherIUToInstall});
+ createTestMetdataRepository(new IInstallableUnit[] { toInstall, anotherIUToInstall });
}
//
- // public void testInstallWizardResolved() {
- // ArrayList<IInstallableUnit> iusInvolved = new ArrayList<IInstallableUnit>();
- // iusInvolved.add(toInstall);
- // InstallOperation op = new InstallOperation(getSession(), iusInvolved);
- // op.setProfileId(TESTPROFILE);
- // PreselectedIUInstallWizard wizard = new PreselectedIUInstallWizard(getProvisioningUI(), op, iusInvolved, null);
- // ProvisioningWizardDialog dialog = new ProvisioningWizardDialog(ProvUI.getDefaultParentShell(), wizard);
- // dialog.setBlockOnOpen(false);
- // dialog.open();
- // ProfileModificationJob longOp = null;
+ // public void testInstallWizardResolved() {
+ // ArrayList<IInstallableUnit> iusInvolved = new ArrayList<IInstallableUnit>();
+ // iusInvolved.add(toInstall);
+ // InstallOperation op = new InstallOperation(getSession(), iusInvolved);
+ // op.setProfileId(TESTPROFILE);
+ // PreselectedIUInstallWizard wizard = new
+ // PreselectedIUInstallWizard(getProvisioningUI(), op, iusInvolved, null);
+ // ProvisioningWizardDialog dialog = new
+ // ProvisioningWizardDialog(ProvUI.getDefaultParentShell(), wizard);
+ // dialog.setBlockOnOpen(false);
+ // dialog.open();
+ // ProfileModificationJob longOp = null;
//
- // try {
- // SelectableIUsPage page1 = (SelectableIUsPage) wizard.getPage(SELECTION_PAGE);
- // // should already have a plan
- // assertTrue("1.0", page1.isPageComplete());
- // // simulate the next button by getting next page and showing
- // IWizardPage page = page1.getNextPage();
- // dialog.showPage(page);
- // // we should be ok
- // assertTrue("1.1", page.isPageComplete());
+ // try {
+ // SelectableIUsPage page1 = (SelectableIUsPage) wizard.getPage(SELECTION_PAGE);
+ // // should already have a plan
+ // assertTrue("1.0", page1.isPageComplete());
+ // // simulate the next button by getting next page and showing
+ // IWizardPage page = page1.getNextPage();
+ // dialog.showPage(page);
+ // // we should be ok
+ // assertTrue("1.1", page.isPageComplete());
//
- // // if another operation is scheduled for this profile, we should not be allowed to proceed
- // longOp = getLongTestOperation();
- // getProvisioningUI().schedule(longOp, StatusManager.LOG);
- // // causes recalculation of plan and status
- // wizard.recomputePlan(dialog);
- // // can't move to next page while op is running
- // assertFalse("1.2", page.isPageComplete());
- // longOp.cancel();
+ // // if another operation is scheduled for this profile, we should not be
+ // allowed to proceed
+ // longOp = getLongTestOperation();
+ // getProvisioningUI().schedule(longOp, StatusManager.LOG);
+ // // causes recalculation of plan and status
+ // wizard.recomputePlan(dialog);
+ // // can't move to next page while op is running
+ // assertFalse("1.2", page.isPageComplete());
+ // longOp.cancel();
//
- // // op is no longer running, recompute plan
- // wizard.recomputePlan(dialog);
+ // // op is no longer running, recompute plan
+ // wizard.recomputePlan(dialog);
//
- // // license needs approval
- // assertFalse("1.4", wizard.canFinish());
- // // finish button should be disabled
- // dialog.updateButtons();
- // Button finishButton = dialog.testGetButton(IDialogConstants.FINISH_ID);
- // assertFalse("1.5", finishButton.isEnabled());
- // } finally {
- // dialog.getShell().close();
- // if (longOp != null)
- // longOp.cancel();
- // }
- // }
+ // // license needs approval
+ // assertFalse("1.4", wizard.canFinish());
+ // // finish button should be disabled
+ // dialog.updateButtons();
+ // Button finishButton = dialog.testGetButton(IDialogConstants.FINISH_ID);
+ // assertFalse("1.5", finishButton.isEnabled());
+ // } finally {
+ // dialog.getShell().close();
+ // if (longOp != null)
+ // longOp.cancel();
+ // }
+ // }
//
- // public void testInstallWizard() throws Exception {
- // ArrayList<IInstallableUnit> iusInvolved = new ArrayList<IInstallableUnit>();
- // iusInvolved.add(toInstall);
- // InstallOperation op = new MyNewInstallOperation(getSession(), iusInvolved);
- // op.setProfileId(TESTPROFILE);
- // PreselectedIUInstallWizard wizard = new PreselectedIUInstallWizard(getProvisioningUI(), op, iusInvolved, null);
- // ProvisioningWizardDialog dialog = new ProvisioningWizardDialog(ProvUI.getDefaultParentShell(), wizard);
- // dialog.setBlockOnOpen(false);
- // dialog.open();
- // ProfileModificationJob longOp = null;
+ // public void testInstallWizard() throws Exception {
+ // ArrayList<IInstallableUnit> iusInvolved = new ArrayList<IInstallableUnit>();
+ // iusInvolved.add(toInstall);
+ // InstallOperation op = new MyNewInstallOperation(getSession(), iusInvolved);
+ // op.setProfileId(TESTPROFILE);
+ // PreselectedIUInstallWizard wizard = new
+ // PreselectedIUInstallWizard(getProvisioningUI(), op, iusInvolved, null);
+ // ProvisioningWizardDialog dialog = new
+ // ProvisioningWizardDialog(ProvUI.getDefaultParentShell(), wizard);
+ // dialog.setBlockOnOpen(false);
+ // dialog.open();
+ // ProfileModificationJob longOp = null;
//
- // try {
- // SelectableIUsPage page1 = (SelectableIUsPage) wizard.getPage(SELECTION_PAGE);
- // // should already have a plan
- // assertTrue("1.0", page1.isPageComplete());
- // // simulate the next button by getting next page and showing
- // InstallWizardPage page = (InstallWizardPage) page1.getNextPage();
+ // try {
+ // SelectableIUsPage page1 = (SelectableIUsPage) wizard.getPage(SELECTION_PAGE);
+ // // should already have a plan
+ // assertTrue("1.0", page1.isPageComplete());
+ // // simulate the next button by getting next page and showing
+ // InstallWizardPage page = (InstallWizardPage) page1.getNextPage();
//
- // // get the operation
- // Field opField = ResolutionResultsWizardPage.class.getDeclaredField("resolvedOperation");
- // opField.setAccessible(true);
- // assertTrue("Expected instance of MyNewInstallOperation", opField.get(page) instanceof MyNewInstallOperation);
- // } finally {
- // dialog.getShell().close();
- // if (longOp != null)
- // longOp.cancel();
- // }
- // }
+ // // get the operation
+ // Field opField =
+ // ResolutionResultsWizardPage.class.getDeclaredField("resolvedOperation");
+ // opField.setAccessible(true);
+ // assertTrue("Expected instance of MyNewInstallOperation", opField.get(page)
+ // instanceof MyNewInstallOperation);
+ // } finally {
+ // dialog.getShell().close();
+ // if (longOp != null)
+ // longOp.cancel();
+ // }
+ // }
//
- // public void testInstallWizardWithoutLicenceBypass() throws Exception {
- // ArrayList<IInstallableUnit> iusInvolved = new ArrayList<IInstallableUnit>();
- // iusInvolved.add(toInstall);
- // InstallOperation op = new MyNewInstallOperation(getSession(), iusInvolved);
- // op.setProfileId(TESTPROFILE);
- // PreselectedIUInstallWizard wizard = new PreselectedIUInstallWizard(getProvisioningUI(), op, iusInvolved, null);
- // wizard.setBypassLicencePage(false);
- // ProvisioningWizardDialog dialog = new ProvisioningWizardDialog(ProvUI.getDefaultParentShell(), wizard);
- // dialog.setBlockOnOpen(false);
- // dialog.open();
- // ProfileModificationJob longOp = null;
+ // public void testInstallWizardWithoutLicenceBypass() throws Exception {
+ // ArrayList<IInstallableUnit> iusInvolved = new ArrayList<IInstallableUnit>();
+ // iusInvolved.add(toInstall);
+ // InstallOperation op = new MyNewInstallOperation(getSession(), iusInvolved);
+ // op.setProfileId(TESTPROFILE);
+ // PreselectedIUInstallWizard wizard = new
+ // PreselectedIUInstallWizard(getProvisioningUI(), op, iusInvolved, null);
+ // wizard.setBypassLicencePage(false);
+ // ProvisioningWizardDialog dialog = new
+ // ProvisioningWizardDialog(ProvUI.getDefaultParentShell(), wizard);
+ // dialog.setBlockOnOpen(false);
+ // dialog.open();
+ // ProfileModificationJob longOp = null;
//
- // try {
- // SelectableIUsPage selectableIUsPage = (SelectableIUsPage) wizard.getPage(SELECTION_PAGE);
- // // should already have a plan
- // assertTrue("1.0", selectableIUsPage.isPageComplete());
- // // simulate the next button by getting next page and showing
- // InstallWizardPage installWizardPage = (InstallWizardPage) selectableIUsPage.getNextPage();
+ // try {
+ // SelectableIUsPage selectableIUsPage = (SelectableIUsPage)
+ // wizard.getPage(SELECTION_PAGE);
+ // // should already have a plan
+ // assertTrue("1.0", selectableIUsPage.isPageComplete());
+ // // simulate the next button by getting next page and showing
+ // InstallWizardPage installWizardPage = (InstallWizardPage)
+ // selectableIUsPage.getNextPage();
//
- // assertFalse("Licence page bypass flag must be false", wizard.isBypassLicencePage());
- // IWizardPage licensePage = installWizardPage.getNextPage();
- // assertTrue("Expected instance of AcceptLicensesWizardPage", licensePage instanceof AcceptLicensesWizardPage);
+ // assertFalse("Licence page bypass flag must be false",
+ // wizard.isBypassLicencePage());
+ // IWizardPage licensePage = installWizardPage.getNextPage();
+ // assertTrue("Expected instance of AcceptLicensesWizardPage", licensePage
+ // instanceof AcceptLicensesWizardPage);
//
- // } finally {
- // dialog.getShell().close();
- // if (longOp != null)
- // longOp.cancel();
- // }
- // }
+ // } finally {
+ // dialog.getShell().close();
+ // if (longOp != null)
+ // longOp.cancel();
+ // }
+ // }
//
- // public void testInstallWizardWithLicenceBypass() throws Exception {
- // ArrayList<IInstallableUnit> iusInvolved = new ArrayList<IInstallableUnit>();
- // iusInvolved.add(toInstall);
- // InstallOperation op = new MyNewInstallOperation(getSession(), iusInvolved);
- // op.setProfileId(TESTPROFILE);
- // PreselectedIUInstallWizard wizard = new PreselectedIUInstallWizard(getProvisioningUI(), op, iusInvolved, null);
- // wizard.setBypassLicencePage(true);
- // ProvisioningWizardDialog dialog = new ProvisioningWizardDialog(ProvUI.getDefaultParentShell(), wizard);
- // dialog.setBlockOnOpen(false);
- // dialog.open();
- // ProfileModificationJob longOp = null;
+ // public void testInstallWizardWithLicenceBypass() throws Exception {
+ // ArrayList<IInstallableUnit> iusInvolved = new ArrayList<IInstallableUnit>();
+ // iusInvolved.add(toInstall);
+ // InstallOperation op = new MyNewInstallOperation(getSession(), iusInvolved);
+ // op.setProfileId(TESTPROFILE);
+ // PreselectedIUInstallWizard wizard = new
+ // PreselectedIUInstallWizard(getProvisioningUI(), op, iusInvolved, null);
+ // wizard.setBypassLicencePage(true);
+ // ProvisioningWizardDialog dialog = new
+ // ProvisioningWizardDialog(ProvUI.getDefaultParentShell(), wizard);
+ // dialog.setBlockOnOpen(false);
+ // dialog.open();
+ // ProfileModificationJob longOp = null;
//
- // try {
- // SelectableIUsPage selectableIUsPage = (SelectableIUsPage) wizard.getPage(SELECTION_PAGE);
- // // should already have a plan
- // assertTrue("1.0", selectableIUsPage.isPageComplete());
- // // simulate the next button by getting next page and showing
- // InstallWizardPage installWizardPage = (InstallWizardPage) selectableIUsPage.getNextPage();
+ // try {
+ // SelectableIUsPage selectableIUsPage = (SelectableIUsPage)
+ // wizard.getPage(SELECTION_PAGE);
+ // // should already have a plan
+ // assertTrue("1.0", selectableIUsPage.isPageComplete());
+ // // simulate the next button by getting next page and showing
+ // InstallWizardPage installWizardPage = (InstallWizardPage)
+ // selectableIUsPage.getNextPage();
//
- // assertTrue("Licence page bypass flag must be true", wizard.isBypassLicencePage());
- // IWizardPage licensePage = installWizardPage.getNextPage();
- // assertNull("Expected instance of AcceptLicensesWizardPage must be null", licensePage);
+ // assertTrue("Licence page bypass flag must be true",
+ // wizard.isBypassLicencePage());
+ // IWizardPage licensePage = installWizardPage.getNextPage();
+ // assertNull("Expected instance of AcceptLicensesWizardPage must be null",
+ // licensePage);
//
- // } finally {
- // dialog.getShell().close();
- // if (longOp != null)
- // longOp.cancel();
- // }
- // }
+ // } finally {
+ // dialog.getShell().close();
+ // if (longOp != null)
+ // longOp.cancel();
+ // }
+ // }
//
- // private static class MyNewInstallOperation extends InstallOperation {
- // public MyNewInstallOperation(ProvisioningSession session, Collection<IInstallableUnit> toInstall) {
- // super(session, toInstall);
- // }
- // }
+ // private static class MyNewInstallOperation extends InstallOperation {
+ // public MyNewInstallOperation(ProvisioningSession session,
+ // Collection<IInstallableUnit> toInstall) {
+ // super(session, toInstall);
+ // }
+ // }
/**
* Tests the wizard
@@ -223,15 +244,17 @@ public class InstallWithRemediationTest extends WizardTest {
AvailableIUsPage page1 = (AvailableIUsPage) wizard.getPage(AVAILABLE_SOFTWARE_PAGE);
// test initial wizard state
- assertTrue("1.0", page1.getSelectedIUs().size() == 0);
+ assertTrue("1.0", page1.getSelectedIUs().isEmpty());
assertFalse("1.1", page1.isPageComplete());
// Start reaching in...
AvailableIUGroup group = page1.testGetAvailableIUGroup();
group.setRepositoryFilter(AvailableIUGroup.AVAILABLE_ALL, null);
- // Now manipulate the tree itself. we are reaching way in.
- // We are trying to select everything in the repo apart from the IU we know is broken
- DeferredQueryContentProvider provider = (DeferredQueryContentProvider) group.getCheckboxTreeViewer().getContentProvider();
+ // Now manipulate the tree itself. we are reaching way in.
+ // We are trying to select everything in the repo apart from the IU we know is
+ // broken
+ DeferredQueryContentProvider provider = (DeferredQueryContentProvider) group.getCheckboxTreeViewer()
+ .getContentProvider();
provider.setSynchronous(true);
group.getCheckboxTreeViewer().refresh();
group.getCheckboxTreeViewer().expandAll();
@@ -268,11 +291,12 @@ public class InstallWithRemediationTest extends WizardTest {
remediationPage = wizard.getNextPage(page1);
dialog.showPage(remediationPage);
- // // this doesn't test much, it's just calling group API to flesh out NPE's, etc.
- // group.getCheckedLeafIUs();
- // group.getDefaultFocusControl();
- // group.getSelectedIUElements();
- // group.getSelectedIUs();
+ // // this doesn't test much, it's just calling group API to flesh out NPE's,
+ // etc.
+ // group.getCheckedLeafIUs();
+ // group.getDefaultFocusControl();
+ // group.getSelectedIUElements();
+ // group.getSelectedIUs();
} finally {
dialog.close();
diff --git a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/dialogs/InstallWizardTest.java b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/dialogs/InstallWizardTest.java
index f1ca13870..125fdd7b4 100644
--- a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/dialogs/InstallWizardTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/dialogs/InstallWizardTest.java
@@ -52,10 +52,11 @@ public class InstallWizardTest extends WizardTest {
iu.setProperty(InstallableUnitDescription.PROP_TYPE_GROUP, "true");
iu.setVersion(Version.createOSGi(1, 0, 0));
iu.setSingleton(true);
- iu.setLicenses(new ILicense[] {new License(null, "There is a license to accept!", null)});
- iu.setCapabilities(new IProvidedCapability[] {MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, MAIN_IU, iu.getVersion())});
+ iu.setLicenses(new ILicense[] { new License(null, "There is a license to accept!", null) });
+ iu.setCapabilities(new IProvidedCapability[] {
+ MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, MAIN_IU, iu.getVersion()) });
toInstall = MetadataFactory.createInstallableUnit(iu);
- createTestMetdataRepository(new IInstallableUnit[] {toInstall});
+ createTestMetdataRepository(new IInstallableUnit[] { toInstall });
}
public void testInstallWizardResolved() {
@@ -79,7 +80,8 @@ public class InstallWizardTest extends WizardTest {
// we should be ok
assertTrue("1.1", page.isPageComplete());
- // if another operation is scheduled for this profile, we should not be allowed to proceed
+ // if another operation is scheduled for this profile, we should not be allowed
+ // to proceed
longOp = getLongTestOperation();
getProvisioningUI().schedule(longOp, StatusManager.LOG);
// causes recalculation of plan and status
@@ -125,7 +127,8 @@ public class InstallWizardTest extends WizardTest {
// get the operation
Field opField = ResolutionResultsWizardPage.class.getDeclaredField("resolvedOperation");
opField.setAccessible(true);
- assertTrue("Expected instance of MyNewInstallOperation", opField.get(page) instanceof MyNewInstallOperation);
+ assertTrue("Expected instance of MyNewInstallOperation",
+ opField.get(page) instanceof MyNewInstallOperation);
} finally {
dialog.getShell().close();
if (longOp != null)
@@ -154,7 +157,8 @@ public class InstallWizardTest extends WizardTest {
assertFalse("License page bypass flag must be false", wizard.isBypassLicensePage());
IWizardPage licensePage = installWizardPage.getNextPage();
- assertTrue("Expected instance of AcceptLicensesWizardPage", licensePage instanceof AcceptLicensesWizardPage);
+ assertTrue("Expected instance of AcceptLicensesWizardPage",
+ licensePage instanceof AcceptLicensesWizardPage);
} finally {
dialog.getShell().close();
@@ -219,15 +223,17 @@ public class InstallWizardTest extends WizardTest {
AvailableIUsPage page1 = (AvailableIUsPage) wizard.getPage(AVAILABLE_SOFTWARE_PAGE);
// test initial wizard state
- assertTrue("1.0", page1.getSelectedIUs().size() == 0);
+ assertTrue("1.0", page1.getSelectedIUs().isEmpty());
assertFalse("1.1", page1.isPageComplete());
// Start reaching in...
AvailableIUGroup group = page1.testGetAvailableIUGroup();
group.setRepositoryFilter(AvailableIUGroup.AVAILABLE_ALL, null);
- // Now manipulate the tree itself. we are reaching way in.
- // We are trying to select everything in the repo apart from the IU we know is broken
- DeferredQueryContentProvider provider = (DeferredQueryContentProvider) group.getCheckboxTreeViewer().getContentProvider();
+ // Now manipulate the tree itself. we are reaching way in.
+ // We are trying to select everything in the repo apart from the IU we know is
+ // broken
+ DeferredQueryContentProvider provider = (DeferredQueryContentProvider) group.getCheckboxTreeViewer()
+ .getContentProvider();
provider.setSynchronous(true);
group.getCheckboxTreeViewer().refresh();
group.getCheckboxTreeViewer().expandAll();
@@ -252,7 +258,8 @@ public class InstallWizardTest extends WizardTest {
dialog.showPage(page);
assertTrue("3.0", page.isPageComplete());
- // if another operation is scheduled for this profile, we should not be allowed to proceed
+ // if another operation is scheduled for this profile, we should not be allowed
+ // to proceed
longOp = getLongTestOperation();
getProvisioningUI().schedule(longOp, StatusManager.LOG);
// causes recalculation of plan and status
diff --git a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/operations/InstallOperationTests.java b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/operations/InstallOperationTests.java
index fc71e623c..47676b6ee 100644
--- a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/operations/InstallOperationTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/operations/InstallOperationTests.java
@@ -36,17 +36,19 @@ import org.eclipse.equinox.p2.tests.ui.AbstractProvisioningUITest;
public class InstallOperationTests extends AbstractProvisioningUITest {
public void testInstallerPlan() throws ProvisionException {
URI uri = getTestData("InstallHandler", "testData/installPlan").toURI();
- Set<IInstallableUnit> ius = getMetadataRepositoryManager().loadRepository(uri, getMonitor()).query(QueryUtil.createIUQuery("A"), getMonitor()).toSet();
- assertTrue("One IU", ius.size() == 1);
+ Set<IInstallableUnit> ius = getMetadataRepositoryManager().loadRepository(uri, getMonitor())
+ .query(QueryUtil.createIUQuery("A"), getMonitor()).toSet();
+ assertEquals("One IU", 1, ius.size());
InstallOperation op = new InstallOperation(getSession(), ius);
op.setProfileId(TESTPROFILE);
ProvisioningContext pc = new ProvisioningContext(getAgent());
- pc.setArtifactRepositories(new URI[] {uri});
- pc.setMetadataRepositories(new URI[] {uri});
+ pc.setArtifactRepositories(new URI[] { uri });
+ pc.setMetadataRepositories(new URI[] { uri });
op.setProvisioningContext(pc);
assertTrue("Should resolve", op.resolveModal(getMonitor()).isOK());
assertTrue("Should install", op.getProvisioningJob(null).runModal(getMonitor()).isOK());
- assertFalse("Action1 should have been installed", getProfile(TESTPROFILE).query(QueryUtil.createIUQuery("Action1"), getMonitor()).isEmpty());
+ assertFalse("Action1 should have been installed",
+ getProfile(TESTPROFILE).query(QueryUtil.createIUQuery("Action1"), getMonitor()).isEmpty());
}
public void testDetectMissingRequirement() throws ProvisionException, OperationCanceledException {
@@ -59,35 +61,43 @@ public class InstallOperationTests extends AbstractProvisioningUITest {
repoA = getMetadataRepositoryManager().loadRepository(uriA, getMonitor());
// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=305565
- repoA.addReferences(Collections.singletonList(new RepositoryReference(uriA, null, IRepository.TYPE_ARTIFACT, IRepository.ENABLED)));
+ repoA.addReferences(Collections
+ .singletonList(new RepositoryReference(uriA, null, IRepository.TYPE_ARTIFACT, IRepository.ENABLED)));
// now create a second set of repos and refer from the first
repoB = getMetadataRepositoryManager().loadRepository(uriB, getMonitor());
- repoB.addReferences(Collections.singletonList(new RepositoryReference(uriB, null, IRepository.TYPE_ARTIFACT, IRepository.ENABLED)));
- repoA.addReferences(Collections.singletonList(new RepositoryReference(repoB.getLocation(), null, IRepository.TYPE_METADATA, IRepository.ENABLED)));
+ repoB.addReferences(Collections
+ .singletonList(new RepositoryReference(uriB, null, IRepository.TYPE_ARTIFACT, IRepository.ENABLED)));
+ repoA.addReferences(Collections.singletonList(
+ new RepositoryReference(repoB.getLocation(), null, IRepository.TYPE_METADATA, IRepository.ENABLED)));
// this repo is referred by the previous one
repoC = getMetadataRepositoryManager().loadRepository(uriC, getMonitor());
- repoC.addReferences(Collections.singletonList(new RepositoryReference(uriC, null, IRepository.TYPE_ARTIFACT, IRepository.ENABLED)));
- repoB.addReferences(Collections.singletonList(new RepositoryReference(repoC.getLocation(), null, IRepository.TYPE_METADATA, IRepository.ENABLED)));
+ repoC.addReferences(Collections
+ .singletonList(new RepositoryReference(uriC, null, IRepository.TYPE_ARTIFACT, IRepository.ENABLED)));
+ repoB.addReferences(Collections.singletonList(
+ new RepositoryReference(repoC.getLocation(), null, IRepository.TYPE_METADATA, IRepository.ENABLED)));
String id = "TestProfileIDForMissingRequirement";
createProfile(id);
ProvisioningContext context = new ProvisioningContext(getAgent());
- context.setMetadataRepositories(new URI[] {repoA.getLocation()});
+ context.setMetadataRepositories(new URI[] { repoA.getLocation() });
context.setArtifactRepositories(new URI[0]);
- IInstallableUnit[] units = repoA.query(QueryUtil.createIUQuery("A"), getMonitor()).toArray(IInstallableUnit.class);
+ IInstallableUnit[] units = repoA.query(QueryUtil.createIUQuery("A"), getMonitor())
+ .toArray(IInstallableUnit.class);
assertTrue("should find A in main repo", units.length > 0);
// NOW WE CAN TEST!
- assertNull("ProvisioningContext does not follow by default", context.getProperty(ProvisioningContext.FOLLOW_REPOSITORY_REFERENCES));
+ assertNull("ProvisioningContext does not follow by default",
+ context.getProperty(ProvisioningContext.FOLLOW_REPOSITORY_REFERENCES));
InstallOperation op = new InstallOperation(getSession(), Collections.singleton(units[0]));
op.setProvisioningContext(context);
op.setProfileId(id);
assertTrue("Should resolve", op.resolveModal(getMonitor()).isOK());
- assertNotNull("Context was reset to follow", context.getProperty(ProvisioningContext.FOLLOW_REPOSITORY_REFERENCES));
+ assertNotNull("Context was reset to follow",
+ context.getProperty(ProvisioningContext.FOLLOW_REPOSITORY_REFERENCES));
getArtifactRepositoryManager().removeRepository(uriA);
getArtifactRepositoryManager().removeRepository(uriB);
@@ -99,7 +109,7 @@ public class InstallOperationTests extends AbstractProvisioningUITest {
}
public void testUpdateWithNamespaceChange() {
- //Create the IU that will be detected as an update
+ // Create the IU that will be detected as an update
InstallableUnitDescription iud = new MetadataFactory.InstallableUnitDescription();
iud.setId("NewB");
iud.setVersion(Version.create("1.0.0"));
@@ -110,14 +120,15 @@ public class InstallOperationTests extends AbstractProvisioningUITest {
Collection<IMatchExpression<IInstallableUnit>> updateExpression = new ArrayList<>();
updateExpression.add(matchExpression);
- iud.setUpdateDescriptor(MetadataFactory.createUpdateDescriptor(updateExpression, IUpdateDescriptor.HIGH, (String) null, (URI) null));
+ iud.setUpdateDescriptor(MetadataFactory.createUpdateDescriptor(updateExpression, IUpdateDescriptor.HIGH,
+ (String) null, (URI) null));
IInstallableUnit newIUB = MetadataFactory.createInstallableUnit(iud);
- //create the IU being updated
+ // create the IU being updated
IInstallableUnit installed = createIU("B");
- //Setup the profile
- installAsRoots(profile, new IInstallableUnit[] {installed}, true, createPlanner(), createEngine());
+ // Setup the profile
+ installAsRoots(profile, new IInstallableUnit[] { installed }, true, createPlanner(), createEngine());
List<IInstallableUnit> ius = new ArrayList<>();
ius.add(newIUB);
@@ -126,6 +137,7 @@ public class InstallOperationTests extends AbstractProvisioningUITest {
IStatus resolutionStatus = op.resolveModal(getMonitor());
assertEquals(IStatusCodes.PROFILE_CHANGE_ALTERED, ((MultiStatus) resolutionStatus).getChildren()[0].getCode());
- assertEquals(IStatusCodes.ALTERED_IMPLIED_UPDATE, ((MultiStatus) (((MultiStatus) resolutionStatus).getChildren()[0])).getChildren()[0].getCode());
+ assertEquals(IStatusCodes.ALTERED_IMPLIED_UPDATE,
+ ((MultiStatus) (((MultiStatus) resolutionStatus).getChildren()[0])).getChildren()[0].getCode());
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/operations/UpdateOperationTests.java b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/operations/UpdateOperationTests.java
index cb0c9aa5c..0b84b4e63 100644
--- a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/operations/UpdateOperationTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/operations/UpdateOperationTests.java
@@ -33,43 +33,73 @@ public class UpdateOperationTests extends AbstractProvisioningUITest {
protected void setUp() throws Exception {
super.setUp();
a1 = createIU("A", Version.create("1.0.0"));
- IUpdateDescriptor update = MetadataFactory.createUpdateDescriptor("A", new VersionRange("[1.0.0, 1.0.0]"), 0, "update description");
- a120WithDifferentId = createIU("UpdateA", Version.createOSGi(1, 2, 0), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, null, NO_TP_DATA, false, update, NO_REQUIRES);
- a130 = createIU("A", Version.createOSGi(1, 3, 0), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, null, NO_TP_DATA, false, update, NO_REQUIRES);
- a140WithDifferentId = createIU("UpdateForA", Version.createOSGi(1, 4, 0), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, null, NO_TP_DATA, false, update, NO_REQUIRES);
- IRequirementChange change = MetadataFactory.createRequirementChange(MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
- IRequirement lifeCycle = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.0.0]"), null, false, false);
- firstPatchForA1 = createIUPatch("P", Version.create("1.0.0"), true, new IRequirementChange[] {change}, new IRequirement[][] {{MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, lifeCycle);
- secondPatchForA1 = createIUPatch("P", Version.create("2.0.0"), true, new IRequirementChange[] {change}, new IRequirement[][] {{MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, lifeCycle);
- thirdPatchForA1 = createIUPatch("P2", Version.create("1.0.0"), true, new IRequirementChange[] {change}, new IRequirement[][] {{MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, lifeCycle);
+ IUpdateDescriptor update = MetadataFactory.createUpdateDescriptor("A", new VersionRange("[1.0.0, 1.0.0]"), 0,
+ "update description");
+ a120WithDifferentId = createIU("UpdateA", Version.createOSGi(1, 2, 0), null, NO_REQUIRES, NO_PROVIDES,
+ NO_PROPERTIES, null, NO_TP_DATA, false, update, NO_REQUIRES);
+ a130 = createIU("A", Version.createOSGi(1, 3, 0), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, null,
+ NO_TP_DATA, false, update, NO_REQUIRES);
+ a140WithDifferentId = createIU("UpdateForA", Version.createOSGi(1, 4, 0), null, NO_REQUIRES, NO_PROVIDES,
+ NO_PROPERTIES, null, NO_TP_DATA, false, update, NO_REQUIRES);
+ IRequirementChange change = MetadataFactory.createRequirementChange(
+ MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null,
+ false, false, false),
+ MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "B",
+ new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
+ IRequirement lifeCycle = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "A",
+ new VersionRange("[1.0.0, 1.0.0]"), null, false, false);
+ firstPatchForA1 = createIUPatch("P", Version.create("1.0.0"), true, new IRequirementChange[] { change },
+ new IRequirement[][] { { MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "A",
+ VersionRange.emptyRange, null, false, false) } },
+ lifeCycle);
+ secondPatchForA1 = createIUPatch("P", Version.create("2.0.0"), true, new IRequirementChange[] { change },
+ new IRequirement[][] { { MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "A",
+ VersionRange.emptyRange, null, false, false) } },
+ lifeCycle);
+ thirdPatchForA1 = createIUPatch("P2", Version.create("1.0.0"), true, new IRequirementChange[] { change },
+ new IRequirement[][] { { MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "A",
+ VersionRange.emptyRange, null, false, false) } },
+ lifeCycle);
- IRequirementChange change2 = MetadataFactory.createRequirementChange(MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
- IRequirement lifeCycle2 = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[2.0.0, 3.2.0]"), null, false, false);
- patchFora2 = createIUPatch("P", Version.create("1.0.0"), true, new IRequirementChange[] {change2}, new IRequirement[][] {{MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, lifeCycle2);
+ IRequirementChange change2 = MetadataFactory.createRequirementChange(
+ MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null,
+ false, false, false),
+ MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "B",
+ new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
+ IRequirement lifeCycle2 = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "A",
+ new VersionRange("[2.0.0, 3.2.0]"), null, false, false);
+ patchFora2 = createIUPatch("P", Version.create("1.0.0"), true, new IRequirementChange[] { change2 },
+ new IRequirement[][] { { MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "A",
+ VersionRange.emptyRange, null, false, false) } },
+ lifeCycle2);
b1 = createIU("B", Version.create("1.0.0"));
- update = MetadataFactory.createUpdateDescriptor("B", new VersionRange("[1.0.0, 1.0.0]"), 0, "update description");
- b12 = createIU("B", Version.createOSGi(1, 2, 0), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, null, NO_TP_DATA, false, update, NO_REQUIRES);
+ update = MetadataFactory.createUpdateDescriptor("B", new VersionRange("[1.0.0, 1.0.0]"), 0,
+ "update description");
+ b12 = createIU("B", Version.createOSGi(1, 2, 0), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, null,
+ NO_TP_DATA, false, update, NO_REQUIRES);
// Ensure that all versions, not just the latest, are considered by the UI
getPolicy().setShowLatestVersionsOnly(false);
}
public void testChooseUpdateOverPatch() {
- createTestMetdataRepository(new IInstallableUnit[] {a1, a120WithDifferentId, a130, firstPatchForA1, patchFora2});
+ createTestMetdataRepository(
+ new IInstallableUnit[] { a1, a120WithDifferentId, a130, firstPatchForA1, patchFora2 });
install(a1, true, false);
ArrayList<IInstallableUnit> iusInvolved = new ArrayList<>();
iusInvolved.add(a1);
UpdateOperation op = getProvisioningUI().getUpdateOperation(iusInvolved, null);
op.resolveModal(getMonitor());
IProfileChangeRequest request = op.getProfileChangeRequest();
- assertTrue("1.0", request.getAdditions().size() == 1);
- assertTrue("1.1", request.getAdditions().iterator().next().equals(a130));
- assertTrue("1.2", request.getRemovals().size() == 1);
- assertTrue("1.3", request.getRemovals().iterator().next().equals(a1));
+ assertEquals("1.0", 1, request.getAdditions().size());
+ assertEquals("1.1", a130, request.getAdditions().iterator().next());
+ assertEquals("1.2", 1, request.getRemovals().size());
+ assertEquals("1.3", a1, request.getRemovals().iterator().next());
}
public void testForcePatchOverUpdate() {
- createTestMetdataRepository(new IInstallableUnit[] {a1, a120WithDifferentId, a130, firstPatchForA1, patchFora2});
+ createTestMetdataRepository(
+ new IInstallableUnit[] { a1, a120WithDifferentId, a130, firstPatchForA1, patchFora2 });
install(a1, true, false);
ArrayList<IInstallableUnit> iusInvolved = new ArrayList<>();
iusInvolved.add(a1);
@@ -84,16 +114,17 @@ public class UpdateOperationTests extends AbstractProvisioningUITest {
}
}
assertNotNull(".99", firstPatch);
- op.setSelectedUpdates(new Update[] {firstPatch});
+ op.setSelectedUpdates(new Update[] { firstPatch });
op.resolveModal(getMonitor());
IProfileChangeRequest request = op.getProfileChangeRequest();
- assertTrue("1.0", request.getAdditions().size() == 1);
- assertTrue("1.1", request.getAdditions().iterator().next().equals(firstPatchForA1));
- assertTrue("1.2", request.getRemovals().size() == 0);
+ assertEquals("1.0", 1, request.getAdditions().size());
+ assertEquals("1.1", firstPatchForA1, request.getAdditions().iterator().next());
+ assertTrue("1.2", request.getRemovals().isEmpty());
}
public void testRecognizePatchIsInstalled() {
- createTestMetdataRepository(new IInstallableUnit[] {a1, a120WithDifferentId, a130, firstPatchForA1, patchFora2});
+ createTestMetdataRepository(
+ new IInstallableUnit[] { a1, a120WithDifferentId, a130, firstPatchForA1, patchFora2 });
install(a1, true, false);
install(firstPatchForA1, true, false);
ArrayList<IInstallableUnit> iusInvolved = new ArrayList<>();
@@ -102,15 +133,17 @@ public class UpdateOperationTests extends AbstractProvisioningUITest {
op.resolveModal(getMonitor());
IProfileChangeRequest request = op.getProfileChangeRequest();
// update was favored, that would happen even if patch was not installed
- assertTrue("1.0", request.getAdditions().size() == 1);
- assertTrue("1.1", request.getAdditions().iterator().next().equals(a130));
- // the patch is not being shown to the user because we figured out it was already installed
+ assertEquals("1.0", 1, request.getAdditions().size());
+ assertEquals("1.1", a130, request.getAdditions().iterator().next());
+ // the patch is not being shown to the user because we figured out it was
+ // already installed
// The elements showing are a130 and a120WithDifferentId
assertEquals("1.2", 2, op.getPossibleUpdates().length);
}
public void testChooseNotTheNewest() {
- createTestMetdataRepository(new IInstallableUnit[] {a1, a120WithDifferentId, a130, firstPatchForA1, patchFora2});
+ createTestMetdataRepository(
+ new IInstallableUnit[] { a1, a120WithDifferentId, a130, firstPatchForA1, patchFora2 });
install(a1, true, false);
ArrayList<IInstallableUnit> iusInvolved = new ArrayList<>();
iusInvolved.add(a1);
@@ -125,18 +158,18 @@ public class UpdateOperationTests extends AbstractProvisioningUITest {
}
}
assertNotNull(".99", notNewest);
- op.setSelectedUpdates(new Update[] {notNewest});
+ op.setSelectedUpdates(new Update[] { notNewest });
op.resolveModal(getMonitor());
IProfileChangeRequest request = op.getProfileChangeRequest();
// selected was favored
- assertTrue("1.0", request.getAdditions().size() == 1);
- assertTrue("1.1", request.getAdditions().iterator().next().equals(a120WithDifferentId));
+ assertEquals("1.0", 1, request.getAdditions().size());
+ assertEquals("1.1", a120WithDifferentId, request.getAdditions().iterator().next());
// The two updates and the patch were recognized
assertEquals("1.2", 3, op.getPossibleUpdates().length);
}
public void testChooseLatestPatches() {
- createTestMetdataRepository(new IInstallableUnit[] {a1, firstPatchForA1, secondPatchForA1, thirdPatchForA1});
+ createTestMetdataRepository(new IInstallableUnit[] { a1, firstPatchForA1, secondPatchForA1, thirdPatchForA1 });
install(a1, true, false);
ArrayList<IInstallableUnit> iusInvolved = new ArrayList<>();
iusInvolved.add(a1);
@@ -145,7 +178,7 @@ public class UpdateOperationTests extends AbstractProvisioningUITest {
IProfileChangeRequest request = op.getProfileChangeRequest();
// the latest two patches were selected
HashSet<IInstallableUnit> chosen = new HashSet<>();
- assertTrue("1.0", request.getAdditions().size() == 2);
+ assertEquals("1.0", 2, request.getAdditions().size());
chosen.addAll(request.getAdditions());
assertTrue("1.1", chosen.contains(secondPatchForA1));
assertTrue("1.2", chosen.contains(thirdPatchForA1));
@@ -154,7 +187,8 @@ public class UpdateOperationTests extends AbstractProvisioningUITest {
}
public void testLatestHasDifferentId() {
- createTestMetdataRepository(new IInstallableUnit[] {a1, firstPatchForA1, secondPatchForA1, thirdPatchForA1, a120WithDifferentId, a130, a140WithDifferentId});
+ createTestMetdataRepository(new IInstallableUnit[] { a1, firstPatchForA1, secondPatchForA1, thirdPatchForA1,
+ a120WithDifferentId, a130, a140WithDifferentId });
install(a1, true, false);
ArrayList<IInstallableUnit> iusInvolved = new ArrayList<>();
iusInvolved.add(a1);
@@ -162,15 +196,15 @@ public class UpdateOperationTests extends AbstractProvisioningUITest {
op.resolveModal(getMonitor());
IProfileChangeRequest request = op.getProfileChangeRequest();
// update 140 was recognized as the latest even though it had a different id
- assertTrue("1.0", request.getAdditions().size() == 1);
- assertTrue("1.1", request.getAdditions().iterator().next().equals(a140WithDifferentId));
+ assertEquals("1.0", 1, request.getAdditions().size());
+ assertEquals("1.1", a140WithDifferentId, request.getAdditions().iterator().next());
// All three patches and all three updates can be chosen
assertEquals("1.2", 6, op.getPossibleUpdates().length);
}
// bug 300445
public void testRemoveSelectionAfterResolve() {
- createTestMetdataRepository(new IInstallableUnit[] {a1, a130, b1, b12});
+ createTestMetdataRepository(new IInstallableUnit[] { a1, a130, b1, b12 });
install(a1, true, false);
ArrayList<IInstallableUnit> iusInvolved = new ArrayList<>();
iusInvolved.add(a1);
@@ -180,14 +214,14 @@ public class UpdateOperationTests extends AbstractProvisioningUITest {
Update[] updates = op.getSelectedUpdates();
assertEquals("1.0", 2, updates.length);
// choose just one
- op.setSelectedUpdates(new Update[] {updates[0]});
+ op.setSelectedUpdates(new Update[] { updates[0] });
op.resolveModal(getMonitor());
assertEquals("1.1", 1, op.getSelectedUpdates().length);
}
// bug 290858
public void testSearchForUpdatesInJob() {
- createTestMetdataRepository(new IInstallableUnit[] {a1, a130, b1, b12});
+ createTestMetdataRepository(new IInstallableUnit[] { a1, a130, b1, b12 });
install(a1, true, false);
ArrayList<IInstallableUnit> iusInvolved = new ArrayList<>();
iusInvolved.add(a1);
diff --git a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/query/AbstractQueryTest.java b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/query/AbstractQueryTest.java
index 7450a5468..5ca02fd42 100644
--- a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/query/AbstractQueryTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/query/AbstractQueryTest.java
@@ -31,7 +31,8 @@ public abstract class AbstractQueryTest extends AbstractProvisioningTest {
// use test query provider
// This is really not how the default policy should be used in practice,
// but we need to reset it for the tests.
- // ProvUI.setQueryProvider(new MockQueryProvider(getMockQuery(), ProvisioningUI.getDefaultUI()));
+ // ProvUI.setQueryProvider(new MockQueryProvider(getMockQuery(),
+ // ProvisioningUI.getDefaultUI()));
// some of the test repos are set up as system repos so we need to
// query all repos, not just non-system repos
// TODO consider evolving these tests to distinguish between system
@@ -47,11 +48,11 @@ public abstract class AbstractQueryTest extends AbstractProvisioningTest {
RepositoryTracker manipulator = ProvisioningUI.getDefaultUI().getRepositoryTracker();
manipulator.setArtifactRepositoryFlags(IRepositoryManager.REPOSITORIES_NON_SYSTEM);
manipulator.setMetadataRepositoryFlags(IRepositoryManager.REPOSITORIES_NON_SYSTEM);
- // ProvUI.setQueryProvider(null);
+ // ProvUI.setQueryProvider(null);
}
protected IQuery<?> getMockQuery() {
- return new MatchQuery<Object>() {
+ return new MatchQuery<>() {
@Deprecated
@Override
public boolean isMatch(Object candidate) {
diff --git a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/query/QueryProviderTests.java b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/query/QueryProviderTests.java
index 6214b5448..9d279de2c 100644
--- a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/query/QueryProviderTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/query/QueryProviderTests.java
@@ -40,12 +40,16 @@ public class QueryProviderTests extends AbstractProvisioningUITest {
categoryProperties.put("org.eclipse.equinox.p2.type.category", "true");
HashMap<String, String> groupProperties = new HashMap<>();
groupProperties.put("org.eclipse.equinox.p2.type.group", "true");
- category = createIU(CAT, Version.create("1.0.0"), createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, NESTED), categoryProperties, true);
- nestedCategory = createIU(NESTED, Version.create("1.0.0"), createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, A), categoryProperties, true);
- a = createIU(A, Version.create("1.0.0"), createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, B), groupProperties, true);
- b = createIU(B, Version.create("1.0.0"), createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, C), groupProperties, true);
+ category = createIU(CAT, Version.create("1.0.0"),
+ createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, NESTED), categoryProperties, true);
+ nestedCategory = createIU(NESTED, Version.create("1.0.0"),
+ createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, A), categoryProperties, true);
+ a = createIU(A, Version.create("1.0.0"), createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, B),
+ groupProperties, true);
+ b = createIU(B, Version.create("1.0.0"), createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, C),
+ groupProperties, true);
c = createIU(C, Version.create("1.0.0"), NO_REQUIRES, NO_PROPERTIES, true);
- testRepo = createTestMetdataRepository(new IInstallableUnit[] {category, nestedCategory, a, b, c});
+ testRepo = createTestMetdataRepository(new IInstallableUnit[] { category, nestedCategory, a, b, c });
}
public void testNestedCategories() {
@@ -69,8 +73,9 @@ public class QueryProviderTests extends AbstractProvisioningUITest {
public void testInstallDrilldown() {
IUElementListRoot root = new IUElementListRoot();
- AvailableIUElement element = new AvailableIUElement(root, a, TESTPROFILE, getPolicy().getShowDrilldownRequirements());
- root.setChildren(new Object[] {element});
+ AvailableIUElement element = new AvailableIUElement(root, a, TESTPROFILE,
+ getPolicy().getShowDrilldownRequirements());
+ root.setChildren(new Object[] { element });
ArrayList<IInstallableUnit> iusInvolved = new ArrayList<>();
iusInvolved.add(a);
InstallOperation op = new InstallOperation(getSession(), iusInvolved);
@@ -79,7 +84,7 @@ public class QueryProviderTests extends AbstractProvisioningUITest {
IQueryable<IInstallableUnit> queryable = op.getProvisioningPlan().getAdditions();
element.setQueryable(queryable);
Object[] children = element.getChildren(element);
- assertTrue("1.1", children.length == 1);
+ assertEquals("1.1", 1, children.length);
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/query/QueryableArtifactRepositoryManagerTest.java b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/query/QueryableArtifactRepositoryManagerTest.java
index 181b9bbab..6630186f2 100644
--- a/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/query/QueryableArtifactRepositoryManagerTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests.ui/src/org/eclipse/equinox/p2/tests/ui/query/QueryableArtifactRepositoryManagerTest.java
@@ -50,7 +50,7 @@ public class QueryableArtifactRepositoryManagerTest extends AbstractQueryTest {
QueryableArtifactRepositoryManager manager = getQueryableManager();
IQueryResult<URI> result = manager.locationsQueriable().query(new RepositoryLocationQuery(), getMonitor());
- assertTrue(queryResultSize(result) == repoCount);
+ assertEquals(repoCount, queryResultSize(result));
}
private QueryableArtifactRepositoryManager getQueryableManager() {
diff --git a/bundles/org.eclipse.equinox.p2.tests.verifier/.classpath b/bundles/org.eclipse.equinox.p2.tests.verifier/.classpath
index 3e5654f17..a42a828e0 100644
--- a/bundles/org.eclipse.equinox.p2.tests.verifier/.classpath
+++ b/bundles/org.eclipse.equinox.p2.tests.verifier/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src">
<attributes>
diff --git a/bundles/org.eclipse.equinox.p2.tests.verifier/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.tests.verifier/.settings/org.eclipse.jdt.core.prefs
index 40fd1971f..a196f12c6 100644
--- a/bundles/org.eclipse.equinox.p2.tests.verifier/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.tests.verifier/.settings/org.eclipse.jdt.core.prefs
@@ -18,9 +18,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -37,6 +37,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -94,6 +95,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -130,7 +132,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=error
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -144,7 +147,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -265,7 +267,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -336,7 +337,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -481,7 +481,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.tests.verifier/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.tests.verifier/META-INF/MANIFEST.MF
index e8c5c840b..adaef97d8 100644
--- a/bundles/org.eclipse.equinox.p2.tests.verifier/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.tests.verifier/META-INF/MANIFEST.MF
@@ -1,8 +1,8 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: Test Install Verifier
+Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.equinox.p2.tests.verifier;singleton:=true
-Bundle-Version: 1.2.400.qualifier
+Bundle-Version: 1.3.100.qualifier
Bundle-Activator: org.eclipse.equinox.internal.p2.tests.verifier.Activator
Export-Package: org.eclipse.equinox.internal.p2.tests.verifier;x-internal:=true
Require-Bundle: org.eclipse.core.runtime,
@@ -12,8 +12,9 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.equinox.p2.metadata;bundle-version="2.2.0",
org.eclipse.equinox.p2.ui;bundle-version="2.3.0",
org.eclipse.equinox.p2.operations;bundle-version="2.3.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Import-Package: org.eclipse.equinox.internal.p2.core.helpers,
+ org.eclipse.equinox.internal.p2.engine,
org.eclipse.equinox.internal.p2.ui.sdk.scheduler.migration,
org.eclipse.equinox.p2.engine;version="[2.0.0,3.0.0)",
org.eclipse.equinox.p2.query;version="[2.0.0,3.0.0)"
@@ -21,3 +22,4 @@ Bundle-ActivationPolicy: lazy
Bundle-ClassPath: bin/,
.
Automatic-Module-Name: org.eclipse.equinox.p2.tests.verifier
+Bundle-Vendor: %Bundle-Vendor
diff --git a/bundles/org.eclipse.equinox.p2.tests.verifier/OSGI-INF/l10n/bundle.properties b/bundles/org.eclipse.equinox.p2.tests.verifier/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 000000000..0cebbef04
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests.verifier/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,3 @@
+#Properties file for org.eclipse.equinox.p2.tests.verifier
+Bundle-Vendor = Eclipse.org - Equinox
+Bundle-Name = Test Install Verifier \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.tests.verifier/build.properties b/bundles/org.eclipse.equinox.p2.tests.verifier/build.properties
index d0960de35..d0ec30270 100644
--- a/bundles/org.eclipse.equinox.p2.tests.verifier/build.properties
+++ b/bundles/org.eclipse.equinox.p2.tests.verifier/build.properties
@@ -16,5 +16,6 @@ output.. = bin/
bin.includes = META-INF/,\
.,\
plugin.xml,\
- about.html
-javacWarnings..=-raw,-unchecked,-varargsCast
+ about.html,\
+ OSGI-INF/l10n/bundle.properties,\
+ OSGI-INF/
diff --git a/bundles/org.eclipse.equinox.p2.tests.verifier/pom.xml b/bundles/org.eclipse.equinox.p2.tests.verifier/pom.xml
index da22752e9..08bb6782c 100644
--- a/bundles/org.eclipse.equinox.p2.tests.verifier/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.tests.verifier/pom.xml
@@ -4,11 +4,11 @@
<parent>
<artifactId>org.eclipse.equinox.p2.tests-parent</artifactId>
<groupId>org.eclipse</groupId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../../org.eclipse.equinox.p2.releng/org.eclipse.equinox.p2.tests-parent</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.tests.verifier</artifactId>
- <version>1.2.400-SNAPSHOT</version>
+ <version>1.3.100-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.tests.verifier/src/org/eclipse/equinox/internal/p2/tests/verifier/VerifierApplication.java b/bundles/org.eclipse.equinox.p2.tests.verifier/src/org/eclipse/equinox/internal/p2/tests/verifier/VerifierApplication.java
index 484a0447e..ef952b904 100644
--- a/bundles/org.eclipse.equinox.p2.tests.verifier/src/org/eclipse/equinox/internal/p2/tests/verifier/VerifierApplication.java
+++ b/bundles/org.eclipse.equinox.p2.tests.verifier/src/org/eclipse/equinox/internal/p2/tests/verifier/VerifierApplication.java
@@ -20,10 +20,12 @@ import java.net.URI;
import java.util.*;
import java.util.Map.Entry;
import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.equinox.app.IApplication;
import org.eclipse.equinox.app.IApplicationContext;
import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
+import org.eclipse.equinox.internal.p2.engine.ProfilePreferences;
import org.eclipse.equinox.internal.p2.ui.sdk.scheduler.migration.MigrationWizard;
import org.eclipse.equinox.p2.core.IProvisioningAgent;
import org.eclipse.equinox.p2.engine.IProfile;
@@ -150,8 +152,8 @@ public class VerifierApplication implements IApplication {
for (StringTokenizer tokenizer = new StringTokenizer(list, ","); tokenizer.hasMoreTokens();)
ignoreResolved.add(tokenizer.nextToken().trim());
}
- for (Iterator<String> iter = ignoreResolved.iterator(); iter.hasNext();) {
- if (bundle.equals(iter.next()))
+ for (String string : ignoreResolved) {
+ if (bundle.equals(string))
return false;
}
return true;
@@ -203,8 +205,8 @@ public class VerifierApplication implements IApplication {
}
MultiStatus result = new MultiStatus(Activator.PLUGIN_ID, IStatus.OK, "Problems checking resolved bundles.", null); //$NON-NLS-1$
- for (Iterator<IStatus> iter = allProblems.iterator(); iter.hasNext();)
- result.add(iter.next());
+ for (IStatus status : allProblems)
+ result.add(status);
return result;
}
@@ -350,6 +352,15 @@ public class VerifierApplication implements IApplication {
MigrationWizard wizardPage = new MigrationWizard(profile, Collections.emptyList(), new URI[0], false);
int cancelAnswer = Integer.parseInt(properties.getProperty("checkMigration.cancelAnswer"));
wizardPage.rememberCancellationDecision(cancelAnswer);
+ // The preferences are saved by:
+ // org.eclipse.equinox.internal.p2.engine.ProfilePreferences.SaveJob
+ // This job is scheduled with a delay: saveJob.schedule(SAVE_SCHEDULE_DELAY).
+ // We'd best wait for that job to complete before existing.
+ try {
+ Job.getJobManager().join(ProfilePreferences.PROFILE_SAVE_JOB_FAMILY, null);
+ } catch (InterruptedException e) {
+ throw new RuntimeException();
+ }
}
private IStatus checkSystemProperties() {
diff --git a/bundles/org.eclipse.equinox.p2.tests/.classpath b/bundles/org.eclipse.equinox.p2.tests/.classpath
index 3e5654f17..a42a828e0 100644
--- a/bundles/org.eclipse.equinox.p2.tests/.classpath
+++ b/bundles/org.eclipse.equinox.p2.tests/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src">
<attributes>
diff --git a/bundles/org.eclipse.equinox.p2.tests/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.tests/.settings/org.eclipse.jdt.core.prefs
index a9d9261d8..22ffd0a77 100644
--- a/bundles/org.eclipse.equinox.p2.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.tests/.settings/org.eclipse.jdt.core.prefs
@@ -19,9 +19,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -37,6 +37,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -94,6 +95,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -129,7 +131,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=error
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -143,7 +146,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -264,7 +266,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -335,7 +336,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -480,7 +480,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.tests/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.tests/META-INF/MANIFEST.MF
index 1f3f517f6..73c3d22e7 100644
--- a/bundles/org.eclipse.equinox.p2.tests/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.tests;singleton:=true
-Bundle-Version: 1.7.800.qualifier
+Bundle-Version: 1.8.700.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.equinox.p2.tests.TestActivator
Bundle-Vendor: %providerName
@@ -26,7 +26,6 @@ Require-Bundle: org.eclipse.equinox.frameworkadmin,
org.eclipse.core.tests.harness;bundle-version="3.4.0",
org.eclipse.core.runtime;bundle-version="3.4.0",
org.eclipse.equinox.p2.publisher;bundle-version="1.0.0",
- org.easymock;bundle-version="2.4.0",
org.eclipse.equinox.frameworkadmin.test;bundle-version="1.0.0",
org.junit;bundle-version="4.8.0",
org.hamcrest.core;bundle-version="1.3.0",
@@ -46,7 +45,7 @@ Require-Bundle: org.eclipse.equinox.frameworkadmin,
org.eclipse.ecf.filetransfer;bundle-version="4.0.0",
org.eclipse.ecf.identity;bundle-version="3.1.0",
org.eclipse.ecf.provider.filetransfer;bundle-version="3.1.0",
- org.eclipse.ecf.provider.filetransfer.httpclient45,
+ org.eclipse.ecf.provider.filetransfer.httpclient5,
org.eclipse.equinox.p2.reconciler.dropins;bundle-version="1.1.0",
org.eclipse.ant.core;bundle-version="3.2.200",
org.apache.ant;bundle-version="1.7.1",
@@ -54,13 +53,15 @@ Require-Bundle: org.eclipse.equinox.frameworkadmin,
org.eclipse.equinox.p2.publisher.eclipse;bundle-version="1.0.0",
org.eclipse.equinox.p2.operations;bundle-version="2.1.0",
org.eclipse.equinox.p2.ui.sdk.scheduler,
- org.eclipse.equinox.p2.artifact.repository;bundle-version="[1.3.0,2.0.0)"
+ org.eclipse.equinox.p2.artifact.repository;bundle-version="[1.3.0,2.0.0)",
+ org.hamcrest.library;bundle-version="1.3.0",
+ org.mockito.mockito-core,
+ net.bytebuddy.byte-buddy
Eclipse-RegisterBuddy: org.eclipse.equinox.p2.artifact.repository
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Eclipse-BundleShape: dir
Bundle-ActivationPolicy: lazy
-Import-Package: javax.xml.parsers,
- org.eclipse.ant.core,
+Import-Package: org.eclipse.ant.core,
org.eclipse.core.filesystem,
org.eclipse.ecf.filetransfer,
org.eclipse.equinox.internal.p2.artifact.processors.checksum,
@@ -113,6 +114,5 @@ Import-Package: javax.xml.parsers,
org.eclipse.osgi.util;version="1.1.0",
org.osgi.framework;version="1.3.0",
org.osgi.service.packageadmin;version="1.2.0",
- org.osgi.util.tracker;version="1.3.0",
- org.xml.sax
+ org.osgi.util.tracker;version="1.3.0"
Automatic-Module-Name: org.eclipse.equinox.p2.tests
diff --git a/bundles/org.eclipse.equinox.p2.tests/Test Director SDK.launch b/bundles/org.eclipse.equinox.p2.tests/Test Director SDK.launch
index 16407dbaf..b01e95643 100644
--- a/bundles/org.eclipse.equinox.p2.tests/Test Director SDK.launch
+++ b/bundles/org.eclipse.equinox.p2.tests/Test Director SDK.launch
@@ -32,7 +32,7 @@
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.p2.data.area=d:/tmp/equinox.p2/agent/ &#13;&#10;-Declipse.p2.metadataRepository=file:d:/tmp/equinox.p2/servers/metadataRepository/ &#13;&#10;-Declipse.p2.artifactRepository=file:d:/tmp/equinox.p2/servers/artifactRepository/&#13;&#10;-Declipse.p2.installFolder=d:/tmp/equinox.p2/eclipseInstall/ &#13;&#10;-Declipse.p2.configurationFlavor=tooling&#13;&#10;-Declipse.p2.autoInstall=sdk"/>
<stringAttribute key="pde.version" value="3.3"/>
<stringAttribute key="product" value="org.eclipse.platform.ide"/>
-<stringAttribute key="selected_target_plugins" value="com.ibm.icu,com.ibm.icu.source,com.jcraft.jsch,javax.servlet,javax.servlet.jsp,javax.servlet.jsp.source,javax.servlet.source,org.apache.ant,org.apache.ant.source,org.apache.commons.el,org.apache.commons.el.source,org.apache.commons.logging,org.apache.commons.logging.source,org.apache.jasper,org.apache.jasper.source,org.apache.lucene,org.apache.lucene.analysis,org.apache.lucene.analysis.source,org.apache.lucene.source,org.eclipse.ant.core,org.eclipse.ant.ui,org.eclipse.compare,org.eclipse.core.boot,org.eclipse.core.commands,org.eclipse.core.contenttype,org.eclipse.core.databinding,org.eclipse.core.databinding.beans,org.eclipse.core.expressions,org.eclipse.core.filebuffers,org.eclipse.core.filesystem,org.eclipse.core.filesystem.win32.x86,org.eclipse.core.jobs,org.eclipse.core.net,org.eclipse.core.resources,org.eclipse.core.resources.compatibility,org.eclipse.core.resources.win32,org.eclipse.core.runtime,org.eclipse.core.runtime.compatibility,org.eclipse.core.runtime.compatibility.auth,org.eclipse.core.runtime.compatibility.registry,org.eclipse.core.variables,org.eclipse.cvs,org.eclipse.cvs.source,org.eclipse.debug.core,org.eclipse.debug.ui,org.eclipse.equinox.app,org.eclipse.equinox.common,org.eclipse.equinox.http.jetty,org.eclipse.equinox.http.registry,org.eclipse.equinox.http.servlet,org.eclipse.equinox.jsp.jasper,org.eclipse.equinox.jsp.jasper.registry,org.eclipse.equinox.launcher,org.eclipse.equinox.launcher.win32.win32.x86,org.eclipse.equinox.preferences,org.eclipse.equinox.registry,org.eclipse.help,org.eclipse.help.appserver,org.eclipse.help.base,org.eclipse.help.ui,org.eclipse.help.webapp,org.eclipse.jdt,org.eclipse.jdt.apt.core,org.eclipse.jdt.apt.pluggable.core,org.eclipse.jdt.apt.ui,org.eclipse.jdt.compiler.apt,org.eclipse.jdt.compiler.tool,org.eclipse.jdt.core,org.eclipse.jdt.core.manipulation,org.eclipse.jdt.debug,org.eclipse.jdt.debug.ui,org.eclipse.jdt.doc.isv,org.eclipse.jdt.doc.user,org.eclipse.jdt.junit,org.eclipse.jdt.junit.runtime,org.eclipse.jdt.junit4.runtime,org.eclipse.jdt.launching,org.eclipse.jdt.source,org.eclipse.jdt.ui,org.eclipse.jface,org.eclipse.jface.databinding,org.eclipse.jface.text,org.eclipse.jsch.core,org.eclipse.jsch.ui,org.eclipse.ltk.core.refactoring,org.eclipse.ltk.ui.refactoring,org.eclipse.osgi,org.eclipse.osgi.services,org.eclipse.osgi.util,org.eclipse.pde,org.eclipse.pde.build,org.eclipse.pde.core,org.eclipse.pde.doc.user,org.eclipse.pde.junit.runtime,org.eclipse.pde.runtime,org.eclipse.pde.source,org.eclipse.pde.ui,org.eclipse.pde.ui.templates,org.eclipse.platform,org.eclipse.platform.doc.isv,org.eclipse.platform.doc.user,org.eclipse.platform.source,org.eclipse.platform.source.win32.win32.x86,org.eclipse.rcp,org.eclipse.rcp.source,org.eclipse.rcp.source.win32.win32.x86,org.eclipse.sdk,org.eclipse.search,org.eclipse.swt,org.eclipse.swt.win32.win32.x86,org.eclipse.team.core,org.eclipse.team.cvs.core,org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh2,org.eclipse.team.cvs.ui,org.eclipse.team.ui,org.eclipse.text,org.eclipse.tomcat,org.eclipse.ui,org.eclipse.ui.browser,org.eclipse.ui.cheatsheets,org.eclipse.ui.console,org.eclipse.ui.editors,org.eclipse.ui.externaltools,org.eclipse.ui.forms,org.eclipse.ui.ide,org.eclipse.ui.ide.application,org.eclipse.ui.intro,org.eclipse.ui.intro.universal,org.eclipse.ui.navigator,org.eclipse.ui.navigator.resources,org.eclipse.ui.net,org.eclipse.ui.presentations.r21,org.eclipse.ui.views,org.eclipse.ui.views.properties.tabbed,org.eclipse.ui.win32,org.eclipse.ui.workbench,org.eclipse.ui.workbench.compatibility,org.eclipse.ui.workbench.texteditor,org.eclipse.update.configurator,org.eclipse.update.scheduler,org.eclipse.update.ui,org.junit,org.junit.source,org.junit4,org.mortbay.jetty,org.mortbay.jetty.source"/>
+<stringAttribute key="selected_target_plugins" value="com.ibm.icu,com.ibm.icu.source,com.jcraft.jsch,javax.servlet,javax.servlet.jsp,javax.servlet.jsp.source,javax.servlet.source,org.apache.ant,org.apache.ant.source,org.apache.commons.el,org.apache.commons.el.source,org.apache.commons.logging,org.apache.commons.logging.source,org.apache.jasper,org.apache.jasper.source,org.apache.lucene,org.apache.lucene.analysis,org.apache.lucene.analysis.source,org.apache.lucene.source,org.eclipse.ant.core,org.eclipse.ant.ui,org.eclipse.compare,org.eclipse.core.boot,org.eclipse.core.commands,org.eclipse.core.contenttype,org.eclipse.core.databinding,org.eclipse.core.databinding.beans,org.eclipse.core.expressions,org.eclipse.core.filebuffers,org.eclipse.core.filesystem,org.eclipse.core.filesystem.win32.x86,org.eclipse.core.jobs,org.eclipse.core.net,org.eclipse.core.resources,org.eclipse.core.resources.compatibility,org.eclipse.core.resources.win32,org.eclipse.core.runtime,org.eclipse.core.runtime.compatibility,org.eclipse.core.runtime.compatibility.auth,org.eclipse.core.runtime.compatibility.registry,org.eclipse.core.variables,org.eclipse.cvs,org.eclipse.cvs.source,org.eclipse.debug.core,org.eclipse.debug.ui,org.eclipse.equinox.app,org.eclipse.equinox.common,org.eclipse.equinox.http.jetty,org.eclipse.equinox.http.registry,org.eclipse.equinox.http.servlet,org.eclipse.equinox.jsp.jasper,org.eclipse.equinox.jsp.jasper.registry,org.eclipse.equinox.launcher,org.eclipse.equinox.launcher.win32.win32.x86,org.eclipse.equinox.preferences,org.eclipse.equinox.registry,org.eclipse.help,org.eclipse.help.appserver,org.eclipse.help.base,org.eclipse.help.ui,org.eclipse.help.webapp,org.eclipse.jdt,org.eclipse.jdt.apt.core,org.eclipse.jdt.apt.pluggable.core,org.eclipse.jdt.apt.ui,org.eclipse.jdt.compiler.apt,org.eclipse.jdt.compiler.tool,org.eclipse.jdt.core,org.eclipse.jdt.core.manipulation,org.eclipse.jdt.debug,org.eclipse.jdt.debug.ui,org.eclipse.jdt.doc.isv,org.eclipse.jdt.doc.user,org.eclipse.jdt.junit,org.eclipse.jdt.junit.runtime,org.eclipse.jdt.junit4.runtime,org.eclipse.jdt.launching,org.eclipse.jdt.source,org.eclipse.jdt.ui,org.eclipse.jface,org.eclipse.jface.databinding,org.eclipse.jface.text,org.eclipse.jsch.core,org.eclipse.jsch.ui,org.eclipse.ltk.core.refactoring,org.eclipse.ltk.ui.refactoring,org.eclipse.osgi,org.eclipse.osgi.services,org.eclipse.osgi.util,org.eclipse.pde,org.eclipse.pde.build,org.eclipse.pde.core,org.eclipse.pde.doc.user,org.eclipse.pde.junit.runtime,org.eclipse.pde.runtime,org.eclipse.pde.source,org.eclipse.pde.ui,org.eclipse.pde.ui.templates,org.eclipse.platform,org.eclipse.platform.doc.isv,org.eclipse.platform.doc.user,org.eclipse.platform.source,org.eclipse.platform.source.win32.win32.x86,org.eclipse.rcp,org.eclipse.rcp.source,org.eclipse.rcp.source.win32.win32.x86,org.eclipse.sdk,org.eclipse.search,org.eclipse.swt,org.eclipse.swt.win32.win32.x86,org.eclipse.team.core,org.eclipse.team.cvs.core,org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh2,org.eclipse.team.cvs.ui,org.eclipse.team.ui,org.eclipse.text,org.eclipse.tomcat,org.eclipse.ui,org.eclipse.ui.browser,org.eclipse.ui.cheatsheets,org.eclipse.ui.console,org.eclipse.ui.editors,org.eclipse.ui.externaltools,org.eclipse.ui.forms,org.eclipse.ui.ide,org.eclipse.ui.ide.application,org.eclipse.ui.intro,org.eclipse.ui.intro.universal,org.eclipse.ui.navigator,org.eclipse.ui.navigator.resources,org.eclipse.ui.net,org.eclipse.ui.presentations.r21,org.eclipse.ui.views,org.eclipse.ui.views.properties.tabbed,org.eclipse.ui.win32,org.eclipse.ui.workbench,org.eclipse.ui.workbench.compatibility,org.eclipse.ui.workbench.texteditor,org.eclipse.update.scheduler,org.eclipse.update.ui,org.junit,org.junit.source,org.junit4,org.mortbay.jetty,org.mortbay.jetty.source"/>
<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf,org.eclipse.equinox.p2.touchpoint.eclipse,org.eclipse.equinox.frameworkadmin.equinox,org.eclipse.equinox.p2.touchpoint.natives,org.eclipse.equinox.p2.test,org.apache.xml.resolver,org.apache.xerces,org.eclipse.ecf.identity,org.eclipse.equinox.frameworkadmin,org.eclipse.equinox.p2.metadata.generator,org.eclipse.equinox.p2.artifact.repository,org.eclipse.equinox.p2.jarprocessor,org.mozilla.rhino,org.eclipse.equinox.p2.metadata.repository,com.thoughtworks.xstream,org.eclipse.equinox.p2.director,org.eclipse.equinox.p2.engine,org.eclipse.equinox.p2.console,org.eclipse.ecf.filetransfer,org.eclipse.equinox.p2.metadata,org.eclipse.equinox.p2.core,org.eclipse.equinox.p2.exemplarysetup,org.eclipse.equinox.simpleconfigurator.manipulator,org.eclipse.equinox.p2.download,org.eclipse.ecf.provider.filetransfer,org.eclipse.equinox.p2.selfhosting,org.eclipse.equinox.simpleconfigurator"/>
<booleanAttribute key="tracing" value="false"/>
<booleanAttribute key="useDefaultConfig" value="true"/>
diff --git a/bundles/org.eclipse.equinox.p2.tests/build.properties b/bundles/org.eclipse.equinox.p2.tests/build.properties
index 2eaa95987..0ed56864b 100644
--- a/bundles/org.eclipse.equinox.p2.tests/build.properties
+++ b/bundles/org.eclipse.equinox.p2.tests/build.properties
@@ -22,4 +22,3 @@ bin.includes = META-INF/,\
test.xml
customCallBack=foo.xml
src.includes = about.html
-javacWarnings..=-raw,-unchecked,-varargsCast
diff --git a/bundles/org.eclipse.equinox.p2.tests/plugin.xml b/bundles/org.eclipse.equinox.p2.tests/plugin.xml
index 841b529ea..857699598 100644
--- a/bundles/org.eclipse.equinox.p2.tests/plugin.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/plugin.xml
@@ -153,4 +153,10 @@
suffix="@testArtifactRepositoryRegistry">
</filter>
</extension>
+ <extension
+ point="org.eclipse.equinox.p2.engine.pgp">
+ <trustedKeys
+ path="testData/pgp/signer2-publickey.asc">
+ </trustedKeys>
+ </extension>
</plugin>
diff --git a/bundles/org.eclipse.equinox.p2.tests/pom.xml b/bundles/org.eclipse.equinox.p2.tests/pom.xml
index b33be1d55..894085114 100644
--- a/bundles/org.eclipse.equinox.p2.tests/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/pom.xml
@@ -10,21 +10,18 @@
<parent>
<groupId>org.eclipse</groupId>
<artifactId>org.eclipse.equinox.p2.tests-parent</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../../org.eclipse.equinox.p2.releng/org.eclipse.equinox.p2.tests-parent</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.tests</artifactId>
- <version>1.7.800-SNAPSHOT</version>
+ <version>1.8.700-SNAPSHOT</version>
<packaging>eclipse-test-plugin</packaging>
<properties>
<testSuite>${project.artifactId}</testSuite>
<testClass>org.eclipse.equinox.p2.tests.AutomatedTests</testClass>
- <!-- despite best inentions I was not able to add automatiz detection here -->
- <!-- Linux is default because Hudson runs those tests on Linux -->
- <dropinsProduct>org.eclipse.equinox.p2.reconciler-linux.gtk.x86_64.tar.gz</dropinsProduct>
</properties>
<build>
@@ -47,6 +44,69 @@
</dependencies>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-p2-extras-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>compare-attached-artifacts-with-release</id>
+ <configuration>
+ <!-- this bundle has intentionally corrupt zips inside that make content comparison fail, so let's skip it -->
+ <skip>true</skip>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</build>
+ <profiles>
+ <profile>
+ <id>mac_x86_64</id>
+ <activation>
+ <os>
+ <family>mac</family>
+ <arch>x86_64</arch>
+ </os>
+ </activation>
+ <properties>
+ <dropinsProduct>org.eclipse.equinox.p2.reconciler-macosx.cocoa.x86_64.zip</dropinsProduct>
+ </properties>
+ </profile>
+ <profile>
+ <id>linux_amd64</id>
+ <activation>
+ <os>
+ <family>linux</family>
+ <arch>amd64</arch>
+ </os>
+ </activation>
+ <properties>
+ <dropinsProduct>org.eclipse.equinox.p2.reconciler-linux.gtk.x86_64.tar.gz</dropinsProduct>
+ </properties>
+ </profile>
+ <profile>
+ <id>linux_ppc64le</id>
+ <activation>
+ <os>
+ <family>linux</family>
+ <arch>ppc64le</arch>
+ </os>
+ </activation>
+ <properties>
+ <dropinsProduct>org.eclipse.equinox.p2.reconciler-linux.gtk.ppc64le.tar.gz</dropinsProduct>
+ </properties>
+ </profile>
+ <profile>
+ <id>win_x86_64</id>
+ <activation>
+ <os>
+ <family>win</family>
+ <arch>x86_64</arch>
+ </os>
+ </activation>
+ <properties>
+ <dropinsProduct>org.eclipse.equinox.p2.reconciler-win32.win32.x86_64.zip</dropinsProduct>
+ </properties>
+ </profile>
+ </profiles>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractAntProvisioningTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractAntProvisioningTest.java
index e1a8d8bd3..f3b693ab8 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractAntProvisioningTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractAntProvisioningTest.java
@@ -190,8 +190,8 @@ public class AbstractAntProvisioningTest extends AbstractProvisioningTest {
writer.attribute(iter.next(), iter.next());
// write sub elements if applicable
- for (Iterator<AntTaskElement> iter = task.elements.iterator(); iter.hasNext();)
- writeElement(writer, iter.next());
+ for (AntTaskElement element : task.elements)
+ writeElement(writer, element);
// close tag
writer.end();
@@ -274,8 +274,8 @@ public class AbstractAntProvisioningTest extends AbstractProvisioningTest {
protected static List<IArtifactKey> getArtifactKeys(IQueryResult<IInstallableUnit> ius) {
List<IArtifactKey> keys = new ArrayList<>();
- for (Iterator<IInstallableUnit> iter = ius.iterator(); iter.hasNext();)
- keys.addAll(iter.next().getArtifacts());
+ for (IInstallableUnit iu : ius)
+ keys.addAll(iu.getArtifacts());
return keys;
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractProvisioningTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractProvisioningTest.java
index 84d42a057..ab74b9572 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractProvisioningTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractProvisioningTest.java
@@ -739,7 +739,7 @@ public abstract class AbstractProvisioningTest extends TestCase {
}
}
- public static void writeBuffer(File outputFile, StringBuffer buffer) throws IOException {
+ public static void writeBuffer(File outputFile, StringBuilder buffer) throws IOException {
outputFile.getParentFile().mkdirs();
try (FileOutputStream stream = new FileOutputStream(outputFile)) {
stream.write(buffer.toString().getBytes());
@@ -902,7 +902,7 @@ public abstract class AbstractProvisioningTest extends TestCase {
return repo;
}
- protected static IProvisioningAgent getAgent() {
+ public static IProvisioningAgent getAgent() {
//get the global agent for the currently running system
return ServiceHelper.getService(TestActivator.getContext(), IProvisioningAgent.class);
}
@@ -925,7 +925,7 @@ public abstract class AbstractProvisioningTest extends TestCase {
return getAgent().getService(IProfileRegistry.class);
}
- protected Transport getTransport() {
+ public Transport getTransport() {
return getAgent().getService(Transport.class);
}
@@ -1006,8 +1006,7 @@ public abstract class AbstractProvisioningTest extends TestCase {
//remove all metadata repositories created by this test
IMetadataRepositoryManager repoMan = getMetadataRepositoryManager();
if (!metadataRepos.isEmpty()) {
- for (Iterator<IMetadataRepository> it = metadataRepos.iterator(); it.hasNext();) {
- IMetadataRepository repo = it.next();
+ for (IMetadataRepository repo : metadataRepos) {
repoMan.removeRepository(repo.getLocation());
}
metadataRepos.clear();
@@ -1314,9 +1313,7 @@ public abstract class AbstractProvisioningTest extends TestCase {
* Note: NOT BICONDITIONAL! assertContains(A, B) is NOT the same as assertContains(B, A)
*/
protected static void assertContains(String message, IArtifactRepository sourceRepo, IArtifactRepository destinationRepo) {
- IQueryResult<IArtifactKey> sourceKeys = sourceRepo.query(ArtifactKeyQuery.ALL_KEYS, null);
- for (Iterator<IArtifactKey> iterator = sourceKeys.iterator(); iterator.hasNext();) {
- IArtifactKey key = iterator.next();
+ for (IArtifactKey key : sourceRepo.query(ArtifactKeyQuery.ALL_KEYS, null)) {
IArtifactDescriptor[] destinationDescriptors = destinationRepo.getArtifactDescriptors(key);
if (destinationDescriptors == null || destinationDescriptors.length == 0)
fail(message + ": unmatched key: " + key.toString());
@@ -1370,7 +1367,7 @@ public abstract class AbstractProvisioningTest extends TestCase {
IInstallableUnit sourceIU = it.next();
IQueryResult destinationCollector = destination.query(QueryUtil.createIUQuery(sourceIU), null);
assertEquals(message, 1, queryResultSize(destinationCollector));
- assertTrue(message, sourceIU.equals(destinationCollector.iterator().next()));
+ assertEquals(message, sourceIU, destinationCollector.iterator().next());
}
}
@@ -1680,9 +1677,7 @@ public abstract class AbstractProvisioningTest extends TestCase {
}
protected void assertEqualArtifacts(String message, SimpleArtifactRepository expected, SimpleArtifactRepository actual) {
- IQueryResult<IArtifactKey> expectedKeys = expected.query(ArtifactKeyQuery.ALL_KEYS, null);
- for (Iterator<IArtifactKey> iterator = expectedKeys.iterator(); iterator.hasNext();) {
- IArtifactKey key = iterator.next();
+ for (IArtifactKey key : expected.query(ArtifactKeyQuery.ALL_KEYS, null)) {
IArtifactDescriptor[] expectedDescriptors = expected.getArtifactDescriptors(key);
IArtifactDescriptor[] actualDescriptors = actual.getArtifactDescriptors(key);
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AdditionalCoreMatchers.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AdditionalCoreMatchers.java
index 492f4ea6b..f204316db 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AdditionalCoreMatchers.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AdditionalCoreMatchers.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015, 2017 SAP SE and others.
+ * Copyright (c) 2015, 2020 SAP SE and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,7 +14,9 @@
package org.eclipse.equinox.p2.tests;
import java.util.Collection;
-import org.hamcrest.*;
+import org.hamcrest.Description;
+import org.hamcrest.Matcher;
+import org.hamcrest.TypeSafeMatcher;
public class AdditionalCoreMatchers {
@@ -24,7 +26,7 @@ public class AdditionalCoreMatchers {
* @see CoreMatchers#hasItem(Matcher)
*/
public static <T> Matcher<Collection<? extends T>> hasSize(final int size) {
- return new TypeSafeMatcher<Collection<? extends T>>() {
+ return new TypeSafeMatcher<>() {
@Override
public void describeTo(Description description) {
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AutomatedTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AutomatedTests.java
index fb3932973..9e5893905 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AutomatedTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AutomatedTests.java
@@ -14,59 +14,45 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
- * This is the master test suite for all automated provisioning tests. It runs every test
- * that is suitable for running in an automated fashion as part of a build. Some
- * tests may be excluded if they require special setup (such as generating metadata).
- *
+ * This is the master test suite for all automated provisioning tests. It runs
+ * every test that is suitable for running in an automated fashion as part of a
+ * build. Some tests may be excluded if they require special setup (such as
+ * generating metadata).
+ *
* PLEASE ADD SUITES IN THE PACKAGE NAME ORDER.
*/
-public class AutomatedTests extends TestCase {
- public static Test suite() {
- TestSuite suite = new TestSuite(AutomatedTests.class.getName());
- suite.addTest(org.eclipse.equinox.p2.tests.publisher.AllTests.suite());
- suite.addTest(org.eclipse.equinox.frameworkadmin.tests.AllTests.suite());
-
- suite.addTest(org.eclipse.equinox.p2.tests.ant.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.artifact.processors.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.artifact.repository.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.artifact.repository.processing.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.core.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.director.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.directorywatcher.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.engine.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.extensionlocation.AllTests.suite());
- //org.eclipse.equinox.p2.tests.full - Off sequence
- suite.addTest(org.eclipse.equinox.p2.tests.gc.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.generator.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.installer.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.jarprocessor.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.metadata.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.metadata.expression.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.metadata.repository.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.mirror.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.omniVersion.AllTests.suite());
- //org.eclipse.equinox.p2.tests.perf -- Executed as part of the
- suite.addTest(org.eclipse.equinox.p2.tests.planner.AllTests.suite());
- //org.eclipse.equinox.p2.tests.publisher.actions -- The tests found in this package are invoked from the publisher package
- suite.addTest(org.eclipse.equinox.p2.tests.ql.AllTests.suite());
- //org.eclipse.equinox.p2.tests.reconciler.dropins -- Off sequence
- suite.addTest(org.eclipse.equinox.p2.tests.repository.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.sat4j.smoke.AllTests.suite());
- //org.eclipse.equinox.p2.tests.sharedinstall -- Off sequence
- suite.addTest(org.eclipse.equinox.p2.tests.simpleconfigurator.SimpleConfiguratorTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.simpleconfigurator.manipulator.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.touchpoint.eclipse.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.touchpoint.natives.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.updatechecker.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.updatesite.AllTests.suite());
-
- //Off sequence
- suite.addTest(org.eclipse.equinox.p2.tests.reconciler.dropins.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.sharedinstall.AllTests.suite());
- suite.addTest(org.eclipse.equinox.p2.tests.full.AllTests.suite());
- return suite;
- }
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ org.eclipse.equinox.p2.tests.publisher.AllTests.class,
+ org.eclipse.equinox.frameworkadmin.tests.AllTests.class,
+ org.eclipse.equinox.p2.tests.ant.AllTests.class,
+ org.eclipse.equinox.p2.tests.artifact.processors.AllTests.class,
+ org.eclipse.equinox.p2.tests.artifact.repository.AllTests.class,
+ org.eclipse.equinox.p2.tests.artifact.repository.processing.AllTests.class,
+ org.eclipse.equinox.p2.tests.core.AllTests.class, org.eclipse.equinox.p2.tests.director.AllTests.class,
+ org.eclipse.equinox.p2.tests.directorywatcher.AllTests.class,
+ org.eclipse.equinox.p2.tests.engine.AllTests.class,
+ org.eclipse.equinox.p2.tests.extensionlocation.AllTests.class, org.eclipse.equinox.p2.tests.gc.AllTests.class,
+ org.eclipse.equinox.p2.tests.generator.AllTests.class, org.eclipse.equinox.p2.tests.installer.AllTests.class,
+ org.eclipse.equinox.p2.tests.jarprocessor.AllTests.class,
+ org.eclipse.equinox.p2.tests.metadata.AllTests.class,
+ org.eclipse.equinox.p2.tests.metadata.expression.AllTests.class,
+ org.eclipse.equinox.p2.tests.metadata.repository.AllTests.class,
+ org.eclipse.equinox.p2.tests.mirror.AllTests.class, org.eclipse.equinox.p2.tests.omniVersion.AllTests.class,
+ org.eclipse.equinox.p2.tests.planner.AllTests.class, org.eclipse.equinox.p2.tests.ql.AllTests.class,
+ org.eclipse.equinox.p2.tests.repository.AllTests.class,
+ org.eclipse.equinox.p2.tests.sat4j.smoke.AllTests.class,
+ org.eclipse.equinox.p2.tests.simpleconfigurator.SimpleConfiguratorTests.class,
+ org.eclipse.equinox.p2.tests.simpleconfigurator.manipulator.AllTests.class,
+ org.eclipse.equinox.p2.tests.touchpoint.eclipse.AllTests.class,
+ org.eclipse.equinox.p2.tests.touchpoint.natives.AllTests.class,
+ org.eclipse.equinox.p2.tests.updatechecker.AllTests.class,
+ org.eclipse.equinox.p2.tests.updatesite.AllTests.class,
+ org.eclipse.equinox.p2.tests.reconciler.dropins.AllTests.class,
+ org.eclipse.equinox.p2.tests.sharedinstall.AllTests.class, org.eclipse.equinox.p2.tests.full.AllTests.class })
+public class AutomatedTests {
+ // SuiteClasses
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ManualTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ManualTests.java
index 61e021df2..29933679f 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ManualTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ManualTests.java
@@ -7,22 +7,21 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* This is the master test suite for all automated provisioning tests that require some
* manual set. These tests can't be run automatically as part of a build.
*/
-public class ManualTests extends TestCase {
- public static Test suite() {
- TestSuite suite = new TestSuite(AutomatedTests.class.getName());
- suite.addTestSuite(org.eclipse.equinox.p2.tests.full.DirectorTest.class);
- return suite;
- }
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ org.eclipse.equinox.p2.tests.full.DirectorTest.class })
+public class ManualTests {
+//test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ReducedCUDFParser.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ReducedCUDFParser.java
index 4d0d6a5d3..298ab4517 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ReducedCUDFParser.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ReducedCUDFParser.java
@@ -150,8 +150,8 @@ public class ReducedCUDFParser {
if (TIMING)
// Log.println("Time to parse:" + (System.currentTimeMillis() - start));
if (DEBUG)
- for (Iterator<IInstallableUnit> iter = allIUs.iterator(); iter.hasNext();)
- debug((InstallableUnit) iter.next());
+ for (IInstallableUnit iu : allIUs)
+ debug((InstallableUnit) iu);
// if (FORCE_QUERY) {
// if (query == null)
// initializeQueryableArray();
@@ -540,8 +540,8 @@ public class ReducedCUDFParser {
List<Tuple> pkgs = createPackageList(line);
IProvidedCapability[] providedCapabilities = new ProvidedCapability[pkgs.size() + 2];
int i = 0;
- for (Iterator<Tuple> iter = pkgs.iterator(); iter.hasNext();) {
- providedCapabilities[i++] = createProvidedCapability(iter.next());
+ for (Tuple tuple : pkgs) {
+ providedCapabilities[i++] = createProvidedCapability(tuple);
}
providedCapabilities[i++] = MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, currentIU.getId(), currentIU.getVersion());
providedCapabilities[i++] = MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, currentIU.getId(), currentIU.getVersion());
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/TestData.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/TestData.java
index c17384334..d2a8bc870 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/TestData.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/TestData.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2018 compeople AG and others.
+ * Copyright (c) 2007, 2021 compeople AG and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -22,7 +22,6 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.zip.ZipEntry;
@@ -136,30 +135,31 @@ public class TestData {
* @throws IOException
*/
public static void assertEquals(ZipInputStream expected, ZipInputStream actual) throws IOException {
- Map<String, Object[]> jar1 = getEntries(expected);
- Map<String, Object[]> jar2 = getEntries(actual);
- for (String name : jar1.keySet()) {
- Object[] file1 = jar1.get(name);
- Object[] file2 = jar2.remove(name);
- Assert.assertNotNull(file2);
-
- ZipEntry entry1 = (ZipEntry) file1[0];
- ZipEntry entry2 = (ZipEntry) file2[0];
+ Map<String, Object[]> expectedEntries = getEntries(expected);
+ Map<String, Object[]> actualEntries = getEntries(actual);
+ for (String name : expectedEntries.keySet()) {
+ Object[] expectedFiles = expectedEntries.get(name);
+ Object[] actualFiles = actualEntries.remove(name);
+ Assert.assertNotNull(name + " entry is missing in actual zip stream (actual=" + actualEntries.keySet()
+ + ", expected=" + expectedEntries.keySet() + ")", actualFiles);
+
+ ZipEntry entry1 = (ZipEntry) expectedFiles[0];
+ ZipEntry entry2 = (ZipEntry) actualFiles[0];
// compare the entries
- Assert.assertTrue(entry1.getName().equals(entry2.getName()));
- Assert.assertTrue(entry1.getSize() == entry2.getSize());
+ Assert.assertEquals(entry1.getName(), entry2.getName());
+ Assert.assertEquals(entry1.getSize(), entry2.getSize());
// TODO for now skip over the timestamp as they seem to be different
// assertTrue(entry1.getTime() == entry2.getTime());
- Assert.assertTrue(entry1.isDirectory() == entry2.isDirectory());
- Assert.assertTrue(entry1.getCrc() == entry2.getCrc());
- Assert.assertTrue(entry1.getMethod() == entry2.getMethod());
+ Assert.assertEquals(entry1.isDirectory(), entry2.isDirectory());
+ Assert.assertEquals(entry1.getCrc(), entry2.getCrc());
+ Assert.assertEquals(entry1.getMethod(), entry2.getMethod());
// check the content of the entries
- Assert.assertTrue(Arrays.equals((byte[]) file1[1], (byte[]) file2[1]));
+ Assert.assertArrayEquals((byte[]) expectedFiles[1], (byte[]) actualFiles[1]);
}
// ensure that we have consumed all of the entries in the second JAR
- Assert.assertTrue(jar2.size() == 0);
+ Assert.assertEquals(0, actualEntries.size());
}
/**
@@ -181,11 +181,11 @@ public class TestData {
File entry1 = (File) file1[0];
ZipEntry entry2 = (ZipEntry) file2[0];
- Assert.assertTrue(entry1.isDirectory() == entry2.isDirectory());
+ Assert.assertEquals(entry1.isDirectory(), entry2.isDirectory());
// check the content of the entries
if (compareContent)
- Assert.assertTrue(Arrays.equals((byte[]) file1[1], (byte[]) file2[1]));
+ Assert.assertArrayEquals((byte[]) file1[1], (byte[]) file2[1]);
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/TestLicenseConsistency.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/TestLicenseConsistency.java
index b81865083..44cb6f077 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/TestLicenseConsistency.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/TestLicenseConsistency.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010, 2017 IBM Corporation and others.
+ * Copyright (c) 2010, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -15,7 +15,9 @@ package org.eclipse.equinox.p2.tests;
import java.net.URI;
import java.net.URISyntaxException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.equinox.p2.core.ProvisionException;
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
@@ -25,13 +27,14 @@ import org.eclipse.equinox.p2.query.QueryUtil;
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
/**
- * Tests that licenses in the indigo repository are consistent with the platform feature license.
- * Note this test isn't intended to be included in automated tests. It produces a report
- * on stdout that can be used to identify features with inconsistent feature licenses.
+ * Tests that licenses in the latest release repository are consistent with the
+ * platform feature license. Note this test isn't intended to be included in
+ * automated tests. It produces a report on stdout that can be used to identify
+ * features with inconsistent feature licenses.
*/
public class TestLicenseConsistency extends AbstractProvisioningTest {
public void testLicenses() throws URISyntaxException, ProvisionException, OperationCanceledException {
- URI repoLocation = new URI("http://download.eclipse.org/releases/indigo/201103180900");
+ URI repoLocation = new URI("https://download.eclipse.org/releases/latest");
IMetadataRepository repo = getMetadataRepositoryManager().loadRepository(repoLocation, null);
IQueryResult<IInstallableUnit> allFeatures = repo.query(QueryUtil.createIUGroupQuery(), null);
IQueryResult<IInstallableUnit> platform = allFeatures.query(QueryUtil.createIUQuery("org.eclipse.platform.feature.group"), null);
@@ -79,7 +82,7 @@ public class TestLicenseConsistency extends AbstractProvisioningTest {
}
private List<IInstallableUnit> sort(List<IInstallableUnit> noLicense) {
- Collections.sort(noLicense);
+ noLicense.sort(null);
return noLicense;
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ant/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ant/AllTests.java
index 92b5d79e7..b03c2ae27 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ant/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ant/AllTests.java
@@ -7,25 +7,20 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.ant;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all automated artifact repository tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(CompositeRepositoryTaskTest.class);
- suite.addTestSuite(MirrorTaskTest.class);
- suite.addTestSuite(Repo2RunnableTaskTests.class);
- return suite;
- }
-
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ CompositeRepositoryTaskTest.class, MirrorTaskTest.class, Repo2RunnableTaskTests.class })
+public class AllTests {
+// test suite
} \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ant/MirrorTaskTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ant/MirrorTaskTest.java
index 1f4146d07..db75dbf27 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ant/MirrorTaskTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ant/MirrorTaskTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2018 IBM Corporation and others.
+ * Copyright (c) 2009, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -24,7 +24,6 @@ import java.net.URISyntaxException;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.zip.ZipEntry;
@@ -36,7 +35,7 @@ import org.eclipse.equinox.internal.p2.director.PermissiveSlicer;
import org.eclipse.equinox.internal.p2.metadata.ArtifactKey;
import org.eclipse.equinox.internal.p2.metadata.InstallableUnit;
import org.eclipse.equinox.p2.core.ProvisionException;
-import org.eclipse.equinox.p2.internal.repository.comparator.MD5ArtifactComparator;
+import org.eclipse.equinox.p2.internal.repository.comparator.ArtifactChecksumComparator;
import org.eclipse.equinox.p2.internal.repository.tools.Messages;
import org.eclipse.equinox.p2.metadata.IArtifactKey;
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
@@ -778,7 +777,7 @@ public class MirrorTaskTest extends AbstractAntProvisioningTest {
// Create a comparator element
AntTaskElement comparator = new AntTaskElement("comparator");
- comparator.addAttribute("comparator", MD5ArtifactComparator.MD5_COMPARATOR_ID);
+ comparator.addAttribute("comparator", ArtifactChecksumComparator.COMPARATOR_ID + ".md5");
comparator.addElement(getRepositoryElement(baselineLocation.toURI(), null));
mirror.addElement(comparator);
@@ -854,8 +853,8 @@ public class MirrorTaskTest extends AbstractAntProvisioningTest {
*/
protected int getArtifactKeyCount(IQueryResult<IInstallableUnit> ius) {
int count = 0;
- for (Iterator<IInstallableUnit> iter = ius.iterator(); iter.hasNext();)
- count += iter.next().getArtifacts().size();
+ for (IInstallableUnit iu : ius)
+ count += iu.getArtifacts().size();
return count;
}
@@ -877,8 +876,7 @@ public class MirrorTaskTest extends AbstractAntProvisioningTest {
protected void addAllIUs(AntTaskElement parent, IMetadataRepository repo) {
IQueryResult<IInstallableUnit> queryResult = repo.query(QueryUtil.createIUAnyQuery(), null);
- for (Iterator<IInstallableUnit> iter = queryResult.iterator(); iter.hasNext();) {
- IInstallableUnit iu = iter.next();
+ for (IInstallableUnit iu : queryResult) {
parent.addElement(createIUElement(iu));
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ant/Repo2RunnableTaskTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ant/Repo2RunnableTaskTests.java
index b372c211e..3ab304109 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ant/Repo2RunnableTaskTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ant/Repo2RunnableTaskTests.java
@@ -14,16 +14,20 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.ant;
-import java.io.*;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
import java.net.URI;
-import java.util.Iterator;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.equinox.p2.core.ProvisionException;
import org.eclipse.equinox.p2.metadata.IArtifactKey;
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.p2.query.IQueryResult;
import org.eclipse.equinox.p2.query.QueryUtil;
-import org.eclipse.equinox.p2.repository.artifact.*;
+import org.eclipse.equinox.p2.repository.artifact.ArtifactKeyQuery;
+import org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor;
+import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
import org.eclipse.equinox.p2.tests.AbstractAntProvisioningTest;
@@ -131,6 +135,7 @@ public class Repo2RunnableTaskTests extends AbstractAntProvisioningTest {
/*
* Ensure that the output repository is of the expected type
*/
+ @SuppressWarnings("removal")
protected boolean expectedFormat(URI location) {
IArtifactRepository repo = null;
try {
@@ -139,8 +144,7 @@ public class Repo2RunnableTaskTests extends AbstractAntProvisioningTest {
fail("Failed to load repository", e);
}
IQueryResult<IArtifactKey> keys = repo.query(ArtifactKeyQuery.ALL_KEYS, null);
- for (Iterator<IArtifactKey> iterator = keys.iterator(); iterator.hasNext();) {
- IArtifactKey key = iterator.next();
+ for (IArtifactKey key : keys) {
IArtifactDescriptor[] descriptors = repo.getArtifactDescriptors(key);
for (IArtifactDescriptor desc : descriptors) {
// Features should be unzipped, others should not be.
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/AllTests.java
index d862e6c49..01422270a 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/AllTests.java
@@ -13,20 +13,16 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.artifact.processors;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all automated director tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(Pack200ProcessorTest.class);
- suite.addTestSuite(ZipVerifierProcessorTest.class);
- suite.addTest(new JUnit4TestAdapter(ChecksumVerifierTest.class));
- suite.addTest(new JUnit4TestAdapter(ChecksumUtilitiesTest.class));
- return suite;
- }
-
+@SuppressWarnings("removal")
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ Pack200ProcessorTest.class, ZipVerifierProcessorTest.class, ChecksumVerifierTest.class,
+ ChecksumUtilitiesTest.class, PGPSignatureVerifierTest.class })
+public class AllTests {
+// test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/ChecksumUtilitiesTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/ChecksumUtilitiesTest.java
index c0cc0dce2..3f5b73987 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/ChecksumUtilitiesTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/ChecksumUtilitiesTest.java
@@ -26,7 +26,6 @@ import org.eclipse.equinox.internal.p2.artifact.processors.checksum.ChecksumUtil
import org.eclipse.equinox.internal.p2.artifact.processors.checksum.ChecksumVerifier;
import org.eclipse.equinox.internal.p2.metadata.ArtifactKey;
import org.eclipse.equinox.internal.p2.metadata.OSGiVersion;
-import org.eclipse.equinox.internal.provisional.p2.artifact.repository.processing.ProcessingStep;
import org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor;
import org.eclipse.equinox.p2.repository.artifact.spi.ArtifactDescriptor;
import org.junit.Before;
@@ -70,10 +69,11 @@ public class ChecksumUtilitiesTest {
@Test
public void testChecksumProperty() {
- Collection<ProcessingStep> checksumVerifiers = ChecksumUtilities.getChecksumVerifiers(artifactDescriptor, propertyType, emptySet());
+ Collection<ChecksumVerifier> checksumVerifiers = ChecksumUtilities.getChecksumVerifiers(artifactDescriptor,
+ propertyType, emptySet());
assertEquals(format("Verifier for property=%s", property), 1, checksumVerifiers.size());
- ChecksumVerifier verifier = (ChecksumVerifier) checksumVerifiers.iterator().next();
+ ChecksumVerifier verifier = checksumVerifiers.iterator().next();
assertEquals(digestAlgorithm, verifier.getAlgorithmName());
assertEquals(algorithmId, verifier.getAlgorithmId());
assertEquals(value, verifier.getExpectedChecksum());
@@ -82,7 +82,8 @@ public class ChecksumUtilitiesTest {
@Test
public void testChecksumsToSkip() {
- Collection<ProcessingStep> checksumVerifiers = ChecksumUtilities.getChecksumVerifiers(artifactDescriptor, propertyType, singleton(algorithmId));
+ Collection<ChecksumVerifier> checksumVerifiers = ChecksumUtilities.getChecksumVerifiers(artifactDescriptor,
+ propertyType, singleton(algorithmId));
assertEquals(emptyList(), checksumVerifiers);
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/ChecksumVerifierTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/ChecksumVerifierTest.java
index f16eb28e4..1a66379d9 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/ChecksumVerifierTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/ChecksumVerifierTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015, 2019 Mykola Nikishov.
+ * Copyright (c) 2015, 2021 Mykola Nikishov and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,12 +13,10 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.artifact.processors;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.not;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
+import static org.mockito.AdditionalMatchers.not;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import java.io.IOException;
import java.util.Arrays;
@@ -66,63 +64,55 @@ public class ChecksumVerifierTest {
@Test
public void testInitialize() throws IOException, IllegalArgumentException, SecurityException {
- IProcessingStepDescriptor processingStepDescriptor = createMock(IProcessingStepDescriptor.class);
- expect(processingStepDescriptor.getData()).andReturn(checksum);
- replay(processingStepDescriptor);
+ IProcessingStepDescriptor processingStepDescriptor = mock(IProcessingStepDescriptor.class);
+ when(processingStepDescriptor.getData()).thenReturn(checksum);
- ChecksumVerifier verifier = new ChecksumVerifier(digestAlgorithm, providerName, algorithmId);
+ ChecksumVerifier verifier = new ChecksumVerifier(digestAlgorithm, providerName, algorithmId, false);
verifier.initialize(null, processingStepDescriptor, null);
Assert.assertEquals(Status.OK_STATUS, verifier.getStatus());
verifier.close();
- verify(processingStepDescriptor);
}
@Test
public void testInitialize_DownloadChecksum() throws IOException, IllegalArgumentException, SecurityException {
- IProcessingStepDescriptor processingStepDescriptor = createMock(IProcessingStepDescriptor.class);
- expect(processingStepDescriptor.getData()).andReturn(downloadProperty);
- IArtifactDescriptor artifactDescriptor = createMock(IArtifactDescriptor.class);
- replay(processingStepDescriptor);
- expect(artifactDescriptor.getProperty(eq(downloadProperty))).andReturn(checksum);
- expect(artifactDescriptor.getProperty(not(eq(downloadProperty)))).andReturn(null).times(1, 2);
+ IProcessingStepDescriptor processingStepDescriptor = mock(IProcessingStepDescriptor.class);
+ when(processingStepDescriptor.getData()).thenReturn(downloadProperty);
+ IArtifactDescriptor artifactDescriptor = mock(IArtifactDescriptor.class);
+ when(artifactDescriptor.getProperty(eq(downloadProperty))).thenReturn(checksum);
+ when(artifactDescriptor.getProperty(not(eq(downloadProperty)))).thenReturn(null);
HashMap<String, String> properties = new HashMap<>();
properties.put(downloadProperty, checksum);
- expect(artifactDescriptor.getProperties()).andReturn(properties);
- replay(artifactDescriptor);
+ when(artifactDescriptor.getProperties()).thenReturn(properties);
- ChecksumVerifier verifier = new ChecksumVerifier(digestAlgorithm, providerName, algorithmId);
+ ChecksumVerifier verifier = new ChecksumVerifier(digestAlgorithm, providerName, algorithmId, false);
verifier.initialize(null, processingStepDescriptor, artifactDescriptor);
Assert.assertEquals(Status.OK_STATUS, verifier.getStatus());
verifier.close();
- verify(processingStepDescriptor);
}
@Test
public void testInitialize_ArtifactChecksum() throws IOException, IllegalArgumentException, SecurityException {
- IProcessingStepDescriptor processingStepDescriptor = createMock(IProcessingStepDescriptor.class);
- expect(processingStepDescriptor.getData()).andReturn(artifactProperty);
- IArtifactDescriptor artifactDescriptor = createMock(IArtifactDescriptor.class);
- replay(processingStepDescriptor);
- expect(artifactDescriptor.getProperty(eq(artifactProperty))).andReturn(checksum);
+ IProcessingStepDescriptor processingStepDescriptor = mock(IProcessingStepDescriptor.class);
+ when(processingStepDescriptor.getData()).thenReturn(artifactProperty);
+ IArtifactDescriptor artifactDescriptor = mock(IArtifactDescriptor.class);
+ when(artifactDescriptor.getProperty(eq(artifactProperty))).thenReturn(checksum);
HashMap<String, String> properties = new HashMap<>();
properties.put(artifactProperty, checksum);
- expect(artifactDescriptor.getProperties()).andReturn(properties);
- expect(artifactDescriptor.getProperty(not(eq(artifactProperty)))).andReturn(null).times(1, 2);
- replay(artifactDescriptor);
+ when(artifactDescriptor.getProperties()).thenReturn(properties);
+ when(artifactDescriptor.getProperty(not(eq(artifactProperty)))).thenReturn(null);
- ChecksumVerifier verifier = new ChecksumVerifier(digestAlgorithm, providerName, algorithmId);
+ ChecksumVerifier verifier = new ChecksumVerifier(digestAlgorithm, providerName, algorithmId, false);
verifier.initialize(null, processingStepDescriptor, artifactDescriptor);
Assert.assertEquals(Status.OK_STATUS, verifier.getStatus());
verifier.close();
- verify(processingStepDescriptor);
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/PGPSignatureVerifierTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/PGPSignatureVerifierTest.java
new file mode 100644
index 000000000..dd3356767
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/PGPSignatureVerifierTest.java
@@ -0,0 +1,176 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Red Hat Inc. and others
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.equinox.p2.tests.artifact.processors;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.util.Set;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.equinox.internal.p2.artifact.processors.pgp.PGPSignatureVerifier;
+import org.eclipse.equinox.internal.p2.metadata.ArtifactKey;
+import org.eclipse.equinox.internal.provisional.p2.repository.DefaultPGPPublicKeyService;
+import org.eclipse.equinox.p2.core.ProvisionException;
+import org.eclipse.equinox.p2.metadata.Version;
+import org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor;
+import org.eclipse.equinox.p2.repository.artifact.IProcessingStepDescriptor;
+import org.eclipse.equinox.p2.repository.artifact.spi.ArtifactDescriptor;
+import org.eclipse.equinox.p2.repository.artifact.spi.ProcessingStepDescriptor;
+import org.eclipse.equinox.p2.repository.spi.PGPPublicKeyService;
+import org.eclipse.equinox.p2.tests.TestAgentProvider;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+public class PGPSignatureVerifierTest {
+
+ @Rule
+ public TestAgentProvider agentProvider = new TestAgentProvider();
+
+ @Before
+ public void initialize() {
+ try {
+ PGPPublicKeyService keyService = agentProvider.getService(PGPPublicKeyService.class);
+ if (keyService instanceof DefaultPGPPublicKeyService) {
+ DefaultPGPPublicKeyService defaultPGPPublicKeyService = (DefaultPGPPublicKeyService) keyService;
+ defaultPGPPublicKeyService.setKeyServers(Set.of());
+ defaultPGPPublicKeyService.setGPG(false);
+ }
+ } catch (ProvisionException e) {
+ //$FALL-THROUGH$
+ }
+ }
+
+ // @formatter:off
+ /*
+ * About test keys: * Install the public&private keys locally * then generate
+ * signatures with eg `gpg -u signer2@fakeuser.eclipse.org -a --output
+ * signed_by_signer_2 --detach-sig testArtifact`
+ */
+ // @formatter:on
+
+ private IArtifactDescriptor createArtifact(String signaturesResourcePath, String publicKeyResourcePath)
+ throws IOException, URISyntaxException {
+ ArtifactDescriptor res = new ArtifactDescriptor(
+ new ArtifactKey("whatever", "whatever", Version.parseVersion("1.0.0")));
+ res.setProperty(PGPSignatureVerifier.PGP_SIGNATURES_PROPERTY_NAME, read(signaturesResourcePath));
+ res.setProperty(PGPSignatureVerifier.PGP_SIGNER_KEYS_PROPERTY_NAME, read(publicKeyResourcePath));
+ return res;
+ }
+
+ private static class ArtifactOutputStream extends ByteArrayOutputStream implements IAdaptable {
+ IArtifactDescriptor descriptor = new ArtifactDescriptor(
+ new ArtifactKey("whatever", "whatever", Version.parseVersion("1.0.0")));
+
+ public IArtifactDescriptor getDescriptor() {
+ return descriptor;
+ }
+
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ if (adapter.isInstance(descriptor)) {
+ return adapter.cast(descriptor);
+ }
+ return null;
+ }
+ }
+
+ private String read(String resource) throws IOException, URISyntaxException {
+ return Files.readString(new File(FileLocator.toFileURL(getClass().getResource(resource)).toURI()).toPath());
+ }
+
+ @Test
+ public void testOK() throws Exception {
+ IProcessingStepDescriptor processingStepDescriptor = new ProcessingStepDescriptor(null, null, false);
+ IArtifactDescriptor artifact = createArtifact("signed_by_signer_1", "public_signer1.pgp");
+ @SuppressWarnings("resource")
+ PGPSignatureVerifier verifier = new PGPSignatureVerifier();
+ verifier.initialize(agentProvider.getAgent(), processingStepDescriptor, artifact);
+ ArtifactOutputStream artifactOutputStream = new ArtifactOutputStream();
+ verifier.link(artifactOutputStream, new NullProgressMonitor());
+ Assert.assertTrue(verifier.getStatus().toString(), verifier.getStatus().isOK());
+ try (InputStream bytes = getClass().getResourceAsStream("testArtifact")) {
+ bytes.transferTo(verifier);
+ }
+ Assert.assertTrue(verifier.getStatus().isOK());
+ verifier.close();
+ Assert.assertTrue(verifier.getStatus().isOK());
+
+ IArtifactDescriptor descriptor = artifactOutputStream.getDescriptor();
+ Assert.assertNotNull("Signatures should be present",
+ descriptor.getProperty(PGPSignatureVerifier.PGP_SIGNATURES_PROPERTY_NAME));
+ Assert.assertNotNull("Keys should be present",
+ descriptor.getProperty(PGPSignatureVerifier.PGP_SIGNER_KEYS_PROPERTY_NAME));
+ }
+
+ @Test
+ public void testNoPublicKeyFound() throws Exception {
+ IProcessingStepDescriptor processingStepDescriptor = new ProcessingStepDescriptor(null, null, false);
+ IArtifactDescriptor artifact = createArtifact("signed_by_signer_1", "public_signer2.pgp");
+ try (PGPSignatureVerifier verifier = new PGPSignatureVerifier()) {
+ verifier.initialize(agentProvider.getAgent(), processingStepDescriptor, artifact);
+ ArtifactOutputStream artifactOutputStream = new ArtifactOutputStream();
+ verifier.link(artifactOutputStream, new NullProgressMonitor());
+ Assert.assertTrue(verifier.getStatus().toString(), verifier.getStatus().isOK());
+ try (InputStream bytes = getClass().getResourceAsStream("testArtifact")) {
+ bytes.transferTo(verifier);
+ }
+ Assert.assertTrue(verifier.getStatus().isOK());
+ verifier.close();
+ Assert.assertTrue(verifier.getStatus().isOK());
+
+ IArtifactDescriptor descriptor = artifactOutputStream.getDescriptor();
+ Assert.assertNull("No signatures should be present",
+ descriptor.getProperty(PGPSignatureVerifier.PGP_SIGNATURES_PROPERTY_NAME));
+ Assert.assertNull("No keys should be present",
+ descriptor.getProperty(PGPSignatureVerifier.PGP_SIGNER_KEYS_PROPERTY_NAME));
+ }
+ }
+
+ @Test
+ public void testTamperedSignature() throws Exception {
+ IProcessingStepDescriptor processingStepDescriptor = new ProcessingStepDescriptor(null, null, false);
+ IArtifactDescriptor artifact = createArtifact("signed_by_signer_1_tampered", "public_signer1.pgp");
+ try (PGPSignatureVerifier verifier = new PGPSignatureVerifier()) {
+ verifier.initialize(agentProvider.getAgent(), processingStepDescriptor, artifact);
+ // signature has random modification, making it invalid by itself
+ Assert.assertFalse(verifier.getStatus().isOK());
+ }
+ }
+
+ @Test
+ public void testSignatureForAnotherArtifact() throws Exception {
+ IProcessingStepDescriptor processingStepDescriptor = new ProcessingStepDescriptor(null, null, false);
+ IArtifactDescriptor artifact = createArtifact("signed_by_signer_1_otherArtifact", "public_signer1.pgp");
+ @SuppressWarnings("resource")
+ PGPSignatureVerifier verifier = new PGPSignatureVerifier();
+ verifier.initialize(agentProvider.getAgent(), processingStepDescriptor, artifact);
+ Assert.assertTrue(verifier.getStatus().isOK());
+ try (InputStream bytes = getClass().getResourceAsStream("testArtifact")) {
+ bytes.transferTo(verifier);
+ }
+ Assert.assertTrue(verifier.getStatus().isOK());
+ verifier.close();
+ IStatus status = verifier.getStatus();
+ assertEquals(IStatus.ERROR, status.getSeverity());
+ assertTrue(status.getMessage().matches(".*signature.*invalid.*"));
+ }
+}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/Pack200ProcessorTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/Pack200ProcessorTest.java
index d6a7a1010..a1447d16a 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/Pack200ProcessorTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/Pack200ProcessorTest.java
@@ -13,7 +13,14 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.artifact.processors;
-import java.io.*;
+import java.io.BufferedOutputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
import java.util.Arrays;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.equinox.internal.p2.artifact.processors.pack200.Pack200ProcessorStep;
@@ -24,6 +31,7 @@ import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
import org.eclipse.equinox.p2.tests.TestActivator;
import org.osgi.framework.Bundle;
+@Deprecated(forRemoval = true)
public class Pack200ProcessorTest extends AbstractProvisioningTest {
public Pack200ProcessorTest(String name) {
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/ZipVerifierProcessorTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/ZipVerifierProcessorTest.java
index cebdfaed5..dccca576f 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/ZipVerifierProcessorTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/ZipVerifierProcessorTest.java
@@ -13,26 +13,23 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.artifact.processors;
-import java.io.*;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.equinox.internal.p2.core.helpers.FileUtils;
import org.eclipse.equinox.internal.provisional.p2.artifact.repository.processing.ProcessingStep;
import org.eclipse.equinox.internal.provisional.p2.artifact.repository.processing.ZipVerifierStep;
import org.eclipse.equinox.p2.tests.TestActivator;
+import org.junit.Test;
import org.osgi.framework.Bundle;
-public class ZipVerifierProcessorTest extends TestCase {
-
- public ZipVerifierProcessorTest(String name) {
- super(name);
- }
-
- public ZipVerifierProcessorTest() {
- super("");
- }
+public class ZipVerifierProcessorTest {
+ @Test
public void testGoodZip() throws IOException {
// Setup the processor
ProcessingStep step = new ZipVerifierStep();
@@ -47,6 +44,7 @@ public class ZipVerifierProcessorTest extends TestCase {
assertEquals(step.getStatus().getSeverity(), IStatus.OK);
}
+ @Test
public void testBogusFile() throws IOException {
// Setup the processor
ProcessingStep step = new ZipVerifierStep();
@@ -61,6 +59,7 @@ public class ZipVerifierProcessorTest extends TestCase {
assertEquals(step.getStatus().getSeverity(), IStatus.ERROR);
}
+ @Test
public void testBogusFile2() throws IOException {
// Setup the processor
ProcessingStep step = new ZipVerifierStep();
@@ -75,6 +74,7 @@ public class ZipVerifierProcessorTest extends TestCase {
assertEquals(step.getStatus().getSeverity(), IStatus.ERROR);
}
+ @Test
public void testBogusFile3() throws IOException {
// Setup the processor
ProcessingStep step = new ZipVerifierStep();
@@ -89,6 +89,7 @@ public class ZipVerifierProcessorTest extends TestCase {
assertEquals(step.getStatus().getSeverity(), IStatus.ERROR);
}
+ @Test
public void testPackGZFile() throws IOException {
// Setup the processor
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/private_signer1.pgp b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/private_signer1.pgp
new file mode 100644
index 000000000..33d2c2f5f
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/private_signer1.pgp
@@ -0,0 +1,84 @@
+-----BEGIN PGP PRIVATE KEY BLOCK-----
+
+lQWFBGB1bugBDADQ5l7YnS9hNFRkBKSrvVNHt/TxeHaNNIHkdTC56I1QdThsOt4Y
+oQRI27AEOaY1GFEi6+QqwxALcMMMSTgkCRs2NFGqlWMVzNYE7bJMWChVa7uQ/9CG
+1HRbXwVwQx3hFgU4kmw1Kl/IH4LX76d9gAMyFANPjYZJSjbAv54wOlKruDRgpQFF
+pZeuXW7SnerL6sgd/+ZroikdkrjIs5t18C2ofzf6YnOokYkEEJSAEoQK5svVzT4G
+H3sw6FlE41RvnYKpuhvvyQhKjISDYfRaIL4JIpvR9Uko48eN9x654lJaucbMiLP4
+ROI9q7RQ6t1IMCiIN9QKgS+nVtHnN9MnXS0czGxfLdStv6bB+xgUoyBc7Uiqf4X0
+x8z9PE6O1L6Rgy2JMJHPgLWCF8h/u1FO88Br3I7TMzu2q/cg3k18L7eujnxVyYiD
+YIMxDBXBNnGCKRC4shgt8e+PzAPXIDFvbv7HOaERnx5c6eLl0tD12ocQeZHp1VlW
+nQteQ6CfvN07dNUAEQEAAf4HAwIrnfDjnCh1APMEp1xfdT91mv9aZw2xx3DU6gYT
+0lkgeZKe8HVLCuulx+MJ1Rl48ub2OnShpE7eMAI3M7N+7uaAFtNlTSR+ADW44eVF
+OzmH/CLjMsYD2pNSGdkvqdNzLHi52350TVnuKIciQs0QPAiMDMBrNEckUM3YDbmp
+wJlqywaUmjUUKdfvSjBrWTGfLtliRbsPh4BY7ule6R2DVwFDluCAWg9K2VkCL3QB
+6f+rdwvi5OzklxJuwd7cuerqNetlZnNHhdU/ZenGdjNuKMUCSEOXpbOWEABUV/dc
+9MyIhJdnvV8KovRMpo7RurBe8mv1cFjraA9oe+gM/7Iu+y6ZYlzQdLOJV/uc475k
+bHN/lF9jLsTC//gvW8oxdw1a4MIjG7w32L2J6ofeG1g3s8Hw4F84V/igS7WaQShF
+VxA3vu8Enggosdfx6lnOgFiR9qVNWcjLtIB2tgxrFDKJY2rFufRZ7VE1NED1AgCa
+weg8J8iYbqB14AMS2kiQhzYJ6AQukRidu7QnDhWeuOKcZ3klZvPna8e1ZAEar7os
+kjZVjbBpiwOgh2ZXhHvnl7po8XPfdbTZm48DFazDPxVUn+9PxS8/g6bDbrjAo2kk
+Wd1HKcOVTSbpO3l3cc0rC7wbZW+NxWrHTuZ8iMrIwtzI3+SZX5W9Fls8vmGpuA/W
+ZsGVMr3saXWKeVz8DpUzjPgsVscdQHgt6B6wpEhj8mWccL0BfviqmZnWCVcy2qTv
+9PXnCU4TNa7Y2cYtfXbmlOslT9ptBQ0fz+6/OuqB0NRWJl1AQNTBsM7GX8DF3mDb
+L+kv+IdIpmk0AN3iFcMo1K7nGoNyMDPuIXaPGYW9o7cfQsDuPO0rPUN8swAG8It3
+gLE1IFuQXyzJJ3pvTqf/NV9Wkh5YrCa8HvrzzR5WNnCBoUruNzWLfkFCZGOpiOGV
+//DnXvH2UPZA3hdSumz1yMnqXs1Zx/rMkblqufzxZR9EKwis4IrSULoaswir4IXc
+o4qi74OnaMWY+N7/CDAn07HAuB4HgK9UrnRTOYAM7pvOGRMzzbFMenE95hfotaEp
+mOjbqMiSGvXMHz1o2blZjHiq63pREP88XGBBfP3pSpVmjA+9Jrt+luVs9FkkTLqt
+N6snvrtc83Y92otxNpz8psU3CRu0avUKBF1eM5dPcg5RgGSV9ghCxXFsuOclrJ/q
+RI7O5uiEJF3VutvCM2Cz388IGuqejw15xSemXAmAAAPMmxL3t1gAPqLlyI6JW7UT
+WKYkiyKFRgLFt6Q+Xal92A/g+waJnxOrcM+va5i0xInTB+DnR3RD6egID42jP7V1
+e/6gZgmFKYWH1XDm9JsZSbW+5lDupuKutDdFY2xpcHNlIHAyIHRlc3QgU2lnbmVy
+IDEgPHNpZ25lcjFAZmFrZXVzZXIuZWNsaXBzZS5vcmc+iQHUBBMBCAA+FiEE6ZbG
+cKp/ZUCb9dtWE5442Q3tEfAFAmB1bugCGwMFCQPCZwAFCwkIBwIGFQoJCAsCBBYC
+AwECHgECF4AACgkQE5442Q3tEfC5dgv9GLaAehcQs3v11ae4LmGOHteAqq6qVmDe
+ouCQvID/nj8RHHscssweNTm1UhVpxn1RZvfQHPHqJXHaEy0v/QUUnVLSLDBMNd+3
+/0Sg++yaYTFVgSJLHkfGw9cz5eh8y+Lvmc3fiIxQhTdKAovMeqVZwLdPteMNYoLx
+ORNy60gBojMExGyyS0lHc5jNZtvDODPzexWmh9YZ/Ehb3UfX1mvyuMheI3LLW6VG
+d+xrP7Fd5d8rFlmzTQW0gg55YGEK2xvz/xS/cVEMrr6VffECp8wbrtrMlekVp9Yk
+aLKbKl9LCLokDzrpY7PD0N9upYiVj8QwiHJmuxacaIaGEBq/A6JJZhXrmigViigo
+c2Yh6Sm9FlLCUa7C+dmv7bjvW6uQKgbxjPYTLbxCNzQ2BeVcCSoVSQ7aA08WxeST
+UQL6/M7aWWmpE5L2m3bl0QFxRKB9yMU4Va/Znkh2YaMUR7joIk0RXM2CQ/73vAk/
+vClw4JIX+ed44GPhvtDSy4n4ywT8XHpJnQWFBGB1bugBDACy3hAYd33D5XdQeBEx
+hkhJ9gClwAraoFPVm9/TVATfwlS0M8olqsOWDFxpe5fqM5xsXrQ4x3n12E2alpli
+mhwlkyCcRKPT9Ofhxl9bC06jU+ibwtuDXMYohgBpHaZNvyaQLAnCxkJRkKaH7Oyl
+pzF1VF2ZaYJdwXEVz/qAErFw8Vl/3cllojfeqwunHIDnsAlXlyT9NjWIWYDocXF6
+FqawBV13nqC7I5F6QkmVkdcT2kgJUQapVR91tJBcSJLfzqRkN+1d7fqmF2PWC0Wx
+EsegEjz4vuja+t2ePVRmC2/EFskn5AB+EXz5/zhEUiL0JNjxyF5f5h8MwR2D0n0s
+bnhfk/c7Vld4S+50qT+GpYF/7aut2SF0XLIZErTJOs749D61keFwc+p+jgSJWS0L
+gFOkHpC0sFg0AZgxF12ZkyCniUTbEaJvxJjCidy3fLV+YH7HruWrrkgVUz8gDA3o
+G4xe2Bv5mSaJP54qBzWkri4KxkltACU/OQMZBXr0Y3KOWmEAEQEAAf4HAwLLvoWv
+eKC2/fMh+cA0nyp8Q5POdY1Y57YJSp7HcrUJVGFPMwY25rI9K/hg5LIKuXMlTiMw
+Jep9pAxERxhvohjPoKqb8zTT85PGFgSl6Mml+0h44CAGLT1bNuuB8/qqrOzWO3l+
+NvHYmaGTYtWKtETRvTZkepTyoKFZY7u0KO3xKusJS+MfuMKFvBlyibR8YLRQED2F
+KzNO8rPDLoFt8g6bfEnTgQbn/VqWBliFZ+W9oQAGXaoWC80LR7SBim4/XgsT5G/O
+PCZBsOIhHCEV0U6pO2kjDxjh+74CNOLnNTs54M2psYCKthMruQ7umGe1dMO+mQYU
+vu0xApMYoXAfCSWLq41b48IxLxGF53PhpjgAafM4TFYHDj56G7foZRmNDvLSFpzq
+/xyUxJGcDmx+J9GvAOuvObFn/25DrQJN2NXFm3cPcb6spDJspabBWR6rB+9mJelS
+b091fZN0cQM808dmbPyOgRwikB2078MOllFVKOoYbol0J9pZvxhjpAAUBYzSIQfe
++M6QYwHjqFVIaaM00ceo95QoXYbXmnrW2/TRpgZb0zKd26KSumhcS1saLgBb0TqM
+va+7xX+sdlOLNGAylulTmfOfsBryB6YogX4j6FpmZnzIwtfUS7KfuU9Ex6l50DY3
+kzRMFVpDTN2jRM90loztnTO3Mqa7yjTXgPv0lga2LIlJYYhzRTrt6alWsKxdAwWY
+JxuQiaa119ptdAqgRZkhuWpITFO8XnuQ1L/0vS9qw4SGjnDNm4zxH7AybWlSWzUG
+qsoETYAYMjPIcDuzggAu2YHVastfBI862vuUzPlLPHxQfT7uFWB5C+nyghSzocyZ
+3bL4FrRrf18LoPSODzoc0unMCXCnE8uS/fOqWTFTXCceNFB6em70p0f/BGpbFrxD
+kgE6Pb/VeX57KSuZLuHWbWxgUbVLf75WkkMUhJJ6ZscWpUtrBr6GpeiW0yp+Iw3b
+sRofxLSZ4KRBA3zB9WuhCOrqexVPvT+yRbFyzBtpwRfMpWqOdN+3L6wAqBiFzuuc
+zLqG9RrTLhRtVAGARRbA3K/0cd2Eu4yFj9JennA3/NGRzFrDx+CvnOoJh/cY9eYb
+GOU1KqMABWnpvc6D3UYtSA6pOwZ4k7/qwNuv+p+PwhEfsoBwoaGB5cPiZNKtvIBM
+oTV1J3J6MD0dZ2MbVisWr8L5DZOy41OpRv/nB3qxUjO9VWyx92f2oGeeOLrnwBt5
+TnmGP+KxtA9Q0EmRBxuASEHQ35Vc2J2qPBTGVEchHF+h8ojHpWuyc3vXQo4SaBoy
+arQN3DjExZfjjp0iaFYRGe8Tix3PrazL1XSDWRcfsdACjB0UJnYy2ngAR0CSZQ6m
+iQG8BBgBCAAmFiEE6ZbGcKp/ZUCb9dtWE5442Q3tEfAFAmB1bugCGwwFCQPCZwAA
+CgkQE5442Q3tEfDnvAwA0AkwV8a5kyU0mVHilaNAtZAx0GmlfkYkZqrmEd1sRSOr
+oCRRVqc4BvVfEO72BnmRTB2DP7Q7mP4HTMBwXEdd8mMqM7JWq+6mrOCy/22IDqqv
+kokhkwxAVvtNPuVpcJpa77my3OqMPatrE5jqa6t0O33ovrBADVZ8pgcZ1Vf2SFRj
+6Zv0ZIdSRRk//EhMipArrRttyTDP9OnCIWcHQ+mlkmSuBBcNJcH18q/Jd2ah9Fsn
+VRHn9Q1DSETOPDtGHcEvbo3eYiiiiZW+F8cBouiCks6Vxe6Ra5ur6kt9OrtxZ2pO
+YW9oLPHaZzaO1C9YFJuaa/Lyd8YYNeSgo2Cs/JOmQ7CFlC011Cdt4vGcKskGo9W2
+o8DdPvzHwtGZKELUNiP0x3Ci0jDkfk44up+xYznFZelaAyk43cY/ToAJW2e1vYxA
+K61Iw3QpP5uI6vYfaYaZYgR6Lpf52rsLZVJ0HrNVft/UZPZe4HXSloN3ZcIOgowe
+TJJnGnssYADXMioK7p6Y
+=P53y
+-----END PGP PRIVATE KEY BLOCK-----
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/private_signer2.pgp b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/private_signer2.pgp
new file mode 100644
index 000000000..c54415f0c
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/private_signer2.pgp
@@ -0,0 +1,84 @@
+-----BEGIN PGP PRIVATE KEY BLOCK-----
+
+lQWGBGB1hRUBDACuNDnJk8q+E8bZmIKkOCL9HTrj+ZAo2cfFfi/bLD9UsjRBOa21
+ly9oIjDSsmlFMBGX6J/xvwrnWs4lx1YI5yGw0sX9kzBC5ghAE+LVT28OEBkQZciQ
+i87C9ad8NjZYg+/ZUbW8Hrss9yQz18Lu0Abejs7redAxbhqpbtkqArvRGOKgC+P7
+qFuYuywvIoiAmh3OGzY+B39KLspFaavSorMNcxveoNXehCoDk9eI4WGhyng+XV1N
+ZSquRW4GB8zpEDY0a4Dq4bQsK50A3FeYQMC3Ud0mnMcHERLbghtMQC81Isd/0x44
+nOvjozelRxKzq0MowYXFxQ0jDJN26wVH+3FiovTTxfzk1ZyBOBbjT8yA7xHDgvff
+9HMEhCTWyHtxsJIAZrji+pjx4bgPsdvFb7/noQJsP1Ea/ihSl4SSiJk1wrKoQoA4
+3CVdKJ4FIF+v9Kf7ADftGqMdtTHu02AWdT60iu7eKeWY8by2TbsczOTPzb4opWxS
+QnCJwtdUngs+Hs0AEQEAAf4HAwLqAXbd6kJNxvMykoDbiN1hl3GLcD4gEiF76UHv
+zIdNk1QihIlcSRUHUERdMuHNgnrUQp9WPjNzptwEjAJcP4DYkWcR4+DxPrS07MUa
+3Rba+OPMMwgdqZOF3Ql5EvTqudkuIIFFflF4/ComqyDs9p0MvLIffAbcvV0u4plf
+gyjWFijh3vZvzRkHvTaIrPnzJFgcTztZ8bIIMsL48TX3Sz3JZiF7chcXUeutUrSJ
+740n5jiB0qEHPJ8hZRmAqaYFgInpx1+aRI1ueJCp8ML124Gnn9Tk5l6QSjSTEyPl
+E1YRBHszHRcLP2MJ1TfjyCuXoErpu8kXCKI1/aTTV95cguzEFX8gP32l6vnBC0xB
+NmQ3eNb9NFbb6QO0E9NEF3BG5ADjRplW4sHnrlQn0+TwDReR9X/RsRPEc2zIBnKe
+BZi3o9Judt/CQizyDXtObbg97sIdtnc/EaAIZMrA3uMAxrA5rin5DOIsz/H3zyh9
+w8LZ1cbaWCnp+POv74FjkgXBklniwxkpSSPrVmA2Zw2smXObZq+GcdmRhz0mG2l4
+oKYyPTe4WK74Ho96x1jlDPub7+4/HrCJnxXYsMR35tQvPplWfq1PLOY2mnsXzRho
+h7jWYxYNM949EFCwMF09abDBj34ZpRUfYpP6VC8NATG8//v6LwhhrD3AQwLYbpmA
+YK64LrnCyh8LfSFibp+8yBis+HHsxz2RgJ7gkrSORoKXAGJAHu+GYuhP9am1ObCH
+CUsO1McgCx4yUQZqMbSZuvhf8h61kmnW/+CZSQQ8pO25zvysdhwCPwY1ffsnFX8m
+gIVdMBM7QtC9PepJEGQctXMLH/yng6nCPwkb5dkWwoRywG+VhnokARua9n7fMyJJ
+C+MEVpmWpRNO2pUjtrW8IjftsjLyLah5FLfhfXR1ciQse5J9HkDsuoRr7owvZJ9U
+ZMZStlLZdrMNAIS6k/fRdgBG2mUhLRvdeBcqJ0zO3ZB6RT+Xi4T/C0BEr/tQ65lE
+iX3rgvjs7nqCCq45xmPoY34ClOKvAiXmE/5X9DtGVesJVpSkbDjzNeljH/UG/fSi
+1/pGlYS5FpYtjrPvS8dPvasobafl2nISTWVUpnChLdFSRvEnj71KtuqHmJf2K0F9
+9yz74UPiSv4Ff5Zyw0IcCeK8KIDsvEwfkTvo53ug3qrEA0mjajBNTK9jKDvCYeWD
+v4dbGZqDrMd9Q2UvXXOz9BBrgVN35nAsXXg0hTpKhcDgkKeYi3ssf0T/SR0aYu10
+LVGaN7AqvH11eaXW3Pxa4nO8qm2TBntJMnNO6IEozaba9uM4qrs/5BXWxcJRGBaz
+82PyG4AeTOccU6rJBK1zYhz0KMApuuA5rLQ3RWNsaXBzZSBwMiB0ZXN0IFNpZ25l
+ciAyIDxzaWduZXIyQGZha2V1c2VyLmVjbGlwc2Uub3JnPokB1AQTAQgAPhYhBFTo
+Ck5d9bkVHcBczvkSCo3ck5v0BQJgdYUVAhsDBQkDwmcABQsJCAcCBhUKCQgLAgQW
+AgMBAh4BAheAAAoJEPkSCo3ck5v0THMMAIx1c03u7PsAIXRdi0av9NhvPHjjmYAO
++aTxJB3UJFuCqvj61rKXZqBPYgZbQUJUTeDqENZ2+fZ/7kKZhFu5X3dmCePUGBfF
+tHnC6NfEj4Lp0+WMYTweoJ6jJQpW2ZqiWVMUgLlGGCbdTTnp9D10qSahaqYBcIgk
+v/38Qfqx+D3vyGrqPiUHUwCjwoXL5fsH7r3iNeJBsPdm+2fbjcuij5wzfXhK79B+
+xBQ0VEPcJi1Kbi+QCQC0HUdjc3OSDNSVXbEEgkCNrPPfHz6A14/E0Q+b04OaW2f7
+yq/p/wwVonh+AJomWTk/9bEi1WGahN8WjahHMbycR6Lqm3upyF+/CCiQjUGD0yG2
+XuGtfoieHvHcJF0g2eUAPrRlEtKQfp3Z/UTFAP+bWEhQMlUFLCBXCcPESxzomSkK
+P/ia0PjE7YvWxbV9qgO286EyToqAUqIBEfyxRRv/x3QhtKlTFa8/u/ysJLFx6bVr
+TdMXC6czbXnryZT9HqkdxqnCP2TNpZWo9p0FhgRgdYUVAQwAyp3Wtn6kUDuBPmYm
+9jrrvprMYkjBPapI7Qq/IsuLJfIRex5Pvj4ro1Hnm/FgEjgiAxDocp81HZ6M0PGG
+2PYfO444cqdpGGW1I4Ak7Wus78rSaBpbd98l5zpQYu1b6XILtXQQRY5rGIrbhlZu
+/Hpsdb5jf671GcFjCj+9UW2qJfQch1z9AU4uDBK/43iqWNjR+5hyVI1PQi4m/kYu
+uzEpuBwa0Y8UWWVbO2GQPYbmnSWnU/5MkBvLC5h3f85Q673byHdQCp5WWV99zSUC
+rMXb+xM1cCr6Q95xt1DstpbM1MgNJXiXs5cvb6LetTFeZGG5N0h7r5Qul20fTCyb
+IV89OPBKvkkMWNWwysy8L5mttNEfx78Z64cX/rpfKnS2dtW0G8RYi4JUPVTLekDA
+BQOyVsry8oPJ84NM4AoXO8Mln3bvSZgmSaNRJC+lNqX0xbb+42nZ2yR58rmh/mGc
+uuqdPVxzTeozvPXdDKl2veK/2fuo85mDt/c/QVAzf3uDvRmJABEBAAH+BwMC9jOj
+3vfR2C/zv0u3eFIq0QIXDgpmKvdClJasHTyyGAvNNJYjZmScm4JNnocGe3jmqCAq
+H9L8Y77q+ApljGiQXANFOYV/WMsfTjiqyL1FgNY9OgoNIMnkcMFva+vmlw+aBTYU
+HSL1BafF/nh7eJwDoTrSyH8ObnsuqeN8ZwL1iThix70fwbHmvQ7QEl6hgRFKE3oG
++EPmnlQOVbvYfDVYN6sQahRHVluHMZIrMfvMiEUklKAIH7Di/p1dgwoQCN+kHWrG
+GMQVJzuO8gWJqC5o61LtcnLau5nIgFFDhqqPi233KBGuqaFmA/7gEZO9d77+W9tU
+F2R6Xx4l9FNGws5o1YtwOTeHoLVNRTYoNMfz7B+Sj9RqJG4xQiwCFEKohlA8lIXp
+DJhI+TycFeVh3F/esGL4uRWoI46s3FmoliSFuBSqeE3Gz8OtXBOr3CT4RcSrjziF
+OuGCnbJAykVmx/2RpWNHN9RdzbmwGyZ8Gz4lxsmas6jRacBWMEn9DXMDq5AjeyYW
+lfpXEHAF/n06s+M5nAqJ6uhi1GDYcPQcY1CR6xT9rQoijP+xQUF3ssFGnBWQ1oC6
+nRl4ACJGODgcNuSu+f1/naNK2ZgfaA9hA4mA/YleaIQRvcwWG22ATqpkHnnacU6b
+CqesN+jan65BCR6qRRbSi/paK04AORikCwfz8eJXnZ9A0mlPIYi8ld5nNsdEV5MP
+BUdZdprrIk0KmSHq/0YovQ/ZqtOkXKZWF18Zk9QR/QFRkJ01eARK9AwKQixh6D89
+ZXv0PqWiquaFCsCE7YlkCC5f4XSwSY3KtqtK0BG5zmdus3Tl4gzOY6k1fCOczcpi
+d8ktPEPFBuDWUq8Lutme/a1yAwm82TvOVWPBikASIXpDXWM0JVjEN+4SwrxQ0Hrd
+HnCUkr/eHm4EOkmHGHCQnfs+Q50aJNquAorydhMPVez0AhaXu1DwCinAX0K3zAOa
+In5/JAhkZ7L5Fy4DG+uQ8YsZA0/2T/5Nr+k2nX1ERZuQ6zta67mAiZpw/M2J6ujZ
+AGEbImcGzN48NG8E4sykm/mUIjtxmwakWJ1Cb7+AtMG/8v2jCjwVDVThRWwkdrsY
+ug62N/HPQ+sXow6CMA7s1TaQvxn2p1s2zJk+cMOPPn/4VC4y6xPT6nr9Zsi+XxWy
+i87H8PyfwG2MqaJEgIr0vGoWPpnCJjUYvK3xqFXPsxz6ngDQW8mG704uWiZhGuua
+sXkWyxiobQ/1HtQyk0NA1MCQWSHfHlMf+Km9KrFSm3MlLFtvLvk9VHq8dqfttIZs
+l5WHh0o43X3iqMNBlWeJ8A4qmg6/k4n/Zek/y0znieFFXi8Tl3eCsLZWraaE1jP5
+wZyJAbwEGAEIACYWIQRU6ApOXfW5FR3AXM75EgqN3JOb9AUCYHWFFQIbDAUJA8Jn
+AAAKCRD5EgqN3JOb9JV1C/sEGGnSLRnVLurlTw6IFIRH0XXggzFaA6JN3cwTmJK5
+xCf4sSwyCt67LXQWZ+YTTFt+EXo/Yd25tPNyJDBAh1dg7TBkTAIGV3PrPJ6Ixmjo
+j5Tw2ykaw5fzI37+FjMhB91jzNMDpwcth+7+qu/ru6yIJ/AcHqfSKLD9ao38/jIf
+rfbmcZCb+5ZZCSUoyLRAUjSMFqqiRKfy5JiD/qz2ej5rXx4hv1zyq3XauVRC7H5c
+ZAAu4g9mP/ri9YhRelGrjm/VmkYMYJ9LS2kMHet7031ldpmcCZfex5ZUR0HLTrF7
+jBd1bN0VbGXZMIchXgJuVrJq7Kw36cjTvP+l46ufWYO+1VArGWk0CKhXIf/MR7C9
+W9RycZUlWTVGBXrncfvqY5Db3SABUJOTRwUyf43G5KCrScx8w7BM0hn+zJyAW9W/
+GplTfzZ8/SWpbNYSlJStpzvEzVUousCk5ERKTp93qYqI/m65zIrxxsaQUc70zUOQ
+dhlWIjDhIRD9JBC+M657iNc=
+=OHTb
+-----END PGP PRIVATE KEY BLOCK-----
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/public_signer1.pgp b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/public_signer1.pgp
new file mode 100644
index 000000000..485e0bb6f
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/public_signer1.pgp
@@ -0,0 +1,41 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQGNBGB1bugBDADQ5l7YnS9hNFRkBKSrvVNHt/TxeHaNNIHkdTC56I1QdThsOt4Y
+oQRI27AEOaY1GFEi6+QqwxALcMMMSTgkCRs2NFGqlWMVzNYE7bJMWChVa7uQ/9CG
+1HRbXwVwQx3hFgU4kmw1Kl/IH4LX76d9gAMyFANPjYZJSjbAv54wOlKruDRgpQFF
+pZeuXW7SnerL6sgd/+ZroikdkrjIs5t18C2ofzf6YnOokYkEEJSAEoQK5svVzT4G
+H3sw6FlE41RvnYKpuhvvyQhKjISDYfRaIL4JIpvR9Uko48eN9x654lJaucbMiLP4
+ROI9q7RQ6t1IMCiIN9QKgS+nVtHnN9MnXS0czGxfLdStv6bB+xgUoyBc7Uiqf4X0
+x8z9PE6O1L6Rgy2JMJHPgLWCF8h/u1FO88Br3I7TMzu2q/cg3k18L7eujnxVyYiD
+YIMxDBXBNnGCKRC4shgt8e+PzAPXIDFvbv7HOaERnx5c6eLl0tD12ocQeZHp1VlW
+nQteQ6CfvN07dNUAEQEAAbQ3RWNsaXBzZSBwMiB0ZXN0IFNpZ25lciAxIDxzaWdu
+ZXIxQGZha2V1c2VyLmVjbGlwc2Uub3JnPokB1AQTAQgAPhYhBOmWxnCqf2VAm/Xb
+VhOeONkN7RHwBQJgdW7oAhsDBQkDwmcABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheA
+AAoJEBOeONkN7RHwuXYL/Ri2gHoXELN79dWnuC5hjh7XgKquqlZg3qLgkLyA/54/
+ERx7HLLMHjU5tVIVacZ9UWb30Bzx6iVx2hMtL/0FFJ1S0iwwTDXft/9EoPvsmmEx
+VYEiSx5HxsPXM+XofMvi75nN34iMUIU3SgKLzHqlWcC3T7XjDWKC8TkTcutIAaIz
+BMRssktJR3OYzWbbwzgz83sVpofWGfxIW91H19Zr8rjIXiNyy1ulRnfsaz+xXeXf
+KxZZs00FtIIOeWBhCtsb8/8Uv3FRDK6+lX3xAqfMG67azJXpFafWJGiymypfSwi6
+JA866WOzw9DfbqWIlY/EMIhyZrsWnGiGhhAavwOiSWYV65ooFYooKHNmIekpvRZS
+wlGuwvnZr+2471urkCoG8Yz2Ey28Qjc0NgXlXAkqFUkO2gNPFsXkk1EC+vzO2llp
+qROS9pt25dEBcUSgfcjFOFWv2Z5IdmGjFEe46CJNEVzNgkP+97wJP7wpcOCSF/nn
+eOBj4b7Q0suJ+MsE/Fx6SbkBjQRgdW7oAQwAst4QGHd9w+V3UHgRMYZISfYApcAK
+2qBT1Zvf01QE38JUtDPKJarDlgxcaXuX6jOcbF60OMd59dhNmpaZYpocJZMgnESj
+0/Tn4cZfWwtOo1Pom8Lbg1zGKIYAaR2mTb8mkCwJwsZCUZCmh+zspacxdVRdmWmC
+XcFxFc/6gBKxcPFZf93JZaI33qsLpxyA57AJV5ck/TY1iFmA6HFxehamsAVdd56g
+uyORekJJlZHXE9pICVEGqVUfdbSQXEiS386kZDftXe36phdj1gtFsRLHoBI8+L7o
+2vrdnj1UZgtvxBbJJ+QAfhF8+f84RFIi9CTY8cheX+YfDMEdg9J9LG54X5P3O1ZX
+eEvudKk/hqWBf+2rrdkhdFyyGRK0yTrO+PQ+tZHhcHPqfo4EiVktC4BTpB6QtLBY
+NAGYMRddmZMgp4lE2xGib8SYwonct3y1fmB+x67lq65IFVM/IAwN6BuMXtgb+Zkm
+iT+eKgc1pK4uCsZJbQAlPzkDGQV69GNyjlphABEBAAGJAbwEGAEIACYWIQTplsZw
+qn9lQJv121YTnjjZDe0R8AUCYHVu6AIbDAUJA8JnAAAKCRATnjjZDe0R8Oe8DADQ
+CTBXxrmTJTSZUeKVo0C1kDHQaaV+RiRmquYR3WxFI6ugJFFWpzgG9V8Q7vYGeZFM
+HYM/tDuY/gdMwHBcR13yYyozslar7qas4LL/bYgOqq+SiSGTDEBW+00+5Wlwmlrv
+ubLc6ow9q2sTmOprq3Q7fei+sEANVnymBxnVV/ZIVGPpm/Rkh1JFGT/8SEyKkCut
+G23JMM/06cIhZwdD6aWSZK4EFw0lwfXyr8l3ZqH0WydVEef1DUNIRM48O0YdwS9u
+jd5iKKKJlb4XxwGi6IKSzpXF7pFrm6vqS306u3Fnak5hb2gs8dpnNo7UL1gUm5pr
+8vJ3xhg15KCjYKz8k6ZDsIWULTXUJ23i8ZwqyQaj1bajwN0+/MfC0ZkoQtQ2I/TH
+cKLSMOR+Tji6n7FjOcVl6VoDKTjdxj9OgAlbZ7W9jEArrUjDdCk/m4jq9h9phpli
+BHoul/nauwtlUnQes1V+39Rk9l7gddKWg3dlwg6CjB5MkmcaeyxgANcyKgrunpg=
+=JYpC
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/public_signer2.pgp b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/public_signer2.pgp
new file mode 100644
index 000000000..0beadf637
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/public_signer2.pgp
@@ -0,0 +1,41 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQGNBGB1hRUBDACuNDnJk8q+E8bZmIKkOCL9HTrj+ZAo2cfFfi/bLD9UsjRBOa21
+ly9oIjDSsmlFMBGX6J/xvwrnWs4lx1YI5yGw0sX9kzBC5ghAE+LVT28OEBkQZciQ
+i87C9ad8NjZYg+/ZUbW8Hrss9yQz18Lu0Abejs7redAxbhqpbtkqArvRGOKgC+P7
+qFuYuywvIoiAmh3OGzY+B39KLspFaavSorMNcxveoNXehCoDk9eI4WGhyng+XV1N
+ZSquRW4GB8zpEDY0a4Dq4bQsK50A3FeYQMC3Ud0mnMcHERLbghtMQC81Isd/0x44
+nOvjozelRxKzq0MowYXFxQ0jDJN26wVH+3FiovTTxfzk1ZyBOBbjT8yA7xHDgvff
+9HMEhCTWyHtxsJIAZrji+pjx4bgPsdvFb7/noQJsP1Ea/ihSl4SSiJk1wrKoQoA4
+3CVdKJ4FIF+v9Kf7ADftGqMdtTHu02AWdT60iu7eKeWY8by2TbsczOTPzb4opWxS
+QnCJwtdUngs+Hs0AEQEAAbQ3RWNsaXBzZSBwMiB0ZXN0IFNpZ25lciAyIDxzaWdu
+ZXIyQGZha2V1c2VyLmVjbGlwc2Uub3JnPokB1AQTAQgAPhYhBFToCk5d9bkVHcBc
+zvkSCo3ck5v0BQJgdYUVAhsDBQkDwmcABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheA
+AAoJEPkSCo3ck5v0THMMAIx1c03u7PsAIXRdi0av9NhvPHjjmYAO+aTxJB3UJFuC
+qvj61rKXZqBPYgZbQUJUTeDqENZ2+fZ/7kKZhFu5X3dmCePUGBfFtHnC6NfEj4Lp
+0+WMYTweoJ6jJQpW2ZqiWVMUgLlGGCbdTTnp9D10qSahaqYBcIgkv/38Qfqx+D3v
+yGrqPiUHUwCjwoXL5fsH7r3iNeJBsPdm+2fbjcuij5wzfXhK79B+xBQ0VEPcJi1K
+bi+QCQC0HUdjc3OSDNSVXbEEgkCNrPPfHz6A14/E0Q+b04OaW2f7yq/p/wwVonh+
+AJomWTk/9bEi1WGahN8WjahHMbycR6Lqm3upyF+/CCiQjUGD0yG2XuGtfoieHvHc
+JF0g2eUAPrRlEtKQfp3Z/UTFAP+bWEhQMlUFLCBXCcPESxzomSkKP/ia0PjE7YvW
+xbV9qgO286EyToqAUqIBEfyxRRv/x3QhtKlTFa8/u/ysJLFx6bVrTdMXC6czbXnr
+yZT9HqkdxqnCP2TNpZWo9rkBjQRgdYUVAQwAyp3Wtn6kUDuBPmYm9jrrvprMYkjB
+PapI7Qq/IsuLJfIRex5Pvj4ro1Hnm/FgEjgiAxDocp81HZ6M0PGG2PYfO444cqdp
+GGW1I4Ak7Wus78rSaBpbd98l5zpQYu1b6XILtXQQRY5rGIrbhlZu/Hpsdb5jf671
+GcFjCj+9UW2qJfQch1z9AU4uDBK/43iqWNjR+5hyVI1PQi4m/kYuuzEpuBwa0Y8U
+WWVbO2GQPYbmnSWnU/5MkBvLC5h3f85Q673byHdQCp5WWV99zSUCrMXb+xM1cCr6
+Q95xt1DstpbM1MgNJXiXs5cvb6LetTFeZGG5N0h7r5Qul20fTCybIV89OPBKvkkM
+WNWwysy8L5mttNEfx78Z64cX/rpfKnS2dtW0G8RYi4JUPVTLekDABQOyVsry8oPJ
+84NM4AoXO8Mln3bvSZgmSaNRJC+lNqX0xbb+42nZ2yR58rmh/mGcuuqdPVxzTeoz
+vPXdDKl2veK/2fuo85mDt/c/QVAzf3uDvRmJABEBAAGJAbwEGAEIACYWIQRU6ApO
+XfW5FR3AXM75EgqN3JOb9AUCYHWFFQIbDAUJA8JnAAAKCRD5EgqN3JOb9JV1C/sE
+GGnSLRnVLurlTw6IFIRH0XXggzFaA6JN3cwTmJK5xCf4sSwyCt67LXQWZ+YTTFt+
+EXo/Yd25tPNyJDBAh1dg7TBkTAIGV3PrPJ6Ixmjoj5Tw2ykaw5fzI37+FjMhB91j
+zNMDpwcth+7+qu/ru6yIJ/AcHqfSKLD9ao38/jIfrfbmcZCb+5ZZCSUoyLRAUjSM
+FqqiRKfy5JiD/qz2ej5rXx4hv1zyq3XauVRC7H5cZAAu4g9mP/ri9YhRelGrjm/V
+mkYMYJ9LS2kMHet7031ldpmcCZfex5ZUR0HLTrF7jBd1bN0VbGXZMIchXgJuVrJq
+7Kw36cjTvP+l46ufWYO+1VArGWk0CKhXIf/MR7C9W9RycZUlWTVGBXrncfvqY5Db
+3SABUJOTRwUyf43G5KCrScx8w7BM0hn+zJyAW9W/GplTfzZ8/SWpbNYSlJStpzvE
+zVUousCk5ERKTp93qYqI/m65zIrxxsaQUc70zUOQdhlWIjDhIRD9JBC+M657iNc=
+=Kto/
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/signed_by_signer_1 b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/signed_by_signer_1
new file mode 100644
index 000000000..a001778a4
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/signed_by_signer_1
@@ -0,0 +1,14 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQHRBAABCAA7FiEE6ZbGcKp/ZUCb9dtWE5442Q3tEfAFAmB1jSEdHHNpZ25lcjFA
+ZmFrZXVzZXIuZWNsaXBzZS5vcmcACgkQE5442Q3tEfDElAv/YEgAwby4DXD3J0ZX
+6iAU2nRjpaUqZ7SAVkOiueeuuxlDw9HnVpIEp/nAOM0OiJrY5h9jQwpLY+p7QmL/
+hWows1fX1PKzpJNATS3bHr+B7qxPkM2N2LKK/ipkknjBXeQIOZyn47nT1nI8/UbA
+UePb5PXDZdIraP6trf5WcsMPxncPntFA4hnPzoVSgvfIYw+Rnjnbsva67grJAe0s
+RJLQatTtPM35n7g3UiNwd09lADPz6u9Ka63GFIf1Prt/mZxsihYq+oJ3xwTudxin
+n2KFCVIw6pCfpXAdYp5CkpbLCBUxyM0TjwphpiVjpa3haqay6iOYcYTubpTcS60S
+Dmz0PE9RCyQq5ycXFPD1UGQKe4C3J/0PzUciT/WzDlxWhM0Wglgez+tYphwDyYHA
+4Q+aSv4FMtKJ/I+RVpgOeF+XApEFwPXB5gw9VtjP9e9uu2T3qEnllrzhfPnNzgY9
+km2tk2WYL2hFdRolQnSfzcimTBaa6GI7dWhMCYe0z1Q0xa1i
+=0YYr
+-----END PGP SIGNATURE-----
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/signed_by_signer_1_otherArtifact b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/signed_by_signer_1_otherArtifact
new file mode 100644
index 000000000..f8c604147
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/signed_by_signer_1_otherArtifact
@@ -0,0 +1,14 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQHRBAABCAA7FiEE6ZbGcKp/ZUCb9dtWE5442Q3tEfAFAmB1+EodHHNpZ25lcjFA
+ZmFrZXVzZXIuZWNsaXBzZS5vcmcACgkQE5442Q3tEfD5LAwAyPl8TBsC0bYZAsRX
+BSGXjlJ+oBKci5VH6bgM/ldnZD5SsYv6PVoxxdOJA2R6S88xxd0DuWivYuG+9aiZ
+w98hx6g0vNH8AWL+yd+l+2yIS8i/MJ57MCvVztexq935fIYU5KGdUNNEjDIrGHQQ
+AR5QWfTiy9EGracG4W6F9twmMOfDlCJ3eRCetp5OTvqBzS2gLom8ECaw7tezYvA/
+09Ok88j7vMI5kL3FO3WzzR+obeYUc19F6602h4cEJs/yOTOj/gz6GCXsAnuYQs1L
+yhjv4Cp4sBnMw+zPX0jFeNHu35mPt8oOFz1NLN85GHO7v3FFXmtwxj8bVBWBQR3R
+Vfi+n8SfR3WO5pYpsqPHZgP95K+W53ere1BZd67cT6uuJDtoDWC6TYPjndm5tnN1
++AzDQO12cC4w2cgIt3ElNYK0T8ADvrmCMPZPRPJ+GeZb0jb871SLDU1MPGZ9NHUl
+hiuiOU3vTN/X/SbZM/Zcz2eahRAOBOc8sXzqcbjQHN/Akzbg
+=acJE
+-----END PGP SIGNATURE-----
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/signed_by_signer_1_tampered b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/signed_by_signer_1_tampered
new file mode 100644
index 000000000..d165ca5a4
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/signed_by_signer_1_tampered
@@ -0,0 +1,14 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQHRBAABCAA7FiEE6ZbGcKp/ZUCb9dtWE5442Q3tEfAFAmB1jSEdHHNpZ25lcjFA
+ZmFrZXVzZXIuZWNsaXBzZS5vcmcACgkQE5442Q3tEfDElAv/YEgAwby4DXD3J0ZX
+6iAU2nRjpaUqZ7SAVkOiueeuuxlDw9HnVpIEp/nAOM0OiJrY5h9jQwpLY+p7QmL/
+hWows1fX1PKzpJNATS3bHr+B7qxPkM2N2LKK/ipkknjBXeQIOZyn47nT1nI8/UbA
+UePb5PXDZdIraP6trf5WcsMPxncPntFA4hnPzoVSgvfIYw+Rnjnbsva67grJAe0s
+RJLQatTtPM35n7g3UiNwd09lADPz6u9Ka63GFIf1Prt/mZxsihYq+oJ3xwTudxin
+n2KFCVIw6pCfpXAdYp5CkpbLCBUxyM0TjwphpiVjpa3haqay6iOYcYTubpTcS60S
+Dmz0PE9RCyQq5ycXFPD1UGQKe4C3J/0PzUciT/WzDlxWhM0Wglgez+tYphwDyYHA
+5Q+aSv4FMtKJ/I+RVpgOeF+XApEFwPXB5gw9VtjP9e9uu2T3qEnllrzhfPnNzgY9
+km2tk2WYL2hFdRolQnSfzcimTBaa6GI7dWhMCYe0z1Q0xa1i
+=0YYr
+-----END PGP SIGNATURE-----
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/signed_by_signer_2 b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/signed_by_signer_2
new file mode 100644
index 000000000..056858dbd
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/signed_by_signer_2
@@ -0,0 +1,14 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQHRBAABCAA7FiEEVOgKTl31uRUdwFzO+RIKjdyTm/QFAmB1jTEdHHNpZ25lcjJA
+ZmFrZXVzZXIuZWNsaXBzZS5vcmcACgkQ+RIKjdyTm/REpQv8DJeanIGgPjvV09sP
+BCBTSbHjoV6b5N6vjc15yZhBcWLJe0PAvApdCt0t7E4kTIKOqAz1sABB6YmJjGOZ
+SLL3AToVPk30b07Eq4qgOjEkb3pGlpVFshxEmtrLpbVy068774wacW+PLpvgP0FN
+7v0MlCbdcTBA18MVE3eraA14KL+yfLFkEgdtHSpZ6jzhRcQZexKJRpnS7/Bcah80
+RMZ69/N4HPWTo3ys7ELyeDC80P8B35fcayPLJVsFUgrUQ74UsIUwsaUQwoRNuZYR
+RSizHrJxkLhfYY5CMFTh9Bl1odY/kiXdBGw2Cqk02K3BlwFMsw5mK4CRtoagpGRO
+l1mX58sWjrE+J0tla6MG9aDZiUBdQzFoDGIppex5Bq9ePDcB6CCjR5HO4t7xIg5d
+1/pZly/T0kACgzrbfY3IkBVtL0Fv+PCOJRkmTqw2Lvo3Nhq18TTyZWQLqaZQt/Tc
+dmZVisxh4YbI8wpTRYh3jSlKJ1YYwlj6/QMG7t2UI9B2jg+7
+=8i0n
+-----END PGP SIGNATURE-----
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/testArtifact b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/testArtifact
new file mode 100644
index 000000000..fd80c131c
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/processors/testArtifact
@@ -0,0 +1 @@
+Hello! Please don't modify me because I'm signed for tests and modifying me in any way would make tests fail \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/AllTests.java
index 08d70978a..0abfcc708 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/AllTests.java
@@ -7,41 +7,27 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.artifact.repository;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all automated artifact repository tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(ArtifactLockingTest.class);
- suite.addTestSuite(ArtifactOutputStreamTest.class);
- suite.addTestSuite(ArtifactRepositoryManagerTest.class);
- suite.addTestSuite(ArtifactRepositoryMissingSizeData.class);
- suite.addTestSuite(ArtifactRepositoryWithReferenceDescriptors.class);
- suite.addTestSuite(BatchExecuteArtifactRepositoryTest.class);
- suite.addTestSuite(Bug252308.class);
- suite.addTestSuite(Bug265577.class);
- suite.addTestSuite(Bug351944.class);
- suite.addTestSuite(CompositeArtifactRepositoryTest.class);
- suite.addTestSuite(CorruptedJar.class);
- suite.addTestSuite(FoldersRepositoryTest.class);
- suite.addTestSuite(JarURLArtifactRepositoryTest.class);
- suite.addTestSuite(LocationTest.class);
- suite.addTestSuite(MD5Tests.class);
- suite.addTestSuite(MirrorSelectorTest.class);
- suite.addTestSuite(MirrorRequestTest.class);
- suite.addTestSuite(SimpleArtifactRepositoryTest.class);
- suite.addTestSuite(TransferTest.class);
- return suite;
- }
-
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ ArtifactLockingTest.class, ArtifactOutputStreamTest.class, ArtifactRepositoryManagerTest.class,
+ ArtifactRepositoryMissingSizeData.class, ArtifactRepositoryWithReferenceDescriptors.class,
+ BatchExecuteArtifactRepositoryTest.class, Bug252308.class, Bug265577.class, Bug351944.class,
+ CompositeArtifactRepositoryTest.class, CorruptedJar.class, FoldersRepositoryTest.class,
+ JarURLArtifactRepositoryTest.class, LocationTest.class, MD5Tests.class, MirrorSelectorTest.class,
+ MirrorRequestTest.class, SimpleArtifactRepositoryTest.class, TransferTest.class, PGPVerifierTest.class
+})
+public class AllTests {
+// test suite
} \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/CompositeArtifactRepositoryTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/CompositeArtifactRepositoryTest.java
index 9a607f1c3..36fb61c1e 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/CompositeArtifactRepositoryTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/CompositeArtifactRepositoryTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2017 IBM Corporation and others.
+ * Copyright (c) 2008, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -18,8 +18,8 @@ import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.stat
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.hasItem;
import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertThat;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -32,7 +32,6 @@ import java.net.URI;
import java.net.URISyntaxException;
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.IProgressMonitor;
@@ -54,7 +53,7 @@ import org.eclipse.equinox.internal.p2.metadata.ArtifactKey;
import org.eclipse.equinox.internal.p2.persistence.CompositeRepositoryState;
import org.eclipse.equinox.internal.p2.repository.Transport;
import org.eclipse.equinox.p2.core.ProvisionException;
-import org.eclipse.equinox.p2.internal.repository.comparator.MD5ArtifactComparator;
+import org.eclipse.equinox.p2.internal.repository.comparator.ArtifactChecksumComparator;
import org.eclipse.equinox.p2.internal.repository.tools.ArtifactRepositoryValidator;
import org.eclipse.equinox.p2.metadata.IArtifactKey;
import org.eclipse.equinox.p2.metadata.Version;
@@ -72,6 +71,7 @@ import org.eclipse.equinox.p2.tests.TestArtifactRepository;
import org.eclipse.equinox.spi.p2.publisher.PublisherHelper;
public class CompositeArtifactRepositoryTest extends AbstractProvisioningTest {
+ private static final String COMPARATOR_ID = ArtifactChecksumComparator.COMPARATOR_ID + ".md5";
private static final String TEST_KEY = "TestKey";
private static final String TEST_VALUE = "TestValue";
//artifact repository to remove on tear down
@@ -98,14 +98,13 @@ public class CompositeArtifactRepositoryTest extends AbstractProvisioningTest {
//create a compressed repo
createRepo(true);
- File files[] = repositoryFile.listFiles();
boolean jarFilePresent = false;
boolean artifactFilePresent = false;
- for (int i = 0; i < files.length; i++) {
- if ("compositeArtifacts.jar".equalsIgnoreCase(files[i].getName())) {
+ for (File file : repositoryFile.listFiles()) {
+ if ("compositeArtifacts.jar".equalsIgnoreCase(file.getName())) {
jarFilePresent = true;
}
- if ("compositeArtifacts.xml".equalsIgnoreCase(files[i].getName())) {
+ if ("compositeArtifacts.xml".equalsIgnoreCase(file.getName())) {
artifactFilePresent = false;
}
}
@@ -119,14 +118,13 @@ public class CompositeArtifactRepositoryTest extends AbstractProvisioningTest {
//Setup: create an uncompressed repository
createRepo(false);
- File files[] = repositoryFile.listFiles();
boolean jarFilePresent = false;
boolean artifactFilePresent = false;
- for (int i = 0; i < files.length; i++) {
- if ("compositeArtifacts.jar".equalsIgnoreCase(files[i].getName())) {
+ for (File file : repositoryFile.listFiles()) {
+ if ("compositeArtifacts.jar".equalsIgnoreCase(file.getName())) {
jarFilePresent = true;
}
- if ("compositeArtifacts.xml".equalsIgnoreCase(files[i].getName())) {
+ if ("compositeArtifacts.xml".equalsIgnoreCase(file.getName())) {
artifactFilePresent = true;
}
}
@@ -759,7 +757,8 @@ public class CompositeArtifactRepositoryTest extends AbstractProvisioningTest {
compRepo.addChild(repo2Location.toURI());
//validate using the MD5 Comparator
- ArtifactRepositoryValidator validator = new ArtifactRepositoryValidator(MD5ArtifactComparator.MD5_COMPARATOR_ID);
+ ArtifactRepositoryValidator validator = new ArtifactRepositoryValidator(
+ COMPARATOR_ID);
assertFalse("Running verify on invalid repository", validator.validateComposite(compRepo).isOK());
}
@@ -794,7 +793,8 @@ public class CompositeArtifactRepositoryTest extends AbstractProvisioningTest {
}
//Add conflicting repositories
- ArtifactRepositoryValidator validator = new ArtifactRepositoryValidator(MD5ArtifactComparator.MD5_COMPARATOR_ID);
+ ArtifactRepositoryValidator validator = new ArtifactRepositoryValidator(
+ COMPARATOR_ID);
assertTrue(validator.validateComposite(compRepo, repo1).isOK());
compRepo.addChild(repo1Location.toURI());
assertFalse(validator.validateComposite(compRepo, repo2).isOK());
@@ -1349,8 +1349,7 @@ public class CompositeArtifactRepositoryTest extends AbstractProvisioningTest {
good.setAccessible(true);
List<?> list = (List<?>) field.get(parent);
- for (Iterator<?> listIter = list.iterator(); listIter.hasNext();) {
- Object obj = listIter.next();
+ for (Object obj : list) {
if (child.equals(repo.get(obj))) {
good.set(obj, false);
return;
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/FoldersRepositoryTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/FoldersRepositoryTest.java
index 583bf1de6..7c2963f7f 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/FoldersRepositoryTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/FoldersRepositoryTest.java
@@ -14,11 +14,12 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.artifact.repository;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
import java.io.File;
import java.io.FileFilter;
import java.net.URL;
-import java.util.Iterator;
-import junit.framework.TestCase;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
@@ -34,33 +35,29 @@ import org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager;
import org.eclipse.equinox.p2.repository.artifact.spi.ArtifactDescriptor;
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
import org.eclipse.equinox.p2.tests.TestActivator;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
-public class FoldersRepositoryTest extends TestCase {
+public class FoldersRepositoryTest {
private IArtifactRepositoryManager manager;
private File testRepo;
- public FoldersRepositoryTest(String name) {
- super(name);
- }
-
- public FoldersRepositoryTest() {
- super("");
- }
-
- @Override
- protected void setUp() throws Exception {
+ @Before
+ public void setUp() throws Exception {
IProvisioningAgent agent = ServiceHelper.getService(TestActivator.getContext(), IProvisioningAgent.class);
manager = agent.getService(IArtifactRepositoryManager.class);
}
- @Override
- protected void tearDown() throws Exception {
+ @After
+ public void tearDown() throws Exception {
manager = null;
if (testRepo != null)
AbstractProvisioningTest.delete(testRepo);
}
+ @Test
public void testFolderRepository() throws Exception {
String tempDir = System.getProperty("java.io.tmpdir");
testRepo = new File(tempDir, "testRepo");
@@ -96,8 +93,7 @@ public class FoldersRepositoryTest extends TestCase {
}
IQueryResult<IArtifactKey> keys = repo.query(ArtifactKeyQuery.ALL_KEYS, null);
assertEquals(2, AbstractProvisioningTest.queryResultSize(keys));
- for (Iterator<IArtifactKey> iterator = keys.iterator(); iterator.hasNext();) {
- IArtifactKey key = iterator.next();
+ for (IArtifactKey key : keys) {
repo.removeDescriptor(key, monitor);
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/JarURLArtifactRepositoryTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/JarURLArtifactRepositoryTest.java
index 4c838d1db..35feafb63 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/JarURLArtifactRepositoryTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/JarURLArtifactRepositoryTest.java
@@ -15,11 +15,12 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.artifact.repository;
+import static org.junit.Assert.assertTrue;
+
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
-import junit.framework.TestCase;
import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
import org.eclipse.equinox.internal.p2.metadata.ArtifactKey;
@@ -29,40 +30,29 @@ import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
import org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager;
import org.eclipse.equinox.p2.tests.TestActivator;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
-public class JarURLArtifactRepositoryTest extends TestCase {
+public class JarURLArtifactRepositoryTest {
private IArtifactRepositoryManager manager;
- public JarURLArtifactRepositoryTest(String name) {
- super(name);
- }
-
- public JarURLArtifactRepositoryTest() {
- super("");
- }
-
- @Override
- protected void setUp() throws Exception {
+ @Before
+ public void setUp() throws Exception {
IProvisioningAgent agent = ServiceHelper.getService(TestActivator.getContext(), IProvisioningAgent.class);
manager = agent.getService(IArtifactRepositoryManager.class);
}
- @Override
- protected void tearDown() throws Exception {
+ @After
+ public void tearDown() throws Exception {
manager = null;
}
- public void testJarURLRepository() throws ProvisionException {
+ @Test
+ public void testJarURLRepository() throws ProvisionException, MalformedURLException, URISyntaxException {
URL engineJar = TestActivator.getContext().getBundle().getEntry("/testData/enginerepo.jar");
- URI jarRepoLocation = null;
- try {
- jarRepoLocation = URIUtil.toURI(new URL("jar:" + engineJar.toString() + "!/testData/enginerepo/"));
- } catch (URISyntaxException e) {
- fail(e.getMessage());
- } catch (MalformedURLException e) {
- fail(e.getMessage());
- }
+ URI jarRepoLocation = URIUtil.toURI(new URL("jar:" + engineJar.toString() + "!/testData/enginerepo/"));
IArtifactRepository repo = manager.loadRepository(jarRepoLocation, null);
assertTrue(repo.contains(new ArtifactKey("osgi.bundle", "testdata", Version.create("1.0.0.1"))));
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/MD5Tests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/MD5Tests.java
index 1e8808a8f..44d7a1e6a 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/MD5Tests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/MD5Tests.java
@@ -15,7 +15,6 @@ package org.eclipse.equinox.p2.tests.artifact.repository;
import java.io.ByteArrayOutputStream;
import java.io.File;
-import java.util.Iterator;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.equinox.internal.p2.metadata.ArtifactKey;
@@ -40,8 +39,7 @@ public class MD5Tests extends AbstractProvisioningTest {
public void DISABLE_testCheckMD5() {
IQueryResult<IArtifactDescriptor> descriptors = repo.descriptorQueryable().query(ArtifactDescriptorQuery.ALL_DESCRIPTORS, null);
- for (Iterator<IArtifactDescriptor> iterator = descriptors.iterator(); iterator.hasNext();) {
- IArtifactDescriptor desc = iterator.next();
+ for (IArtifactDescriptor desc : descriptors) {
IStatus status = repo.getArtifact(desc, new ByteArrayOutputStream(500), new NullProgressMonitor());
//All artifacts that are expected to fail MD5 check are those whose id starts with bogus
if (desc.getArtifactKey().getId().startsWith("bogus")) {
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/MirrorRequestTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/MirrorRequestTest.java
index aafa526ce..57d86ffc0 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/MirrorRequestTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/MirrorRequestTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2017 IBM Corporation and others.
+ * Copyright (c) 2005, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -60,6 +60,7 @@ public class MirrorRequestTest extends AbstractProvisioningTest {
File targetLocation;
IArtifactRepository targetRepository, sourceRepository;
URI destination, failedOptimized, pakedRepositoryLocation;
+ boolean isJava14;
@Override
public void setUp() throws Exception {
@@ -74,6 +75,7 @@ public class MirrorRequestTest extends AbstractProvisioningTest {
failedOptimized = URIUtil.toJarURI(getTestData("Error loading test data", "testData/mirror/invalidPackedMissingCanonical.zip").toURI(), null);
pakedRepositoryLocation = getTestData("Error loading packed repository", "testData/mirror/mirrorPackedRepo").toURI();
destination = getTempFolder().toURI();
+ isJava14 = System.getProperty("java.specification.version").compareTo("14") >= 0 ? true : false; //$NON-NLS-1$ //$NON-NLS-2$
}
@Override
@@ -118,7 +120,12 @@ public class MirrorRequestTest extends AbstractProvisioningTest {
assertTrue(request.getResult().toString(), request.getResult().isOK());
assertTrue(String.format("Target does not contain artifact %s", key), targetRepository.contains(key));
- assertEquals("Exact number of downloads", 2, src.downloadCount);
+ if (isJava14) {
+ // Pack200 tools are gone in Java14+ thus pack.gz file is not downloaded
+ assertEquals("Exact number of downloads", 1, src.downloadCount);
+ } else {
+ assertEquals("Exact number of downloads", 2, src.downloadCount);
+ }
}
/**
@@ -192,7 +199,12 @@ public class MirrorRequestTest extends AbstractProvisioningTest {
seq.add(new Status(IStatus.WARNING, "Activator", "Message"));
req.perform(source, new NullProgressMonitor());
- assertEquals("Expected WARNING status", IStatus.WARNING, req.getResult().getSeverity());
+ if (isJava14) {
+ // packed artifact is ignored as Java 14 removed pack200
+ assertEquals("Expected ERROR status", IStatus.ERROR, req.getResult().getSeverity());
+ } else {
+ assertEquals("Expected WARNING status", IStatus.WARNING, req.getResult().getSeverity());
+ }
// Remove key from repo so the same one can be used
targetRepository.removeDescriptor(key, new NullProgressMonitor());
@@ -203,7 +215,12 @@ public class MirrorRequestTest extends AbstractProvisioningTest {
seq.add(new Status(IStatus.INFO, "Activator", "Message"));
req.perform(source, new NullProgressMonitor());
- assertEquals("Expected INFO status", IStatus.INFO, req.getResult().getSeverity());
+ if (isJava14) {
+ // packed artifact is ignored as Java 14 removed pack200
+ assertEquals("Expected WARNING status", IStatus.WARNING, req.getResult().getSeverity());
+ } else {
+ assertEquals("Expected INFO status", IStatus.INFO, req.getResult().getSeverity());
+ }
// Remove key from repo so the same one can be used
targetRepository.removeDescriptor(key, new NullProgressMonitor());
@@ -212,14 +229,22 @@ public class MirrorRequestTest extends AbstractProvisioningTest {
seq.add(new Status(IStatus.INFO, "Activator", "Message"));
req.perform(source, new NullProgressMonitor());
-
- assertEquals("Expected OK status", IStatus.OK, req.getResult().getSeverity());
+ if (isJava14) {
+ // packed artifact is ignored as Java 14 removed pack200
+ assertEquals("Expected WARNING status", IStatus.WARNING, req.getResult().getSeverity());
+ } else {
+ assertEquals("Expected OK status", IStatus.OK, req.getResult().getSeverity());
+ }
}
/*
*
*/
public void testFailedOptimizedMissingCanonical() {
+ if (isJava14) {
+ // Java 14 doesn't have pack/unpack tools
+ return;
+ }
try {
IArtifactRepository source = new AbstractWrappedArtifactRepository(getArtifactRepositoryManager().loadRepository(failedOptimized, new NullProgressMonitor())) {
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/MirrorSelectorTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/MirrorSelectorTest.java
index 6fb560601..154400956 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/MirrorSelectorTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/MirrorSelectorTest.java
@@ -14,19 +14,23 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.artifact.repository;
-import java.util.*;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
import org.eclipse.equinox.internal.p2.artifact.repository.MirrorSelector;
import org.eclipse.equinox.internal.p2.artifact.repository.MirrorSelector.MirrorInfo;
+import org.junit.Before;
+import org.junit.Test;
-public class MirrorSelectorTest extends TestCase {
+public class MirrorSelectorTest {
private List<MirrorInfo> originals;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
-
+ @Before
+ public void setUp() throws Exception {
// examples taken from real live.
// This is the expected order of mirrors,
// doesn't matter how often you're resorting ;-)
@@ -34,229 +38,230 @@ public class MirrorSelectorTest extends TestCase {
originals = new ArrayList<>();
MirrorInfo mi = null;
- mi = new MirrorInfo("http://ftp.wh2.tu-dresden.de/pub/mirrors/eclipse/", 3);
+ mi = new MirrorInfo("https://ftp.wh2.tu-dresden.de/pub/mirrors/eclipse/", 3);
mi.setBytesPerSecond(224906);
mi.incrementFailureCount();
//mi.totalFailureCount = 1;
originals.add(mi);
- mi = new MirrorInfo("http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/", 1);
+ mi = new MirrorInfo("https://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/", 1);
mi.setBytesPerSecond(125868);
mi.incrementFailureCount();
//mi.totalFailureCount = 1;
originals.add(mi);
- mi = new MirrorInfo("http://mirror.netcologne.de/eclipse//", 0);
+ mi = new MirrorInfo("https://mirror.netcologne.de/eclipse//", 0);
mi.setBytesPerSecond(199719);
mi.incrementFailureCount();
mi.incrementFailureCount();
//mi.totalFailureCount = 2;
originals.add(mi);
- mi = new MirrorInfo("http://mirror.selfnet.de/eclipse/", 5);
+ mi = new MirrorInfo("https://mirror.selfnet.de/eclipse/", 5);
mi.setBytesPerSecond(132379);
mi.incrementFailureCount();
//mi.totalFailureCount = 1;
originals.add(mi);
- mi = new MirrorInfo("http://mirror.switch.ch/eclipse/", 7);
+ mi = new MirrorInfo("https://mirror.switch.ch/eclipse/", 7);
mi.setBytesPerSecond(137107);
mi.incrementFailureCount();
//mi.totalFailureCount = 1;
originals.add(mi);
- mi = new MirrorInfo("http://www.rcp-vision.com/eclipse/eclipseMirror/", 8);
+ mi = new MirrorInfo("https://www.rcp-vision.com/eclipse/eclipseMirror/", 8);
mi.setBytesPerSecond(128472);
mi.incrementFailureCount();
//mi.totalFailureCount = 1;
originals.add(mi);
- mi = new MirrorInfo("http://eclipse.mirror.garr.it/mirrors/eclipse//", 10);
+ mi = new MirrorInfo("https://eclipse.mirror.garr.it/mirrors/eclipse//", 10);
mi.setBytesPerSecond(129359);
mi.incrementFailureCount();
mi.incrementFailureCount();
//mi.totalFailureCount = 2;
originals.add(mi);
- mi = new MirrorInfo("http://ftp.roedu.net/pub/mirrors/eclipse.org/", 6);
+ mi = new MirrorInfo("https://ftp.roedu.net/pub/mirrors/eclipse.org/", 6);
mi.setBytesPerSecond(59587);
mi.incrementFailureCount();
//mi.totalFailureCount = 1;
originals.add(mi);
- mi = new MirrorInfo("http://giano.com.dist.unige.it/eclipse/", 9);
+ mi = new MirrorInfo("https://giano.com.dist.unige.it/eclipse/", 9);
mi.setBytesPerSecond(85624);
mi.incrementFailureCount();
//mi.totalFailureCount = 1;
originals.add(mi);
- mi = new MirrorInfo("http://ftp.roedu.net/mirrors/eclipse.org//", 19);
+ mi = new MirrorInfo("https://ftp.roedu.net/mirrors/eclipse.org//", 19);
mi.setBytesPerSecond(149572);
mi.incrementFailureCount();
mi.incrementFailureCount();
//mi.totalFailureCount = 2;
originals.add(mi);
- mi = new MirrorInfo("http://ftp.ing.umu.se/mirror/eclipse/", 18);
+ mi = new MirrorInfo("https://ftp.ing.umu.se/mirror/eclipse/", 18);
mi.setBytesPerSecond(105858);
mi.incrementFailureCount();
//mi.totalFailureCount = 1;
originals.add(mi);
- mi = new MirrorInfo("http://mirrors.fe.up.pt/pub/eclipse//", 15);
+ mi = new MirrorInfo("https://mirrors.fe.up.pt/pub/eclipse//", 15);
mi.setBytesPerSecond(67202);
mi.incrementFailureCount();
//mi.totalFailureCount = 1;
originals.add(mi);
- mi = new MirrorInfo("http://ftp.heanet.ie/pub/eclipse//", 17);
+ mi = new MirrorInfo("https://ftp.heanet.ie/pub/eclipse//", 17);
mi.setBytesPerSecond(68067);
mi.incrementFailureCount();
//mi.totalFailureCount = 1;
originals.add(mi);
- mi = new MirrorInfo("http://ftp.sh.cvut.cz/MIRRORS/eclipse/", 21);
+ mi = new MirrorInfo("https://ftp.sh.cvut.cz/MIRRORS/eclipse/", 21);
mi.setBytesPerSecond(73659);
mi.incrementFailureCount();
//mi.totalFailureCount = 1;
originals.add(mi);
- mi = new MirrorInfo("http://ftp.man.poznan.pl/eclipse/", 22);
+ mi = new MirrorInfo("https://ftp.man.poznan.pl/eclipse/", 22);
mi.setBytesPerSecond(73446);
mi.incrementFailureCount();
//mi.totalFailureCount = 1;
originals.add(mi);
- mi = new MirrorInfo("http://eclipse.dcc.fc.up.pt/", 16);
+ mi = new MirrorInfo("https://eclipse.dcc.fc.up.pt/", 16);
mi.setBytesPerSecond(45175);
mi.incrementFailureCount();
//mi.totalFailureCount = 1;
originals.add(mi);
- mi = new MirrorInfo("http://eclipse.nordnet.fi/eclipse/", 23);
+ mi = new MirrorInfo("https://eclipse.nordnet.fi/eclipse/", 23);
mi.setBytesPerSecond(61443);
mi.incrementFailureCount();
//mi.totalFailureCount = 1;
originals.add(mi);
- mi = new MirrorInfo("http://www.gtlib.gatech.edu/pub/eclipse/", 26);
+ mi = new MirrorInfo("https://www.gtlib.gatech.edu/pub/eclipse/", 26);
mi.setBytesPerSecond(57637);
mi.incrementFailureCount();
//mi.totalFailureCount = 1;
originals.add(mi);
- mi = new MirrorInfo("http://ftp.osuosl.org/pub/eclipse//", 28);
+ mi = new MirrorInfo("https://ftp.osuosl.org/pub/eclipse//", 28);
mi.setBytesPerSecond(35928);
mi.incrementFailureCount();
//mi.totalFailureCount = 1;
originals.add(mi);
- mi = new MirrorInfo("http://mirrors.med.harvard.edu/eclipse//", 32);
+ mi = new MirrorInfo("https://mirrors.med.harvard.edu/eclipse//", 32);
mi.setBytesPerSecond(40683);
//mi.totalFailureCount = 0;
originals.add(mi);
- mi = new MirrorInfo("http://mirrors.ibiblio.org/pub/mirrors/eclipse/", 31);
+ mi = new MirrorInfo("https://mirrors.ibiblio.org/pub/mirrors/eclipse/", 31);
mi.setBytesPerSecond(34207);
mi.incrementFailureCount();
mi.incrementFailureCount();
//mi.totalFailureCount = 2;
originals.add(mi);
- mi = new MirrorInfo("http://ftp.ussg.iu.edu/eclipse/", 33);
+ mi = new MirrorInfo("https://ftp.ussg.iu.edu/eclipse/", 33);
mi.setBytesPerSecond(31402);
mi.incrementFailureCount();
//mi.totalFailureCount = 1;
originals.add(mi);
- mi = new MirrorInfo("http://mirrors.xmission.com/eclipse/", 29);
+ mi = new MirrorInfo("https://mirrors.xmission.com/eclipse/", 29);
mi.setBytesPerSecond(24147);
mi.incrementFailureCount();
//mi.totalFailureCount = 1;
originals.add(mi);
- mi = new MirrorInfo("http://ftp.osuosl.org/pub/eclipse/", 34);
+ mi = new MirrorInfo("https://ftp.osuosl.org/pub/eclipse/", 34);
mi.setBytesPerSecond(-1);
//mi.totalFailureCount = 0;
originals.add(mi);
- mi = new MirrorInfo("http://www.ftp.saix.net/Eclipse//", 40);
+ mi = new MirrorInfo("https://www.ftp.saix.net/Eclipse//", 40);
mi.setBytesPerSecond(-1);
//mi.totalFailureCount = 0;
originals.add(mi);
- mi = new MirrorInfo("http://ftp.daum.net/eclipse/", 41);
+ mi = new MirrorInfo("https://ftp.daum.net/eclipse/", 41);
mi.setBytesPerSecond(-1);
//mi.totalFailureCount = 0;
originals.add(mi);
- mi = new MirrorInfo("http://eclipse.stu.edu.tw/", 43);
+ mi = new MirrorInfo("https://eclipse.stu.edu.tw/", 43);
mi.setBytesPerSecond(-1);
//mi.totalFailureCount = 0;
originals.add(mi);
- mi = new MirrorInfo("http://eclipse.stu.edu.tw/", 44);
+ mi = new MirrorInfo("https://eclipse.stu.edu.tw/", 44);
mi.setBytesPerSecond(-1);
//mi.totalFailureCount = 0;
originals.add(mi);
- mi = new MirrorInfo("http://ftp.kaist.ac.kr/eclipse/", 45);
+ mi = new MirrorInfo("https://ftp.kaist.ac.kr/eclipse/", 45);
mi.setBytesPerSecond(-1);
//mi.totalFailureCount = 0;
originals.add(mi);
- mi = new MirrorInfo("http://eclipse.stu.edu.tw//", 46);
+ mi = new MirrorInfo("https://eclipse.stu.edu.tw//", 46);
mi.setBytesPerSecond(-1);
//mi.totalFailureCount = 0;
originals.add(mi);
- mi = new MirrorInfo("http://ftp.tsukuba.wide.ad.jp/software/eclipse//", 47);
+ mi = new MirrorInfo("https://ftp.tsukuba.wide.ad.jp/software/eclipse//", 47);
mi.setBytesPerSecond(-1);
//mi.totalFailureCount = 0;
originals.add(mi);
- mi = new MirrorInfo("http://mirror.neu.edu.cn/eclipse/", 50);
+ mi = new MirrorInfo("https://mirror.neu.edu.cn/eclipse/", 50);
mi.setBytesPerSecond(-1);
//mi.totalFailureCount = 0;
originals.add(mi);
- mi = new MirrorInfo("http://mirror.bit.edu.cn/eclipse/", 51);
+ mi = new MirrorInfo("https://mirror.bit.edu.cn/eclipse/", 51);
mi.setBytesPerSecond(-1);
//mi.totalFailureCount = 0;
originals.add(mi);
- mi = new MirrorInfo("http://ftp.cs.pu.edu.tw/pub/eclipse/", 52);
+ mi = new MirrorInfo("https://ftp.cs.pu.edu.tw/pub/eclipse/", 52);
mi.setBytesPerSecond(-1);
//mi.totalFailureCount = 0;
originals.add(mi);
- mi = new MirrorInfo("http://ftp.neu.edu.cn/mirrors/eclipse/", 53);
+ mi = new MirrorInfo("https://ftp.neu.edu.cn/mirrors/eclipse/", 53);
mi.setBytesPerSecond(-1);
//mi.totalFailureCount = 0;
originals.add(mi);
- mi = new MirrorInfo("http://download.actuatechina.com/eclipse/", 54);
+ mi = new MirrorInfo("https://download.actuatechina.com/eclipse/", 54);
mi.setBytesPerSecond(-1);
//mi.totalFailureCount = 0;
originals.add(mi);
- mi = new MirrorInfo("http://linorg.usp.br/eclipse/", 57);
+ mi = new MirrorInfo("https://linorg.usp.br/eclipse/", 57);
mi.setBytesPerSecond(-1);
//mi.totalFailureCount = 0;
originals.add(mi);
- mi = new MirrorInfo("http://eclipse.c3sl.ufpr.br/", 59);
+ mi = new MirrorInfo("https://eclipse.c3sl.ufpr.br/", 59);
mi.setBytesPerSecond(-1);
//mi.totalFailureCount = 0;
originals.add(mi);
- mi = new MirrorInfo("http://download.eclipse.org/", 61);
+ mi = new MirrorInfo("https://download.eclipse.org/", 61);
mi.setBytesPerSecond(-1);
//mi.totalFailureCount = 0;
originals.add(mi);
}
+ @Test
public void testSorting() {
long maxBytesPerSecond = 0;
@@ -295,6 +300,7 @@ public class MirrorSelectorTest extends TestCase {
}
+ @Test
public void testComparatorZeros() {
MirrorSelector.MirrorInfoComparator comparator = new MirrorSelector.MirrorInfoComparator(0, 0, 0);
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/PGPVerifierTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/PGPVerifierTest.java
new file mode 100644
index 000000000..0d4525b23
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/PGPVerifierTest.java
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.equinox.p2.tests.artifact.repository;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Comparator;
+import java.util.Set;
+import java.util.stream.Stream;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.equinox.internal.p2.artifact.processors.pgp.PGPSignatureVerifier;
+import org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest;
+import org.eclipse.equinox.internal.p2.metadata.ArtifactKey;
+import org.eclipse.equinox.internal.provisional.p2.repository.DefaultPGPPublicKeyService;
+import org.eclipse.equinox.p2.core.IAgentLocation;
+import org.eclipse.equinox.p2.metadata.Version;
+import org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor;
+import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
+import org.eclipse.equinox.p2.repository.spi.PGPPublicKeyService;
+import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class PGPVerifierTest extends AbstractProvisioningTest {
+ IArtifactRepository targetRepo = null;
+ IArtifactRepository sourceRepo = null;
+
+ @Override
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ }
+
+ private void loadPGPTestRepo(String repoName) throws Exception {
+ sourceRepo = getArtifactRepositoryManager().loadRepository(
+ getTestData("Test repository for PGP", "testData/pgp/" + repoName).toURI(), new NullProgressMonitor());
+ targetRepo = createArtifactRepository(Files.createTempDirectory(PGPVerifierTest.class.getSimpleName()).toUri(),
+ NO_PROPERTIES);
+ }
+
+ @Test
+ public void testAllGood() throws Exception {
+ MirrorRequest mirrorRequest = performMirrorFrom("repoPGPOK");
+ IStatus mirrorStatus = mirrorRequest.getResult();
+ assertOK(mirrorStatus);
+
+ IArtifactDescriptor[] artifactDescriptors = targetRepo.getArtifactDescriptors(mirrorRequest.getArtifactKey());
+ Assert.assertEquals(1, artifactDescriptors.length);
+ IArtifactDescriptor descriptor = artifactDescriptors[0];
+ Assert.assertNotNull("Signatures should be present",
+ descriptor.getProperty(PGPSignatureVerifier.PGP_SIGNATURES_PROPERTY_NAME));
+ Assert.assertNotNull("Keys should be present",
+ descriptor.getProperty(PGPSignatureVerifier.PGP_SIGNER_KEYS_PROPERTY_NAME));
+ }
+
+ @Test
+ public void testAllGoodWithEncodedProperties() throws Exception {
+ MirrorRequest mirrorRequest = performMirrorFrom("repoPGPOK_encoded");
+ IStatus mirrorStatus = mirrorRequest.getResult();
+ assertOK(mirrorStatus);
+
+ IArtifactDescriptor[] artifactDescriptors = targetRepo.getArtifactDescriptors(mirrorRequest.getArtifactKey());
+ Assert.assertEquals(1, artifactDescriptors.length);
+ IArtifactDescriptor descriptor = artifactDescriptors[0];
+ Assert.assertNotNull("Signatures should be present",
+ descriptor.getProperty(PGPSignatureVerifier.PGP_SIGNATURES_PROPERTY_NAME));
+ Assert.assertNotNull("Keys should be present",
+ descriptor.getProperty(PGPSignatureVerifier.PGP_SIGNER_KEYS_PROPERTY_NAME));
+ }
+
+ private MirrorRequest performMirrorFrom(String repoName) throws Exception {
+ // Clear the remembered keys/cache of the agent.
+ IAgentLocation agentLocation = getAgent().getService(IAgentLocation.class);
+ Path repositoryCache = Paths
+ .get(agentLocation.getDataArea(org.eclipse.equinox.internal.p2.repository.Activator.ID));
+ if (Files.isDirectory(repositoryCache)) {
+ try (Stream<Path> walk = Files.walk(repositoryCache)) {
+ walk.sorted(Comparator.reverseOrder()).forEach(path -> {
+ try {
+ Files.delete(path);
+ } catch (IOException e) {
+ // Ignore
+ }
+ });
+ }
+ }
+ DefaultPGPPublicKeyService keyService = new DefaultPGPPublicKeyService(getAgent());
+ keyService.setGPG(false);
+ keyService.setKeyServers(Set.of());
+
+ getAgent().registerService(PGPPublicKeyService.SERVICE_NAME, keyService);
+ loadPGPTestRepo(repoName);
+ ArtifactKey key = new ArtifactKey("osgi.bundle", "blah", Version.create("1.0.0.123456"));
+ MirrorRequest mirrorRequest = new MirrorRequest(key, targetRepo, NO_PROPERTIES, NO_PROPERTIES, getTransport());
+ mirrorRequest.perform(sourceRepo, getMonitor());
+ return mirrorRequest;
+ }
+
+ @Test
+ public void testMissingPublicKey() throws Exception {
+ MirrorRequest mirrorRequest = performMirrorFrom("repoMissingPublicKey");
+ IStatus mirrorStatus = mirrorRequest.getResult();
+ assertOK(mirrorStatus);
+
+ IArtifactDescriptor[] artifactDescriptors = targetRepo.getArtifactDescriptors(mirrorRequest.getArtifactKey());
+ Assert.assertEquals(1, artifactDescriptors.length);
+ IArtifactDescriptor descriptor = artifactDescriptors[0];
+ Assert.assertNull("Signatures should not be present",
+ descriptor.getProperty(PGPSignatureVerifier.PGP_SIGNATURES_PROPERTY_NAME));
+ Assert.assertNull("Keys should not be present",
+ descriptor.getProperty(PGPSignatureVerifier.PGP_SIGNER_KEYS_PROPERTY_NAME));
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ getArtifactRepositoryManager().removeRepository(sourceRepo.getLocation());
+ getArtifactRepositoryManager().removeRepository(targetRepo.getLocation());
+ super.tearDown();
+ }
+}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/SimpleArtifactRepositoryTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/SimpleArtifactRepositoryTest.java
index 6c1d4f87a..c398b0025 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/SimpleArtifactRepositoryTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/SimpleArtifactRepositoryTest.java
@@ -256,6 +256,7 @@ public class SimpleArtifactRepositoryTest extends AbstractProvisioningTest {
/*
* Test that the appropriate location for a packed feature is returned.
*/
+ @Deprecated(forRemoval = true)
public void testProperPackedFeatureLocation() {
try {
repositoryFile = getTempFolder();
@@ -423,6 +424,7 @@ public class SimpleArtifactRepositoryTest extends AbstractProvisioningTest {
System.out.println("Total time: " + (end - start));
}
+ @SuppressWarnings("removal")
public void testQuery() throws Exception {
File folder = getTestFolder("ArtifactRepository_testQuery");
repositoryURI = folder.toURI();
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/TransferTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/TransferTest.java
index 6af6b822c..dd7b38315 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/TransferTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/TransferTest.java
@@ -41,7 +41,8 @@ public class TransferTest extends AbstractProvisioningTest {
} catch (BundleException e) {
fail("1.5", e);
}
- final URI toDownload = new URI("http://download.eclipse.org/eclipse/updates/4.11/R-4.11-201903070500/plugins/javax.servlet.jsp_2.2.0.v201112011158.jar.pack.gz");
+ final URI toDownload = new URI(
+ "https://download.eclipse.org/eclipse/updates/4.11/R-4.11-201903070500/plugins/javax.servlet.jsp_2.2.0.v201112011158.jar.pack.gz");
IStatus s = getTransport().download(toDownload, fos, new NullProgressMonitor());
assertOK("2.0", s);
int httpSize = -1;
@@ -56,7 +57,9 @@ public class TransferTest extends AbstractProvisioningTest {
try {
fos.close();
if (f != null) {
- String[] ecfPlugins = new String[] {"org.eclipse.ecf", "org.eclipse.ecf.identity", "org.eclipse.ecf.filetransfer", "org.eclipse.ecf.provider.filetransfer", "org.eclipse.ecf.provider.filetransfer.httpclient45"};
+ String[] ecfPlugins = new String[] { "org.eclipse.ecf", "org.eclipse.ecf.identity",
+ "org.eclipse.ecf.filetransfer", "org.eclipse.ecf.provider.filetransfer",
+ "org.eclipse.ecf.provider.filetransfer.httpclient5" };
StringBuilder buffer = new StringBuilder();
for (String ecfPlugin : ecfPlugins) {
Bundle bundle = Platform.getBundle(ecfPlugin);
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/processing/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/processing/AllTests.java
index d624d6d04..d21e7a1eb 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/processing/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/processing/AllTests.java
@@ -7,24 +7,20 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.artifact.repository.processing;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all automated director tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(ProcessingStepHandlerTest.class);
- suite.addTestSuite(ProcessingStepTest.class);
- return suite;
- }
-
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ ProcessingStepHandlerTest.class, ProcessingStepTest.class })
+public class AllTests {
+// test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/processing/ProcessingStepHandlerTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/processing/ProcessingStepHandlerTest.java
index c8102ffbd..c5706241b 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/processing/ProcessingStepHandlerTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/processing/ProcessingStepHandlerTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
-* Copyright (c) 2007, 2018 compeople AG and others.
+* Copyright (c) 2007, 2021 compeople AG and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -15,13 +15,18 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.artifact.repository.processing;
+import static org.eclipse.equinox.p2.tests.AbstractProvisioningTest.getAgent;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.util.Arrays;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
@@ -36,23 +41,27 @@ import org.eclipse.equinox.internal.provisional.p2.artifact.repository.processin
import org.eclipse.equinox.p2.repository.artifact.IProcessingStepDescriptor;
import org.eclipse.equinox.p2.repository.artifact.spi.ArtifactDescriptor;
import org.eclipse.equinox.p2.repository.artifact.spi.ProcessingStepDescriptor;
-import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
import org.eclipse.equinox.p2.tests.TestActivator;
+import org.junit.Test;
-public class ProcessingStepHandlerTest extends AbstractProvisioningTest {
+@SuppressWarnings("removal")
+public class ProcessingStepHandlerTest {
// private static final int BUFFER_SIZE = 8 * 1024;
ProcessingStepHandler handler = new ProcessingStepHandler();
IProgressMonitor monitor = new NullProgressMonitor();
+ @Test
public void testCanProcess_Ok() {
ArtifactDescriptor descriptor = new ArtifactDescriptor(ArtifactKey.parse("classifier,id,1.0.0"));
- descriptor.setProcessingSteps(new ProcessingStepDescriptor[] {new ProcessingStepDescriptor("org.eclipse.equinox.p2.processing.Pack200Unpacker", null, true)});
+ descriptor.setProcessingSteps(new ProcessingStepDescriptor[] {
+ new ProcessingStepDescriptor("org.eclipse.equinox.p2.processing.ByteShifter", null, true) });
assertTrue(ProcessingStepHandler.canProcess(descriptor));
}
+ @Test
public void testCanProcess_FailNoSuchStep() {
String noSuchStepId = "org.eclipse.equinox.p2.processing.test.Dummy";
ArtifactDescriptor descriptor = new ArtifactDescriptor(ArtifactKey.parse("classifier,id,1.0.0"));
@@ -61,6 +70,7 @@ public class ProcessingStepHandlerTest extends AbstractProvisioningTest {
assertFalse(ProcessingStepHandler.canProcess(descriptor));
}
+ @Test
public void testCanProcess_FailAlwaysDisabled() {
ArtifactDescriptor descriptor = new ArtifactDescriptor(ArtifactKey.parse("classifier,id,1.0.0"));
String processorId = "org.eclipse.equinox.p2.processing.AlwaysDisabled";
@@ -69,6 +79,7 @@ public class ProcessingStepHandlerTest extends AbstractProvisioningTest {
assertFalse(ProcessingStepHandler.canProcess(descriptor));
}
+ @Test
public void testCanProcess_OkOptionalAlwaysDisabled() {
ArtifactDescriptor descriptor = new ArtifactDescriptor(ArtifactKey.parse("classifier,id,1.0.0"));
String processorId = "org.eclipse.equinox.p2.processing.AlwaysDisabled";
@@ -77,6 +88,7 @@ public class ProcessingStepHandlerTest extends AbstractProvisioningTest {
assertTrue("Not enabled optional step should not block processing", ProcessingStepHandler.canProcess(descriptor));
}
+ @Test
public void testCanProcess_FailMultipleSteps() {
ArtifactDescriptor descriptor = new ArtifactDescriptor(ArtifactKey.parse("classifier,id,1.0.0"));
String processorId = "org.eclipse.equinox.p2.processing.MultipleSteps";
@@ -85,33 +97,38 @@ public class ProcessingStepHandlerTest extends AbstractProvisioningTest {
assertFalse(String.format("Multiple step attributes in %s are not supported", processorId), ProcessingStepHandler.canProcess(descriptor));
}
+ @Test
public void testExecuteNoPSs() throws IOException {
IProcessingStepDescriptor[] descriptors = new IProcessingStepDescriptor[0];
OutputStream result = new ByteArrayOutputStream(10);
- try (OutputStream testStream = handler.createAndLink(getAgent(), descriptors, null, result, monitor)) {
+ try (OutputStream testStream = handler.createAndLink(getAgent(), descriptors, null,
+ result, monitor)) {
testStream.write("Test".getBytes());
}
assertEquals("Test", result.toString());
}
+ @Test
public void testExecuteOneByteShifterPS() throws IOException {
ProcessingStep[] steps = new ProcessingStep[] {new ByteShifter(1)};
ByteArrayOutputStream result = new ByteArrayOutputStream(10);
try (OutputStream testStream = handler.link(steps, result, monitor)) {
testStream.write(new byte[] {1});
}
- assertTrue(Arrays.equals(new byte[] {2}, result.toByteArray()));
+ assertArrayEquals(new byte[] { 2 }, result.toByteArray());
}
+ @Test
public void testExecuteTwoByteShifterPSs() throws IOException {
ProcessingStep[] steps = new ProcessingStep[] {new ByteShifter(1), new ByteShifter(2)};
ByteArrayOutputStream result = new ByteArrayOutputStream(10);
try (OutputStream testStream = handler.link(steps, result, monitor)) {
testStream.write(new byte[] {1});
}
- assertTrue(Arrays.equals(new byte[] {8}, result.toByteArray()));
+ assertArrayEquals(new byte[] { 8 }, result.toByteArray());
}
+ @Test
public void testExecuteOneMD5VerifierPSOk() throws IOException {
ProcessingStep[] steps = new ProcessingStep[] {new MD5Verifier("0cbc6611f5540bd0809a388dc95a615b")};
ByteArrayOutputStream result = new ByteArrayOutputStream(10);
@@ -121,20 +138,19 @@ public class ProcessingStepHandlerTest extends AbstractProvisioningTest {
assertEquals("Test", result.toString());
}
+ @Test
public void testExecuteOneMD5VerifierPSFails() throws IOException {
- ProcessingStep[] steps = new ProcessingStep[] {new MD5Verifier("9cbc6611f5540bd0809a388dc95a615b")};
+ ProcessingStep[] steps = new ProcessingStep[] { new MD5Verifier("9cbc6611f5540bd0809a388dc95a615b") };
ByteArrayOutputStream result = new ByteArrayOutputStream(10);
- OutputStream testStream = handler.link(steps, result, monitor);
+ OutputStream testStream=handler.link(steps, result, monitor);
+ try (testStream) {
testStream.write("Test".getBytes());
- try {
- testStream.close();
- assertEquals("Test", result.toString());
- assertTrue((ProcessingStepHandler.checkStatus(testStream).getSeverity() == IStatus.ERROR));
- } catch (IOException e) {
- assertTrue(true);
}
+ assertEquals("Test", result.toString());
+ assertEquals(IStatus.ERROR, ProcessingStepHandler.checkStatus(testStream).getSeverity());
}
+ @Test
public void testExecuteOneByteShifterAndOneMD5VerifierPSOk() throws IOException {
// Order of PSs is important!!
ProcessingStep[] steps = new ProcessingStep[] {new ByteShifter(1), new MD5Verifier("ceeee507e8db83294600218b4e198897")};
@@ -142,33 +158,33 @@ public class ProcessingStepHandlerTest extends AbstractProvisioningTest {
try (OutputStream testStream = handler.link(steps, result, monitor)) {
testStream.write(new byte[] {1, 2, 3, 4, 5});
}
- assertTrue(Arrays.equals(new byte[] {2, 4, 6, 8, 10}, result.toByteArray()));
+ assertArrayEquals(new byte[] { 2, 4, 6, 8, 10 }, result.toByteArray());
}
+ @Test
public void testExecuteOneByteShifterAndOneMD5VerifierPSFailWrongOrder() throws IOException {
// Order of PSs is important - here it wrong!!
ProcessingStep[] steps = new ProcessingStep[] {new MD5Verifier("af476bbaf152a4c39ca4e5c498a88aa0"), new ByteShifter(1)};
ByteArrayOutputStream result = new ByteArrayOutputStream(10);
OutputStream testStream = handler.link(steps, result, monitor);
- testStream.write(new byte[] {1, 2, 3, 4, 5});
- try {
- testStream.close();
- assertTrue(Arrays.equals(new byte[] {2, 4, 6, 8, 10}, result.toByteArray()));
- assertTrue((ProcessingStepHandler.checkStatus(testStream).getSeverity() == IStatus.ERROR));
- } catch (IOException e) {
- assertTrue(true);
+ try (testStream) {
+ testStream.write(new byte[] { 1, 2, 3, 4, 5 });
}
+ assertArrayEquals(new byte[] { 2, 4, 6, 8, 10 }, result.toByteArray());
+ assertEquals(IStatus.ERROR, ProcessingStepHandler.checkStatus(testStream).getSeverity());
}
+ @Test
public void testAssureOrderingOfPSs1() throws IOException {
ProcessingStep[] steps = new ProcessingStep[] {new Adder(1), new Multiplier(2)};
ByteArrayOutputStream result = new ByteArrayOutputStream(10);
try (OutputStream testStream = handler.link(steps, result, monitor)) {
testStream.write(new byte[] {1, 2, 3, 4, 5});
}
- assertTrue(Arrays.equals(new byte[] {4, 6, 8, 10, 12}, result.toByteArray()));
+ assertArrayEquals(new byte[] { 4, 6, 8, 10, 12 }, result.toByteArray());
}
+ @Test
public void testAssureOrderingOfPSs2() throws IOException {
ProcessingStep[] steps = new ProcessingStep[] {new Multiplier(2), new Adder(1)};
ByteArrayOutputStream result = new ByteArrayOutputStream(10);
@@ -176,10 +192,10 @@ public class ProcessingStepHandlerTest extends AbstractProvisioningTest {
testStream.write(new byte[] {1, 2, 3, 4, 5});
}
- assertTrue(Arrays.equals(new byte[] {3, 5, 7, 9, 11}, result.toByteArray()));
-
+ assertArrayEquals(new byte[] { 3, 5, 7, 9, 11 }, result.toByteArray());
}
+ @Test
public void testExecuteOnePack200UnpackerPS() throws IOException {
//this test is only applicable if pack200 is available
if (!PackStep.canPack())
@@ -196,6 +212,7 @@ public class ProcessingStepHandlerTest extends AbstractProvisioningTest {
assertEquals(35062, result.size());
}
+ @Test
public void testCreateByteShifterPS() {
IProcessingStepDescriptor[] descriptors = new IProcessingStepDescriptor[] {new ProcessingStepDescriptor("org.eclipse.equinox.p2.processing.ByteShifter", "1", true)};
ProcessingStep[] steps = handler.create(getAgent(), descriptors, null);
@@ -205,6 +222,7 @@ public class ProcessingStepHandlerTest extends AbstractProvisioningTest {
}
@SuppressWarnings("deprecation")
+ @Test
public void testCreateMD5VerifierPS() {
String processorId = "org.eclipse.equinox.p2.processing.MD5Verifier";
ProcessingStepDescriptor[] descriptors = new ProcessingStepDescriptor[] {new ProcessingStepDescriptor(processorId, "1", true)};
@@ -215,6 +233,7 @@ public class ProcessingStepHandlerTest extends AbstractProvisioningTest {
assertEquals(IStatus.ERROR, steps[0].getStatus().getSeverity());
}
+ @Test
public void testCreateChecksumVerifierPS() {
ProcessingStepDescriptor processingStepDescriptor = new ProcessingStepDescriptor("org.eclipse.equinox.p2.processing.ChecksumVerifier", "1", true);
ProcessingStepDescriptor[] descriptors = new ProcessingStepDescriptor[] {processingStepDescriptor};
@@ -224,6 +243,7 @@ public class ProcessingStepHandlerTest extends AbstractProvisioningTest {
assertEquals(IStatus.ERROR, steps[0].getStatus().getSeverity());
}
+ @Test
public void testCreateAdderPS() {
IProcessingStepDescriptor[] descriptors = new IProcessingStepDescriptor[] {new ProcessingStepDescriptor("org.eclipse.equinox.p2.processing.Adder", "1", true)};
ProcessingStep[] steps = handler.create(getAgent(), descriptors, null);
@@ -232,6 +252,7 @@ public class ProcessingStepHandlerTest extends AbstractProvisioningTest {
assertEquals(Adder.class, steps[0].getClass());
}
+ @Test
public void testCreateMultiplierPS() {
IProcessingStepDescriptor[] descriptors = new IProcessingStepDescriptor[] {new ProcessingStepDescriptor("org.eclipse.equinox.p2.processing.Multiplier", "2", true)};
ProcessingStep[] steps = handler.create(getAgent(), descriptors, null);
@@ -240,6 +261,7 @@ public class ProcessingStepHandlerTest extends AbstractProvisioningTest {
assertEquals(Multiplier.class, steps[0].getClass());
}
+ @Test
public void testCreatePack200UnpackerPS() {
IProcessingStepDescriptor[] descriptors = new IProcessingStepDescriptor[] {new ProcessingStepDescriptor("org.eclipse.equinox.p2.processing.Pack200Unpacker", null, true)};
ProcessingStep[] steps = handler.create(getAgent(), descriptors, null);
@@ -248,6 +270,7 @@ public class ProcessingStepHandlerTest extends AbstractProvisioningTest {
assertEquals(Pack200ProcessorStep.class, steps[0].getClass());
}
+ @Test
public void testCreatePSsAndAssureOrderingOfPSs1() throws IOException {
IProcessingStepDescriptor adder = new ProcessingStepDescriptor("org.eclipse.equinox.p2.processing.Adder", "1", true);
IProcessingStepDescriptor multiplier = new ProcessingStepDescriptor("org.eclipse.equinox.p2.processing.Multiplier", "2", true);
@@ -257,9 +280,10 @@ public class ProcessingStepHandlerTest extends AbstractProvisioningTest {
try (OutputStream testStream = handler.link(steps, result, monitor)) {
testStream.write(new byte[] {1, 2, 3, 4, 5});
}
- assertTrue(Arrays.equals(new byte[] {4, 6, 8, 10, 12}, result.toByteArray()));
+ assertArrayEquals(new byte[] { 4, 6, 8, 10, 12 }, result.toByteArray());
}
+ @Test
public void testCreatePSsAndAssureOrderingOfPSs2() throws IOException {
IProcessingStepDescriptor adder = new ProcessingStepDescriptor("org.eclipse.equinox.p2.processing.Adder", "1", true);
IProcessingStepDescriptor multiplier = new ProcessingStepDescriptor("org.eclipse.equinox.p2.processing.Multiplier", "2", true);
@@ -269,9 +293,10 @@ public class ProcessingStepHandlerTest extends AbstractProvisioningTest {
try (OutputStream testStream = handler.link(steps, result, monitor)) {
testStream.write(new byte[] {1, 2, 3, 4, 5});
}
- assertTrue(Arrays.equals(new byte[] {3, 5, 7, 9, 11}, result.toByteArray()));
+ assertArrayEquals(new byte[] { 3, 5, 7, 9, 11 }, result.toByteArray());
}
+ @Test
public void testLinkPSs() throws IOException {
IProcessingStepDescriptor adder = new ProcessingStepDescriptor("org.eclipse.equinox.p2.processing.Adder", "1", true);
IProcessingStepDescriptor multiplier = new ProcessingStepDescriptor("org.eclipse.equinox.p2.processing.Multiplier", "2", true);
@@ -280,9 +305,10 @@ public class ProcessingStepHandlerTest extends AbstractProvisioningTest {
try (OutputStream testStream = handler.createAndLink(getAgent(), descriptors, null, result, monitor)) {
testStream.write(new byte[] {1, 2, 3, 4, 5});
}
- assertTrue(Arrays.equals(new byte[] {4, 6, 8, 10, 12}, result.toByteArray()));
+ assertArrayEquals(new byte[] { 4, 6, 8, 10, 12 }, result.toByteArray());
}
+ @Test
public void testPSHgetStatusOK() {
ProcessingStep ok1, ok2;
ok1 = new ProcessingStep() {
@@ -302,10 +328,11 @@ public class ProcessingStepHandlerTest extends AbstractProvisioningTest {
IStatus status = ProcessingStepHandler.getStatus(testStream);
IStatus errStatus = ProcessingStepHandler.getStatus(testStream);
assertTrue(status.isOK() && errStatus.isOK());
- assertTrue(!status.isMultiStatus());
- assertTrue(!errStatus.isMultiStatus());
+ assertFalse(status.isMultiStatus());
+ assertFalse(errStatus.isMultiStatus());
}
+ @Test
public void testPSHgetStatus() {
ProcessingStep ok, info, warning, error;
ok = new ProcessingStep() {
@@ -337,7 +364,7 @@ public class ProcessingStepHandlerTest extends AbstractProvisioningTest {
};
OutputStream testStream = handler.link(new ProcessingStep[] {info, ok, error, warning}, null, monitor);
- assertTrue(ProcessingStepHandler.getErrorStatus(testStream).getChildren().length == 2);
- assertTrue(ProcessingStepHandler.getStatus(testStream, true).getChildren().length == 4);
+ assertEquals(2, ProcessingStepHandler.getErrorStatus(testStream).getChildren().length);
+ assertEquals(4, ProcessingStepHandler.getStatus(testStream, true).getChildren().length);
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/processing/ProcessingStepTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/processing/ProcessingStepTest.java
index d886989a2..ab3582805 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/processing/ProcessingStepTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/processing/ProcessingStepTest.java
@@ -13,27 +13,36 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.artifact.repository.processing;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
import java.io.IOException;
import java.io.OutputStream;
-import junit.framework.TestCase;
-import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
import org.eclipse.equinox.internal.provisional.p2.artifact.repository.processing.ProcessingStep;
import org.eclipse.equinox.internal.provisional.p2.artifact.repository.processing.ProcessingStepHandler;
+import org.junit.Before;
+import org.junit.Test;
-public class ProcessingStepTest extends TestCase {
+public class ProcessingStepTest {
private ProcessingStep ps;
- private boolean flushed;
- private boolean closed;
+ boolean flushed;
+ boolean closed;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
ps = new ProcessingStep() {};
flushed = false;
closed = false;
}
+ @Test
public void testDefaultStatus() {
assertNotNull(ps.getStatus());
assertTrue(ps.getStatus().isOK());
@@ -42,6 +51,7 @@ public class ProcessingStepTest extends TestCase {
assertTrue(ProcessingStepHandler.checkStatus(ps).isOK());
}
+ @Test
public void testGetDeepStatus() {
ProcessingStep ps2 = new ProcessingStep() {};
ps.link(ps2, new NullProgressMonitor());
@@ -68,6 +78,7 @@ public class ProcessingStepTest extends TestCase {
assertEquals(IStatus.CANCEL, ps.getStatus(true).getSeverity());
}
+ @Test
public void testFlush() throws IOException {
OutputStream destination = new OutputStream() {
@@ -85,6 +96,7 @@ public class ProcessingStepTest extends TestCase {
assertTrue(flushed);
}
+ @Test
public void testCloseSimpleOutputStreamAsDestination() throws IOException {
OutputStream destination = new OutputStream() {
@@ -102,6 +114,7 @@ public class ProcessingStepTest extends TestCase {
assertFalse(closed);
}
+ @Test
public void testCloseProcessingStepAsDestination() throws IOException {
OutputStream destination = new ProcessingStep() {
@Override
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/AggregateQueryTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/AggregateQueryTest.java
index 52ef2e45b..2ae9e0ea8 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/AggregateQueryTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/AggregateQueryTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
-* Copyright (c) 2009, 2018 EclipseSource and others.
+* Copyright (c) 2009, 2020 EclipseSource and others.
*
* This
* program and the accompanying materials are made available under the terms of
@@ -14,24 +14,26 @@
******************************************************************************/
package org.eclipse.equinox.p2.tests.core;
+import static org.junit.Assert.assertEquals;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
-import junit.framework.TestCase;
import org.eclipse.equinox.p2.query.Collector;
import org.eclipse.equinox.p2.query.IQuery;
import org.eclipse.equinox.p2.query.IQueryResult;
import org.eclipse.equinox.p2.query.MatchQuery;
import org.eclipse.equinox.p2.query.QueryUtil;
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
+import org.junit.Test;
/**
* This tests both Compound and Composite queries
*
*/
-public class AggregateQueryTest extends TestCase {
+public class AggregateQueryTest {
public List<String> getABCDE() {
return Arrays.asList("A", "B", "C", "D", "E");
@@ -41,6 +43,7 @@ public class AggregateQueryTest extends TestCase {
return Arrays.asList("1", "2", "3");
}
+ @Test
public void testEmptyCompositeQuery() {
IQuery<String> query = QueryUtil.createPipeQuery(Collections.emptySet());
query.perform(getABCDE().iterator());
@@ -48,6 +51,7 @@ public class AggregateQueryTest extends TestCase {
// will return in this case
}
+ @Test
public void testSymmetry() {
IQuery getLatest = new ContextQuery() {
@@ -58,7 +62,7 @@ public class AggregateQueryTest extends TestCase {
while (iterator.hasNext()) {
list.add(iterator.next());
}
- Collections.sort(list);
+ list.sort(null);
result.accept(list.get(list.size() - 1));
return result;
}
@@ -97,9 +101,9 @@ public class AggregateQueryTest extends TestCase {
}
/**
- * The CompositeQuery should not support symmetry.
- * This method tests that
+ * The CompositeQuery should not support symmetry. This method tests that
*/
+ @Test
public void testNonSymmetry() {
IQuery getLatest = new ContextQuery() {
@@ -110,7 +114,7 @@ public class AggregateQueryTest extends TestCase {
while (iterator.hasNext()) {
list.add(iterator.next());
}
- Collections.sort(list);
+ list.sort(null);
result.accept(list.get(list.size() - 1));
return result;
}
@@ -142,8 +146,9 @@ public class AggregateQueryTest extends TestCase {
}
+ @Test
public void testIntersection() {
- IQuery<String> ABC = new MatchQuery<String>() {
+ IQuery<String> ABC = new MatchQuery<>() {
@Override
public boolean isMatch(String candidate) {
if (candidate.equals("A") || candidate.equals("B") || candidate.equals("C"))
@@ -152,7 +157,7 @@ public class AggregateQueryTest extends TestCase {
}
};
- IQuery<String> BCDE = new MatchQuery<String>() {
+ IQuery<String> BCDE = new MatchQuery<>() {
@Override
public boolean isMatch(String candidate) {
if (candidate.equals("B") || candidate.equals("C") || candidate.equals("D") || candidate.equals("E"))
@@ -168,6 +173,7 @@ public class AggregateQueryTest extends TestCase {
AbstractProvisioningTest.assertContains("1.2", result, "C");
}
+ @Test
public void testIntersection2() {
IQuery ABC = new ContextQuery() {
@Override
@@ -202,8 +208,9 @@ public class AggregateQueryTest extends TestCase {
AbstractProvisioningTest.assertContains("1.2", result, "C");
}
+ @Test
public void testUnion() {
- IQuery<String> ABC = new MatchQuery<String>() {
+ IQuery<String> ABC = new MatchQuery<>() {
@Override
public boolean isMatch(String candidate) {
if (candidate.equals("A") || candidate.equals("B") || candidate.equals("C"))
@@ -212,7 +219,7 @@ public class AggregateQueryTest extends TestCase {
}
};
- IQuery<String> BCDE = new MatchQuery<String>() {
+ IQuery<String> BCDE = new MatchQuery<>() {
@Override
public boolean isMatch(String candidate) {
if (candidate.equals("B") || candidate.equals("C") || candidate.equals("D") || candidate.equals("E"))
@@ -231,6 +238,7 @@ public class AggregateQueryTest extends TestCase {
AbstractProvisioningTest.assertContains("1.5", result, "E");
}
+ @Test
public void testUnion2() {
IQuery ABC = new ContextQuery() {
@Override
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/AllTests.java
index f3364e7b0..127a490ac 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/AllTests.java
@@ -7,31 +7,23 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.core;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all automated core tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(AggregateQueryTest.class);
- suite.addTestSuite(BackupTest.class);
- suite.addTestSuite(CollectorTest.class);
- suite.addTestSuite(CompoundQueryableTest.class);
- suite.addTestSuite(FileUtilsTest.class);
- suite.addTestSuite(OrderedPropertiesTest.class);
- suite.addTestSuite(ProvisioningAgentTest.class);
- suite.addTestSuite(QueryTest.class);
- suite.addTestSuite(URLUtilTest.class);
- return suite;
- }
-
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ AggregateQueryTest.class, BackupTest.class, CollectorTest.class,
+ CompoundQueryableTest.class,
+ FileUtilsTest.class, OrderedPropertiesTest.class, ProvisioningAgentTest.class, QueryTest.class,
+ URLUtilTest.class })
+public class AllTests {
+// test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/BackupTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/BackupTest.java
index daf3a5020..30faf7e96 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/BackupTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/BackupTest.java
@@ -13,297 +13,189 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.core;
-import java.io.*;
-import org.eclipse.equinox.internal.p2.touchpoint.natives.BackupStore;
+import static java.nio.file.FileVisitResult.CONTINUE;
+import static java.nio.file.StandardOpenOption.CREATE_NEW;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.attribute.BasicFileAttributes;
+import org.eclipse.equinox.internal.p2.touchpoint.natives.SimpleBackupStore;
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
public class BackupTest extends AbstractProvisioningTest {
- private static final String BUPREFIX = "BackupTest";
- private File sourceDir;
- private File aDir;
- private File aaDir;
- private File bDir;
- private File aTxt;
- private File bTxt;
- private File abDir;
- private File cTxt;
- private File cTxtRelative;
+ private static final String BUPREFIX = "backup-test";
+
+ private Path sourceDir;
+
+ private Path aDir;
+ private Path aaDir;
+ private Path aTxt;
+
+ private Path bDir;
+ private Path bTxt;
+
+ private Path abDir;
+
+ private Path cTxt;
+
+ private SimpleBackupStore store;
/**
- * Sets up directories and files under user.home
- * <ul><li>P2BUTEST/</li>
- * <ul><li>A/</li>
- * <ul><li>AA/</li>
- * <ul><li>a.txt</li>
- * <li>b.txt</li>
- * </ul>
- * </ul>
- * <li>B/</li>
- * </ul>
- * </ul>
+ * <pre>
+ * /p2-backup-test
+ * /a
+ * /aa
+ * /a.txt
+ * /b.txt
+ * /ab
+ * /c.txt
+ * /b
+ * </pre>
*/
@Override
- public void setUp() {
- // create some test files under user.home
- // do not want them under /tmp as it may be on its own file system (and even
- // be an in-memory file system).
- //
+ public void setUp() throws IOException {
+ // Don't want to backup under /tmp since it may be it's own file system or an
+ // in-memory file system
String userHome = System.getProperty("user.home");
- sourceDir = new File(new File(userHome), "P2BUTEST");
- aDir = new File(sourceDir, "A");
- aDir.mkdirs();
- aaDir = new File(aDir, "AA");
- aaDir.mkdir();
- abDir = new File(aDir, "AB");
- abDir.mkdir();
-
- bDir = new File(sourceDir, "B");
- bDir.mkdirs();
- aTxt = new File(aaDir, "a.txt");
- bTxt = new File(aaDir, "b.txt");
- cTxt = new File(abDir, "c.txt");
- cTxtRelative = new File(aaDir, "../AB/c.txt");
- try {
- writeToFile(aTxt, "A\nA file with an A");
- writeToFile(bTxt, "B\nA file with a B");
- writeToFile(cTxt, "C\nA file with a C");
- } catch (IOException e) {
- fail();
- }
- }
+ sourceDir = Path.of(userHome, "p2-backup-test");
+ deleteAll(sourceDir);
- private void writeToFile(File file, String content) throws IOException {
- file.getParentFile().mkdirs();
- file.createNewFile();
+ aDir = sourceDir.resolve("a");
+ Files.createDirectories(aDir);
- try (Writer writer = new BufferedWriter(new FileWriter(file))) {
- writer.write(content);
- }
+ aaDir = aDir.resolve("aa");
+ Files.createDirectories(aaDir);
+
+ aTxt = aaDir.resolve("a.txt");
+ Files.write(aTxt, "A\nA file with an A".getBytes());
+
+ bTxt = aaDir.resolve("b.txt");
+ Files.write(bTxt, "B\nA file with a B".getBytes());
+
+ abDir = aDir.resolve("ab");
+ Files.createDirectories(abDir);
+
+ cTxt = abDir.resolve("c.txt");
+ Files.write(cTxt, "C\nA file with a C".getBytes());
+
+ bDir = sourceDir.resolve("b");
+ Files.createDirectories(bDir);
+
+ store = new SimpleBackupStore(null, BUPREFIX);
}
@Override
- public void tearDown() {
- fullyDelete(sourceDir);
+ public void tearDown() throws IOException {
+ deleteAll(sourceDir);
}
- /**
- * Deletes a file, or a directory with all of it's children.
- * @param file the file or directory to fully delete
- * @return true if, and only if the file is deleted
- */
- private boolean fullyDelete(File file) {
- if (!file.exists())
- return true;
- if (file.isDirectory()) {
- File[] children = file.listFiles();
- for (File child : children) {
- if (!fullyDelete(new File(file, child.getName()))) {
- return false;
+ private static void deleteAll(Path path) throws IOException {
+ if (!Files.exists(path)) {
+ return;
+ }
+
+ Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
+ @Override
+ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
+ Files.delete(file);
+ return CONTINUE;
+ }
+
+ @Override
+ public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
+ if (exc != null) {
+ throw exc;
}
+ Files.delete(dir);
+ return CONTINUE;
}
- }
- return file.delete();
+ });
}
/**
* Test that a path containing ".." can be backed up and restored.
*/
- public void testBackupRelative() {
- BackupStore store = new BackupStore(null, BUPREFIX);
- // backup and overwrite a.txt
- try {
- store.backup(cTxtRelative);
- } catch (IOException e) {
- e.printStackTrace();
- fail("IO Exception when backing up cTxtRelative");
- }
- if (cTxt.exists())
- fail("File not moved to backup - still exists");
- try {
- writeToFile(cTxt, "XXXX\n- This file should be restored with C");
- } catch (IOException e) {
- e.printStackTrace();
- fail("Could not write a file for testing purposes.");
- }
+ public void testBackupRelative() throws IOException {
+ Path cTxtRelative = aaDir.resolve(aaDir.relativize(cTxt));
- // restore
- try {
- store.restore();
- } catch (IOException e) {
- e.printStackTrace();
- fail("Restore operation failed with IOException");
- }
- // assert restore
- assertFileContent("Restore of C failed - not original content", cTxt, "C");
+ store.backup(cTxtRelative.toFile());
+ assertFalse(Files.exists(cTxt));
+
+ Files.write(cTxt, "XXXX\n- This file should be restored with C".getBytes());
+
+ store.restore();
+ assertFileContent("Restore of C failed - not original content", cTxt.toFile(), "C");
assertNoGarbage(store);
}
- public void testBackupRestore() {
- BackupStore store = new BackupStore(null, BUPREFIX);
- // backup and overwrite a.txt
- try {
- store.backup(aTxt);
- } catch (IOException e) {
- e.printStackTrace();
- fail("IO Exception when backing up aTxt");
- }
- if (aTxt.exists())
- fail("File not moved to backup - still exists");
- try {
- writeToFile(aTxt, "XXXX\n- This file should be restored with A");
- } catch (IOException e) {
- e.printStackTrace();
- fail("Could not write a file for testing purposes.");
- }
+ public void testBackupRestore() throws IOException {
+ store.backup(aTxt.toFile());
+ assertFalse("File not moved to backup - still exists", Files.exists(aTxt));
- // backup the empty B directory
- try {
- store.backup(bDir);
- } catch (IOException e) {
- e.printStackTrace();
- fail("IO Exception when backing up bDir");
- }
- if (bDir.exists())
- fail("Backed up directory was not moved");
-
- // backup b as a copy
- try {
- store.backupCopy(bTxt);
- assertFileContent("File should have been copied", bTxt, "B");
- } catch (IOException e) {
- fail("Could not backupCopy bTxt");
- }
+ Files.write(aTxt, "XXXX\n- This file should be restored with A".getBytes());
- // restore
- try {
- store.restore();
- } catch (IOException e) {
- e.printStackTrace();
- fail("Restore operation failed with IOException");
- }
+ store.backup(bDir.toFile());
+ assertFalse("Backed up directory was not moved", Files.isDirectory(bDir));
- // assert restore
- assertFileContent("Restore of A failed - not original content", aTxt, "A");
- if (!bDir.isDirectory() && bDir.listFiles().length != 0)
- fail("Empty directory not restored ok");
+ store.backupCopy(bTxt.toFile());
+ assertFileContent("File should have been copied", bTxt.toFile(), "B");
+ store.restore();
+ assertFileContent("Restore of A failed - not original content", aTxt.toFile(), "A");
+ assertTrue("Empty directory not restored ok", Files.isDirectory(bDir) && Files.list(bDir).count() == 0);
assertNoGarbage(store);
}
- public void testBackupDiscard() {
- BackupStore store = new BackupStore(null, BUPREFIX);
- // backup and overwrite a.txt
- try {
- store.backup(aTxt);
- } catch (IOException e) {
- e.printStackTrace();
- fail("IO Exception when backing up aTxt");
- }
- if (aTxt.exists())
- fail("File not moved to backup - still exists");
- try {
- writeToFile(aTxt, "XXXX\n- This file should be restored with A");
- } catch (IOException e) {
- e.printStackTrace();
- fail("Could not write a file for testing purposes.");
- }
-
- // backup the empty B directory
- try {
- store.backup(bDir);
- } catch (IOException e) {
- e.printStackTrace();
- fail("IO Exception when backing up bDir");
- }
- if (bDir.exists())
- fail("Backed up directory was not moved");
+ public void testBackupDiscard() throws IOException {
+ store.backup(aTxt.toFile());
+ assertFalse("File not moved to backup - still exists", Files.exists(aTxt));
- // restore
- store.discard();
+ Files.write(aTxt, "XXXX\n- This file should be restored with A".getBytes());
- // assert discard
- assertFileContent("Discard of A failed - not new content", aTxt, "XXXX");
- if (bDir.isDirectory())
- fail("Remove of empty directory not discarded ok");
+ store.backup(bDir.toFile());
+ assertFalse("Backed up directory was not moved", Files.exists(bDir));
+ store.discard();
+ assertFileContent("Discard of a.txt failed - not new content", aTxt.toFile(), "XXXX");
+ assertFalse("Empty directory not discarded - still exists", Files.isDirectory(bDir));
assertNoGarbage(store);
}
- public void testBackupAll() {
- BackupStore store = new BackupStore(null, BUPREFIX);
- // backup and overwrite a.txt
- try {
- store.backupAll(aDir);
- } catch (IOException e) {
- e.printStackTrace();
- fail("IO Exception when backing up aDir");
- }
- if (aTxt.exists())
- fail("File not moved to backup - still exists");
- if (bTxt.exists())
- fail("File bTxt not moved to backup - still exists");
-
- try {
- writeToFile(aTxt, "XXXX\n- This file should be restored with A");
- } catch (IOException e) {
- e.printStackTrace();
- fail("Could not write a file for testing purposes.");
- }
- try {
- store.restore();
- } catch (IOException e) {
- fail("Restore failed");
- }
- assertFileContent("A not restored", aTxt, "A");
- assertFileContent("B not restored", bTxt, "B");
+ public void testBackupAll() throws IOException {
+ store.backupAll(aDir.toFile());
+ assertFalse("File not moved to backup - still exists", Files.exists(aTxt));
+ assertFalse("File bTxt not moved to backup - still exists", Files.exists(bTxt));
+
+ Files.createDirectories(aTxt.getParent());
+ Files.write(aTxt, "XXXX\n- This file should be restored with A".getBytes(), CREATE_NEW);
+
+ store.restore();
+ assertFileContent("A not restored", aTxt.toFile(), "A");
+ assertFileContent("B not restored", bTxt.toFile(), "B");
assertNoGarbage(store);
}
- public void testBackupCopyAll() {
- BackupStore store = new BackupStore(null, BUPREFIX);
- // backup and overwrite a.txt
- try {
- store.backupCopyAll(aDir);
- } catch (IOException e) {
- e.printStackTrace();
- fail("IO Exception when backing up aDir");
- }
- if (!aTxt.exists())
- fail("File not copied to backup - does not exist");
- if (!bTxt.exists())
- fail("File bTxt not copied to backup - does not exists");
-
- try {
- writeToFile(aTxt, "XXXX\n- This file should be restored with A");
- writeToFile(bTxt, "XXXX\n- This file should be restored with B");
- } catch (IOException e) {
- e.printStackTrace();
- fail("Could not write a file for testing purposes.");
- }
- try {
- store.restore();
- } catch (IOException e) {
- fail("Restore failed");
- }
- assertFileContent("A not restored", aTxt, "A");
- assertFileContent("B not restored", bTxt, "B");
+ public void testBackupCopyAll() throws IOException {
+ store.backupCopyAll(aDir.toFile());
+ assertTrue("File not copied to backup - does not exist", Files.exists(aTxt));
+ assertTrue("File bTxt not copied to backup - does not exists", Files.exists(bTxt));
+
+ Files.write(aTxt, "XXXX\n- This file should be restored with A".getBytes());
+ Files.write(bTxt, "XXXX\n- This file should be restored with B".getBytes());
+
+ store.restore();
+ assertFileContent("A not restored", aTxt.toFile(), "A");
+ assertFileContent("B not restored", bTxt.toFile(), "B");
assertNoGarbage(store);
}
- private void assertNoGarbage(BackupStore store) {
- File buDir = new File(store.getBackupRoot(), BUPREFIX);
- if (buDir.exists())
- fail("Backup directory not cleaned up");
-
- // Set roots = store.getBackupRoots();
- // if (roots.size() == 0)
- // assertTrue("Root set is empty", true);
- // for (Iterator itor = roots.iterator(); itor.hasNext();) {
- // File root = (File) itor.next();
- // File buDir = new File(root, BUPREFIX);
- // if (buDir.exists())
- // fail("Backup directory not cleaned up");
- // }
+ private static void assertNoGarbage(SimpleBackupStore store) {
+ File buDir = store.getBackupRoot();
+ assertFalse("Backup directory not cleaned up", buDir.exists());
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/CollectorTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/CollectorTest.java
index d32cc2b95..a1865ab3b 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/CollectorTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/CollectorTest.java
@@ -14,8 +14,13 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.core;
-import java.util.*;
-import org.eclipse.equinox.p2.query.*;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.equinox.p2.query.Collector;
+import org.eclipse.equinox.p2.query.IQuery;
+import org.eclipse.equinox.p2.query.IQueryResult;
+import org.eclipse.equinox.p2.query.MatchQuery;
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
/**
@@ -50,7 +55,7 @@ public class CollectorTest extends AbstractProvisioningTest {
public void testCompositeCollectors() {
String[] s = new String[] {"A", "B", "C", "D", "E", "F", "G", "1", "2", "3", "4", "5", "6", "7"};
List<String> list = Arrays.asList(s);
- IQuery<String> numeric = new MatchQuery<String>() {
+ IQuery<String> numeric = new MatchQuery<>() {
@Override
public boolean isMatch(String candidate) {
@@ -61,7 +66,7 @@ public class CollectorTest extends AbstractProvisioningTest {
}
};
- IQuery<String> fourOrFiveOrABC = new MatchQuery<String>() {
+ IQuery<String> fourOrFiveOrABC = new MatchQuery<>() {
@Override
public boolean isMatch(String candidate) {
if (candidate.equals("4") || candidate.equals("5") || candidate.equals("A") || candidate.equals("B") || candidate.equals("C")) {
@@ -82,7 +87,7 @@ public class CollectorTest extends AbstractProvisioningTest {
public void testSameCollector() {
String[] s = new String[] {"A", "B", "C", "D", "E", "F", "G", "1", "2", "3", "4", "5", "6", "7"};
List<String> list = Arrays.asList(s);
- IQuery<String> numeric = new MatchQuery<String>() {
+ IQuery<String> numeric = new MatchQuery<>() {
@Override
public boolean isMatch(String candidate) {
@@ -93,7 +98,7 @@ public class CollectorTest extends AbstractProvisioningTest {
}
};
- IQuery<String> fourOrFiveOrABC = new MatchQuery<String>() {
+ IQuery<String> fourOrFiveOrABC = new MatchQuery<>() {
@Override
public boolean isMatch(String candidate) {
if (candidate.equals("4") || candidate.equals("5") || candidate.equals("A") || candidate.equals("B") || candidate.equals("C")) {
@@ -117,7 +122,7 @@ public class CollectorTest extends AbstractProvisioningTest {
public void testEmptyCompositeCollectors() {
String[] s = new String[] {"A", "B", "C", "D", "E", "F", "G", "1", "2", "3", "4", "5", "6", "7"};
List<String> list = Arrays.asList(s);
- IQuery<String> eightOrNine = new MatchQuery<String>() {
+ IQuery<String> eightOrNine = new MatchQuery<>() {
@Override
public boolean isMatch(String candidate) {
@@ -128,7 +133,7 @@ public class CollectorTest extends AbstractProvisioningTest {
}
};
- IQuery<String> fourOrFiveOrABC = new MatchQuery<String>() {
+ IQuery<String> fourOrFiveOrABC = new MatchQuery<>() {
@Override
public boolean isMatch(String candidate) {
if (candidate.equals("4") || candidate.equals("5") || candidate.equals("A") || candidate.equals("B") || candidate.equals("C")) {
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/CompoundQueryableTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/CompoundQueryableTest.java
index a6a90d87e..d8b434d74 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/CompoundQueryableTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/CompoundQueryableTest.java
@@ -14,18 +14,26 @@
******************************************************************************/
package org.eclipse.equinox.p2.tests.core;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
import java.util.Arrays;
import java.util.Iterator;
-import junit.framework.TestCase;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.tests.harness.TestProgressMonitor;
-import org.eclipse.equinox.p2.query.*;
+import org.eclipse.equinox.p2.query.Collector;
+import org.eclipse.equinox.p2.query.IQuery;
+import org.eclipse.equinox.p2.query.IQueryResult;
+import org.eclipse.equinox.p2.query.IQueryable;
+import org.eclipse.equinox.p2.query.MatchQuery;
+import org.eclipse.equinox.p2.query.QueryUtil;
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
+import org.junit.Test;
/**
* Tests the compound queryable
*/
-public class CompoundQueryableTest extends TestCase {
+public class CompoundQueryableTest {
public static class CompoundQueryTestProgressMonitor extends TestProgressMonitor {
@@ -63,7 +71,7 @@ public class CompoundQueryableTest extends TestCase {
return Arrays.asList(array).iterator();
}
- IQueryable<Integer> queryable1 = new IQueryable<Integer>() {
+ IQueryable<Integer> queryable1 = new IQueryable<>() {
Integer[] elements = new Integer[] {1, 2, 3, 4, 5};
@Override
@@ -80,7 +88,7 @@ public class CompoundQueryableTest extends TestCase {
}
};
- IQueryable<Integer> queryable2 = new IQueryable<Integer>() {
+ IQueryable<Integer> queryable2 = new IQueryable<>() {
Integer[] elements = new Integer[] {4, 6, 8, 10, 12};
@Override
@@ -97,7 +105,7 @@ public class CompoundQueryableTest extends TestCase {
}
};
- IQueryable<Integer> queryable3 = new IQueryable<Integer>() {
+ IQueryable<Integer> queryable3 = new IQueryable<>() {
Integer[] elements = new Integer[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
@Override
@@ -114,7 +122,7 @@ public class CompoundQueryableTest extends TestCase {
}
};
- IQuery<Integer> matchQuery = new MatchQuery<Integer>() {
+ IQuery<Integer> matchQuery = new MatchQuery<>() {
@Override
public boolean isMatch(Integer candidate) {
@@ -125,7 +133,7 @@ public class CompoundQueryableTest extends TestCase {
}
};
- IQuery<Integer> matchMod4query = new MatchQuery<Integer>() {
+ IQuery<Integer> matchMod4query = new MatchQuery<>() {
@Override
public boolean isMatch(Integer candidate) {
int x = candidate.intValue();
@@ -135,7 +143,7 @@ public class CompoundQueryableTest extends TestCase {
}
};
- IQuery<Integer> contextQuery = new ContextQuery<Integer>() {
+ IQuery<Integer> contextQuery = new ContextQuery<>() {
@Override
public Collector<Integer> perform(Iterator<Integer> iterator) {
@@ -151,7 +159,7 @@ public class CompoundQueryableTest extends TestCase {
};
- IQuery<Integer> greatestNumberQuery = new ContextQuery<Integer>() {
+ IQuery<Integer> greatestNumberQuery = new ContextQuery<>() {
@Override
public Collector<Integer> perform(Iterator<Integer> iterator) {
Collector<Integer> result = new Collector<>();
@@ -168,6 +176,7 @@ public class CompoundQueryableTest extends TestCase {
}
};
+ @Test
public void testMatchQuery() {
IQueryable<Integer> cQueryable = QueryUtil.compoundQueryable(queryable1, queryable2);
CompoundQueryTestProgressMonitor monitor = new CompoundQueryTestProgressMonitor();
@@ -181,6 +190,7 @@ public class CompoundQueryableTest extends TestCase {
AbstractProvisioningTest.assertContains("1.6", queryResult, 12);
}
+ @Test
public void testSingleQueryable() {
IQueryable<Integer> cQueryable = QueryUtil.compoundQueryable(Arrays.asList(queryable1));
CompoundQueryTestProgressMonitor monitor = new CompoundQueryTestProgressMonitor();
@@ -190,6 +200,7 @@ public class CompoundQueryableTest extends TestCase {
AbstractProvisioningTest.assertContains("1.2", queryResult, 4);
}
+ @Test
public void testSingleContextQuery() {
IQueryable<Integer> cQueryable = QueryUtil.compoundQueryable(Arrays.asList(queryable1));
CompoundQueryTestProgressMonitor monitor = new CompoundQueryTestProgressMonitor();
@@ -198,6 +209,7 @@ public class CompoundQueryableTest extends TestCase {
AbstractProvisioningTest.assertContains("1.1", queryResult, 5);
}
+ @Test
public void testMultipleContextQueries() {
IQueryable<Integer> cQueryable = QueryUtil.compoundQueryable(queryable1, queryable2);
CompoundQueryTestProgressMonitor monitor = new CompoundQueryTestProgressMonitor();
@@ -206,6 +218,7 @@ public class CompoundQueryableTest extends TestCase {
AbstractProvisioningTest.assertContains("1.1", queryResult, 12);
}
+ @Test
public void testCompoundMatchAndQuery() {
IQueryable<Integer> cQueryable = QueryUtil.compoundQueryable(queryable1, queryable2);
CompoundQueryTestProgressMonitor monitor = new CompoundQueryTestProgressMonitor();
@@ -216,6 +229,7 @@ public class CompoundQueryableTest extends TestCase {
AbstractProvisioningTest.assertContains("1.6", queryResult, 12);
}
+ @Test
public void testCompoundMatchOrQuery() {
IQueryable<Integer> cQueryable = QueryUtil.compoundQueryable(queryable1, queryable2);
CompoundQueryTestProgressMonitor monitor = new CompoundQueryTestProgressMonitor();
@@ -229,6 +243,7 @@ public class CompoundQueryableTest extends TestCase {
AbstractProvisioningTest.assertContains("1.6", queryResult, 12);
}
+ @Test
public void testMatchQueryProgressMonitor() {
IQueryable<Integer> cQueryable = QueryUtil.compoundQueryable(queryable1, queryable2);
CompoundQueryTestProgressMonitor monitor = new CompoundQueryTestProgressMonitor();
@@ -237,6 +252,7 @@ public class CompoundQueryableTest extends TestCase {
assertTrue("1.1", monitor.isWorkDone());
}
+ @Test
public void testSingleQueryableProgressMonitor() {
IQueryable<Integer> cQueryable = QueryUtil.compoundQueryable(Arrays.asList(queryable1));
CompoundQueryTestProgressMonitor monitor = new CompoundQueryTestProgressMonitor();
@@ -245,6 +261,7 @@ public class CompoundQueryableTest extends TestCase {
assertTrue("1.1", monitor.isWorkDone());
}
+ @Test
public void testSingleContextQueryProgressMonitor() {
IQueryable<Integer> cQueryable = QueryUtil.compoundQueryable(Arrays.asList(queryable1));
CompoundQueryTestProgressMonitor monitor = new CompoundQueryTestProgressMonitor();
@@ -253,6 +270,7 @@ public class CompoundQueryableTest extends TestCase {
assertTrue("1.1", monitor.isWorkDone());
}
+ @Test
public void testMultipleContextQueriesProgressMonitor() {
IQueryable<Integer> cQueryable = QueryUtil.compoundQueryable(queryable1, queryable2);
CompoundQueryTestProgressMonitor monitor = new CompoundQueryTestProgressMonitor();
@@ -261,6 +279,7 @@ public class CompoundQueryableTest extends TestCase {
assertTrue("1.1", monitor.isWorkDone());
}
+ @Test
public void testNullProgressMonitor() {
IQueryable<Integer> cQueryable = QueryUtil.compoundQueryable(queryable1, queryable2);
cQueryable.query(greatestNumberQuery, null);
@@ -268,6 +287,7 @@ public class CompoundQueryableTest extends TestCase {
}
+ @Test
public void testDoubleCompoundContextOrQuery() {
IQueryable<Integer> cQueryable1 = QueryUtil.compoundQueryable(queryable3, queryable2);
IQueryable<Integer> cQueryable = QueryUtil.compoundQueryable(cQueryable1, queryable1);
@@ -285,6 +305,7 @@ public class CompoundQueryableTest extends TestCase {
assertTrue("1.1", monitor.isWorkDone());
}
+ @Test
public void testDoubleCompositeQuery() {
IQueryable<Integer> cQueryable1 = QueryUtil.compoundQueryable(queryable3, queryable2);
IQueryable<Integer> cQueryable = QueryUtil.compoundQueryable(cQueryable1, queryable1);
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/ProvisioningAgentTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/ProvisioningAgentTest.java
index fd4e953e9..268b42d5f 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/ProvisioningAgentTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/ProvisioningAgentTest.java
@@ -35,7 +35,7 @@ public class ProvisioningAgentTest extends AbstractProvisioningTest {
* @throws URISyntaxException
*/
public void testMultipleAgents() throws ProvisionException, URISyntaxException {
- URI repoLocation = new URI("http://download.eclipse.org/eclipse/updates/3.6");
+ URI repoLocation = new URI("https://download.eclipse.org/eclipse/updates/latest");
URI p2location = getTempFolder().toURI();
String PROFILE_ID = "testMultipleAgents";
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/QueryTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/QueryTest.java
index af466e65f..0e76aff76 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/QueryTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/QueryTest.java
@@ -13,16 +13,21 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.core;
+import static org.junit.Assert.assertEquals;
+
import java.util.Arrays;
import java.util.List;
-import junit.framework.TestCase;
-import org.eclipse.equinox.p2.query.*;
+import org.eclipse.equinox.p2.query.IQuery;
+import org.eclipse.equinox.p2.query.IQueryResult;
+import org.eclipse.equinox.p2.query.MatchQuery;
+import org.eclipse.equinox.p2.query.QueryUtil;
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
+import org.junit.Test;
/**
* Tests for the {@link org.eclipse.equinox.internal.provisional.p2.query.Query} class.
*/
-public class QueryTest extends TestCase {
+public class QueryTest {
static class AnyStringQuery extends MatchQuery {
@Override
@@ -32,8 +37,9 @@ public class QueryTest extends TestCase {
}
/**
- * Tests a simple perform where all items match.
- */
+ * Tests a simple perform where all items match.
+ */
+ @Test
public void testPerformSimple() {
List<String> items = Arrays.asList("red", "green", "blue");
IQuery query = new AnyStringQuery();
@@ -47,6 +53,7 @@ public class QueryTest extends TestCase {
/**
* Tests a perform where only some items match.
*/
+ @Test
public void testPerformSomeMatches() {
List<Object> items = Arrays.asList(new Object(), "green", new Object());
IQuery query = new AnyStringQuery();
@@ -55,6 +62,7 @@ public class QueryTest extends TestCase {
AbstractProvisioningTest.assertContains("1.1", collector, "green");
}
+ @Test
public void testLimitQuery() {
List<String> items = Arrays.asList("red", "green", "blue");
IQuery query = new AnyStringQuery();
@@ -64,6 +72,7 @@ public class QueryTest extends TestCase {
AbstractProvisioningTest.assertContains("1.1", collector, "red");
}
+ @Test
public void testLimitQuery2() {
List<String> items = Arrays.asList("red", "green", "blue");
IQuery query = new AnyStringQuery();
@@ -74,6 +83,7 @@ public class QueryTest extends TestCase {
AbstractProvisioningTest.assertContains("1.2", collector, "green");
}
+ @Test
public void testLimitQuery3() {
List<String> items = Arrays.asList("red", "green", "blue");
IQuery query = new AnyStringQuery();
@@ -85,6 +95,7 @@ public class QueryTest extends TestCase {
AbstractProvisioningTest.assertContains("1.3", collector, "blue");
}
+ @Test
public void testLimitQuery0() {
List<String> items = Arrays.asList("red", "green", "blue");
IQuery query = new AnyStringQuery();
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/StringHelperTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/StringHelperTest.java
index 2b876b4eb..3a8f59fcb 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/StringHelperTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/core/StringHelperTest.java
@@ -14,12 +14,15 @@
package org.eclipse.equinox.p2.tests.core;
+import static org.junit.Assert.assertTrue;
+
import java.util.Arrays;
-import junit.framework.TestCase;
import org.eclipse.equinox.internal.p2.core.helpers.StringHelper;
import org.eclipse.equinox.p2.publisher.AbstractPublisherAction;
+import org.junit.Test;
-public class StringHelperTest extends TestCase {
+public class StringHelperTest {
+ @Test
public void testSimilarBehavior() {
String[] a1 = AbstractPublisherAction.getArrayFromString("foo, bar, baz ,,, zaz", ",");
String[] a2 = StringHelper.getArrayFromString("foo, bar, baz ,,, zaz", ',');
@@ -38,6 +41,7 @@ public class StringHelperTest extends TestCase {
assertTrue("1.4", Arrays.equals(a1, a2));
}
+ @Test
public void testPerformance() throws Exception {
String[] strings = new String[5];
StringBuilder inputBld = new StringBuilder();
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/AllTests.java
index 6a7a084ed..c4b2e08e2 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/AllTests.java
@@ -7,34 +7,23 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.director;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all automated director tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(AutomatedDirectorTest.class);
- suite.addTestSuite(Bug203637.class);
- suite.addTestSuite(OperationGenerationTest.class);
- suite.addTestSuite(OracleTest.class);
- suite.addTestSuite(OracleTest2.class);
- suite.addTestSuite(ReplacePlanTest.class);
- suite.addTestSuite(RollbackTest.class);
- suite.addTestSuite(SingletonTest.class);
- suite.addTestSuite(UninstallTest.class);
- suite.addTestSuite(UpdateTest.class);
- suite.addTestSuite(IUListFormatterTest.class);
- suite.addTestSuite(DirectorApplicationTest.class);
- return suite;
- }
-
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ AutomatedDirectorTest.class, Bug203637.class, OperationGenerationTest.class,
+ OracleTest.class,
+ OracleTest2.class, ReplacePlanTest.class, RollbackTest.class, SingletonTest.class, UninstallTest.class,
+ UpdateTest.class, IUListFormatterTest.class, DirectorApplicationTest.class })
+public class AllTests {
+// test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/DirectorApplicationTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/DirectorApplicationTest.java
index 6923b17ba..9ac6d4b8a 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/DirectorApplicationTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/DirectorApplicationTest.java
@@ -15,7 +15,7 @@
package org.eclipse.equinox.p2.tests.director;
import static org.hamcrest.CoreMatchers.containsString;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
import java.io.File;
import java.io.PrintStream;
@@ -838,4 +838,24 @@ public class DirectorApplicationTest extends AbstractProvisioningTest {
return avoidTrustPromptService.getTrustInfo(untrustedChain, null);
}
+ public void testPGPSignedArtifact() throws Exception {
+ File srcRepo = getTestData(null, "/testData/pgp/repoPGPOK");
+
+ IArtifactRepositoryManager artifactManager = getAgent().getService(IArtifactRepositoryManager.class);
+ IMetadataRepositoryManager metadataManager = getAgent().getService(IMetadataRepositoryManager.class);
+ assertNotNull(artifactManager);
+ assertNotNull(metadataManager);
+
+ File destinationRepo = new File(getTempFolder(), "DirectorApp Destination");
+ String[] args = getSingleRepoArgs(null, srcRepo, srcRepo, destinationRepo, "blah");
+
+ destinationRepo.mkdirs();
+
+ StringBuffer buffer = runDirectorApp(null, args);
+ assertFalse(buffer.toString(), buffer.toString().contains("failed"));
+
+ artifactManager.removeRepository(srcRepo.toURI());
+ metadataManager.removeRepository(srcRepo.toURI());
+ delete(destinationRepo);
+ }
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/IUListFormatterTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/IUListFormatterTest.java
index e2c8f2048..a2e1bf8ea 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/IUListFormatterTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/IUListFormatterTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2014, 2017 SAP AG and others.
+ * Copyright (c) 2014, 2021 SAP AG and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,38 +14,48 @@
package org.eclipse.equinox.p2.tests.director;
import static java.util.Arrays.asList;
-import static org.easymock.EasyMock.*;
-
-import java.util.*;
-import junit.framework.TestCase;
-import org.easymock.IAnswer;
+import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import org.eclipse.equinox.internal.p2.director.app.IUListFormatter;
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.p2.metadata.Version;
+import org.junit.Test;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
-public class IUListFormatterTest extends TestCase {
-
+public class IUListFormatterTest {
+ @Test
public void testFormat() {
IUListFormatter format = new IUListFormatter("${id}=${id},${version},${org.eclipse.equinox.p2.name}");
String result = format.format(asList(createIU("iu1", "1.0.0", "name", null)));
assertEquals("iu1=iu1,1.0.0,name", result);
}
+ @Test
public void testFormat_MultipleIUs() {
IUListFormatter format = new IUListFormatter("${id}=${version},${org.eclipse.equinox.p2.name}");
String result = format.format(asList(//
createIU("iu1", "1.0.0", "name", null), //
createIU("iu2", "2.0.0", "name2", null)//
));
- assertEquals("iu1=1.0.0,name" + System.getProperty("line.separator") + "iu2=2.0.0,name2", result);
+ assertEquals("iu1=1.0.0,name" + System.lineSeparator() + "iu2=2.0.0,name2", result);
}
+ @Test
public void testFormat_UnknownFormatOption() {
IUListFormatter format = new IUListFormatter("${id}${UNKNOWN}");
String result = format.format(asList(createIU("iu1", "1.0.0", "name", null)));
assertEquals("iu1", result);
}
+ @Test
public void testFormat_Malformed() {
IUListFormatter format = new IUListFormatter("${id=${version");
String result = format.format(asList(createIU("iu1", "1.0.0", "name", null)));
@@ -64,37 +74,35 @@ public class IUListFormatterTest extends TestCase {
}
private static IInstallableUnit createIU(String id, String version, String name, String description) {
- IInstallableUnit iu = createNiceMock(id, IInstallableUnit.class);
- expect(iu.getId()).andStubReturn(id);
- expect(iu.getVersion()).andStubReturn(Version.create(version));
+ IInstallableUnit iu = mock(IInstallableUnit.class);
+ when(iu.getId()).thenReturn(id);
+ when(iu.getVersion()).thenReturn(Version.create(version));
final Map<String, String> properties = new HashMap<>(3, 1);
properties.put(IInstallableUnit.PROP_NAME, name);
properties.put(IInstallableUnit.PROP_DESCRIPTION, description);
- expect(iu.getProperties()).andStubReturn(properties);
- expect(iu.getProperty((String) anyObject())).andStubAnswer(new MapAnswer<>(properties));
- expect(iu.getProperty((String) anyObject(), (String) anyObject())).andStubAnswer(new MapAnswer<>(properties));
- replay(iu);
+ when(iu.getProperties()).thenReturn(properties);
+ when(iu.getProperty(anyString())).thenAnswer(new MapAnswer<>(properties));
+ when(iu.getProperty(anyString(), anyString())).thenAnswer(new MapAnswer<>(properties));
return iu;
}
private static IInstallableUnit createIU(String id, String version, int propCount) {
- IInstallableUnit iu = createNiceMock(id, IInstallableUnit.class);
- expect(iu.getId()).andStubReturn(id);
- expect(iu.getVersion()).andStubReturn(Version.create(version));
+ IInstallableUnit iu = mock(IInstallableUnit.class);
+ when(iu.getId()).thenReturn(id);
+ when(iu.getVersion()).thenReturn(Version.create(version));
final Map<String, String> properties = new HashMap<>(propCount, 1);
for (int i = 0; i < propCount; i++) {
properties.put("prop_" + i, "propValue_" + i);
}
- expect(iu.getProperties()).andStubReturn(properties);
- expect(iu.getProperty((String) anyObject())).andStubAnswer(new MapAnswer<>(properties));
- expect(iu.getProperty((String) anyObject(), (String) anyObject())).andStubAnswer(new MapAnswer<>(properties));
- replay(iu);
+ when(iu.getProperties()).thenReturn(properties);
+ when(iu.getProperty(anyString())).thenAnswer(new MapAnswer<>(properties));
+ when(iu.getProperty(anyString(), anyString())).thenAnswer(new MapAnswer<>(properties));
return iu;
}
- private static final class MapAnswer<T> implements IAnswer<T> {
+ private static final class MapAnswer<T> implements Answer<T> {
private final Map<?, T> map;
MapAnswer(Map<?, T> map) {
@@ -102,8 +110,8 @@ public class IUListFormatterTest extends TestCase {
}
@Override
- public T answer() throws Throwable {
- return map.get(getCurrentArguments()[0]);
+ public T answer(InvocationOnMock arg) throws Throwable {
+ return map.get(arg.getArguments()[0]);
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/OperationGenerationTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/OperationGenerationTest.java
index 84d30c9fb..a8c5524cc 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/OperationGenerationTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/OperationGenerationTest.java
@@ -246,9 +246,9 @@ public class OperationGenerationTest extends AbstractProvisioningTest {
new OperationGenerator(plan).generateOperation(from, to);
List<Operand> operands = Arrays.asList(plan.getOperands());
//We are uninstalling myBundle 1.0 and 2.0. 3.0 stays unchanged.
- for (int i = 0; i < operands.size(); i++) {
- assertNotSame("3.0", three, ((InstallableUnitOperand) operands.get(i)).first());
- assertNotSame("3.0.1", three, ((InstallableUnitOperand) operands.get(i)).second());
+ for (Operand operand : operands) {
+ assertNotSame("3.0", three, ((InstallableUnitOperand) operand).first());
+ assertNotSame("3.0.1", three, ((InstallableUnitOperand) operand).second());
}
assertEquals("3.1", one, ((InstallableUnitOperand) operands.get(0)).first());
assertNull("3.2", ((InstallableUnitOperand) operands.get(0)).second());
@@ -278,9 +278,9 @@ public class OperationGenerationTest extends AbstractProvisioningTest {
new OperationGenerator(plan).generateOperation(from, to);
List<Operand> operands = Arrays.asList(plan.getOperands());
//Two is already in the system therefore it will not be in the operands
- for (int i = 0; i < operands.size(); i++) {
- assertNotSame("2.0", two, ((InstallableUnitOperand) operands.get(i)).first());
- assertNotSame("2.1", two, ((InstallableUnitOperand) operands.get(i)).second());
+ for (Operand operand : operands) {
+ assertNotSame("2.0", two, ((InstallableUnitOperand) operand).first());
+ assertNotSame("2.1", two, ((InstallableUnitOperand) operand).second());
}
//three is an update of one
assertEquals("2.2", 1, operands.size());
@@ -311,9 +311,9 @@ public class OperationGenerationTest extends AbstractProvisioningTest {
new OperationGenerator(plan).generateOperation(from, to);
List<Operand> operands = Arrays.asList(plan.getOperands());
//Two is already in the system therefore it will not be in the operands
- for (int i = 0; i < operands.size(); i++) {
- assertNotSame("2.0", two, ((InstallableUnitOperand) operands.get(i)).first());
- assertNotSame("2.1", two, ((InstallableUnitOperand) operands.get(i)).second());
+ for (Operand operand : operands) {
+ assertNotSame("2.0", two, ((InstallableUnitOperand) operand).first());
+ assertNotSame("2.1", two, ((InstallableUnitOperand) operand).second());
}
//We install three and uninstall one
assertEquals("2.2", 2, operands.size());
@@ -374,10 +374,10 @@ public class OperationGenerationTest extends AbstractProvisioningTest {
}
private void assertContainsInstallableUnitOperand(String message, List<Operand> operands, InstallableUnitOperand operand) {
- for (int i = 0; i < operands.size(); i++) {
- if (!(operands.get(i) instanceof InstallableUnitOperand))
+ for (Operand op : operands) {
+ if (!(op instanceof InstallableUnitOperand))
continue;
- InstallableUnitOperand cmp = (InstallableUnitOperand) operands.get(i);
+ InstallableUnitOperand cmp = (InstallableUnitOperand) op;
if (cmp.first() != null && cmp.first().equals(operand.first()) && cmp.second() != null && cmp.second().equals(operand.second()))
return;
}
@@ -505,10 +505,10 @@ public class OperationGenerationTest extends AbstractProvisioningTest {
}
public void assertContainsConfigurationChange(String message, List<Operand> operands) {
- for (int i = 0; i < operands.size(); i++) {
- if (!(operands.get(i) instanceof InstallableUnitOperand))
+ for (Operand operand : operands) {
+ if (!(operand instanceof InstallableUnitOperand))
continue;
- InstallableUnitOperand op = (InstallableUnitOperand) operands.get(i);
+ InstallableUnitOperand op = (InstallableUnitOperand) operand;
if (op.first() != null && op.first().equals(op.second())) {
return;
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/directorywatcher/AbstractDirectoryWatcherTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/directorywatcher/AbstractDirectoryWatcherTest.java
index 013e0be8f..8ddb76513 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/directorywatcher/AbstractDirectoryWatcherTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/directorywatcher/AbstractDirectoryWatcherTest.java
@@ -35,8 +35,8 @@ public abstract class AbstractDirectoryWatcherTest extends AbstractProvisioningT
@Override
protected void tearDown() throws Exception {
super.tearDown();
- for (Iterator<File> iter = toRemove.iterator(); iter.hasNext();)
- delete(iter.next());
+ for (File file : toRemove)
+ delete(file);
toRemove = new HashSet<>();
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/directorywatcher/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/directorywatcher/AllTests.java
index 72bdab6e5..44621a3d0 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/directorywatcher/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/directorywatcher/AllTests.java
@@ -13,19 +13,14 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.directorywatcher;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all automated director tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(DirectoryWatcherTest.class);
- suite.addTestSuite(RepositoryListenerTest.class);
- suite.addTestSuite(ProfileSynchronizerTest.class);
- return suite;
- }
-
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ DirectoryWatcherTest.class, RepositoryListenerTest.class, ProfileSynchronizerTest.class })
+public class AllTests {
+// test suite
} \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/AllTests.java
index 0d0f9c1a5..0db6275a8 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/AllTests.java
@@ -7,44 +7,27 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.engine;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all engine tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(CertificateCheckerTest.class);
- suite.addTestSuite(DownloadManagerTest.class);
- suite.addTestSuite(InstructionParserTest.class);
- suite.addTestSuite(EngineTest.class);
- suite.addTestSuite(PhaseApplicabilityTest.class);
- suite.addTestSuite(PhaseSetTest.class);
- suite.addTestSuite(PhaseTest.class);
- suite.addTestSuite(ParameterizedProvisioningActionTest.class);
- suite.addTestSuite(ProfileMetadataRepositoryTest.class);
- suite.addTestSuite(ProfileTest.class);
- suite.addTestSuite(ProfilePreferencesTest.class);
- suite.addTestSuite(ProfileRegistryTest.class);
- suite.addTestSuite(ProvisioningContextTest.class);
- suite.addTestSuite(SurrogateProfileHandlerTest.class);
- suite.addTestSuite(ActionManagerTest.class);
- suite.addTestSuite(TouchpointManagerTest.class);
- suite.addTestSuite(TouchpointTest.class);
- suite.addTestSuite(ProvisioningEventTest.class);
- suite.addTestSuite(VariableTest.class);
- suite.addTestSuite(VariableTest2.class);
- suite.addTestSuite(VariableTest3.class);
- suite.addTestSuite(DebugHelperTest.class);
- return suite;
- }
-
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ CertificateCheckerTest.class, DownloadManagerTest.class, InstructionParserTest.class, EngineTest.class,
+ PhaseApplicabilityTest.class, PhaseSetTest.class, PhaseTest.class, ParameterizedProvisioningActionTest.class,
+ ProfileMetadataRepositoryTest.class, ProfileTest.class, ProfilePreferencesTest.class, ProfileRegistryTest.class,
+ ProvisioningContextTest.class, SurrogateProfileHandlerTest.class, ActionManagerTest.class,
+ TouchpointManagerTest.class, TouchpointTest.class, ProvisioningEventTest.class, VariableTest.class,
+ VariableTest2.class, VariableTest3.class, DebugHelperTest.class
+})
+public class AllTests {
+// test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/CertificateCheckerTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/CertificateCheckerTest.java
index 79c58faf5..ba56cc6ea 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/CertificateCheckerTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/CertificateCheckerTest.java
@@ -15,12 +15,28 @@ package org.eclipse.equinox.p2.tests.engine;
import java.io.File;
import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.security.cert.Certificate;
+import java.util.Comparator;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Stream;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.equinox.internal.p2.artifact.processors.pgp.PGPSignatureVerifier;
+import org.eclipse.equinox.internal.p2.core.AgentLocation;
import org.eclipse.equinox.internal.p2.core.ProvisioningAgent;
import org.eclipse.equinox.internal.p2.engine.EngineActivator;
import org.eclipse.equinox.internal.p2.engine.phases.CertificateChecker;
+import org.eclipse.equinox.internal.p2.metadata.ArtifactKey;
+import org.eclipse.equinox.internal.provisional.p2.repository.DefaultPGPPublicKeyService;
+import org.eclipse.equinox.p2.core.IAgentLocation;
+import org.eclipse.equinox.p2.core.ProvisionException;
import org.eclipse.equinox.p2.core.UIServices;
+import org.eclipse.equinox.p2.engine.IProfileRegistry;
+import org.eclipse.equinox.p2.metadata.Version;
+import org.eclipse.equinox.p2.repository.artifact.spi.ArtifactDescriptor;
+import org.eclipse.equinox.p2.repository.spi.PGPPublicKeyService;
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
import org.eclipse.equinox.p2.tests.TestActivator;
import org.eclipse.equinox.p2.tests.TestData;
@@ -29,6 +45,98 @@ import org.eclipse.equinox.p2.tests.TestData;
* Tests for {@link CertificateChecker}.
*/
public class CertificateCheckerTest extends AbstractProvisioningTest {
+ private static final String PGP_SIGNER1_PUBLIC_KEY = "-----BEGIN PGP PUBLIC KEY BLOCK-----\n" + "\n"
+ + "mQGNBGB1bugBDADQ5l7YnS9hNFRkBKSrvVNHt/TxeHaNNIHkdTC56I1QdThsOt4Y\n"
+ + "oQRI27AEOaY1GFEi6+QqwxALcMMMSTgkCRs2NFGqlWMVzNYE7bJMWChVa7uQ/9CG\n"
+ + "1HRbXwVwQx3hFgU4kmw1Kl/IH4LX76d9gAMyFANPjYZJSjbAv54wOlKruDRgpQFF\n"
+ + "pZeuXW7SnerL6sgd/+ZroikdkrjIs5t18C2ofzf6YnOokYkEEJSAEoQK5svVzT4G\n"
+ + "H3sw6FlE41RvnYKpuhvvyQhKjISDYfRaIL4JIpvR9Uko48eN9x654lJaucbMiLP4\n"
+ + "ROI9q7RQ6t1IMCiIN9QKgS+nVtHnN9MnXS0czGxfLdStv6bB+xgUoyBc7Uiqf4X0\n"
+ + "x8z9PE6O1L6Rgy2JMJHPgLWCF8h/u1FO88Br3I7TMzu2q/cg3k18L7eujnxVyYiD\n"
+ + "YIMxDBXBNnGCKRC4shgt8e+PzAPXIDFvbv7HOaERnx5c6eLl0tD12ocQeZHp1VlW\n"
+ + "nQteQ6CfvN07dNUAEQEAAbQ3RWNsaXBzZSBwMiB0ZXN0IFNpZ25lciAxIDxzaWdu\n"
+ + "ZXIxQGZha2V1c2VyLmVjbGlwc2Uub3JnPokB1AQTAQgAPhYhBOmWxnCqf2VAm/Xb\n"
+ + "VhOeONkN7RHwBQJgdW7oAhsDBQkDwmcABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheA\n"
+ + "AAoJEBOeONkN7RHwuXYL/Ri2gHoXELN79dWnuC5hjh7XgKquqlZg3qLgkLyA/54/\n"
+ + "ERx7HLLMHjU5tVIVacZ9UWb30Bzx6iVx2hMtL/0FFJ1S0iwwTDXft/9EoPvsmmEx\n"
+ + "VYEiSx5HxsPXM+XofMvi75nN34iMUIU3SgKLzHqlWcC3T7XjDWKC8TkTcutIAaIz\n"
+ + "BMRssktJR3OYzWbbwzgz83sVpofWGfxIW91H19Zr8rjIXiNyy1ulRnfsaz+xXeXf\n"
+ + "KxZZs00FtIIOeWBhCtsb8/8Uv3FRDK6+lX3xAqfMG67azJXpFafWJGiymypfSwi6\n"
+ + "JA866WOzw9DfbqWIlY/EMIhyZrsWnGiGhhAavwOiSWYV65ooFYooKHNmIekpvRZS\n"
+ + "wlGuwvnZr+2471urkCoG8Yz2Ey28Qjc0NgXlXAkqFUkO2gNPFsXkk1EC+vzO2llp\n"
+ + "qROS9pt25dEBcUSgfcjFOFWv2Z5IdmGjFEe46CJNEVzNgkP+97wJP7wpcOCSF/nn\n"
+ + "eOBj4b7Q0suJ+MsE/Fx6SbkBjQRgdW7oAQwAst4QGHd9w+V3UHgRMYZISfYApcAK\n"
+ + "2qBT1Zvf01QE38JUtDPKJarDlgxcaXuX6jOcbF60OMd59dhNmpaZYpocJZMgnESj\n"
+ + "0/Tn4cZfWwtOo1Pom8Lbg1zGKIYAaR2mTb8mkCwJwsZCUZCmh+zspacxdVRdmWmC\n"
+ + "XcFxFc/6gBKxcPFZf93JZaI33qsLpxyA57AJV5ck/TY1iFmA6HFxehamsAVdd56g\n"
+ + "uyORekJJlZHXE9pICVEGqVUfdbSQXEiS386kZDftXe36phdj1gtFsRLHoBI8+L7o\n"
+ + "2vrdnj1UZgtvxBbJJ+QAfhF8+f84RFIi9CTY8cheX+YfDMEdg9J9LG54X5P3O1ZX\n"
+ + "eEvudKk/hqWBf+2rrdkhdFyyGRK0yTrO+PQ+tZHhcHPqfo4EiVktC4BTpB6QtLBY\n"
+ + "NAGYMRddmZMgp4lE2xGib8SYwonct3y1fmB+x67lq65IFVM/IAwN6BuMXtgb+Zkm\n"
+ + "iT+eKgc1pK4uCsZJbQAlPzkDGQV69GNyjlphABEBAAGJAbwEGAEIACYWIQTplsZw\n"
+ + "qn9lQJv121YTnjjZDe0R8AUCYHVu6AIbDAUJA8JnAAAKCRATnjjZDe0R8Oe8DADQ\n"
+ + "CTBXxrmTJTSZUeKVo0C1kDHQaaV+RiRmquYR3WxFI6ugJFFWpzgG9V8Q7vYGeZFM\n"
+ + "HYM/tDuY/gdMwHBcR13yYyozslar7qas4LL/bYgOqq+SiSGTDEBW+00+5Wlwmlrv\n"
+ + "ubLc6ow9q2sTmOprq3Q7fei+sEANVnymBxnVV/ZIVGPpm/Rkh1JFGT/8SEyKkCut\n"
+ + "G23JMM/06cIhZwdD6aWSZK4EFw0lwfXyr8l3ZqH0WydVEef1DUNIRM48O0YdwS9u\n"
+ + "jd5iKKKJlb4XxwGi6IKSzpXF7pFrm6vqS306u3Fnak5hb2gs8dpnNo7UL1gUm5pr\n"
+ + "8vJ3xhg15KCjYKz8k6ZDsIWULTXUJ23i8ZwqyQaj1bajwN0+/MfC0ZkoQtQ2I/TH\n"
+ + "cKLSMOR+Tji6n7FjOcVl6VoDKTjdxj9OgAlbZ7W9jEArrUjDdCk/m4jq9h9phpli\n"
+ + "BHoul/nauwtlUnQes1V+39Rk9l7gddKWg3dlwg6CjB5MkmcaeyxgANcyKgrunpg=\n" + "=JYpC\n"
+ + "-----END PGP PUBLIC KEY BLOCK-----\n";
+ private static final String PGP_SIGNER1_SIGNATURE = "-----BEGIN PGP SIGNATURE-----\n" + "\n"
+ + "iQHRBAABCAA7FiEE6ZbGcKp/ZUCb9dtWE5442Q3tEfAFAmB4Bf8dHHNpZ25lcjFA\n"
+ + "ZmFrZXVzZXIuZWNsaXBzZS5vcmcACgkQE5442Q3tEfBPuAwAhE4zA7BswKFhEtzm\n"
+ + "DS3EbyRr/U13sV01YxqGtxYDCfrOt8TGVPXJSvo0AVP4vLFc5b+0jtVFoarFJNBu\n"
+ + "xhbVuyC72YdqudNbncSlW6KG5SgeWIM//ThKfl95pOWRWvJEoKJhmDwbDqhZYtL5\n"
+ + "SECegnWGtGx/klFtZihzHYJE/nfSnhySDaz5lCvXFFYRhIbNmNm2Yq7ztCOsN4Ys\n"
+ + "3uN+GEdoXGvv1DFg/xZPvwCOhZGsSQfkl1jmUwVltgKrw9OCFbdfYz7H6dbGWhRu\n"
+ + "2XpuKxPXGavKfpSvssVQIZ6aWi5W6wp5lZAQQddZvYAv3Gi5CZZcUT7ayFJYdD23\n"
+ + "p9jz76G7MXm0f0uNT9B57T72QryokUIEIJYsCb6lNjWUQB4cd0+JesM7sHwweOQ3\n"
+ + "7iTFc+WgVJkP0e695mm1tcvtQHUPbIItYJUsndyLgGInzglxN8+F4U4k8uapydI9\n"
+ + "RmV2NVAifYp8z95Am5AnlG8lqjwrWk5bMbJH82QsQESrNT/h\n" + "=8Vrn\n" + "-----END PGP SIGNATURE-----\n";
+
+ private static final String PGP_SIGNER2_PUBLIC_KEY = "-----BEGIN PGP PUBLIC KEY BLOCK-----\r\n" + "\r\n"
+ + "mQINBGHUyxYBEADATeNx4XA4H2fP9mD5xwlIyh7qvHLezgXpqCwNS9ATqBwnfrCV\r\n"
+ + "06a+pfSLsLoXrP/sdaB5WhijfuxTis18RMfoDVwGMRqyD2GiBCl2vwJDg3BUwHnc\r\n"
+ + "H7W6XkWKO7dkPmF+TUbD3cTWZ7cvrPmMjinmXaq8htuktGuE2VEGZRnuG1m+ChDM\r\n"
+ + "PnSb1ioFS2+MJv13P2fagVk2qC95DkPJGpMk3CY3ghLDEaY/KaJl+8axAlUUUk9N\r\n"
+ + "d3k/KVxxf5k3g26EVQkWWgH2mmolptGO101xW64iked97Cy4NK2yafOF/wmpsavx\r\n"
+ + "PGpOewnDgAJBBPkum6mPH0vcOZgxmLyh4uqfPfr3IaBQlbJLN2dXaDsV83j5t1wZ\r\n"
+ + "2qxOPcWBfORm6W7dC0TQgCXbEG0geMBpJtvnMX83Q2ORqDpjbHRJsV2k+8NxaXON\r\n"
+ + "pYXGr+Lj/9n0xfNEDXhCdGab0XP2tVZ5jfr2OQ5dAomEaPqK5Kq7akoWMddpDLNC\r\n"
+ + "G4IvH8G0cxwruJk00uwd6Nd2NVqVMRYCsBbA89VanUnutLUIpVnnOAetlX9blXHO\r\n"
+ + "JtmiCPGgHyp+iYGhKYVzfuZQyFhonbi0AhidJDvbHsoLT3p4Mcog1B9y6MODBE7R\r\n"
+ + "jwrU+qMqYsYeFhGYKbYyXv9TfEyUvtCQ/GnTtRJAQyicFdOdbK37WecS6QARAQAB\r\n"
+ + "tDdFY2xpcHNlIHAyIHRlc3QgU2lnbmVyIDIgPHNpZ25lcjJAZmFrZXVzZXIuZWNs\r\n"
+ + "aXBzZS5vcmc+iQJYBBMBCABCFiEEzZ1aK4a8T+GDlFHh4vaU9BsKs3AFAmHUyxYC\r\n"
+ + "GwMFCQPCZwAFCwkIBwIDIgIBBhUKCQgLAgQWAgMBAh4HAheAAAoJEOL2lPQbCrNw\r\n"
+ + "wH4QAIiCaw1mREgt4ldz7hQvmGxdMuQwVKZPzbOIAlYbZBo0q9SmeMf/CBCO90hg\r\n"
+ + "LFmJmsZV4KUU5NKI7UwkDVrpUCl00Ok6+gtiUTId2tRcwXI+25I478VX27j6OkQj\r\n"
+ + "7Xr6giv8cn8nstt5CF6xxeqrxvpmnZC0u30jE6CL6SdXSd0vViFDPQj3KgGJCRc9\r\n"
+ + "St+LHB3XJTsadihzQnscqI4E2i5Z3Uj1GogqxtR59M1NAXubl5dySM0qHhwn8O+6\r\n"
+ + "lcgCCeuyMLLde1M1v8w07jdRUM+IFqHrRnE89EPH3MQeZbQ3UfFXK2r7wx2BJCqL\r\n"
+ + "Irtn68kz834ByKchGR6DqaAw0q+iF2QkgzYxpwai41BgmtUCYnj+HxQNIF4KTzDe\r\n"
+ + "nd8mDAPWttGCoVuV2Tyu9peYOaqyAZ2PZwUEH5MqihPCbenU17RLXzRu/IT/SH47\r\n"
+ + "NGrN3yKGgLZr2EVWPWFibpoxP4G4NUCHsY75uiL2EWPVSjK/+OOeHIE5k3U3lYwB\r\n"
+ + "7clhBwMkIhQHJ+a0SHRkKixkwrQDw4veKY4LaD0NCBLHFoV5L9orH1ToGM729kr/\r\n"
+ + "+4I1VQFkL3KvfLjmRbTUgwHeqEquQ96JtqowbNwlpujfHXQKDNsuiKGP5OazXll5\r\n"
+ + "sH2CR7e4ePqhhzxjLvi9e/79Khq+08eqllS3rs06EXEAJYTo\r\n" + "=807V\r\n"
+ + "-----END PGP PUBLIC KEY BLOCK-----\r\n" + "";
+ private static final String PGP_SIGNER2_SIGNATURE = "-----BEGIN PGP SIGNATURE-----\n" + "\n"
+ + "iQIzBAABCAAdFiEEzZ1aK4a8T+GDlFHh4vaU9BsKs3AFAmHUy4UACgkQ4vaU9BsK\n"
+ + "s3DjuhAAvlCtqhK/7/aAG0/cXtlpu0fPC176OmEmBGTjCsrGdWwuRHsqXbLnMBVZ\n"
+ + "0D1m38MDvuYZfJuP7arw7USKp+Jy54Bv/YwvHLl74YTx1BN9hAN9QvyLxLZOjdm1\n"
+ + "/ipiWUuUgGa/brxEZNQqSR0w17TqXkIJHeFFS3T/rNH/Ckom5vQhAEm9HwJYeGdt\n"
+ + "tJ5BUl7BS1rrEOs+xmzqLu6AaERREc5gGRniJe7aP2Ke+/wL6oOLG3v/6vsJSM2e\n"
+ + "t+Olo4Ugc6JbdNrwvTO8kkTxsi0gp2CPhKl3RZVnbGoe4tXHawmk2V3eVTa0w6iP\n"
+ + "ARPJ/xH2dDsRi4Kz3OkcyQOI24jGmaqpUrx3+f2BnEbcVs4cHIJc+O2gh1WUz6uY\n"
+ + "Zw7qtK0W3H+E7RuJLCScgasPZZPBzyA6B3o2J3bfXnG5r41aJEuiq3otgllrBakG\n"
+ + "u7fX00h8lylgRrlCb4mquZxxRsrl+ac6U5eYdDMkK5VNkXgrus8FedIh3vmqI7RR\n"
+ + "ou9GEjho4kebt1Y1yTAQnxWBtTUG2hFt6VirKydI7+ZcCZmbD9lrZT6xVQOCkyUQ\n"
+ + "Cwy7vNPWkpMBBRVLoaThD2+7znDpb6wNYf9mDCcCK8tyuVCDSYEFX6jlqv1yfpNl\n"
+ + "QlYE1biLAHl09NH397Ta/9cWdfu68I7Mv4Ev2zu45OGa83h820M=\n" + "=9Ha/\n" + "-----END PGP SIGNATURE-----\n";
+
class CertificateTestService extends UIServices {
public boolean unsignedReturnValue = true;
public boolean wasPrompted = false;
@@ -55,14 +163,22 @@ public class CertificateCheckerTest extends AbstractProvisioningTest {
CertificateTestService serviceUI;
File unsigned;
private ProvisioningAgent testAgent;
+ private Path agentLocation;
@Override
protected void setUp() throws Exception {
serviceUI = new CertificateTestService();
testAgent = new ProvisioningAgent();
testAgent.registerService(UIServices.SERVICE_NAME, serviceUI);
+ agentLocation = Files.createTempDirectory("certificateTest");
+ testAgent.setLocation(agentLocation.toUri());
testAgent.setBundleContext(TestActivator.getContext());
checker = new CertificateChecker(testAgent);
+ PGPPublicKeyService keyService = testAgent.getService(PGPPublicKeyService.class);
+ if (keyService instanceof DefaultPGPPublicKeyService) {
+ ((DefaultPGPPublicKeyService) keyService).setKeyServers(Set.of());
+ }
+
try {
unsigned = TestData.getFile("CertificateChecker", "unsigned.jar");
} catch (IOException e) {
@@ -72,15 +188,29 @@ public class CertificateCheckerTest extends AbstractProvisioningTest {
assertTrue("1.0", unsigned.exists());
}
+ @Override
+ protected void tearDown() throws Exception {
+ try (Stream<Path> walk = Files.walk(agentLocation)) {
+ walk.sorted(Comparator.reverseOrder()).forEach(path -> {
+ try {
+ Files.delete(path);
+ } catch (IOException e) {
+ // Ignore
+ }
+ });
+ }
+ }
+
/**
- * Tests that installing unsigned content is not allowed when the policy says it must fail.
+ * Tests that installing unsigned content is not allowed when the policy says it
+ * must fail.
*/
public void testPolicyAllow() {
try {
- //if the service is consulted it will say no
+ // if the service is consulted it will say no
serviceUI.unsignedReturnValue = false;
System.getProperties().setProperty(EngineActivator.PROP_UNSIGNED_POLICY, EngineActivator.UNSIGNED_ALLOW);
- checker.add(unsigned);
+ checker.add(Map.of(new ArtifactDescriptor(new ArtifactKey("what", "ever", Version.create("1"))), unsigned));
IStatus result = checker.start();
assertEquals("1.0", IStatus.OK, result.getSeverity());
} finally {
@@ -89,12 +219,13 @@ public class CertificateCheckerTest extends AbstractProvisioningTest {
}
/**
- * Tests that installing unsigned content is not allowed when the policy says it must fail.
+ * Tests that installing unsigned content is not allowed when the policy says it
+ * must fail.
*/
public void testPolicyFail() {
try {
System.getProperties().setProperty(EngineActivator.PROP_UNSIGNED_POLICY, EngineActivator.UNSIGNED_FAIL);
- checker.add(unsigned);
+ checker.add(Map.of(new ArtifactDescriptor(new ArtifactKey("what", "ever", Version.create("1"))), unsigned));
IStatus result = checker.start();
assertEquals("1.0", IStatus.ERROR, result.getSeverity());
@@ -104,13 +235,14 @@ public class CertificateCheckerTest extends AbstractProvisioningTest {
}
/**
- * Tests that installing unsigned content with the "prompt" policy and the prompt succeeds.
+ * Tests that installing unsigned content with the "prompt" policy and the
+ * prompt succeeds.
*/
public void testPolicyPromptSuccess() {
try {
System.getProperties().setProperty(EngineActivator.PROP_UNSIGNED_POLICY, EngineActivator.UNSIGNED_PROMPT);
serviceUI.unsignedReturnValue = true;
- checker.add(unsigned);
+ checker.add(Map.of(new ArtifactDescriptor(new ArtifactKey("what", "ever", Version.create("1"))), unsigned));
IStatus result = checker.start();
assertEquals("1.0", IStatus.OK, result.getSeverity());
assertTrue("1.1", serviceUI.wasPrompted);
@@ -125,20 +257,21 @@ public class CertificateCheckerTest extends AbstractProvisioningTest {
public void testPolicyDefault() {
System.getProperties().remove(EngineActivator.PROP_UNSIGNED_POLICY);
serviceUI.unsignedReturnValue = true;
- checker.add(unsigned);
+ checker.add(Map.of(new ArtifactDescriptor(new ArtifactKey("what", "ever", Version.create("1"))), unsigned));
IStatus result = checker.start();
assertEquals("1.0", IStatus.OK, result.getSeverity());
assertTrue("1.1", serviceUI.wasPrompted);
}
/**
- * Tests that installing unsigned content with the "prompt" policy and the prompt says no.
+ * Tests that installing unsigned content with the "prompt" policy and the
+ * prompt says no.
*/
public void testPolicyPromptCancel() {
try {
System.getProperties().setProperty(EngineActivator.PROP_UNSIGNED_POLICY, EngineActivator.UNSIGNED_PROMPT);
serviceUI.unsignedReturnValue = false;
- checker.add(unsigned);
+ checker.add(Map.of(new ArtifactDescriptor(new ArtifactKey("what", "ever", Version.create("1"))), unsigned));
IStatus result = checker.start();
assertEquals("1.0", IStatus.CANCEL, result.getSeverity());
assertTrue("1.1", serviceUI.wasPrompted);
@@ -148,16 +281,17 @@ public class CertificateCheckerTest extends AbstractProvisioningTest {
}
/**
- * Tests that trust checks that occur in a headless environment are properly treated
- * as permissive, but not persistent, the same way as it would be if the service registration
- * were not there.
+ * Tests that trust checks that occur in a headless environment are properly
+ * treated as permissive, but not persistent, the same way as it would be if the
+ * service registration were not there.
*/
public void testBug291049() {
try {
// Intentionally replace our service with a null service
testAgent.registerService(UIServices.SERVICE_NAME, null);
- checker.add(unsigned);
- // TODO need to add some untrusted files here, too. To prove that we treated them as trusted temporarily
+ checker.add(Map.of(new ArtifactDescriptor(new ArtifactKey("what", "ever", Version.create("1"))), unsigned));
+ // TODO need to add some untrusted files here, too. To prove that we treated
+ // them as trusted temporarily
System.getProperties().setProperty(EngineActivator.PROP_UNSIGNED_POLICY, EngineActivator.UNSIGNED_PROMPT);
IStatus result = checker.start();
assertTrue("1.0", result.isOK());
@@ -165,4 +299,85 @@ public class CertificateCheckerTest extends AbstractProvisioningTest {
System.getProperties().remove(EngineActivator.PROP_UNSIGNED_POLICY);
}
}
+
+ public void testPGPSignedArtifactUntrustedKey() throws IOException, ProvisionException {
+ try {
+ // create a test profile
+ testAgent.registerService("FORCED_SELF", IProfileRegistry.SELF);
+ testAgent.registerService(IAgentLocation.SERVICE_NAME,
+ new AgentLocation(Files.createTempDirectory(
+ CertificateCheckerTest.class.getName() + "testPGPSignedArtifactUntrustedKey-profile")
+ .toUri()));
+ testAgent.getService(IProfileRegistry.class).addProfile(IProfileRegistry.SELF);
+
+ unsigned = TestData.getFile("pgp/repoPGPOK/plugins", "blah_1.0.0.123456.jar");
+ ArtifactDescriptor artifactDescriptor = new ArtifactDescriptor(
+ new ArtifactKey("what", "ever", Version.create("1")));
+ artifactDescriptor
+ .addProperties(Map.of(PGPSignatureVerifier.PGP_SIGNATURES_PROPERTY_NAME, PGP_SIGNER1_SIGNATURE, //
+ PGPSignatureVerifier.PGP_SIGNER_KEYS_PROPERTY_NAME, PGP_SIGNER1_PUBLIC_KEY));
+ checker.add(Map.of(artifactDescriptor, unsigned));
+ System.getProperties().setProperty(EngineActivator.PROP_UNSIGNED_POLICY, EngineActivator.UNSIGNED_PROMPT);
+ IStatus result = checker.start();
+ assertFalse(result.isOK());
+ assertTrue(serviceUI.wasPrompted);
+ } finally {
+ System.getProperties().remove(EngineActivator.PROP_UNSIGNED_POLICY);
+ }
+ }
+
+ public void testPGPSignedArtifactTrustedKeyInProvideCapability() throws IOException {
+ try {
+ unsigned = TestData.getFile("pgp/repoPGPOK/plugins", "blah_1.0.0.123456.jar");
+ ArtifactDescriptor artifactDescriptor = new ArtifactDescriptor(
+ new ArtifactKey("what", "ever", Version.create("1")));
+ artifactDescriptor
+ .addProperties(Map.of(PGPSignatureVerifier.PGP_SIGNATURES_PROPERTY_NAME, PGP_SIGNER2_SIGNATURE,
+ PGPSignatureVerifier.PGP_SIGNER_KEYS_PROPERTY_NAME, PGP_SIGNER2_PUBLIC_KEY));
+ checker.add(Map.of(artifactDescriptor, unsigned));
+ System.getProperties().setProperty(EngineActivator.PROP_UNSIGNED_POLICY, EngineActivator.UNSIGNED_PROMPT);
+ IStatus result = checker.start();
+ assertTrue(result.isOK());
+ assertFalse(serviceUI.wasPrompted);
+ } finally {
+ System.getProperties().remove(EngineActivator.PROP_UNSIGNED_POLICY);
+ }
+ }
+
+ //// SECURITY ISSUE: next lines become an attack vector as we have no guarantee
+ //// the metadata of those IUs is safe/were signed.
+ //// https://bugs.eclipse.org/bugs/show_bug.cgi?id=576705#c4
+// public void testPGPSignedArtifactTrustedKeyInInstalledIU() throws ProvisionException, IOException {
+// try {
+// // create a test profile
+// testAgent.registerService("FORCED_SELF", IProfileRegistry.SELF);
+// testAgent
+// .registerService(IAgentLocation.SERVICE_NAME,
+// new AgentLocation(Files.createTempDirectory(
+// CertificateCheckerTest.class.getName() + "testPGPSignedArtifactTrustedKey-profile")
+// .toUri()));
+// IProfile testProfile = testAgent.getService(IProfileRegistry.class).addProfile(IProfileRegistry.SELF);
+// // install an IU that declares trusted keys
+// InstallableUnitDescription desc = new InstallableUnitDescription();
+// desc.setProperty(CertificateChecker.TRUSTED_KEY_STORE_PROPERTY, PGP_PUBLIC_KEY);
+// desc.setId("unitWithTrustedKeys");
+// desc.setVersion(Version.create("1.0.0"));
+// IEngine engine = testAgent.getService(IEngine.class);
+// IProvisioningPlan plan = engine.createPlan(testProfile, new ProvisioningContext(testAgent));
+// plan.addInstallableUnit(MetadataFactory.createInstallableUnit(desc));
+// assertTrue(engine.perform(plan, getMonitor()).isOK());
+//
+// unsigned = TestData.getFile("pgp/repoPGPOK/plugins", "blah_1.0.0.123456.jar");
+// ArtifactDescriptor artifactDescriptor = new ArtifactDescriptor(
+// new ArtifactKey("what", "ever", Version.create("1")));
+// artifactDescriptor.addProperties(Map.of(PGPSignatureVerifier.PGP_SIGNATURES_PROPERTY_NAME, PGP_SIGNATURE));
+// checker.add(Map.of(artifactDescriptor, unsigned));
+// System.getProperties().setProperty(EngineActivator.PROP_UNSIGNED_POLICY, EngineActivator.UNSIGNED_PROMPT);
+// IStatus result = checker.start();
+// assertTrue(result.isOK());
+// assertFalse(serviceUI.wasPrompted);
+// } finally {
+// System.getProperties().remove(EngineActivator.PROP_UNSIGNED_POLICY);
+// }
+// }
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/DebugHelperTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/DebugHelperTest.java
index b8fa368e5..a106298e4 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/DebugHelperTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/DebugHelperTest.java
@@ -14,12 +14,12 @@
package org.eclipse.equinox.p2.tests.engine;
import java.util.HashMap;
-import junit.framework.TestCase;
import org.eclipse.equinox.internal.p2.engine.DebugHelper;
import org.junit.Assert;
+import org.junit.Test;
-public class DebugHelperTest extends TestCase {
-
+public class DebugHelperTest {
+ @Test
public void testFormatParametersContainsNullValue() {
HashMap<String, Object> parameters = new HashMap<>();
parameters.put("key", null);
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/DownloadManagerTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/DownloadManagerTest.java
index 908bb64e9..bd344be8b 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/DownloadManagerTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/DownloadManagerTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2017 IBM Corporation and others.
+ * Copyright (c) 2007, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -17,7 +17,10 @@ import java.net.URI;
import java.net.URISyntaxException;
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.internal.p2.engine.DownloadManager;
import org.eclipse.equinox.p2.engine.ProvisioningContext;
import org.eclipse.equinox.p2.metadata.IArtifactKey;
@@ -177,7 +180,7 @@ public class DownloadManagerTest extends AbstractProvisioningTest {
IArtifactRequest[] requests = new IArtifactRequest[] {createArtifactRequest()};
manager.add(requests);
IStatus result = manager.start(null);
- assertTrue("1.0", result.isOK());
+ assertTrue(result.getMessage(), result.isOK());
// Right now the provisioning context adds these to the manager so
// we have to remove them so as not to affect other tests.
@@ -197,7 +200,7 @@ public class DownloadManagerTest extends AbstractProvisioningTest {
IArtifactRequest[] requests = new IArtifactRequest[] {createArtifactRequest()};
manager.add(requests);
IStatus result = manager.start(null);
- assertTrue("1.0", result.isOK());
+ assertTrue(result.getMessage(), result.isOK());
// Right now the provisioning context adds these to the manager so
// we have to remove them so as not to affect other tests.
@@ -224,7 +227,7 @@ public class DownloadManagerTest extends AbstractProvisioningTest {
IArtifactRequest[] requests = new IArtifactRequest[] {createArtifactRequest()};
manager.add(requests);
IStatus result = manager.start(null);
- assertTrue("1.0", result.isOK());
+ assertTrue(result.getMessage(), result.isOK());
// Right now the provisioning context adds these to the manager so
// we have to remove them so as not to affect other tests.
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/PhaseSetTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/PhaseSetTest.java
index 310665dfe..0cc4d9152 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/PhaseSetTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/PhaseSetTest.java
@@ -243,7 +243,6 @@ public class PhaseSetTest extends AbstractProvisioningTest {
@Test
public void testPauseAndResumeMoreThanOnce() throws ProvisionException, InterruptedException {
- // URI repoLoc = URI.create("http://download.eclipse.org/releases/indigo");
URI repoLoc = getTestData("Load test data.", "/testData/pausefeature").toURI();
final PhaseSet phaseSet = (PhaseSet) PhaseSetFactory.createDefaultPhaseSet();
final int threhold = 3;
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ProfileRegistryTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ProfileRegistryTest.java
index 1cf77c6a7..ac8cd521a 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ProfileRegistryTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ProfileRegistryTest.java
@@ -677,9 +677,9 @@ public class ProfileRegistryTest extends AbstractProvisioningTest {
assertEquals(3, timestamps.length);
int fail = 0;
- for (int i = 0; i < timestamps.length; i++) {
+ for (long timestamp : timestamps) {
try {
- registry.removeProfile(PROFILE_NAME, timestamps[i]);
+ registry.removeProfile(PROFILE_NAME, timestamp);
} catch (ProvisionException e) {
fail++;
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ProfileTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ProfileTest.java
index 4114955c9..c89fc8ec8 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ProfileTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ProfileTest.java
@@ -17,7 +17,6 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.StringReader;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
@@ -169,7 +168,7 @@ public class ProfileTest extends AbstractProvisioningTest {
}
private final static String PROFILE_TEST_TARGET = "profileTest";
- private final static Version PROFILE_TEST_VERSION = Version.create("0.0.1");
+ final static Version PROFILE_TEST_VERSION = Version.create("0.0.1");
private final static String PROFILE_TEST_ELEMENT = "test";
public static final String PROFILES_ELEMENT = "profiles"; //$NON-NLS-1$
@@ -191,8 +190,8 @@ public class ProfileTest extends AbstractProvisioningTest {
if (profiles.length > 0) {
start(PROFILES_ELEMENT);
attribute(COLLECTION_SIZE_ATTRIBUTE, profiles.length);
- for (int i = 0; i < profiles.length; i++) {
- writeProfile(profiles[i]);
+ for (IProfile profile : profiles) {
+ writeProfile(profile);
}
end(PROFILES_ELEMENT);
}
@@ -241,7 +240,7 @@ public class ProfileTest extends AbstractProvisioningTest {
}
}
- private final class TestHandler extends RootHandler {
+ final class TestHandler extends RootHandler {
private ProfilesHandler profilesHandler;
IProfile[] profiles;
@@ -289,8 +288,7 @@ public class ProfileTest extends AbstractProvisioningTest {
return new IProfile[0];
Map<String, IProfile> profileMap = new LinkedHashMap<>();
- for (Iterator<String> it = profileHandlers.keySet().iterator(); it.hasNext();) {
- String profileId = it.next();
+ for (String profileId : profileHandlers.keySet()) {
addProfile(profileId, profileMap);
}
@@ -314,13 +312,11 @@ public class ProfileTest extends AbstractProvisioningTest {
profile.setTimestamp(profileHandler.getTimestamp());
IInstallableUnit[] ius = profileHandler.getInstallableUnits();
if (ius != null) {
- for (int i = 0; i < ius.length; i++) {
- IInstallableUnit iu = ius[i];
+ for (IInstallableUnit iu : ius) {
profile.addInstallableUnit(iu);
Map<String, String> iuProperties = profileHandler.getIUProperties(iu);
if (iuProperties != null) {
- for (Iterator<Entry<String, String>> it = iuProperties.entrySet().iterator(); it.hasNext();) {
- Entry<String, String> entry = it.next();
+ for (Entry<String, String> entry : iuProperties.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
profile.setInstallableUnitProperty(iu, key, value);
@@ -367,8 +363,8 @@ public class ProfileTest extends AbstractProvisioningTest {
@Override
protected Object getRootObject() {
Map<String, IProfile> result = new HashMap<>();
- for (int i = 0; i < profiles.length; i++) {
- result.put(profiles[i].getProfileId(), profiles[i]);
+ for (IProfile profile : profiles) {
+ result.put(profile.getProfileId(), profile);
}
return result;
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ProvisioningEventTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ProvisioningEventTest.java
index 409e64309..f94358f9c 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ProvisioningEventTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ProvisioningEventTest.java
@@ -16,14 +16,28 @@ package org.eclipse.equinox.p2.tests.engine;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.net.URI;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import org.eclipse.core.internal.registry.ExtensionRegistry;
-import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.spi.RegistryContributor;
import org.eclipse.equinox.internal.p2.artifact.repository.MirrorEvent;
-import org.eclipse.equinox.internal.p2.engine.*;
+import org.eclipse.equinox.internal.p2.engine.CollectEvent;
+import org.eclipse.equinox.internal.p2.engine.CommitOperationEvent;
+import org.eclipse.equinox.internal.p2.engine.InstallableUnitEvent;
+import org.eclipse.equinox.internal.p2.engine.PhaseEvent;
+import org.eclipse.equinox.internal.p2.engine.RollbackOperationEvent;
import org.eclipse.equinox.internal.p2.metadata.TouchpointData;
import org.eclipse.equinox.internal.p2.metadata.TouchpointInstruction;
import org.eclipse.equinox.internal.p2.touchpoint.eclipse.Util;
@@ -31,9 +45,18 @@ import org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.ActionConstant
import org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.RemoveRepositoryAction;
import org.eclipse.equinox.internal.provisional.p2.core.eventbus.ProvisioningListener;
import org.eclipse.equinox.p2.core.ProvisionException;
-import org.eclipse.equinox.p2.engine.*;
+import org.eclipse.equinox.p2.engine.IEngine;
+import org.eclipse.equinox.p2.engine.IProfile;
+import org.eclipse.equinox.p2.engine.IProvisioningPlan;
+import org.eclipse.equinox.p2.engine.PhaseSetFactory;
+import org.eclipse.equinox.p2.engine.ProvisioningContext;
import org.eclipse.equinox.p2.engine.spi.ProvisioningAction;
-import org.eclipse.equinox.p2.metadata.*;
+import org.eclipse.equinox.p2.metadata.IInstallableUnit;
+import org.eclipse.equinox.p2.metadata.IRequirement;
+import org.eclipse.equinox.p2.metadata.ITouchpointInstruction;
+import org.eclipse.equinox.p2.metadata.ITouchpointType;
+import org.eclipse.equinox.p2.metadata.MetadataFactory;
+import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.query.IQueryResult;
import org.eclipse.equinox.p2.query.QueryUtil;
import org.eclipse.equinox.p2.repository.IRepository;
@@ -41,7 +64,9 @@ import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
import org.eclipse.equinox.p2.repository.artifact.IArtifactRequest;
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
import org.eclipse.equinox.p2.tests.TestActivator;
-import org.junit.*;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
public class ProvisioningEventTest extends AbstractProvisioningTest {
private IEngine engine;
@@ -203,7 +228,7 @@ public class ProvisioningEventTest extends AbstractProvisioningTest {
IProfile profile = createProfile("testConfigureEvent");
IProvisioningPlan plan = engine.createPlan(profile, null);
- final String testLocation = "http://download.eclipse.org/releases/juno";
+ final String testLocation = "https://download.eclipse.org/releases/2021-09";
// remove the existing location in case it has
Map<String, Object> args = new HashMap<>();
args.put(ActionConstants.PARM_AGENT, getAgent());
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/extensionlocation/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/extensionlocation/AllTests.java
index 53be7f95f..ced669ec4 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/extensionlocation/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/extensionlocation/AllTests.java
@@ -13,18 +13,15 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.extensionlocation;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all automated director tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(ExtensionLocationArtifactRepositoryFactoryTest.class);
- suite.addTestSuite(ExtensionLocationMetadataRepositoryFactoryTest.class);
- return suite;
- }
-
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ ExtensionLocationArtifactRepositoryFactoryTest.class,
+ ExtensionLocationMetadataRepositoryFactoryTest.class })
+public class AllTests {
+// test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/full/End2EndTest35.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/full/End2EndTest35.java
index 76148ba98..4725ca6a9 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/full/End2EndTest35.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/full/End2EndTest35.java
@@ -59,7 +59,7 @@ public class End2EndTest35 extends AbstractEnd2EndTest {
@Override
protected URI getRepositoryLocation() {
- return URI.create("http://download.eclipse.org/eclipse/updates/3.5");
+ return URI.create("https://download.eclipse.org/eclipse/updates/3.5");
}
@Override
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/full/End2EndTest36.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/full/End2EndTest36.java
index ec819c5d9..fe33e7936 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/full/End2EndTest36.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/full/End2EndTest36.java
@@ -17,7 +17,10 @@ import java.io.File;
import java.io.IOException;
import java.net.URI;
import org.eclipse.core.runtime.Platform;
-import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
+import org.eclipse.equinox.internal.provisional.frameworkadmin.FrameworkAdmin;
+import org.eclipse.equinox.internal.provisional.frameworkadmin.FrameworkAdminRuntimeException;
+import org.eclipse.equinox.internal.provisional.frameworkadmin.LauncherData;
+import org.eclipse.equinox.internal.provisional.frameworkadmin.Manipulator;
import org.eclipse.equinox.p2.metadata.VersionedId;
/**
@@ -59,7 +62,7 @@ public class End2EndTest36 extends AbstractEnd2EndTest {
@Override
protected URI getRepositoryLocation() {
- return URI.create("http://download.eclipse.org/eclipse/updates/3.6");
+ return URI.create("https://download.eclipse.org/eclipse/updates/3.6");
}
@Override
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/full/End2EndTest37.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/full/End2EndTest37.java
index b5f3cb394..6ea361ebf 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/full/End2EndTest37.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/full/End2EndTest37.java
@@ -59,7 +59,7 @@ public class End2EndTest37 extends AbstractEnd2EndTest {
@Override
protected URI getRepositoryLocation() {
- return URI.create("http://download.eclipse.org/eclipse/updates/3.7");
+ return URI.create("https://download.eclipse.org/eclipse/updates/3.7");
}
@Override
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/gc/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/gc/AllTests.java
index fe6526f9b..45d8a4d73 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/gc/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/gc/AllTests.java
@@ -7,23 +7,20 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.gc;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all automated gc tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(GCCleanTest.class);
- return suite;
- }
-
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ GCCleanTest.class })
+public class AllTests {
+// test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/gc/GCCleanTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/gc/GCCleanTest.java
index 8b9592993..e77597a59 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/gc/GCCleanTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/gc/GCCleanTest.java
@@ -23,7 +23,10 @@ import org.eclipse.equinox.internal.p2.metadata.ArtifactKey;
import org.eclipse.equinox.p2.core.ProvisionException;
import org.eclipse.equinox.p2.metadata.IArtifactKey;
import org.eclipse.equinox.p2.metadata.Version;
-import org.eclipse.equinox.p2.repository.artifact.*;
+import org.eclipse.equinox.p2.repository.artifact.ArtifactKeyQuery;
+import org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor;
+import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
+import org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager;
import org.eclipse.equinox.p2.repository.artifact.spi.ArtifactDescriptor;
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
@@ -31,6 +34,7 @@ import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
* Tests for the sweep (clean) phase of the garbage collection
*/
public class GCCleanTest extends AbstractProvisioningTest {
+ @SuppressWarnings("removal")
private IArtifactRepository createRepository(File location) throws ProvisionException {
URI repositoryURI = location.toURI();
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/generator/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/generator/AllTests.java
index d716c38b0..cc8aac7d7 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/generator/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/generator/AllTests.java
@@ -7,23 +7,20 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.generator;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all engine tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(GeneratorTests.class);
- return suite;
- }
-
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ GeneratorTests.class })
+public class AllTests {
+// test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/generator/GeneratorTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/generator/GeneratorTests.java
index 4cd3e61c3..e09e8bc4d 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/generator/GeneratorTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/generator/GeneratorTests.java
@@ -27,7 +27,9 @@ import org.eclipse.equinox.p2.publisher.eclipse.FeaturesAndBundlesPublisherAppli
import org.eclipse.equinox.p2.publisher.eclipse.InstallPublisherApplication;
import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
-import org.eclipse.equinox.p2.tests.*;
+import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
+import org.eclipse.equinox.p2.tests.StringBufferStream;
+import org.eclipse.equinox.p2.tests.TestActivator;
import org.eclipse.osgi.util.NLS;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
@@ -90,7 +92,7 @@ public class GeneratorTests extends AbstractProvisioningTest {
for (int i = 0; i < limit; i++) {
BundleContext context = TestActivator.getContext();
Bundle bundle = context.getBundle(i);
- File bundleFile = FileLocator.getBundleFile(bundle);
+ File bundleFile = FileLocator.getBundleFileLocation(bundle).get();
if (!bundleFile.isFile()) {
//only jars please
++limit;
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/jarprocessor/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/jarprocessor/AllTests.java
index efe5210d4..e768fff2c 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/jarprocessor/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/jarprocessor/AllTests.java
@@ -13,17 +13,14 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.jarprocessor;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all automated JarProcessor tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(JarProcessorTests.class);
- return suite;
- }
-
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ JarProcessorTests.class })
+public class AllTests {
+// test suite
} \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/jarprocessor/JarProcessorTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/jarprocessor/JarProcessorTests.java
index afb71ab55..abc3a1592 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/jarprocessor/JarProcessorTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/jarprocessor/JarProcessorTests.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2017 IBM Corporation and others.
+ * Copyright (c) 2005, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,7 +13,11 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.jarprocessor;
-import java.io.*;
+import java.io.File;
+import java.io.FileFilter;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.PrintStream;
import org.eclipse.core.runtime.Platform;
import org.eclipse.equinox.internal.p2.jarprocessor.PackStep;
import org.eclipse.equinox.internal.p2.jarprocessor.verifier.Verifier;
@@ -23,6 +27,7 @@ import org.eclipse.internal.provisional.equinox.p2.jarprocessor.JarProcessor;
import org.eclipse.internal.provisional.equinox.p2.jarprocessor.JarProcessorExecutor;
import org.eclipse.internal.provisional.equinox.p2.jarprocessor.JarProcessorExecutor.Options;
+@SuppressWarnings("removal")
public class JarProcessorTests extends AbstractProvisioningTest {
public void testVerifyStep() throws Exception {
@@ -78,6 +83,7 @@ public class JarProcessorTests extends AbstractProvisioningTest {
}
+ @Deprecated(forRemoval = true)
public void testPackUnpackVerify() throws Exception {
if (!PackStep.canPack() || !VerifyStep.canVerify())
return;
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/AllTests.java
index 50726068a..6a1ef0f13 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/AllTests.java
@@ -14,33 +14,17 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.metadata;
-import junit.framework.JUnit4TestAdapter;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all metadata tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(ArtifactKeyParsingTest.class);
- suite.addTestSuite(FragmentMethodTest.class);
- suite.addTestSuite(FragmentTest.class);
- suite.addTestSuite(InstallableUnitTest.class);
- suite.addTestSuite(InstallableUnitPatchTest.class);
- suite.addTestSuite(IUPersistenceTest.class);
- suite.addTestSuite(LatestIUTest.class);
- suite.addTestSuite(LicenseTest.class);
- suite.addTestSuite(MultipleIUAndFragmentTest.class);
- suite.addTestSuite(PersistNegation.class);
- suite.addTestSuite(PersistFragment.class);
- suite.addTestSuite(ProvidedCapabilityTest.class);
- suite.addTestSuite(RequirementToString.class);
- suite.addTest(new JUnit4TestAdapter(RequirementParsingTest.class));
- return suite;
- }
-
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ ArtifactKeyParsingTest.class, FragmentMethodTest.class, FragmentTest.class,
+ InstallableUnitTest.class, InstallableUnitPatchTest.class, IUPersistenceTest.class, LatestIUTest.class,
+ LicenseTest.class, MultipleIUAndFragmentTest.class, PersistNegation.class, PersistFragment.class,
+ ProvidedCapabilityTest.class, RequirementToString.class, RequirementParsingTest.class })
+public class AllTests {
+//test suite
} \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/ArtifactKeyParsingTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/ArtifactKeyParsingTest.java
index 404d9d7fd..51dc24b02 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/ArtifactKeyParsingTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/ArtifactKeyParsingTest.java
@@ -13,26 +13,32 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.metadata;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
+
import org.eclipse.equinox.internal.p2.metadata.ArtifactKey;
import org.eclipse.equinox.p2.metadata.IArtifactKey;
import org.eclipse.equinox.p2.metadata.Version;
+import org.junit.Test;
/**
* Test <code>ArtifactkeyDeSerializer</code>
*/
-public class ArtifactKeyParsingTest extends TestCase {
-
+public class ArtifactKeyParsingTest {
+ @Test
public void testSerialize() {
IArtifactKey key = new ArtifactKey("classifier", "identifier", Version.create("1.0"));
assertEquals("classifier,identifier,1.0.0", key.toExternalForm());
}
+ @Test
public void testSerializeEmptyClassifier() {
IArtifactKey key = new ArtifactKey("", "identifier", Version.create("1.0"));
assertEquals(",identifier,1.0.0", key.toExternalForm());
}
+ @Test
public void testDeserialize() {
IArtifactKey key = ArtifactKey.parse("classifier,identifier,1.0.0");
assertNotNull(key);
@@ -41,6 +47,7 @@ public class ArtifactKeyParsingTest extends TestCase {
assertEquals(Version.create("1.0"), key.getVersion());
}
+ @Test
public void testDeserializeEmptyClassifier() {
IArtifactKey key = ArtifactKey.parse(",identifier,1.0.0");
assertNotNull(key);
@@ -49,6 +56,7 @@ public class ArtifactKeyParsingTest extends TestCase {
assertEquals(Version.create("1.0"), key.getVersion());
}
+ @Test
public void testDeserializeEmptyIdentifier() {
IArtifactKey key = ArtifactKey.parse("classifier,,1.0.0");
assertNotNull(key);
@@ -57,6 +65,7 @@ public class ArtifactKeyParsingTest extends TestCase {
assertEquals(Version.create("1.0"), key.getVersion());
}
+ @Test
public void testDeserializeEmptyVersion() {
IArtifactKey key = ArtifactKey.parse("classifier,identifier,");
assertNotNull(key);
@@ -65,6 +74,7 @@ public class ArtifactKeyParsingTest extends TestCase {
assertEquals(Version.create("0.0"), key.getVersion());
}
+ @Test
public void testDeserializeEmptyEverything() {
IArtifactKey key = ArtifactKey.parse(",,");
assertNotNull(key);
@@ -73,30 +83,18 @@ public class ArtifactKeyParsingTest extends TestCase {
assertEquals(Version.create("0.0"), key.getVersion());
}
+ @Test
public void testDeserializeTooFewPartsI() {
- try {
- ArtifactKey.parse("");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> ArtifactKey.parse(""));
}
+ @Test
public void testDeserializeTooManyPartsI() {
- try {
- ArtifactKey.parse(",,,,");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> ArtifactKey.parse(",,,,"));
}
+ @Test
public void testDeserializeTooFewPartsII() {
- try {
- ArtifactKey.parse("classifier");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> ArtifactKey.parse("classifier"));
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/FragmentMethodTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/FragmentMethodTest.java
index 8fbc0b08f..f7f700921 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/FragmentMethodTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/FragmentMethodTest.java
@@ -13,10 +13,13 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.metadata;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import java.util.Collection;
import java.util.HashSet;
-import junit.framework.AssertionFailedError;
-import junit.framework.TestCase;
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.p2.metadata.IProvidedCapability;
import org.eclipse.equinox.p2.metadata.IRequirement;
@@ -26,8 +29,11 @@ import org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitFragmentDe
import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.metadata.VersionRange;
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
-public class FragmentMethodTest extends TestCase {
+public class FragmentMethodTest {
private static final String PROP_FRAG = "propFrag";
private static final String PROP_IU = "propIU";
private static final String TEST_REQUIRED = "testRequired";
@@ -36,9 +42,8 @@ public class FragmentMethodTest extends TestCase {
Collection<IProvidedCapability> iu1Caps;
Collection<IProvidedCapability> iu3Caps;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
iu1 = createIU("iu.test1");
iu3 = createIUFragment("iu.fragment");
iu1Caps = iu1.getProvidedCapabilities();
@@ -55,15 +60,15 @@ public class FragmentMethodTest extends TestCase {
}
}
- @Override
- protected void tearDown() throws Exception {
+ @After
+ public void tearDown() throws Exception {
iu1 = null;
iu3 = null;
iu1Caps = null;
iu3Caps = null;
- super.tearDown();
}
+ @Test
public void testCapabilities() {
Collection<IProvidedCapability> mergedCapabilities = iu1.getProvidedCapabilities();
for (IProvidedCapability capability : mergedCapabilities) {
@@ -85,17 +90,6 @@ public class FragmentMethodTest extends TestCase {
assertEquals("The fragment capabilities should not change", initialFragmentCapabilities, iu3.getProvidedCapabilities());
}
- protected void assertEquals(String message, Object[] expected, Object[] actual) {
- if (expected == null && actual == null)
- return;
- if (expected == null || actual == null)
- fail(message);
- if (expected.length != actual.length)
- fail(message);
- for (int i = 0; i < expected.length; i++)
- assertEquals(message, expected[i], actual[i]);
- }
-
protected void assertEquals(String message, Collection<? extends Object> expected, Collection<? extends Object> actual) {
if (expected == null && actual == null)
return;
@@ -111,9 +105,10 @@ public class FragmentMethodTest extends TestCase {
public static void assertDoesNotContain(Collection<? extends Object> objects, Object searched) {
if (objects.contains(searched))
- throw new AssertionFailedError("The array should not contain the searched element");
+ throw new AssertionError("The array should not contain the searched element");
}
+ @Test
public void testProperties() {
assertNotNull("The property is missing", iu3.getProperty(PROP_FRAG));
assertNotNull("The property is missing", iu1.getProperty(PROP_IU));
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/IUPatchPersistenceTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/IUPatchPersistenceTest.java
index 0c2e0987f..28d2ab030 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/IUPatchPersistenceTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/IUPatchPersistenceTest.java
@@ -141,7 +141,7 @@ public class IUPatchPersistenceTest extends AbstractProvisioningTest {
}
private final static String IU_TEST_TARGET = "installableUnitTest";
- private final static Version IU_TEST_VERSION = Version.create("0.0.1");
+ final static Version IU_TEST_VERSION = Version.create("0.0.1");
private final static String IU_TEST_ELEMENT = "test";
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/IUPersistenceTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/IUPersistenceTest.java
index c777ddccb..a4fbdd189 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/IUPersistenceTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/IUPersistenceTest.java
@@ -19,7 +19,6 @@ import java.io.StringReader;
import java.net.URI;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -175,7 +174,7 @@ public class IUPersistenceTest extends AbstractProvisioningTest {
private final static String IU_TEST_TARGET = "installableUnitTest";
- private final static Version IU_TEST_VERSION = Version.create("0.0.1");
+ final static Version IU_TEST_VERSION = Version.create("0.0.1");
// Randomly chose org.eclipse.osgi.services as the IU for testing persistence
// but 'enhanced' it for better coverage.
@@ -271,23 +270,23 @@ public class IUPersistenceTest extends AbstractProvisioningTest {
}
private static String[][] extractRequires(IInstallableUnit iu) {
- Collection<IRequirement> requyres = iu.getRequirements();
- String[][] tuples = new String[requyres.size()][4];
+ Collection<IRequirement> requirements = iu.getRequirements();
+ String[][] tuples = new String[requirements.size()][4];
int i = 0;
- for (Iterator<IRequirement> iterator = requyres.iterator(); iterator.hasNext();) {
- IRequiredCapability next = (IRequiredCapability) iterator.next();
- tuples[i++] = new String[] {next.getNamespace(), next.getName(), next.getRange().toString(), Boolean.valueOf(next.getMin() == 0).toString()};
+ for (IRequirement requirement : requirements) {
+ IRequiredCapability capability = (IRequiredCapability) requirement;
+ tuples[i++] = new String[] {capability.getNamespace(), capability.getName(), capability.getRange().toString(), Boolean.valueOf(capability.getMin() == 0).toString()};
}
return tuples;
}
private static String[][] extractMetaRequires(IInstallableUnit iu) {
- Collection<IRequirement> requyres = iu.getMetaRequirements();
- String[][] tuples = new String[requyres.size()][4];
+ Collection<IRequirement> requirements = iu.getMetaRequirements();
+ String[][] tuples = new String[requirements.size()][4];
int i = 0;
- for (IRequirement iRequirement : requyres) {
- IRequiredCapability next = (IRequiredCapability) iRequirement;
- tuples[i++] = new String[] {next.getNamespace(), next.getName(), next.getRange().toString(), Boolean.valueOf(next.getMin() == 0).toString()};
+ for (IRequirement requirement : requirements) {
+ IRequiredCapability capability = (IRequiredCapability) requirement;
+ tuples[i++] = new String[] {capability.getNamespace(), capability.getName(), capability.getRange().toString(), Boolean.valueOf(capability.getMin() == 0).toString()};
}
return tuples;
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/LicenseTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/LicenseTest.java
index 50b33dad9..fcb53002c 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/LicenseTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/LicenseTest.java
@@ -7,21 +7,24 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* EclipseSource - ongoing development
*******************************************************************************/
package org.eclipse.equinox.p2.tests.metadata;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+
import org.eclipse.equinox.p2.metadata.ILicense;
import org.eclipse.equinox.p2.metadata.MetadataFactory;
+import org.junit.Test;
/**
* Tests for License class
*/
-public class LicenseTest extends TestCase {
+public class LicenseTest {
+ @Test
public void testNormalize() {
ILicense licenseOne = MetadataFactory.createLicense(null, "a b");
ILicense licenseTwo = MetadataFactory.createLicense(null, "a\t\n\r \t\n\r b");
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/RequirementToString.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/RequirementToString.java
index d92f8b66d..1d4c2e2b6 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/RequirementToString.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/RequirementToString.java
@@ -14,33 +14,39 @@
******************************************************************************/
package org.eclipse.equinox.p2.tests.metadata;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.p2.metadata.IRequirement;
import org.eclipse.equinox.p2.metadata.MetadataFactory;
import org.eclipse.equinox.p2.metadata.VersionRange;
import org.eclipse.equinox.p2.metadata.expression.ExpressionUtil;
import org.eclipse.equinox.p2.metadata.expression.IMatchExpression;
+import org.junit.Test;
//These tests are not here to force the toString of a requirement.
//They are here to ensure that the toString of a requirement does not become unreadable because this ends up being presented in the p2 UI and in the tycho build.
//As such if there are better ways present all this information, by all mean change the test.
-public class RequirementToString extends TestCase {
+public class RequirementToString {
+ @Test
public void testRequirementWithEmptyRange() {
IRequirement req = MetadataFactory.createRequirement("expectedNameSpace", "expectedName", VersionRange.emptyRange, null, false, false);
assertEquals("expectedNameSpace; expectedName 0.0.0", req.toString());
}
+ @Test
public void testStandardRequirement() {
IRequirement req = MetadataFactory.createRequirement("expectedNameSpace", "expectedName", new VersionRange("[1.0.0, 2.0.0)"), null, false, false);
assertEquals("expectedNameSpace; expectedName [1.0.0,2.0.0)", req.toString());
}
+ @Test
public void testPropertiesRequirement() {
IRequirement req = MetadataFactory.createRequirement("expectedNameSpace", "(key=val)", null, 1, 1, true);
assertEquals("expectedNameSpace; (key=val)", req.toString());
}
+ @Test
public void testFancyRequirement() {
Object[] expressionParameters = new Object[] {"expectedId1", "expectedVersion1", "expectedId2", "expectedVersion2"};
IMatchExpression<IInstallableUnit> iuMatcher = ExpressionUtil.getFactory().matchExpression(ExpressionUtil.parse("(id == $0 && version == $1) || (id == $2 && version == $3)"), expressionParameters);
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/expression/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/expression/AllTests.java
index 2393c6bde..98a5db9e4 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/expression/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/expression/AllTests.java
@@ -13,21 +13,14 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.metadata.expression;
-import junit.framework.JUnit4TestAdapter;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all automated director tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(ExpressionTest.class);
- suite.addTest(new JUnit4TestAdapter(FilterTest.class));
- return suite;
- }
-
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ ExpressionTest.class, FilterTest.class })
+public class AllTests {
+//test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/expression/FilterTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/expression/FilterTest.java
index b25134d86..979ede089 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/expression/FilterTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/expression/FilterTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010, 2018 IBM Corporation and others.
+ * Copyright (c) 2010, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -24,7 +24,6 @@ import java.util.Arrays;
import java.util.Dictionary;
import java.util.HashMap;
import java.util.Hashtable;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.eclipse.equinox.p2.metadata.Version;
@@ -241,8 +240,8 @@ public class FilterTest {
this.dictionary = dictionary;
List<String> keyList = new ArrayList<>(dictionary.size());
for (String key : dictionary.keySet()) {
- for (Iterator<String> i = keyList.iterator(); i.hasNext();) {
- if (key.equalsIgnoreCase(i.next())) {
+ for (String string : keyList) {
+ if (key.equalsIgnoreCase(string)) {
throw new IllegalArgumentException();
}
}
@@ -290,5 +289,10 @@ public class FilterTest {
public Dictionary<String, Object> getProperties() {
return new Hashtable<>(dictionary);
}
+
+ @Override
+ public Object adapt(Class type) {
+ return null;
+ }
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/AllTests.java
index 871544734..cae5b3ba7 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/AllTests.java
@@ -7,36 +7,29 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Rapicorp, Inc - addition implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.metadata.repository;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all automated metadata repository tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(BatchExecuteMetadataRepositoryTest.class);
- suite.addTestSuite(CompositeMetadataRepositoryTest.class);
- suite.addTestSuite(JarURLMetadataRepositoryTest.class);
- suite.addTestSuite(LocalMetadataRepositoryTest.class);
- suite.addTestSuite(SPIMetadataRepositoryTest.class);
- suite.addTestSuite(StandaloneSerializationTest.class);
- suite.addTestSuite(MetadataRepositoryManagerTest.class);
- suite.addTestSuite(NoFailOver.class);
- suite.addTestSuite(SiteIndexFileTest.class);
- suite.addTestSuite(XZedRepositoryTest.class);
- // suite.addTestSuite(ResumeDownloadTest.class);
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ BatchExecuteMetadataRepositoryTest.class, CompositeMetadataRepositoryTest.class,
+ JarURLMetadataRepositoryTest.class, LocalMetadataRepositoryTest.class, SPIMetadataRepositoryTest.class,
+ StandaloneSerializationTest.class, MetadataRepositoryManagerTest.class, NoFailOver.class,
+ SiteIndexFileTest.class, XZedRepositoryTest.class
+})
+public class AllTests {
+ // ResumeDownloadTest.class,
// DISABLING until we get a test build
- // AllServerTests.addToSuite(suite);
- return suite;
- }
+ // AllServerTests.addToSuite(suite,
} \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/MetadataRepositoryManagerExceptionsTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/MetadataRepositoryManagerExceptionsTest.java
index 5184b2e32..74722e340 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/MetadataRepositoryManagerExceptionsTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/MetadataRepositoryManagerExceptionsTest.java
@@ -17,7 +17,6 @@ import java.io.File;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import junit.framework.Test;
import junit.framework.TestSuite;
@@ -52,8 +51,9 @@ public class MetadataRepositoryManagerExceptionsTest extends AbstractProvisionin
@Override
protected void tearDown() throws Exception {
super.tearDown();
- for (Iterator<File> it = toDelete.iterator(); it.hasNext();)
- delete(it.next());
+ for (File file : toDelete) {
+ delete(file);
+ }
toDelete.clear();
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/MetadataRepositoryManagerTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/MetadataRepositoryManagerTest.java
index 1aaa7a533..6ac039147 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/MetadataRepositoryManagerTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/MetadataRepositoryManagerTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2018 IBM Corporation and others.
+ * Copyright (c) 2007, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,8 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.metadata.repository;
+import static org.junit.Assert.assertNotEquals;
+
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
@@ -21,7 +23,6 @@ import java.lang.reflect.Field;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import junit.framework.Test;
import junit.framework.TestSuite;
@@ -78,8 +79,9 @@ public class MetadataRepositoryManagerTest extends AbstractProvisioningTest {
@Override
protected void tearDown() throws Exception {
super.tearDown();
- for (Iterator<File> it = toDelete.iterator(); it.hasNext();)
- delete(it.next());
+ for (File file : toDelete) {
+ delete(file);
+ }
toDelete.clear();
FailingMetadataRepositoryFactory.FAIL = false;
}
@@ -379,23 +381,20 @@ public class MetadataRepositoryManagerTest extends AbstractProvisioningTest {
* cache is updated when it becomes stale.
*/
public void testMetadataCachingRemoteRepo() throws URISyntaxException, ProvisionException {
- URI repoLocation = new URI("http://download.eclipse.org/eclipse/updates/3.4milestones/");
+ URI repoLocation = new URI("https://download.eclipse.org/eclipse/updates/4.21/R-4.21-202109060500/");
if (!repoAvailable(repoLocation))
return;
IAgentLocation agentLocation = ServiceHelper.getService(TestActivator.getContext(), IAgentLocation.class);
- URI dataArea = agentLocation.getDataArea("org.eclipse.equinox.p2.metadata.repository/cache/");
+ URI dataArea = agentLocation.getDataArea("org.eclipse.equinox.p2.repository/cache/");
File dataAreaFile = URIUtil.toFile(dataArea);
- File cacheFileXML = new File(dataAreaFile, "content" + repoLocation.hashCode() + ".xml");
- File cacheFileJAR = new File(dataAreaFile, "content" + repoLocation.hashCode() + ".jar");
- File cacheFile;
+ File cacheFile = new File(dataAreaFile,
+ Integer.toString(URIUtil.append(repoLocation, "content.xml.xz").hashCode())); // as implemented in
+ // XZedSimpleMetadataRepository
+ // and CacheManager
// load a remote repository and check that a local cache was created
manager.loadRepository(repoLocation, null);
- assertTrue("Cache file was not created.", cacheFileXML.exists() || cacheFileJAR.exists());
- if (cacheFileXML.exists())
- cacheFile = cacheFileXML;
- else
- cacheFile = cacheFileJAR;
+ assertTrue("Cache file was not created.", cacheFile.exists());
// modify the last modified date to be older than the remote file
cacheFile.setLastModified(0);
@@ -403,7 +402,7 @@ public class MetadataRepositoryManagerTest extends AbstractProvisioningTest {
manager.removeRepository(repoLocation);
manager.loadRepository(repoLocation, null);
long lastModified = cacheFile.lastModified();
- assertTrue(0 != lastModified);
+ assertNotEquals(0, lastModified);
// reload the repository and check that the cache was not updated
manager.loadRepository(repoLocation, null);
@@ -505,9 +504,9 @@ public class MetadataRepositoryManagerTest extends AbstractProvisioningTest {
getEventBus().removeListener(referenceCollector);
}
assertEquals("1.0", 4, references.size());
- assertTrue("1.1", references.contains(new URI("http://download.eclipse.org/url/with/spaces/a%20b")));
+ assertTrue("1.1", references.contains(new URI("https://download.eclipse.org/url/with/spaces/a%20b")));
assertTrue("1.2", references.contains(new URI("file:/c:/tmp/url%20with%20spaces/")));
- assertTrue("1.3", references.contains(new URI("http://download.eclipse.org/uri/with/spaces/a%20b")));
+ assertTrue("1.3", references.contains(new URI("https://download.eclipse.org/uri/with/spaces/a%20b")));
assertTrue("1.4", references.contains(new URI("file:/c:/tmp/uri%20with%20spaces/")));
}
@@ -560,7 +559,7 @@ public class MetadataRepositoryManagerTest extends AbstractProvisioningTest {
try {
IMetadataRepository repoSlash = manager.loadRepository(locationSlash, null);
IMetadataRepository repoNoSlash = manager.loadRepository(locationNoSlash, null);
- assertTrue("1.0", repoNoSlash == repoSlash);
+ assertSame("1.0", repoNoSlash, repoSlash);
} catch (ProvisionException e) {
fail("1.99", e);
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/ResumeDownloadTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/ResumeDownloadTest.java
index 7c8dc873c..10ac9590f 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/ResumeDownloadTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/ResumeDownloadTest.java
@@ -19,7 +19,7 @@ import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager;
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
public class ResumeDownloadTest extends AbstractProvisioningTest {
- private static String UPDATE_SITE = "http://download.eclipse.org/eclipse/updates/3.4";
+ private static String UPDATE_SITE = "https://download.eclipse.org/eclipse/updates/4.21";
private IMetadataRepositoryManager mgr;
private URI repoLoc;
private String originalResumeProp;
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/SiteIndexFileTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/SiteIndexFileTest.java
index fb763f040..9edfe7879 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/SiteIndexFileTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/SiteIndexFileTest.java
@@ -15,16 +15,21 @@
******************************************************************************/
package org.eclipse.equinox.p2.tests.metadata.repository;
+import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertThat;
-import java.io.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.PrintStream;
import java.net.URI;
import java.net.URISyntaxException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository;
import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
-import org.eclipse.equinox.internal.p2.metadata.repository.*;
+import org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepository;
+import org.eclipse.equinox.internal.p2.metadata.repository.LocalMetadataRepository;
+import org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager;
import org.eclipse.equinox.internal.p2.repository.helpers.LocationProperties;
import org.eclipse.equinox.internal.p2.updatesite.metadata.UpdateSiteMetadataRepository;
import org.eclipse.equinox.p2.core.IProvisioningAgent;
@@ -32,7 +37,10 @@ import org.eclipse.equinox.p2.core.ProvisionException;
import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
-import org.eclipse.equinox.p2.tests.*;
+import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
+import org.eclipse.equinox.p2.tests.StringBufferStream;
+import org.eclipse.equinox.p2.tests.TestActivator;
+import org.eclipse.equinox.p2.tests.TestData;
import org.hamcrest.core.IsInstanceOf;
/**
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/StandaloneSerializationTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/StandaloneSerializationTest.java
index fe80063d5..d4bbd6153 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/StandaloneSerializationTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/repository/StandaloneSerializationTest.java
@@ -13,6 +13,10 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.metadata.repository;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
@@ -24,48 +28,38 @@ import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
-import junit.framework.TestCase;
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.p2.metadata.MetadataFactory;
import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.metadata.io.IUDeserializer;
import org.eclipse.equinox.p2.metadata.io.IUSerializer;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestName;
-public class StandaloneSerializationTest extends TestCase {
- public void testNothingToWrite() {
- try {
- File f = File.createTempFile(getName(), "iu");
- try (OutputStream os = new FileOutputStream(f)) {
- new IUSerializer(os).write(Collections.EMPTY_LIST);
- }
- assertTrue(f.length() > 0);
- f.delete();
- } catch (FileNotFoundException e) {
- fail("problem writing: " + e.getCause().getMessage());
- } catch (UnsupportedEncodingException e) {
- fail("problem writing: " + e.getCause().getMessage());
- } catch (IOException e) {
- fail("problem writing: " + e.getCause().getMessage());
+public class StandaloneSerializationTest {
+ @Rule
+ public TestName name = new TestName();
+
+ @Test
+ public void testNothingToWrite() throws IOException {
+ File f = File.createTempFile(name.getMethodName(), "iu");
+ try (OutputStream os = new FileOutputStream(f)) {
+ new IUSerializer(os).write(Collections.emptyList());
}
+ assertTrue(f.length() > 0);
+ f.delete();
}
- public void testNoContent() {
- //Write file w/o content
- File f = null;
- try {
- f = File.createTempFile(getName(), "iu");
- try (OutputStream os = new FileOutputStream(f)) {
- new IUSerializer(os).write(Collections.EMPTY_LIST);
- }
- } catch (FileNotFoundException e) {
- fail("problem writing: " + e.getCause().getMessage());
- } catch (UnsupportedEncodingException e) {
- fail("problem writing: " + e.getCause().getMessage());
- } catch (IOException e) {
- fail("problem writing: " + e.getCause().getMessage());
+ @Test
+ public void testNoContent() throws IOException {
+ // Write file w/o content
+ File f = File.createTempFile(name.getMethodName(), "iu");
+ try (OutputStream os = new FileOutputStream(f)) {
+ new IUSerializer(os).write(Collections.emptyList());
}
- //Read file written
+ // Read file written
boolean exceptionRaised = false;
try (InputStream is = new FileInputStream(f)) {
Collection<IInstallableUnit> ius = new IUDeserializer().read(is);
@@ -82,7 +76,8 @@ public class StandaloneSerializationTest extends TestCase {
f.delete();
}
- public void testWritingThenLoading() {
+ @Test
+ public void testWritingThenLoading() throws FileNotFoundException, IOException {
MetadataFactory.InstallableUnitDescription iu = new MetadataFactory.InstallableUnitDescription();
iu.setId("foo");
iu.setVersion(Version.create("1.0.0"));
@@ -94,28 +89,13 @@ public class StandaloneSerializationTest extends TestCase {
ius.add(MetadataFactory.createInstallableUnit(iu));
ius.add(MetadataFactory.createInstallableUnit(iu2));
- File f = null;
- try {
- f = File.createTempFile(getName(), "iu");
- try (OutputStream os = new FileOutputStream(f)) {
- new IUSerializer(os).write(ius);
- }
- } catch (FileNotFoundException e) {
- fail("problem writing: " + e.getCause().getMessage());
- } catch (UnsupportedEncodingException e) {
- fail("problem writing: " + e.getCause().getMessage());
- } catch (IOException e) {
- fail("problem writing: " + e.getCause().getMessage());
+ File f = File.createTempFile(name.getMethodName(), "iu");
+ try (OutputStream os = new FileOutputStream(f)) {
+ new IUSerializer(os).write(ius);
}
try (InputStream is = new FileInputStream(f)) {
assertEquals(2, new IUDeserializer().read(is).size());
- } catch (FileNotFoundException e) {
- fail("problem writing: " + e.getCause().getMessage());
- } catch (UnsupportedEncodingException e) {
- fail("problem writing: " + e.getCause().getMessage());
- } catch (IOException e) {
- fail("problem writing: " + e.getCause().getMessage());
} finally {
f.delete();
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/AllTests.java
index b148e7c46..cf418cc0d 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/AllTests.java
@@ -7,29 +7,24 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.mirror;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all automated mirror repository tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(ArtifactMirrorApplicationTest.class);
- suite.addTestSuite(MetadataMirrorApplicationTest.class);
- suite.addTestSuite(ArtifactRepositoryCleanupTest.class);
- suite.addTestSuite(MetadataRepositoryCleanupTest.class);
- suite.addTest(new JUnit4TestAdapter(NewMirrorApplicationArtifactTest.class));
- suite.addTestSuite(NewMirrorApplicationMetadataTest.class);
- suite.addTest(new JUnit4TestAdapter(MirrorApplicationTest.class));
- return suite;
- }
-
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ ArtifactMirrorApplicationTest.class, MetadataMirrorApplicationTest.class, ArtifactRepositoryCleanupTest.class,
+ MetadataRepositoryCleanupTest.class, NewMirrorApplicationArtifactTest.class,
+ NewMirrorApplicationMetadataTest.class, MirrorApplicationTest.class
+})
+public class AllTests {
+// test suite
} \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/ArtifactMirrorApplicationTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/ArtifactMirrorApplicationTest.java
index 321e5b4e9..416f4a8a3 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/ArtifactMirrorApplicationTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/ArtifactMirrorApplicationTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2017 IBM Corporation and others.
+ * Copyright (c) 2008, 2017, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,7 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.mirror;
+import static org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor.FORMAT_PACKED;
import static org.junit.Assert.assertNotEquals;
import java.io.File;
@@ -38,7 +39,7 @@ import org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifact
import org.eclipse.equinox.internal.p2.core.helpers.OrderedProperties;
import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
import org.eclipse.equinox.p2.core.ProvisionException;
-import org.eclipse.equinox.p2.internal.repository.comparator.MD5ArtifactComparator;
+import org.eclipse.equinox.p2.internal.repository.comparator.ArtifactChecksumComparator;
import org.eclipse.equinox.p2.internal.repository.tools.Messages;
import org.eclipse.equinox.p2.internal.repository.tools.MirrorApplication;
import org.eclipse.equinox.p2.metadata.IArtifactKey;
@@ -63,6 +64,7 @@ import org.eclipse.osgi.util.NLS;
* Test API of the basic mirror application functionality's implementation.
*/
public class ArtifactMirrorApplicationTest extends AbstractProvisioningTest {
+ private static final String MD5_COMPARATOR = ArtifactChecksumComparator.COMPARATOR_ID + ".md5";
protected File destRepoLocation;
protected File sourceRepoLocation; //helloworldfeature
protected File sourceRepo2Location; //anotherfeature
@@ -881,7 +883,12 @@ public class ArtifactMirrorApplicationTest extends AbstractProvisioningTest {
/**
* Verifies that the mirror application executes processing steps correctly
*/
+ @SuppressWarnings("removal")
public void testArtifactProcessingSteps() {
+ if (System.getProperty("java.specification.version").compareTo("14") >= 0) {
+ // Test explicitly uses pack200 artifacts which are not supported on Java 14+
+ return;
+ }
//Setup: load the repository containing packed data
File packedRepoLocation = getTestData("27.0", "/testData/mirror/mirrorPackedRepo");
IArtifactRepository packedRepo = null;
@@ -894,13 +901,10 @@ public class ArtifactMirrorApplicationTest extends AbstractProvisioningTest {
fail("");
}
- IQueryResult<IArtifactKey> keys = packedRepo.query(ArtifactKeyQuery.ALL_KEYS, null);
- for (Iterator<IArtifactKey> iterator = keys.iterator(); iterator.hasNext();) {
- IArtifactKey key = iterator.next();
- IArtifactDescriptor[] srcDescriptors = packedRepo.getArtifactDescriptors(key);
-
- for (IArtifactDescriptor srcDescriptor : srcDescriptors) {
- if (!(srcDescriptor.getProperty(IArtifactDescriptor.FORMAT) == null) && srcDescriptor.getProperty(IArtifactDescriptor.FORMAT).equals(IArtifactDescriptor.FORMAT_PACKED)) {
+ for (IArtifactKey key : packedRepo.query(ArtifactKeyQuery.ALL_KEYS, null)) {
+ for (IArtifactDescriptor srcDescriptor : packedRepo.getArtifactDescriptors(key)) {
+ if (!(srcDescriptor.getProperty(IArtifactDescriptor.FORMAT) == null)
+ && srcDescriptor.getProperty(IArtifactDescriptor.FORMAT).equals(FORMAT_PACKED)) {
//if we have a packed artifact
IArtifactDescriptor newDescriptor = new ArtifactDescriptor(key);
Map<String, String> properties = new OrderedProperties();
@@ -1107,7 +1111,9 @@ public class ArtifactMirrorApplicationTest extends AbstractProvisioningTest {
try {
//Set compare flag.
- String[] args = new String[] {"-source", repo1Location.toURL().toExternalForm(), "-destination", repo2Location.toURL().toExternalForm(), "-verbose", "-compare", "-comparator", MD5ArtifactComparator.MD5_COMPARATOR_ID};
+ String[] args = new String[] { "-source", repo1Location.toURL().toExternalForm(), "-destination",
+ repo2Location.toURL().toExternalForm(), "-verbose", "-compare", "-comparator",
+ MD5_COMPARATOR };
//run the mirror application
runMirrorApplication("Running with duplicate descriptors with different md5 values", args);
} catch (Exception e) {
@@ -1159,7 +1165,10 @@ public class ArtifactMirrorApplicationTest extends AbstractProvisioningTest {
try {
//Set compareAgaist
- String[] args = new String[] {"-source", repoLocation.toURL().toExternalForm(), "-destination", destRepoLocation.toURL().toExternalForm(), "-compareAgainst", baselineLocation.toURL().toExternalForm(), "-verbose", "-compare", "-comparator", MD5ArtifactComparator.MD5_COMPARATOR_ID};
+ String[] args = new String[] { "-source", repoLocation.toURL().toExternalForm(), "-destination",
+ destRepoLocation.toURL().toExternalForm(), "-compareAgainst",
+ baselineLocation.toURL().toExternalForm(), "-verbose", "-compare", "-comparator",
+ MD5_COMPARATOR };
//run the mirror application
runMirrorApplication("Running with baseline compare", args);
} catch (Exception e) {
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/MetadataMirrorApplicationTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/MetadataMirrorApplicationTest.java
index 004b5db20..94bdec524 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/MetadataMirrorApplicationTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/MetadataMirrorApplicationTest.java
@@ -14,7 +14,9 @@
package org.eclipse.equinox.p2.tests.mirror;
import java.io.File;
-import java.net.*;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepository;
@@ -516,7 +518,7 @@ public class MetadataMirrorApplicationTest extends AbstractProvisioningTest {
public void testMetadataMirrorToInvalid() {
URI invalidDestRepository;
try {
- invalidDestRepository = new URI("http://eclipse.org/equinox/foobar/abcdefg");
+ invalidDestRepository = new URI("https://eclipse.org/equinox/foobar/abcdefg");
basicRunMirrorApplication("14.1", sourceRepoLocation.toURL(), invalidDestRepository.toURL(), true);
//we expect an illegal state exception to be thrown and should never get here
fail("14.0 IllegalStateExpection not thrown");
@@ -535,7 +537,7 @@ public class MetadataMirrorApplicationTest extends AbstractProvisioningTest {
delete(invalidRepository);
try {
- URI invalidDestRepository = new URI("http://eclipse.org/equinox/foobar/abcdefg");
+ URI invalidDestRepository = new URI("https://eclipse.org/equinox/foobar/abcdefg");
basicRunMirrorApplication("15.1", invalidRepository.toURL(), invalidDestRepository.toURL(), true);
//we expect a provisioning exception to be thrown and should never get here
fail("15.0 ProvisionExpection not thrown");
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/MirrorApplicationTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/MirrorApplicationTest.java
index dd6f0e4f7..8a709580c 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/MirrorApplicationTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/MirrorApplicationTest.java
@@ -14,13 +14,19 @@
package org.eclipse.equinox.p2.tests.mirror;
import static org.eclipse.equinox.p2.tests.AbstractProvisioningTest.getTestData;
-import static org.hamcrest.CoreMatchers.*;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.CoreMatchers.any;
+import static org.hamcrest.CoreMatchers.hasItem;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.MatcherAssert.assertThat;
import java.io.File;
import java.io.PrintStream;
import java.net.URI;
-import java.util.*;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
import junit.framework.AssertionFailedError;
import org.eclipse.equinox.p2.core.ProvisionException;
import org.eclipse.equinox.p2.internal.repository.tools.MirrorApplication;
@@ -35,7 +41,9 @@ import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager;
import org.eclipse.equinox.p2.tests.StringBufferStream;
import org.eclipse.equinox.p2.tests.TestAgentProvider;
-import org.junit.*;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
import org.junit.rules.TemporaryFolder;
/**
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/NewMirrorApplicationArtifactTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/NewMirrorApplicationArtifactTest.java
index 4a9719f50..7a8c97e60 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/NewMirrorApplicationArtifactTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/NewMirrorApplicationArtifactTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2017 IBM Corporation and others.
+ * Copyright (c) 2008, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -39,7 +39,7 @@ import org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifact
import org.eclipse.equinox.internal.p2.core.helpers.OrderedProperties;
import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
import org.eclipse.equinox.p2.core.ProvisionException;
-import org.eclipse.equinox.p2.internal.repository.comparator.MD5ArtifactComparator;
+import org.eclipse.equinox.p2.internal.repository.comparator.ArtifactChecksumComparator;
import org.eclipse.equinox.p2.internal.repository.tools.Messages;
import org.eclipse.equinox.p2.internal.repository.tools.MirrorApplication;
import org.eclipse.equinox.p2.internal.repository.tools.RepositoryDescriptor;
@@ -940,8 +940,13 @@ public class NewMirrorApplicationArtifactTest extends AbstractProvisioningTest {
/**
* Verifies that the mirror application executes processing steps correctly
*/
+ @SuppressWarnings("removal")
@Test
public void testArtifactProcessingSteps() {
+ if (System.getProperty("java.specification.version").compareTo("14") >= 0) {
+ // Test explicitly uses pack200 artifacts which are not supported on Java 14+
+ return;
+ }
//Setup: load the repository containing packed data
File packedRepoLocation = getTestData("27.0", "/testData/mirror/mirrorPackedRepo");
IArtifactRepository packedRepo = null;
@@ -954,12 +959,8 @@ public class NewMirrorApplicationArtifactTest extends AbstractProvisioningTest {
fail("");
}
- IQueryResult<IArtifactKey> keys = packedRepo.query(ArtifactKeyQuery.ALL_KEYS, null);
- for (Iterator<IArtifactKey> iterator = keys.iterator(); iterator.hasNext();) {
- IArtifactKey key = iterator.next();
- IArtifactDescriptor[] srcDescriptors = packedRepo.getArtifactDescriptors(key);
-
- for (IArtifactDescriptor srcDescriptor : srcDescriptors) {
+ for (IArtifactKey key : packedRepo.query(ArtifactKeyQuery.ALL_KEYS, null)) {
+ for (IArtifactDescriptor srcDescriptor : packedRepo.getArtifactDescriptors(key)) {
if (!(srcDescriptor.getProperty(IArtifactDescriptor.FORMAT) == null) && srcDescriptor.getProperty(IArtifactDescriptor.FORMAT).equals(IArtifactDescriptor.FORMAT_PACKED)) {
//if we have a packed artifact
IArtifactDescriptor newDescriptor = new ArtifactDescriptor(key);
@@ -1162,7 +1163,7 @@ public class NewMirrorApplicationArtifactTest extends AbstractProvisioningTest {
}
@DataPoints
- public static String[] defaultComparator = {null, MD5ArtifactComparator.MD5_COMPARATOR_ID};
+ public static String[] defaultComparator = { null, ArtifactChecksumComparator.COMPARATOR_ID + ".md5" };
@Theory
public void testCompareUsingMD5Comparator(String comparator) {
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/NewMirrorApplicationMetadataTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/NewMirrorApplicationMetadataTest.java
index 173bb4ca0..4d8c2ac71 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/NewMirrorApplicationMetadataTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/mirror/NewMirrorApplicationMetadataTest.java
@@ -14,8 +14,12 @@
package org.eclipse.equinox.p2.tests.mirror;
import java.io.File;
-import java.net.*;
-import java.util.*;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepository;
import org.eclipse.equinox.internal.simpleconfigurator.utils.URIUtil;
import org.eclipse.equinox.p2.core.ProvisionException;
@@ -551,7 +555,7 @@ public class NewMirrorApplicationMetadataTest extends AbstractProvisioningTest {
public void testMetadataMirrorToInvalid() {
URI invalidDestRepository = null;
try {
- invalidDestRepository = new URI("http://eclipse.org/equinox/foobar/abcdefg");
+ invalidDestRepository = new URI("https://eclipse.org/equinox/foobar/abcdefg");
basicRunMirrorApplication("14.1", sourceRepoLocation.toURL(), invalidDestRepository.toURL(), true);
//we expect an illegal state exception to be thrown and should never get here
fail("14.0 IllegalStateExpection not thrown");
@@ -574,7 +578,7 @@ public class NewMirrorApplicationMetadataTest extends AbstractProvisioningTest {
delete(invalidRepository);
try {
- URI invalidDestRepository = new URI("http://eclipse.org/equinox/foobar/abcdefg");
+ URI invalidDestRepository = new URI("https://eclipse.org/equinox/foobar/abcdefg");
basicRunMirrorApplication("15.1", invalidRepository.toURL(), invalidDestRepository.toURL(), true);
//we expect a provisioning exception to be thrown and should never get here
fail("15.0 ProvisionExpection not thrown");
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/AllTests.java
index 246aad33b..1bc2ac2d4 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/AllTests.java
@@ -13,37 +13,19 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.omniVersion;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Tests the OmniVersion implementation of Version and VersionRange.
- *
+ *
*/
-public class AllTests extends TestCase {
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(CommonPatternsTest.class);
- suite.addTestSuite(FormatArrayTest.class);
- suite.addTestSuite(FormatATest.class);
- suite.addTestSuite(FormatDTest.class);
- suite.addTestSuite(FormatNTest.class);
- suite.addTestSuite(FormatProcessingTest.class);
- suite.addTestSuite(FormatPTest.class);
- suite.addTestSuite(FormatQTest.class);
- suite.addTestSuite(FormatRTest.class);
- suite.addTestSuite(FormatSTest.class);
- suite.addTestSuite(FormatTest.class);
- suite.addTestSuite(FormatRangeTest.class);
- suite.addTestSuite(MultiplicityTest.class);
- suite.addTestSuite(OSGiRangeTest.class);
- suite.addTestSuite(OSGiVersionTest.class);
- suite.addTestSuite(RawRangeTest.class);
- suite.addTestSuite(RawRangeWithOriginalTest.class);
- suite.addTestSuite(RawVersionTest.class);
- suite.addTestSuite(RawWithOriginalTest.class);
- suite.addTestSuite(IntersectionTest.class);
-
- return suite;
- }
-
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ CommonPatternsTest.class, FormatArrayTest.class, FormatATest.class, FormatDTest.class,
+ FormatNTest.class, FormatProcessingTest.class, FormatPTest.class, FormatQTest.class, FormatRTest.class,
+ FormatSTest.class, FormatTest.class, FormatRangeTest.class, MultiplicityTest.class, OSGiRangeTest.class,
+ OSGiVersionTest.class, RawRangeTest.class, RawRangeWithOriginalTest.class, RawVersionTest.class,
+ RawWithOriginalTest.class, IntersectionTest.class })
+public class AllTests {
+// test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/CommonPatternsTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/CommonPatternsTest.java
index d4dd7d9cb..cf7f644ce 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/CommonPatternsTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/CommonPatternsTest.java
@@ -14,8 +14,11 @@
package org.eclipse.equinox.p2.tests.omniVersion;
+import static org.junit.Assert.assertEquals;
+
import org.eclipse.equinox.p2.metadata.IVersionFormat;
import org.eclipse.equinox.p2.metadata.Version;
+import org.junit.Test;
/**
* Test common patterns:
@@ -23,7 +26,7 @@ import org.eclipse.equinox.p2.metadata.Version;
* - Mozilla
* - RPM
* - JSR277 (proposed version handling as documented Dec 30, 2008).
- *
+ *
*/
public class CommonPatternsTest extends VersionTesting {
public static String TRIPLET_FORMAT_STRING = "n=0;[.n=0;[.n=0;]][dS=m;]";
@@ -32,6 +35,7 @@ public class CommonPatternsTest extends VersionTesting {
public static String RPM_PREFIX = "format(<[n=0;:]a(d=[^a-zA-Z0-9@_-];?a)*>[-n[dS=!;]]):";
public static String JSR277_PREFIX = "format(n(.n=0;){0,3}[-S=m;]):";
+ @Test
public void testMozillaPattern() {
// 1.-1
@@ -114,11 +118,13 @@ public class CommonPatternsTest extends VersionTesting {
assertOrder(v17, v18);
}
+ @Test
public void testMozillaPatternToString() {
String test = MOZ_PREFIX + "1.1pre1aa";
assertEquals(MOZ_PREFIX, Version.parseVersion(test).getFormat().toString() + ':');
}
+ @Test
public void testTripletPattern() {
Version v1 = Version.parseVersion(TRIPLE_PREFIX + "1");
Version v1a = Version.parseVersion(TRIPLE_PREFIX + "1.0");
@@ -142,11 +148,13 @@ public class CommonPatternsTest extends VersionTesting {
assertOrder(v6, v3);
}
+ @Test
public void testTripletPatternToString() {
String test = TRIPLE_PREFIX + "1.0-FC1";
assertEquals(TRIPLE_PREFIX, Version.parseVersion(test).getFormat().toString() + ':');
}
+ @Test
public void testTripletPatternToOSGi() throws Exception {
IVersionFormat triplet = Version.compile(TRIPLET_FORMAT_STRING);
assertEquals(Version.createOSGi(1, 0, 0), triplet.parse("1.0.0." + IVersionFormat.DEFAULT_MIN_STRING_TRANSLATION));
@@ -157,17 +165,20 @@ public class CommonPatternsTest extends VersionTesting {
assertEquals(Version.createOSGi(1, 0, 0), Version.create("raw:1.0.0.''"));
}
+ @Test
public void testMinTranslation() throws Exception {
IVersionFormat format = Version.compile("n=0;[.n=0;[.n=0;]][dS=m{!};]");
assertEquals(Version.create("raw:1.0.0.''"), format.parse("1.0.0.!"));
}
+ @Test
public void testMaxTranslation() throws Exception {
IVersionFormat format = Version.compile("n=0;[.n=0;[.n=0;]][dS=''{~,4};]");
assertEquals(Version.create("raw:1.0.0.m"), format.parse("1.0.0.~~~~"));
}
// TODO: Not clear what a missing RPM EPOCH (i.e. first '.n:' should be interpreted as
+ @Test
public void testRPMPattern() {
Version v1 = Version.parseVersion(RPM_PREFIX + "33:1.2.3a-23/i386");
assertEquals(Version.parseVersion("raw:<33.1.2.3.'a'>.23"), v1);
@@ -191,6 +202,7 @@ public class CommonPatternsTest extends VersionTesting {
assertOrder(v13, v14);
}
+ @Test
public void testRPMPatternToString() {
String test = RPM_PREFIX + "33:1.2.3a-23/i386";
assertEquals(RPM_PREFIX, Version.parseVersion(test).getFormat().toString() + ':');
@@ -200,6 +212,7 @@ public class CommonPatternsTest extends VersionTesting {
* JSR277 works like triplet, but has 4 elements. The last qualifier can be used without specifying the preceding
* three segments.
*/
+ @Test
public void testJsr277Pattern() {
Version v1 = Version.parseVersion(JSR277_PREFIX + "1");
Version v1a = Version.parseVersion(JSR277_PREFIX + "1.0");
@@ -228,6 +241,7 @@ public class CommonPatternsTest extends VersionTesting {
assertOrder(v3, v5);
}
+ @Test
public void testJsr277PatternToString() {
String test = JSR277_PREFIX + "1.0.0.0-a";
assertEquals(JSR277_PREFIX, Version.parseVersion(test).getFormat().toString() + ':');
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatATest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatATest.java
index 86bf6ca5d..392e41eb9 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatATest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatATest.java
@@ -14,26 +14,37 @@
package org.eclipse.equinox.p2.tests.omniVersion;
-import junit.framework.TestCase;
-import org.eclipse.equinox.p2.metadata.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.equinox.p2.metadata.IVersionFormat;
+import org.eclipse.equinox.p2.metadata.Version;
+import org.eclipse.equinox.p2.metadata.VersionFormatException;
+import org.junit.Test;
/**
* Tests the format(a) rule.
*
*/
-public class FormatATest extends TestCase {
+public class FormatATest {
+ @Test
public void testNumeric() {
Version v = Version.parseVersion("format(a):1");
assertNotNull(v);
assertEquals(Version.parseVersion("raw:1"), v);
}
+ @Test
public void testString() {
Version v = Version.parseVersion("format(a):a");
assertNotNull(v);
assertEquals(Version.parseVersion("raw:'a'"), v);
}
+ @Test
public void testSequenceOfAuto() {
Version v = Version.parseVersion("format(aaaa):123abc456def");
assertNotNull(v);
@@ -43,6 +54,7 @@ public class FormatATest extends TestCase {
/**
* Test that exact delimits a on count and type.
*/
+ @Test
public void testExact() {
Version v = Version.parseVersion("format(a={3};aaa={3};):123abc456def");
assertNotNull(v);
@@ -54,107 +66,73 @@ public class FormatATest extends TestCase {
assertNotNull(v = Version.parseVersion("format(a={2};a):123"));
assertEquals(Version.parseVersion("raw:12.3"), v);
- try {
- // should fail because first segment is delimited after 2 chars
- Version.parseVersion("format(a={4};aaa={3};):12.3abc456def");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- // should fail because first segment is delimited by type change after 3 chars
- Version.parseVersion("format(a={4};aaa={3};):123abc456def");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- // should fail because first segment is delimited by type change after 3 chars
- Version.parseVersion("format(a={4};aaa={3};):xyz123abc456");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
-
+ // should fail because first segment is delimited after 2 chars
+ assertThrows(IllegalArgumentException.class,
+ () -> Version.parseVersion("format(a={4};aaa={3};):12.3abc456def"));
+ // should fail because first segment is delimited by type change after 3 chars
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(a={4};aaa={3};):123abc456def"));
+ // should fail because first segment is delimited by type change after 3 chars
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(a={4};aaa={3};):xyz123abc456"));
}
/**
* Test that unbound upper range delimits a on change of type.
*/
+ @Test
public void testAtLeast() {
Version v = Version.parseVersion("format(a={2,};aaa={2,};):123abc456def");
assertNotNull(v);
assertEquals(Version.parseVersion("raw:123.'abc'.456.'def'"), v);
- try {
- Version.parseVersion("format(a={2,};aaa={2,};):1abc456def");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(a={2,};aaa={2,};):12abc456d");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(a={2,};aaa={2,};):1abc456def"));
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(a={2,};aaa={2,};):12abc456d"));
}
/**
- * test that at-most follows same rules as exact for the min range
+ * test that at-most follows same rules as exact for the min range
*/
+ @Test
public void testAtMost() {
Version v = Version.parseVersion("format(a={1,3};aaa={1,3};):123abc456def");
assertNotNull(v);
assertEquals(Version.parseVersion("raw:123.'abc'.456.'def'"), v);
- // change of type is delimiter
+ // change of type is delimiter
assertNotNull(v = Version.parseVersion("format(a={1,2};aaaa={1,2};a):123abc456def"));
assertEquals(Version.parseVersion("raw:12.3.'abc'.456.'de'.'f'"), v);
- try {
- Version.parseVersion("format(a={2,3};aaa={1,2};):1abc456def");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(a={2,3};aaa={2,3};):12abc456d");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(a={4,5};aaa={1,4};):123abc456def");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class,
+ () -> Version.parseVersion("format(a={2,3};aaa={1,2};):1abc456def"));
+ assertThrows(IllegalArgumentException.class,
+ () -> Version.parseVersion("format(a={2,3};aaa={2,3};):12abc456d"));
+ assertThrows(IllegalArgumentException.class,
+ () -> Version.parseVersion("format(a={4,5};aaa={1,4};):123abc456def"));
}
+ @Test
public void testEnum() {
Version v1 = Version.parseVersion("format(aa={alpha,beta,gamma};a):12beta2");
Version v2 = Version.parseVersion("raw:12.{alpha,^beta,gamma}.2");
assertEquals(v1, v2);
}
+ @Test
public void testEnumOptional() {
- // When enum is optional, test that parser falls back to string when enum isn't matched
+ // When enum is optional, test that parser falls back to string when enum isn't
+ // matched
Version v1 = Version.parseVersion("format(aa={alpha,beta,gamma}?;a):12foo2");
Version v2 = Version.parseVersion("raw:12.'foo'.2");
assertEquals(v1, v2);
- try {
- Version.parseVersion("format(aa={alpha,beta,gamma};a):12foo2");
- fail("bad enum was not detected");
- } catch (IllegalArgumentException e) {
- // Expected
- }
+ assertThrows("bad enum was not detected", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(aa={alpha,beta,gamma};a):12foo2"));
}
+ @Test
public void testEnumIgnoreCase() {
- // When enum is optional, test that parser falls back to string when enum isn't matched
+ // When enum is optional, test that parser falls back to string when enum isn't
+ // matched
Version v1 = Version.parseVersion("format(aa={Alpha,Beta,Gamma}i;a):12beta2");
Version v2 = Version.parseVersion("raw:12.{alpha,^beta,gamma}.2");
assertEquals(v1, v2);
@@ -163,15 +141,12 @@ public class FormatATest extends TestCase {
v2 = Version.parseVersion("raw:12.{alpha,^beta,gamma}.2");
assertEquals(v1, v2);
- try {
- Version.parseVersion("format(aa={alpha,beta,gamma};a):12BETA2");
- fail("enum case sensitivity ignored");
- } catch (IllegalArgumentException e) {
- // Expected
- }
+ assertThrows("enum case sensitivity ignored", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(aa={alpha,beta,gamma};a):12BETA2"));
}
+ @Test
public void testEnumBegins() {
// When enum has 'begins', test that parser doesn't go too far
Version v1 = Version.parseVersion("format(aa={alpha,beta,gamma}b;aa):12gammafoo2");
@@ -189,21 +164,13 @@ public class FormatATest extends TestCase {
assertEquals(v1, v2);
// if it's not optional nor begins, it should fail
- try {
- v1 = Version.parseVersion("format(aa={alpha,beta,gamma};a):12gammafoo2");
- fail("Enum begins pattern resolved although begins was not specified");
- } catch (IllegalArgumentException e) {
- // Expected
- }
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> Version.parseVersion("format(aa={alpha,beta,gamma};a):12gammafoo2"));
// this one must fail too even though it's optional because
// it falls back to string and '#' is not a legal string character
- try {
- Version.parseVersion("format(aa={#,$,%}?;aa?):12#foo2");
- fail("Enum fallback to string with illegal string character");
- } catch (IllegalArgumentException e) {
- // Expected
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(aa={#,$,%}?;aa?):12#foo2"));
// This however, should work
v1 = Version.parseVersion("format(aa={#,$,%}b;aa):12#foo2");
@@ -211,11 +178,13 @@ public class FormatATest extends TestCase {
assertEquals(v1, v2);
}
+ @Test
public void testEnumFormatToString() {
Version v1 = Version.parseVersion("format(aa={alpha,beta,gamma};a):12beta2");
assertEquals(v1.toString(), "raw:12.{alpha,^beta,gamma}.2/format(aa={alpha,beta,gamma};a):12beta2");
}
+ @Test
public void testPHPVersion() {
IVersionFormat phpFormat = null;
try {
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatArrayTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatArrayTest.java
index f46827c41..b716e8ceb 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatArrayTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatArrayTest.java
@@ -14,32 +14,32 @@
package org.eclipse.equinox.p2.tests.omniVersion;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
+
import org.eclipse.equinox.p2.metadata.Version;
+import org.junit.Test;
/**
* Tests format(<>) - arrays.
- *
+ *
*/
-public class FormatArrayTest extends TestCase {
+public class FormatArrayTest {
+ @Test
public void testEmptyArray() {
- try {
- Version.parseVersion("format(<>q):''");
- fail("Uncaught error: empty array group is not allowed:");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: empty array group is not allowed:", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(<>q):''"));
}
+ @Test
public void testEmptyArrayBecauseContentIsOptional() {
- try {
- Version.parseVersion("format(<n?>q):''");
- fail("Uncaught error: produces an empty vector");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: produces an empty vector",
+ IllegalArgumentException.class,
+ () -> Version.parseVersion("format(<n?>q):''"));
}
+ @Test
public void testOptionalArray() {
Version v = Version.parseVersion("format(<n>?S):abc");
assertNotNull(v);
@@ -50,18 +50,21 @@ public class FormatArrayTest extends TestCase {
}
+ @Test
public void testNumericArray() {
Version v = Version.parseVersion("format(<(n.?)+>):1.2.3.4.5.6.7.8.9");
assertNotNull(v);
assertEquals(Version.parseVersion("raw:<1.2.3.4.5.6.7.8.9>"), v);
}
+ @Test
public void testStringArray() {
Version v = Version.parseVersion("format(<(S=[^.];d?)+>):a.b.c.d.e.f.g.h.i");
assertNotNull(v);
assertEquals(Version.parseVersion("raw:<'a'.'b'.'c'.'d'.'e'.'f'.'g'.'h'.'i'>"), v);
}
+ @Test
public void testNestedArray() {
Version v = Version.parseVersion("format(<n.<n.n>.n>):1.2.3.4");
assertNotNull(v);
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatDTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatDTest.java
index 201170e6a..1774f5de2 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatDTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatDTest.java
@@ -14,19 +14,23 @@
package org.eclipse.equinox.p2.tests.omniVersion;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
+
import org.eclipse.equinox.p2.metadata.Version;
+import org.junit.Test;
/**
* Tests format(d) and explicit delimiter chars and strings.
*/
-public class FormatDTest extends TestCase {
+public class FormatDTest {
/**
* Definition of default set of delimiters
*/
private static char[] s_delim = { //
0x20, // ' '
- 0x21, // !
+ 0x21, // !
0x22, // #
0x23, // "
0x24, // '$'
@@ -45,7 +49,7 @@ public class FormatDTest extends TestCase {
0x3b, // ';'
0x3c, // '<'
0x3d, // '='
- 0x3e, // '>'
+ 0x3e, // '>'
0x3f, // '?'
0x40, // @ <--- TODO: Debatable - is @ a delimiter of part of a string?
0x5b, // [
@@ -59,16 +63,17 @@ public class FormatDTest extends TestCase {
0x7e, // ~
};
+ @Test
public void testNumericWithDefaultSet() {
Version v = null;
String formatString = "format(ndn):";
Integer one = Integer.valueOf(1);
Integer two = Integer.valueOf(2);
- for (int i = 0; i < s_delim.length; i++) {
+ for (char delim : s_delim) {
StringBuilder buf = new StringBuilder();
buf.append(formatString);
buf.append("1");
- buf.append(s_delim[i]);
+ buf.append(delim);
buf.append("2");
v = Version.parseVersion(buf.toString());
assertNotNull(v);
@@ -77,16 +82,17 @@ public class FormatDTest extends TestCase {
}
}
+ @Test
public void testStringWithDefaultSet() {
Version v = null;
String formatString = "format(sds):";
String one = "abc";
String two = "def";
- for (int i = 0; i < s_delim.length; i++) {
+ for (char delim : s_delim) {
StringBuilder buf = new StringBuilder();
buf.append(formatString);
buf.append(one);
- buf.append(s_delim[i]);
+ buf.append(delim);
buf.append(two);
v = Version.parseVersion(buf.toString());
assertNotNull(v);
@@ -95,6 +101,7 @@ public class FormatDTest extends TestCase {
}
}
+ @Test
public void testAccepted() {
Version v = Version.parseVersion("format((d=[A-Z];n){3}):A1B22C333");
assertNotNull(v);
@@ -119,6 +126,7 @@ public class FormatDTest extends TestCase {
assertEquals(Integer.valueOf(333), v.getSegment(2));
}
+ @Test
public void testRejected() {
Version v = null;
assertNotNull(v = Version.parseVersion("format((d=[^.:];S=[a-z0-9];){3}):/a1;b22=c333"));
@@ -127,6 +135,7 @@ public class FormatDTest extends TestCase {
assertEquals("c333", v.getSegment(2));
}
+ @Test
public void testExplicit() {
Version v = null;
assertNotNull(v = Version.parseVersion("format('epoch='n';''major='n';''minor='n';'):epoch=1;major=22;minor=333;"));
@@ -141,6 +150,7 @@ public class FormatDTest extends TestCase {
}
+ @Test
public void testCounted() {
// repeated d, char count d, and counted d are equal
Version v1 = Version.parseVersion("format(dddn):///1");
@@ -153,43 +163,27 @@ public class FormatDTest extends TestCase {
}
+ @Test
public void testIllegalCharCount() {
- try {
- Version.parseVersion("format(d={3};n):///1");
- fail("Uncaught error: char count can not be used with 'd'");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(d={3};n):///1"));
}
+ @Test
public void testIllegalAsPad() {
- try {
- Version.parseVersion("format(nd=pm;n):1.0");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(nd=pm;n):1.0"));
}
+ @Test
public void testIllegalWithDefault() {
- try {
- Version.parseVersion("format(nd='a';n):1.0");
- fail("Uncaught error: 'd' can not have a default value");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(nd='a';n):1.0"));
}
/**
* Ignore of d is illegal as d is already ignored.
*/
+ @Test
public void testIllegalIgnore() {
- try {
- Version.parseVersion("format(nd=!;n):1.0");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(nd=!;n):1.0"));
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatNTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatNTest.java
index 35807c127..760a30158 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatNTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatNTest.java
@@ -14,14 +14,19 @@
package org.eclipse.equinox.p2.tests.omniVersion;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
+
import org.eclipse.equinox.p2.metadata.Version;
+import org.junit.Test;
/**
* Tests format(n) and format(N)
*
*/
-public class FormatNTest extends TestCase {
+public class FormatNTest {
+ @Test
public void testNonNegative() {
Version v = Version.parseVersion("format(n):1");
assertNotNull(v);
@@ -30,14 +35,11 @@ public class FormatNTest extends TestCase {
assertNotNull(v = Version.parseVersion("format(n):0"));
assertEquals(Version.parseVersion("raw:0"), v);
- try {
- Version.parseVersion("format(n):-1");
- fail("Uncaught exception: negative number in 'n' format");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("negative number in 'n' format", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(n):-1"));
}
+ @Test
public void testNegativeValues() {
Version v = Version.parseVersion("format(N):-1");
assertNotNull(v);
@@ -50,6 +52,7 @@ public class FormatNTest extends TestCase {
assertEquals(Version.parseVersion("raw:0"), v);
}
+ @Test
public void testLeadingZeros() {
Version v = Version.parseVersion("format(n):000001");
assertNotNull(v);
@@ -59,6 +62,7 @@ public class FormatNTest extends TestCase {
assertEquals(Version.parseVersion("raw:-1"), v);
}
+ @Test
public void testExact() {
Version v = Version.parseVersion("format(n={2};n={2};):1122");
assertNotNull(v);
@@ -70,56 +74,29 @@ public class FormatNTest extends TestCase {
assertNotNull(v = Version.parseVersion("format(N={4};N={3};):-001234"));
assertEquals(Version.parseVersion("raw:-1.234"), v);
- try {
- v = Version.parseVersion("format(n={2};.;n={2};):1.2");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- v = Version.parseVersion("format(n={2};.;n={2};):111.2222");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(n={2};.;n={2};):1.2"));
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(n={2};.;n={2};):111.2222"));
}
+ @Test
public void testAtLeast() {
Version v = Version.parseVersion("format(n={2,};.n={2,};):111.22222");
assertNotNull(v);
assertEquals(Version.parseVersion("raw:111.22222"), v);
- try {
- v = Version.parseVersion("format(n={2,};.;n={2};):111.2");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(n={2,};.;n={2};):111.2"));
}
+ @Test
public void testAtMost() {
Version v = Version.parseVersion("format(n={2,3};.n={2,3};):111.22");
assertNotNull(v);
assertEquals(Version.parseVersion("raw:111.22"), v);
- try {
- v = Version.parseVersion("format(n={2,3};.n={2,3};):111.2222");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- v = Version.parseVersion("format(n={2,3};.n={2,3};):1.222");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(n={2,3};.n={2,3};):111.2222"));
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(n={2,3};.n={2,3};):1.222"));
}
+ @Test
public void testNIsGreedy() {
- try {
- Version.parseVersion("format(nn):1010");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(nn):1010"));
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatPTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatPTest.java
index 017fbf3cc..8e7df4131 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatPTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatPTest.java
@@ -14,16 +14,21 @@
package org.eclipse.equinox.p2.tests.omniVersion;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
import org.eclipse.equinox.p2.metadata.Version;
+import org.junit.Test;
-public class FormatPTest extends TestCase {
+public class FormatPTest {
+ @Test
public void testPad() {
Version v = Version.parseVersion("format(qp):''pm");
assertNotNull(v);
assertEquals(Version.parseVersion("raw:''pm"), v);
}
+ @Test
public void testArrayPad() {
Version v = Version.parseVersion("format(r):<''pm>");
assertNotNull(v);
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatProcessingTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatProcessingTest.java
index bc3178242..5ba856178 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatProcessingTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatProcessingTest.java
@@ -14,15 +14,21 @@
package org.eclipse.equinox.p2.tests.omniVersion;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
+
import org.eclipse.equinox.p2.metadata.Version;
+import org.junit.Test;
/**
- * Tests processing rules not tested elsewhere, and combinations of processing rules.
+ * Tests processing rules not tested elsewhere, and combinations of processing
+ * rules.
*
*/
-public class FormatProcessingTest extends TestCase {
+public class FormatProcessingTest {
+ @Test
public void testIgnore() {
Version v = Version.parseVersion("format(n=!;.n.n):100.1.2");
assertNotNull(v);
@@ -30,6 +36,7 @@ public class FormatProcessingTest extends TestCase {
assertEquals(Integer.valueOf(2), v.getSegment(1));
}
+ @Test
public void testDefaultArrayWithPad() {
Version v = Version.parseVersion("format(s.?<n.n>=<1.0pm>;=p10;?):alpha");
assertNotNull(v);
@@ -39,12 +46,14 @@ public class FormatProcessingTest extends TestCase {
assertEquals(Version.parseVersion("raw:'alpha'.<1.2p10>"), v);
}
+ @Test
public void testDefaultValues() {
Version v = Version.parseVersion("format(n.[n=1;].?[s='foo';].?[a='bar';].?[a=2;]):9.");
assertNotNull(v);
assertEquals(Version.parseVersion("raw:9.1.'foo'.'bar'.2"), v);
}
+ @Test
public void testArrayDefaultValues() {
Version v = null;
assertNotNull(v = Version.parseVersion("format(n.<n.n>=<1.0>;?):9."));
@@ -59,6 +68,7 @@ public class FormatProcessingTest extends TestCase {
assertEquals("individual defaults should not be used", Version.parseVersion("raw:9.<1.0>"), v);
}
+ @Test
public void testOtherTypeAsDefault() {
Version v = null;
assertNotNull(v = Version.parseVersion("format(s=123;?n):1"));
@@ -100,159 +110,84 @@ public class FormatProcessingTest extends TestCase {
}
/**
- * A processing rule can only be applied once to the preceding element.
- * (These tests check if the same processing can be applied twice).
+ * A processing rule can only be applied once to the preceding element. (These
+ * tests check if the same processing can be applied twice).
*/
+ @Test
public void testSameMoreThanOnce() {
- try {
- Version.parseVersion("format(n=!;=!;.n):1.2");
- fail("error not detected:2 x =!;");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(s=[abc];=[123];.n):abc123.2");
- fail("error not detected:2 x =[];");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(nd=[^:];=[^:];n):1.2");
- fail("error not detected:2x [^];");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(n={1,3};={1,3};.n):1.2");
- fail("error not detected:2x ={ };");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(n=0;=1;.n):1.2");
- fail("error not detected:2x =default value");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format((n.n)=pm;=pm;):1.2");
- fail("error not detected:2x =pm;");
-
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("error detected:2 x =!;", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(n=!;=!;.n):1.2"));
+ assertThrows("error detected:2 x =[];", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(s=[abc];=[123];.n):abc123.2"));
+ assertThrows("error detected:2x [^];", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(nd=[^:];=[^:];n):1.2"));
+ assertThrows("error detected:2x ={ };", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(n={1,3};={1,3};.n):1.2"));
+ assertThrows("error detected:2x =default value", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(n=0;=1;.n):1.2"));
+ assertThrows("error detected:2x =pm;", IllegalArgumentException.class,
+ () -> Version.parseVersion("format((n.n)=pm;=pm;):1.2"));
+
}
/**
* Tests that it is not allowed to have both =[]; and =[^] at the same time.
*/
+ @Test
public void testSetNotSet() {
- try {
- Version.parseVersion("format(nd=[a-z];=[^.:];n):1.2");
- fail("error not detected: =[];=[^];");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("error detected: =[];=[^];", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(nd=[a-z];=[^.:];n):1.2"));
}
/**
* Pad can only be combined with default value.
*/
+ @Test
public void testBadPadCombinations() {
- try {
- Version.parseVersion("format((n.n)=pm;=[abc];):1.2");
- fail("error not detected: =p; =[];");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format((n.n)=pm;=[^.:];):1.2");
- fail("error not detected: =p; =[];");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format((n.n)=pm;={1,3};):1.2");
- fail("error not detected: =p; ={};");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format((n.n)=pm;=!;):1.2");
- fail("error not detected: =p; =!;");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("error detected: =p; =[];", IllegalArgumentException.class,
+ () -> Version.parseVersion("format((n.n)=pm;=[abc];):1.2"));
+ assertThrows("error detected: =p; =[];", IllegalArgumentException.class,
+ () -> Version.parseVersion("format((n.n)=pm;=[^.:];):1.2"));
+ assertThrows("error detected: =p; ={};", IllegalArgumentException.class,
+ () -> Version.parseVersion("format((n.n)=pm;={1,3};):1.2"));
+
+ assertThrows("error detected: =p; =!;", IllegalArgumentException.class,
+ () -> Version.parseVersion("format((n.n)=pm;=!;):1.2"));
}
+ @Test
public void testNonPaddable() {
- try {
- Version.parseVersion("format(n=pm;):1");
- fail("error not detected: n=p;");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(N=pm;):1");
- fail("error not detected: n=p;");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(s=pm;):a");
- fail("error not detected: s=p;");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(S=pm;):a");
- fail("error not detected: S=p;");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(a=pm;):a");
- fail("error not detected: a=p;");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(d=pm;):a");
- fail("error not detected: d=p;");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(q=pm;):a");
- fail("error not detected: q=p;");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(r=pm;):a");
- fail("error not detected: q=p;");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format('x'=pm;n):x1");
- fail("error not detected: 'x'=p;");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(.=pm;n):x1");
- fail("error not detected: .=p;");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(p=pm;n):x1");
- fail("error not detected: p=p;");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("error detected: n=p;", IllegalArgumentException.class,
+ () ->Version.parseVersion("format(n=pm;):1"));
+ assertThrows("error detected: n=p;", IllegalArgumentException.class,
+ () ->Version.parseVersion("format(N=pm;):1"));
+
+ assertThrows("error detected: s=p;", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(s=pm;):a"));
+
+ assertThrows("error detected: S=p;", IllegalArgumentException.class,
+ () ->Version.parseVersion("format(S=pm;):a"));
+
+ assertThrows("error detected: a=p;", IllegalArgumentException.class,
+ () ->Version.parseVersion("format(a=pm;):a"));
+
+ assertThrows("error detected: d=p;", IllegalArgumentException.class,
+ () ->Version.parseVersion("format(d=pm;):a"));
+
+ assertThrows("error detected: q=p;", IllegalArgumentException.class,
+ () ->Version.parseVersion("format(q=pm;):a"));
+
+ assertThrows("error detected: q=p;", IllegalArgumentException.class,
+ () ->Version.parseVersion("format(r=pm;):a"));
+
+ assertThrows("error detected: 'x'=p;", IllegalArgumentException.class,
+ () ->Version.parseVersion("format('x'=pm;n):x1"));
+
+ assertThrows("error detected: .=p;", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(.=pm;n):x1"));
+ assertThrows("error detected: p=p;", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(p=pm;n):x1"));
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatQTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatQTest.java
index 6b4d46554..4c4f4e039 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatQTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatQTest.java
@@ -14,19 +14,25 @@
package org.eclipse.equinox.p2.tests.omniVersion;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
+
import org.eclipse.equinox.p2.metadata.Version;
+import org.junit.Test;
/**
- * Tests format(q)
- * smart quoted string - matches a quoted alphanumeric string where the quote is determined by the first
- * character of the string segment. The quote must be a non alphanumeric character, and the string
- * must be delimited by the same character except brackets and parenthesises (i.e. (), {}, [], <>) which are
- * handled as pairs, thus 'q' matches "<andrea-doria>" and produces a single string segment with the text 'andrea-doria'.
- * A non-quoted sequence of characters are not matched by 'q'.
- *
+ * Tests format(q) smart quoted string - matches a quoted alphanumeric string
+ * where the quote is determined by the first character of the string segment.
+ * The quote must be a non alphanumeric character, and the string must be
+ * delimited by the same character except brackets and parenthesises (i.e. (),
+ * {}, [], <>) which are handled as pairs, thus 'q' matches "<andrea-doria>" and
+ * produces a single string segment with the text 'andrea-doria'. A non-quoted
+ * sequence of characters are not matched by 'q'.
+ *
*/
-public class FormatQTest extends TestCase {
+public class FormatQTest {
+ @Test
public void testQuoteFormatParsing() {
Version aVer = Version.parseVersion("raw:'a'");
assertNotNull(aVer);
@@ -47,24 +53,17 @@ public class FormatQTest extends TestCase {
}
+ @Test
public void testQUnbalancedQuoteR() {
- try {
- Version.parseVersion("format(q):'a");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):'a"));
}
+ @Test
public void testQUnbalancedQuoteL() {
- try {
- Version.parseVersion("format(q):a'");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):a'"));
}
+ @Test
public void testQuotedFormatPairsParsing() {
Version aVer = Version.parseVersion("raw:'a'");
assertNotNull(aVer);
@@ -79,143 +78,50 @@ public class FormatQTest extends TestCase {
assertEquals(aVer, v);
}
+ @Test
public void testQUnbalancedPair1() {
- try {
- Version.parseVersion("format(q):(a");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(q):a)");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(q):(a(");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(q):)a)");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):(a"));
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):a)"));
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):(a("));
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):)a)"));
}
+ @Test
public void testQUnbalancedPair2() {
- try {
- Version.parseVersion("format(q):[a");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(q):a]");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(q):[a[");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(q):]a]");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):[a"));
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):a]"));
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):[a["));
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):]a]"));
}
+ @Test
public void testQUnbalancedPair3() {
- try {
- Version.parseVersion("format(q):<a");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(q):a>");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(q):<a<");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(q):>a>");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):<a"));
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):a>"));
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):<a<"));
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):>a>"));
}
+ @Test
public void testQUnbalancedPair4() {
- try {
- Version.parseVersion("format(q):{a");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(q):a}");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(q):{a{");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(q):}a}");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):{a"));
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):a}"));
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):{a{"));
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):}a}"));
}
+ @Test
public void testQUnbalancedPair5() {
- // not all erroneous permutations tested - only principle that open and close must be from "matching pair"
+ // not all erroneous permutations tested - only principle that open and close
+ // must be from "matching pair"
// it should be enough to cover a faulty implementation
- try {
- Version.parseVersion("format(q):(a}");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(q):[a}");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(q):{a]");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(q):<a)");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):(a}"));
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):[a}"));
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):{a]"));
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q):<a)"));
}
+ @Test
public void testExact() {
Version v = Version.parseVersion("format(q={4};q):<123a>\"bc456'def'\"");
assertNotNull(v);
@@ -233,20 +139,13 @@ public class FormatQTest extends TestCase {
assertNotNull(v = Version.parseVersion("format(q={2};.q={1};qq={3};):<12>.<3>'456'<abc>"));
assertEquals(Version.parseVersion("raw:'12'.'3'.'456'.'abc'"), v);
- try {
- Version.parseVersion("format(q={4};.q):123.(abc456)'def'");
- fail("Uncaught error: quoted string is longer than 4");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(q={4};q):<123>(abc456'def')");
- fail("Uncaught error: quoted string is shorter than 4");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Error: quoted string is longer than 4", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(q={4};.q):123.(abc456)'def'"));
+ assertThrows("Error: quoted string is shorter than 4", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(q={4};q):<123>(abc456'def')"));
}
+ @Test
public void testAtLeast() {
Version v = Version.parseVersion("format(q={2,};):(123abc456'def')");
assertNotNull(v);
@@ -261,32 +160,17 @@ public class FormatQTest extends TestCase {
assertNotNull(v = Version.parseVersion("format(q={2,};q):<123a>(bc456'def')"));
assertEquals(Version.parseVersion("raw:'123a'.\"bc456'def'\""), v);
- try {
- Version.parseVersion("format(q={2,};.q):1.abc456'def'");
- fail("Uncaught error: first segment is shorter than 2");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(q={2,};q):<1>(abc456'def')");
- fail("Uncaught error: firt segment is shorter than 2");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(q={2,};.q={10,};):(12).(abc456'd')");
- fail("Uncaught error: last segment is shorter than 10");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(q={2,};.q={10,};):<12>.abc456'd'");
- fail("Uncaught error: second segment is not quoted");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Eror: first segment is shorter than 2", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(q={2,};.q):1.abc456'def'"));
+ assertThrows("Eror: firt segment is shorter than 2", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(q={2,};q):<1>(abc456'def')"));
+ assertThrows("Eror: last segment is shorter than 10", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(q={2,};.q={10,};):(12).(abc456'd')"));
+ assertThrows("Eror: fsecond segment is not quoted", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(q={2,};.q={10,};):<12>.abc456'd'"));
}
+ @Test
public void testAtMost() {
// exact request
Version v = Version.parseVersion("format(q={1,3};q={1,2};q):<123><ab><c456'def'>");
@@ -297,20 +181,11 @@ public class FormatQTest extends TestCase {
assertNotNull(v = Version.parseVersion("format(q={1,4};q={1,4};q):<123><abc4><56'def'>"));
assertEquals(Version.parseVersion("raw:'123'.'abc4'.\"56'def'\""), v);
- try {
- // fails because first segment is shorter
- Version.parseVersion("format(q={2,3};q):<1><abc456'def'>");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- // fails because there are trailing characters after 'c'
- Version.parseVersion("format(q={2,3};q={2,3};):<12><abc456'd'>");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ // fails because first segment is shorter
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(q={2,3};q):<1><abc456'def'>"));
+ // fails because there are trailing characters after 'c'
+ assertThrows(IllegalArgumentException.class,
+ () -> Version.parseVersion("format(q={2,3};q={2,3};):<12><abc456'd'>"));
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatRTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatRTest.java
index 2676a70b0..5e11aa595 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatRTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatRTest.java
@@ -14,27 +14,33 @@
package org.eclipse.equinox.p2.tests.omniVersion;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
+
import org.eclipse.equinox.p2.metadata.Version;
+import org.junit.Test;
/**
* Tests format(r)
*
*/
-public class FormatRTest extends TestCase {
-
+public class FormatRTest {
+ @Test
public void testNumeric() {
Version v = Version.parseVersion("format(r):1");
assertNotNull(v);
assertEquals(Version.parseVersion("raw:1"), v);
}
+ @Test
public void testNegativeNumeric() {
Version v = Version.parseVersion("format(r):-1");
assertNotNull(v);
assertEquals(Version.parseVersion("raw:-1"), v);
}
+ @Test
public void testString() {
Version v = Version.parseVersion("format(r):'a'");
assertNotNull(v);
@@ -44,6 +50,7 @@ public class FormatRTest extends TestCase {
assertEquals(Version.parseVersion("raw:'a'"), v);
}
+ @Test
public void testConcatentatedStrings() {
Version v = Version.parseVersion("format(r):'a''b'");
assertNotNull(v);
@@ -53,36 +60,32 @@ public class FormatRTest extends TestCase {
assertEquals(Version.parseVersion("raw:'a has a \"hat\" it is '\"a's\""), v);
}
+ @Test
public void testMaxString() {
Version v = Version.parseVersion("format(r):m");
assertNotNull(v);
assertEquals(Version.parseVersion("raw:m"), v);
}
+ @Test
public void testMaxNumeric() {
Version v = Version.parseVersion("format(r):M");
assertNotNull(v);
assertEquals(Version.parseVersion("raw:M"), v);
}
+ @Test
public void testArray() {
Version v = Version.parseVersion("format(r):<1>");
assertNotNull(v);
assertEquals(Version.parseVersion("raw:<1>"), v);
}
+ @Test
public void testNonRElements() {
- try {
- Version.parseVersion("format(r):aaa");
- fail("a is not a valid raw element");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(r):1,2");
- fail("comma is not a delimiter in raw format");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("a is not a valid raw element", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(r):aaa"));
+ assertThrows("comma is not a delimiter in raw format", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(r):1,2"));
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatRangeTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatRangeTest.java
index 83c964232..16c55c4a2 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatRangeTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatRangeTest.java
@@ -14,8 +14,12 @@
package org.eclipse.equinox.p2.tests.omniVersion;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThrows;
+
import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.metadata.VersionRange;
+import org.junit.Test;
/**
* Tests ranges using format(xxx) version strings.
@@ -24,6 +28,7 @@ import org.eclipse.equinox.p2.metadata.VersionRange;
public class FormatRangeTest extends VersionTesting {
public static String OSGI_PREFIX = "format(n[.n=0;[.n=0;[.S=[A-Za-z0-9_-];]]]):";
+ @Test
public void testRangeWithDefaultValues() {
VersionRange range = new VersionRange(OSGI_PREFIX + "0");
assertIncludedInRange("#1", range, OSGI_PREFIX + "0");
@@ -31,21 +36,20 @@ public class FormatRangeTest extends VersionTesting {
assertIncludedInRange("#3", range, OSGI_PREFIX + "0.0.0");
}
+ @Test
public void testEmptyRange() {
- try {
- new VersionRange(OSGI_PREFIX);
- fail("Uncught error: range can not be empty");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: range can not be empty", IllegalArgumentException.class,
+ () -> new VersionRange(OSGI_PREFIX));
}
+ @Test
public void testRangeDelimitersInVersionString() {
VersionRange range = new VersionRange("format(S):[one\\,\\ two,three\\,\\ \\[and\\]\\ four]");
assertIncludedInRange("#1", range, "format(S):one, two");
assertIncludedInRange("#1", range, "format(S):three, [and] four");
}
+ @Test
public void testSingleVersionRange() {
VersionRange range = new VersionRange(OSGI_PREFIX + "[1.0.0, 1.0.0.x)");
assertEquals("0.1", Version.parseVersion(OSGI_PREFIX + "1.0.0"), range.getMinimum());
@@ -59,8 +63,9 @@ public class FormatRangeTest extends VersionTesting {
assertNotIncludedInRange("2.4", range, OSGI_PREFIX + "2");
}
+ @Test
public void testGreaterThan() {
- // any version equal or greater than 1.0.0 is ok
+ // any version equal or greater than 1.0.0 is ok
VersionRange lowerBound = new VersionRange(OSGI_PREFIX + "1.0.0");
assertNotIncludedInRange("1.0", lowerBound, OSGI_PREFIX + "0.9.0");
assertIncludedInRange("1.1", lowerBound, OSGI_PREFIX + "1.0.0");
@@ -68,8 +73,9 @@ public class FormatRangeTest extends VersionTesting {
assertIncludedInRange("1.3", lowerBound, OSGI_PREFIX + "999.999.999.foo");
}
+ @Test
public void testGreaterThanMinimum() {
- // any version equal or greater than Version.emptyVersion is ok
+ // any version equal or greater than Version.emptyVersion is ok
VersionRange lowerBound = new VersionRange("raw:-M");
assertIncludedInRange("0.1", lowerBound, "raw:-M");
assertIncludedInRange("1.0", lowerBound, OSGI_PREFIX + "0.9.0");
@@ -78,8 +84,9 @@ public class FormatRangeTest extends VersionTesting {
assertIncludedInRange("1.3", lowerBound, OSGI_PREFIX + "999.999.999.foo");
}
+ @Test
public void testLowerThan() {
- // any version lower than 2.0 is ok
+ // any version lower than 2.0 is ok
VersionRange upperBound = new VersionRange(OSGI_PREFIX + "[0, 2.0.0)");
assertIncludedInRange("1.0", upperBound, OSGI_PREFIX + "0.0");
assertIncludedInRange("1.1", upperBound, OSGI_PREFIX + "0.9");
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatSTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatSTest.java
index 4ec6cad23..f72a1eaba 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatSTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatSTest.java
@@ -14,29 +14,32 @@
package org.eclipse.equinox.p2.tests.omniVersion;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
+
import org.eclipse.equinox.p2.metadata.Version;
+import org.junit.Test;
/**
* Tests format(s), and format(S)
- *
- * a string group matching any character except any following
- * explicit/optional delimiter. Use processing rules =[]; or =[^] to define the set of allowed characters.
- *
+ *
+ * a string group matching any character except any following explicit/optional
+ * delimiter. Use processing rules =[]; or =[^] to define the set of allowed
+ * characters.
+ *
*/
-public class FormatSTest extends TestCase {
+public class FormatSTest {
+ @Test
public void testStringAcceptDigit() {
Version v = Version.parseVersion("format(S):1");
assertNotNull(v);
assertEquals(Version.parseVersion("raw:'1'"), v);
- try {
- Version.parseVersion("format(s):1");
- fail("Uncaught error: s should not accept digits");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: s should not accept digits", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(s):1"));
}
+ @Test
public void testStringAcceptAlpha() {
Version v = Version.parseVersion("format(s):a");
assertNotNull(v);
@@ -46,18 +49,16 @@ public class FormatSTest extends TestCase {
assertEquals(Version.parseVersion("raw:'a'"), v);
}
+ @Test
public void testStringDelimitedByNumeric() {
Version v = Version.parseVersion("format(sn):foobar123");
assertNotNull(v);
assertEquals(Version.parseVersion("raw:'foobar'.123"), v);
- try {
- Version.parseVersion("format(Sn):foobar123");
- fail("Uncaught error: S should eat entire string, no n found at the end");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: S should eat entire string, no n found at the end",
+ IllegalArgumentException.class, () -> Version.parseVersion("format(Sn):foobar123"));
}
+ @Test
public void testStringWithSpace() {
Version v;
@@ -65,15 +66,11 @@ public class FormatSTest extends TestCase {
assertEquals(Version.parseVersion("raw:'foo bar'.123"), v);
// Test 's' with attempt to include 'space' and delimiters
- //
- try {
- Version.parseVersion("format(s=[^];n):foo bar123");
- fail("Uncaught error: format(s) can not match non letters (space).");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: format(s) can not match non letters (space).", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(s=[^];n):foo bar123"));
}
+ @Test
public void testStringDelimitedByDelimiter() {
Version v = Version.parseVersion("format(s.n):foobar.123");
assertNotNull(v);
@@ -83,24 +80,28 @@ public class FormatSTest extends TestCase {
assertEquals(Version.parseVersion("raw:'foobar'.123"), v);
}
+ @Test
public void testStringDelimitedByExplicitDelimiter() {
Version v = Version.parseVersion("format(s=[^r];d=[r];n):foobar123");
assertNotNull(v);
assertEquals(Version.parseVersion("raw:'fooba'.123"), v);
}
+ @Test
public void testStringWithAllowedSet() {
Version v = Version.parseVersion("format(s=[a-z];sn):fooBAR123");
assertNotNull(v);
assertEquals(Version.parseVersion("raw:'foo'.'BAR'.123"), v);
}
+ @Test
public void testStringWithDisallowedSet() {
Version v = Version.parseVersion("format(s=[^a-z];sn):FOObar123");
assertNotNull(v);
assertEquals(Version.parseVersion("raw:'FOO'.'bar'.123"), v);
}
+ @Test
public void testExact() {
Version v = Version.parseVersion("format(S={4};S):123abc456'def'");
assertNotNull(v);
@@ -121,30 +122,20 @@ public class FormatSTest extends TestCase {
assertNotNull(v = Version.parseVersion("format(S={2};.S={1};s={3};):12.3abc"));
assertEquals(Version.parseVersion("raw:'12'.'3'.'abc'"), v);
- try {
- Version.parseVersion("format(s={4};.s):aaa.abc456'def'");
- fail("Uncaught error: first segment is less than 4 chars long");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(s={4};.s):123.abc456'def'");
- fail("Uncaught error: first segment has digits");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(S={4}=[^.];.S):123.abc456'def'");
- fail("Uncaught error: first segment has only 3 characters");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: first segment is less than 4 chars long", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(s={4};.s):aaa.abc456'def'"));
+ assertThrows("Uncaught error: first segment has digits", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(s={4};.s):123.abc456'def'"));
+ assertThrows("Uncaught error: first segment has only 3 characters", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(S={4}=[^.];.S):123.abc456'def'"));
}
/**
- * Test that unbound upper range is just a limit on lower range. Upper delimiter must be a delimiter.
+ * Test that unbound upper range is just a limit on lower range. Upper delimiter
+ * must be a delimiter.
*/
+ @Test
public void testAtLeast() {
Version v = Version.parseVersion("format(S={2,};):123abc456'def'");
assertNotNull(v);
@@ -153,20 +144,13 @@ public class FormatSTest extends TestCase {
assertNotNull(v = Version.parseVersion("format(S={2,};=[^.];.S):123a.bc456'def'"));
assertEquals(Version.parseVersion("raw:'123a'.\"bc456'def'\""), v);
- try {
- Version.parseVersion("format(s={2,};.S):a.abc456'def'");
- fail("uncaught error: first segment is shorter than 2");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(s={2,};.s={10,};):aa.abcd");
- fail("Uncaught error: secont segment too short");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: first segment is shorter than 2", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(s={2,};.S):a.abc456'def'"));
+ assertThrows("Uncaught error: second segment too short", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(s={2,};.s={10,};):aa.abcd"));
}
+ @Test
public void testAtMost() {
Version v = Version.parseVersion("format(S={1,3};S={1,2};S):123abc456'def'");
assertNotNull(v);
@@ -176,19 +160,10 @@ public class FormatSTest extends TestCase {
assertNotNull(v = Version.parseVersion("format(S={1,4};=[^.];.S={1,4};.S):123.abc4.56'def'"));
assertEquals(Version.parseVersion("raw:'123'.'abc4'.\"56'def'\""), v);
- try {
- // fails because of delimiter after one char
- Version.parseVersion("format(s={2,3};s):a.abc456'def'");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- // fails because there are trailing characters after 'c'
- Version.parseVersion("format(s={2,3};.S={2,3};):aa.abc456'd'");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ // fails because of delimiter after one char
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("format(s={2,3};s):a.abc456'def'"));
+ // fails because there are trailing characters after 'c'
+ assertThrows(IllegalArgumentException.class,
+ () -> Version.parseVersion("format(s={2,3};.S={2,3};):aa.abc456'd'"));
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatTest.java
index d3335a34b..6fc5fd1a4 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/FormatTest.java
@@ -14,15 +14,19 @@
package org.eclipse.equinox.p2.tests.omniVersion;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
import org.eclipse.equinox.p2.metadata.Version;
+import org.junit.Test;
/**
* Test of format() performing tests not covered by tests per rule.
- *
+ *
*/
-public class FormatTest extends TestCase {
+public class FormatTest {
+ @Test
public void testEmptySegmentsRemoved() {
Version v = Version.parseVersion("format(ndddn):1...2");
assertNotNull(v);
@@ -30,6 +34,7 @@ public class FormatTest extends TestCase {
assertEquals(v.getSegment(1), Integer.valueOf(2));
}
+ @Test
public void testGreedyParsing() {
Version v = Version.parseVersion("format(n(.n)*(.s)*):1.2.3.hello");
assertNotNull(v);
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/IntersectionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/IntersectionTest.java
index 858dc8c77..33f2e41ab 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/IntersectionTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/IntersectionTest.java
@@ -14,9 +14,12 @@
package org.eclipse.equinox.p2.tests.omniVersion;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.metadata.VersionRange;
+import org.junit.Test;
/**
* Tests intersection of VersionRanges.
@@ -25,12 +28,13 @@ import org.eclipse.equinox.p2.metadata.VersionRange;
* - equal range
* - same lower bound - upper inside
* - same upper bound - lower inside
- * - inside
- *
+ * - inside
+ *
* Tests made with both inclusive and non inclusive values.
- *
+ *
*/
-public class IntersectionTest extends TestCase {
+public class IntersectionTest {
+ @Test
public void testIntersectsEmpty() {
VersionRange a = new VersionRange("raw:[1.0.0,3.0.0]");
VersionRange b = new VersionRange("raw:[4.0.0,6.0.0]");
@@ -48,6 +52,7 @@ public class IntersectionTest extends TestCase {
assertTrue("Non overlapping ranges b/a should be empty #6", b.intersect(a) == null);
}
+ @Test
public void testStraddleBoundary() {
VersionRange a = new VersionRange("raw:[1.0.0,3.0.0]");
VersionRange b = new VersionRange("raw:[2.0.0,6.0.0]");
@@ -79,6 +84,7 @@ public class IntersectionTest extends TestCase {
}
+ @Test
public void testEqualRanges() {
VersionRange a = new VersionRange("raw:[1.0.0,3.0.0]");
VersionRange b = new VersionRange("raw:[1.0.0,3.0.0]");
@@ -107,6 +113,7 @@ public class IntersectionTest extends TestCase {
assertTrue("#2.8", !r.getIncludeMinimum());
}
+ @Test
public void testPartialEqualLower() {
VersionRange a = new VersionRange("raw:[1.0.0,3.0.0]");
VersionRange b = new VersionRange("raw:[1.0.0,2.0.0]");
@@ -135,6 +142,7 @@ public class IntersectionTest extends TestCase {
}
+ @Test
public void testPartialEqualUpper() {
VersionRange a = new VersionRange("raw:[1.0.0,3.0.0]");
VersionRange b = new VersionRange("raw:[2.0.0,3.0.0]");
@@ -162,6 +170,7 @@ public class IntersectionTest extends TestCase {
assertTrue("#2.8", !r.getIncludeMinimum());
}
+ @Test
public void testFullyInside() {
VersionRange a = new VersionRange("raw:[1.0.0,3.0.0]");
VersionRange b = new VersionRange("raw:[2.0.0,2.5.0]");
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/MultiplicityTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/MultiplicityTest.java
index 93b52de37..37e7026c1 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/MultiplicityTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/MultiplicityTest.java
@@ -14,16 +14,21 @@
package org.eclipse.equinox.p2.tests.omniVersion;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
+
import org.eclipse.equinox.p2.metadata.Version;
+import org.junit.Test;
/**
* Tests {n.m} in different combinations and the special +?*
*
*/
-public class MultiplicityTest extends TestCase {
+public class MultiplicityTest {
+ @Test
public void test01() {
- // n? == [n] == n{0,1}
+ // n? == [n] == n{0,1}
Version v = Version.parseVersion("format(n?):1");
assertNotNull(v);
assertEquals(Version.parseVersion("raw:1"), v);
@@ -33,12 +38,8 @@ public class MultiplicityTest extends TestCase {
assertNotNull(v = Version.parseVersion("format(n.?n?):1"));
assertEquals(Version.parseVersion("raw:1"), v);
- try {
- Version.parseVersion("format(n?):a");
- fail("Uncaught error: format(n?):a");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: format(n?):a", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(n?):a"));
// with []
assertNotNull(v = Version.parseVersion("format([n]):1"));
assertEquals(Version.parseVersion("raw:1"), v);
@@ -48,12 +49,8 @@ public class MultiplicityTest extends TestCase {
assertNotNull(v = Version.parseVersion("format(n[.][n]):1"));
assertEquals(Version.parseVersion("raw:1"), v);
- try {
- Version.parseVersion("format([n]):a");
- fail("Uncaught error: format([n]):a");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: format([n]):a", IllegalArgumentException.class,
+ () -> Version.parseVersion("format([n]):a"));
// with {0,1}
assertNotNull(v = Version.parseVersion("format(n{0,1}):1"));
@@ -65,14 +62,11 @@ public class MultiplicityTest extends TestCase {
assertNotNull(v = Version.parseVersion("format(n.?n{0,}):1"));
assertEquals(Version.parseVersion("raw:1"), v);
- try {
- Version.parseVersion("format(n{0,1}):a");
- fail("Uncaught error: format(n{0,1}):a");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: format(n{0,1}):a", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(n{0,1}):a"));
}
+ @Test
public void test1M() {
// n+ == n{1,}
Version v = Version.parseVersion("format((nd?)+):1.2.3");
@@ -82,18 +76,10 @@ public class MultiplicityTest extends TestCase {
assertNotNull(v = Version.parseVersion("format(n+):1"));
assertEquals(Version.parseVersion("raw:1"), v);
- try {
- Version.parseVersion("format(n+):");
- fail("Uncaught error: format(n+):");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(n+):a");
- fail("Uncaught error: format(n+):a");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: format(n+):", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(n+):"));
+ assertThrows("Uncaught error: format(n+):a", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(n+):a"));
// with {1,}
assertNotNull(v = Version.parseVersion("format((nd?){1,}):1.2.3"));
assertEquals(Version.parseVersion("raw:1.2.3"), v);
@@ -101,21 +87,14 @@ public class MultiplicityTest extends TestCase {
assertNotNull(v = Version.parseVersion("format(n{1,}):1"));
assertEquals(Version.parseVersion("raw:1"), v);
- try {
- Version.parseVersion("format(n{1,}):");
- fail("Uncaught error: format(n{1,}):");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(n{1,}):a");
- fail("Uncaught error: format(n{1,}):a");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: format(n{1,}):", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(n{1,}):"));
+ assertThrows("Uncaught error: format(n{1,}):a", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(n{1,}):a"));
}
+ @Test
public void test0M() {
// n* == n{0,}
Version v = Version.parseVersion("format((nd?)*):1.2.3");
@@ -128,12 +107,8 @@ public class MultiplicityTest extends TestCase {
assertNotNull(v = Version.parseVersion("format(sn*):a"));
assertEquals(Version.parseVersion("raw:'a'"), v);
- try {
- Version.parseVersion("format(n*):a");
- fail("Uncaught error: format(n*):a");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: format(n*):a", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(n*):a"));
// with {0,}
assertNotNull(v = Version.parseVersion("format((nd?){0,}):1.2.3"));
assertEquals(Version.parseVersion("raw:1.2.3"), v);
@@ -144,15 +119,12 @@ public class MultiplicityTest extends TestCase {
assertNotNull(v = Version.parseVersion("format(sn{0,}):a"));
assertEquals(Version.parseVersion("raw:'a'"), v);
- try {
- Version.parseVersion("format(n{0,}):a");
- fail("Uncaught error: format(n{0,}):a");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: format(n{0,}):a", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(n{0,}):a"));
}
+ @Test
public void testExact() {
// n{1}
Version v = Version.parseVersion("format((nd?){3}):1.2.3");
@@ -162,26 +134,15 @@ public class MultiplicityTest extends TestCase {
assertNotNull(v = Version.parseVersion("format(n{1}):1"));
assertEquals(Version.parseVersion("raw:1"), v);
- try {
- Version.parseVersion("format(n{1}):");
- fail("Uncaught error: format(n{1}):");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format((nd?){3}):1.2");
- fail("Uncaught error: format((nd?){3}):1.2");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(n{1}):a");
- fail("Uncaught error: format(n{1}):a");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: format(n{1}):", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(n{1}):"));
+ assertThrows("Uncaught error: format((nd?){3}):1.2", IllegalArgumentException.class,
+ () -> Version.parseVersion("format((nd?){3}):1.2"));
+ assertThrows("Uncaught error: format(n{1}):a", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(n{1}):a"));
}
+ @Test
public void testAtLeast() {
// n{>1,}
Version v = null;
@@ -193,21 +154,14 @@ public class MultiplicityTest extends TestCase {
assertNotNull(v = Version.parseVersion("format(n{1,}):1"));
assertEquals(Version.parseVersion("raw:1"), v);
- try {
- Version.parseVersion("format(n{2,}):1");
- fail("Uncaught error: format(n{1,}):1");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format((nd?){3,}):1.2");
- fail("Uncaught error: format(n{3,1}):1.2");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: format(n{1,}):1", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(n{2,}):1"));
+ assertThrows("Uncaught error: format(n{3,1}):1.2", IllegalArgumentException.class,
+ () -> Version.parseVersion("format((nd?){3,}):1.2"));
}
+ @Test
public void testAtMost() {
Version v = null;
assertNotNull(v = Version.parseVersion("format((nd?){2,3}):1.2.3"));
@@ -216,82 +170,48 @@ public class MultiplicityTest extends TestCase {
assertNotNull(v = Version.parseVersion("format((nd?){2,3}):1.2"));
assertEquals(Version.parseVersion("raw:1.2"), v);
- try {
- Version.parseVersion("format(n{2,3}):1");
- fail("Uncaught error: format(n{2,3}):1");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(n{2,3}):1.2.3.4");
- fail("Uncaught error: format(n{2,3}):1.2.3.4");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: format(n{2,3}):1", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(n{2,3}):1"));
+ assertThrows("Uncaught error: format(n{2,3}):1.2.3.4", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(n{2,3}):1.2.3.4"));
}
+ @Test
public void testZeroExact() {
// Should not have entered a n{0} as it is meaningless.
- try {
- Version.parseVersion("format(n{0}):");
- fail("Uncaught error: format(n{0}):");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format(n{0,0}):");
- fail("Uncaught error: format(n{0,0}):");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: format(n{0}):", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(n{0}):"));
+ assertThrows("Uncaught error: fformat(n{0,0}):", IllegalArgumentException.class,
+ () -> Version.parseVersion("format(n{0,0}):"));
}
+ @Test
public void testMinGreaterThanMax() {
- try {
- Version.parseVersion("format((nd?){3,2}):1.2.3");
- fail("Uncaught error: format((nd?){3,2}):1.2.3");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: format((nd?){3,2}):1.2.3", IllegalArgumentException.class,
+ () -> Version.parseVersion("format((nd?){3,2}):1.2.3"));
}
+ @Test
public void testUnbalancedBraceR() {
- try {
- Version.parseVersion("format((nd?){3,2):1.2.3");
- fail("Uncaught error: format((nd?){3,2):1.2.3");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: format((nd?){3,2):1.2.3",
+ IllegalArgumentException.class,
+ () -> Version.parseVersion("format((nd?){3,2):1.2.3"));
}
+ @Test
public void testNegativeRange() {
- try {
- Version.parseVersion("format((nd?){-1,2}):1.2.3");
- fail("Uncaught error: format((nd?){-1,2}):1.2.3");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format((nd?){1,-2}):1.2.3");
- fail("Uncaught error: format((nd?){1,-2}):1.2.3");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: format((nd?){-1,2}):1.2.3", IllegalArgumentException.class,
+ () -> Version.parseVersion("format((nd?){-1,2}):1.2.3"));
+ assertThrows("Uncaught error: format((nd?){1,-2}):1.2.3", IllegalArgumentException.class,
+ () -> Version.parseVersion("format((nd?){1,-2}):1.2.3"));
}
+ @Test
public void testStringRange() {
- try {
- Version.parseVersion("format((nd?){a,2}):1.2.3");
- fail("Uncaught error: format((nd?){a,2}):1.2.3");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.parseVersion("format((nd?){1,a}):1.2.3");
- fail("Uncaught error: format((nd?){1,a}):1.2.3");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: format((nd?){a,2}):1.2.3", IllegalArgumentException.class,
+ () -> Version.parseVersion("format((nd?){a,2}):1.2.3"));
+ assertThrows("Uncaught error: format((nd?){1,a}):1.2.3", IllegalArgumentException.class,
+ () -> Version.parseVersion("format((nd?){1,a}):1.2.3"));
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/OSGiRangeTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/OSGiRangeTest.java
index 4a664d4ff..c46eca90d 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/OSGiRangeTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/OSGiRangeTest.java
@@ -15,14 +15,20 @@
package org.eclipse.equinox.p2.tests.omniVersion;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThrows;
+import static org.junit.Assert.assertTrue;
+
import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.metadata.VersionRange;
+import org.junit.Test;
/**
* Tests ranges of versions specified with osgi (default) version format.
*
*/
public class OSGiRangeTest extends VersionTesting {
+ @Test
public void testSingleVersionRange() {
VersionRange range;
range = new VersionRange("[1.0.0, 1.0.0.-)");
@@ -37,17 +43,15 @@ public class OSGiRangeTest extends VersionTesting {
assertTrue("2.4", !range.isIncluded(Version.parseVersion("2")));
}
+ @Test
public void testInvertedRange() {
- try {
- new VersionRange("[2.0.0, 1.0.0]");
- fail("Inverted range is not allowed");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Inverted range is not allowed", IllegalArgumentException.class,
+ () -> new VersionRange("[2.0.0, 1.0.0]"));
}
+ @Test
public void testGreaterThan() {
- // any version equal or greater than 1.0 is ok
+ // any version equal or greater than 1.0 is ok
VersionRange lowerBound = new VersionRange("1.0.0");
assertTrue("1.0", !lowerBound.isIncluded(Version.parseVersion("0.9")));
assertTrue("1.1", lowerBound.isIncluded(Version.parseVersion("1.0")));
@@ -58,8 +62,9 @@ public class OSGiRangeTest extends VersionTesting {
}
+ @Test
public void testLowerThan() {
- // any version lower than 2.0 is ok
+ // any version lower than 2.0 is ok
VersionRange upperBound = new VersionRange("[0,2.0)");
assertTrue("1.0", upperBound.isIncluded(Version.parseVersion("0.0")));
assertTrue("1.1", upperBound.isIncluded(Version.parseVersion("0.9")));
@@ -69,6 +74,7 @@ public class OSGiRangeTest extends VersionTesting {
assertTrue("1.5", !upperBound.isIncluded(Version.parseVersion("2.1")));
}
+ @Test
public void testRangeStrings() {
VersionRange v = null;
@@ -96,9 +102,10 @@ public class OSGiRangeTest extends VersionTesting {
}
/**
- * Tests that null values passed to the {@link VersionRange} constructor
- * are not interpreted as MIN/MAX versions.
+ * Tests that null values passed to the {@link VersionRange} constructor are not
+ * interpreted as MIN/MAX versions.
*/
+ @Test
public void testNullConstructor() {
VersionRange range = new VersionRange(null);
assertEquals("1.0", range.getMinimum(), Version.emptyVersion);
@@ -109,6 +116,7 @@ public class OSGiRangeTest extends VersionTesting {
assertEquals("2.1", range.getMaximum(), Version.MAX_VERSION);
}
+ @Test
public void testSerialize() {
VersionRange v = null;
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/OSGiVersionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/OSGiVersionTest.java
index ea5a966a2..b509798a9 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/OSGiVersionTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/OSGiVersionTest.java
@@ -14,7 +14,14 @@
package org.eclipse.equinox.p2.tests.omniVersion;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
+import static org.junit.Assert.assertTrue;
+
import org.eclipse.equinox.p2.metadata.Version;
+import org.junit.Test;
/**
* Tests versions specified with default OSGi version strings and tests OSGi compatibility
@@ -22,7 +29,7 @@ import org.eclipse.equinox.p2.metadata.Version;
*
*/
public class OSGiVersionTest extends VersionTesting {
-
+ @Test
public void testBasicParsing() {
// should parse without exception
@@ -34,6 +41,7 @@ public class OSGiVersionTest extends VersionTesting {
assertNotNull(Version.parseVersion("1.0.0.r12345_hello"));
}
+ @Test
public void testOSGiStrings() {
Version v = Version.parseVersion(null);
@@ -54,6 +62,7 @@ public class OSGiVersionTest extends VersionTesting {
assertEquals("1.0.0.r12345_hello", v.toString());
}
+ @Test
public void testSerialize() {
Version v = null;
@@ -71,107 +80,63 @@ public class OSGiVersionTest extends VersionTesting {
assertSerialized(v);
}
+ @Test
public void testNegativeFirstValue() {
- try {
- Version.parseVersion("-1");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("-1"));
}
+ @Test
public void testPeriodInQualifier() {
- try {
- Version.parseVersion("1.0.0.sailor.moon");
- fail("Uncaught exception: period is not allowed in osgi qualifier");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
-
+ assertThrows("Uncaught exception: period is not allowed in osgi qualifier", IllegalArgumentException.class,
+ () -> Version.parseVersion("1.0.0.sailor.moon"));
}
+ @Test
public void testNegativeSecondValue() {
- try {
- Version.parseVersion("1.-1");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("1.-1"));
}
+ @Test
public void testNegativeThirdValue() {
- try {
- Version.parseVersion("1.0.-1");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("1.0.-1"));
}
+ @Test
public void testEmptyFourthValue() {
- try {
- Version.parseVersion("1.0.0.");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("1.0.0."));
}
+ @Test
public void testStringFirstValue() {
- try {
- Version.parseVersion("a");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("a"));
}
+ @Test
public void testStringSecondValue() {
- try {
- Version.parseVersion("1.a");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("1.a"));
}
+ @Test
public void testStringThirdValue() {
- try {
- Version.parseVersion("1.0.a");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("1.0.a"));
}
+ @Test
public void testSinglePeriod() {
- try {
- Version.parseVersion(".");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("."));
}
+ @Test
public void testTwoPeriods() {
- try {
- Version.parseVersion("..");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion(".."));
}
+ @Test
public void testThreePeriods() {
- try {
- Version.parseVersion("...");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
-
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("..."));
}
+ @Test
public void testEquality() {
// should parse without exception
Version v1 = Version.parseVersion("1");
@@ -188,6 +153,7 @@ public class OSGiVersionTest extends VersionTesting {
}
+ @Test
public void testVersionCompare() {
// should parse without exception
Version v1 = Version.parseVersion("1");
@@ -209,6 +175,7 @@ public class OSGiVersionTest extends VersionTesting {
}
+ @Test
public void testCompatability() {
Version v = Version.parseVersion("raw:1.2.3.'foo'");
assertNotNull(v);
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/PerformanceTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/PerformanceTest.java
index 5b5dc265a..660abed53 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/PerformanceTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/PerformanceTest.java
@@ -14,23 +14,24 @@
package org.eclipse.equinox.p2.tests.omniVersion;
-import junit.framework.TestCase;
import org.eclipse.equinox.p2.metadata.Version;
+import org.junit.Test;
/**
* Simple performance comparison between OSGi version implementation and Omni Version.
* Tests performance of creating version instances using 4 values, as well as string parsing.
* Tests comparison of versions.
- *
+ *
* Aprox 10000 instances are created.
* Comparison compares all instances against all other (i.e. about 10 milj).
- *
+ *
*/
-public class PerformanceTest extends TestCase {
+public class PerformanceTest {
static final int MUL = 24;
static final String qualifierTemplate = "r20090112-12345-abcdefghijklmnopqrstuvwxyz"; // longer than MUL chars
+ @Test
public void testStringCreationPerformance() {
// Ensure that classes are loaded etc.
Version.MAX_VERSION.compareTo(Version.emptyVersion);
@@ -52,6 +53,7 @@ public class PerformanceTest extends TestCase {
// System.out.printf("String creation: osgi=%d, omni=%d, factor=%.2f\n", osgiTime, omniTime, factor(omniTime, osgiTime));
}
+ @Test
public void testCreationPerformance() {
// Ensure that classes are loaded etc.
Version.MAX_VERSION.compareTo(Version.emptyVersion);
@@ -71,6 +73,7 @@ public class PerformanceTest extends TestCase {
// System.out.printf("Creation: osgi=%d, omni=%d, factor=%f2\n", osgiTime, omniTime, factor(omniTime, osgiTime));
}
+ @Test
public void testComparePerformance() {
Version[] omniVersions = createOmniVersions();
org.osgi.framework.Version osgiVersions[] = createOsgiVersions();
@@ -88,6 +91,7 @@ public class PerformanceTest extends TestCase {
//System.out.printf("Compare (%d comparisons): osgi=%d, omni=%d\n, factor=%d", units, osgiTime, omniTime, omniTime / osgiTime);
}
+ @Test
public void testEqualsPerformance() {
Version[] omniVersions = createOmniVersions();
org.osgi.framework.Version osgiVersions[] = createOsgiVersions();
@@ -105,6 +109,7 @@ public class PerformanceTest extends TestCase {
//System.out.printf("Equals (%d comparisons): osgi=%d, omni=%d, factor=%d\n", units, osgiTime, omniTime, omniTime / osgiTime);
}
+ @Test
public void testToStringPerformance() {
Version[] omniVersions = createOmniVersions();
org.osgi.framework.Version osgiVersions[] = createOsgiVersions();
@@ -123,26 +128,22 @@ public class PerformanceTest extends TestCase {
//System.out.printf("toString (%d versions): osgi=%d, omni=%d\n", units, osgiTime, omniTime);
}
-
public static void osgiVersionToString(org.osgi.framework.Version versions[]) {
// compare every version against all other versions
for (int i = 0; i < MUL * MUL * MUL; i++)
versions[i].toString();
}
-
public static void omniVersionToString(Version versions[]) {
// compare every version against all other versions
for (int i = 0; i < MUL * MUL * MUL; i++)
versions[i].toString();
}
-
public static void omniVersionCreate() {
for (int i = 0; i < MUL; i++)
for (int j = 0; j < MUL; j++)
for (int k = 0; k < MUL; k++)
Version.createOSGi(i, j, k, qualifierTemplate);
}
-
public static void omniVersionCompare(Version versions[]) {
//compare every version against all other versions
for (int i = 0; i < MUL * MUL * MUL; i++)
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/RawRangeTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/RawRangeTest.java
index 66b52b5cc..207f3e1de 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/RawRangeTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/RawRangeTest.java
@@ -14,26 +14,28 @@
package org.eclipse.equinox.p2.tests.omniVersion;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThrows;
+
import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.metadata.VersionRange;
+import org.junit.Test;
/**
* Tests version ranges specified using raw.
*
*/
public class RawRangeTest extends VersionTesting {
+ @Test
public void testEmptyRange() {
VersionRange range = new VersionRange("raw:''");
assertIncludedInRange("#1", range, "raw:'a'");
- try {
- new VersionRange("raw:");
- fail("Uncaught error: a raw range can not be empty.");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: a raw range can not be empty.", IllegalArgumentException.class,
+ () -> new VersionRange("raw:"));
}
+ @Test
public void testRangeDelimitersInStrings() {
VersionRange range = null;
range = new VersionRange("raw:['one\\,\\ two','three\\,\\ \\[and\\]\\ four']");
@@ -41,6 +43,7 @@ public class RawRangeTest extends VersionTesting {
assertIncludedInRange("#2", range, "raw:'three, [and] four'");
}
+ @Test
public void testRangeDelimitersInStringstoString() {
VersionRange range = null;
String s = null;
@@ -48,6 +51,7 @@ public class RawRangeTest extends VersionTesting {
assertEquals(s, range.toString());
}
+ @Test
public void testSingleVersionRange() {
VersionRange range;
range = new VersionRange("raw:[1.0.0, 1.0.0.'-')");
@@ -64,17 +68,15 @@ public class RawRangeTest extends VersionTesting {
assertNotIncludedInRange("2.4", range, "raw:2");
}
+ @Test
public void testInvertedRange() {
- try {
- new VersionRange("raw:[2.0.0, 1.0.0]");
- fail("Inverted range is not allowed");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("\"Inverted range is not allowed\"", IllegalArgumentException.class,
+ () -> new VersionRange("raw:[2.0.0, 1.0.0]"));
}
+ @Test
public void testGreaterThan() {
- // any version equal or greater than 1.0.0 is ok
+ // any version equal or greater than 1.0.0 is ok
VersionRange lowerBound = new VersionRange("raw:1.0.0");
assertNotIncludedInRange("1.0", lowerBound, "raw:0.9.0");
assertIncludedInRange("1.1", lowerBound, "raw:1.0.0");
@@ -83,8 +85,9 @@ public class RawRangeTest extends VersionTesting {
assertIncludedInRange("1.3", lowerBound, "raw:M.M.M.m");
}
+ @Test
public void testGreaterThanSmallest() {
- // any version equal or greater than -M' (empty string) is ok
+ // any version equal or greater than -M' (empty string) is ok
VersionRange lowerBound = new VersionRange("raw:-M");
assertIncludedInRange("#1", lowerBound, "raw:-M");
assertIncludedInRange("#1.1", lowerBound, "raw:''");
@@ -98,8 +101,9 @@ public class RawRangeTest extends VersionTesting {
assertIncludedInRange("#8", lowerBound, "raw:MpM");
}
+ @Test
public void testLowerThan() {
- // any version lower than 2.0 is ok
+ // any version lower than 2.0 is ok
VersionRange upperBound = new VersionRange("raw:[0, 2.0)");
assertIncludedInRange("1.0", upperBound, "raw:0.0");
assertIncludedInRange("1.1", upperBound, "raw:0.9");
@@ -109,6 +113,7 @@ public class RawRangeTest extends VersionTesting {
assertNotIncludedInRange("1.5", upperBound, "raw:2.1");
}
+ @Test
public void testSerialize() {
VersionRange v = null;
@@ -135,6 +140,7 @@ public class RawRangeTest extends VersionTesting {
assertSerialized(v);
}
+ @Test
public void testToString() {
VersionRange v = null;
String s = null;
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/RawRangeWithOriginalTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/RawRangeWithOriginalTest.java
index 22eb7f2ad..96a8bc17a 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/RawRangeWithOriginalTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/RawRangeWithOriginalTest.java
@@ -14,151 +14,123 @@
package org.eclipse.equinox.p2.tests.omniVersion;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThrows;
+
import org.eclipse.equinox.internal.p2.metadata.VersionFormat;
import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.metadata.VersionRange;
+import org.junit.Test;
/**
* Tests inclusion of original version range string in raw format.
* The tests in this class does not fully test the various "format(rules)" only that the sequence
* "raw RANGE/format():ORIGINAL RANGE" works, and that errors at the top level are caught.
- *
+ *
*/
public class RawRangeWithOriginalTest extends VersionTesting {
-
+ @Test
public void testRawWithUnknownFormat() {
VersionRange v = new VersionRange("raw:[1.0,2.0]/:sailor.moon.R,sailor.moon.S");
assertEquals(v, new VersionRange("raw:[1.0,2.0]"));
}
+ @Test
public void testRawWithUnknownFormatToString() {
assertEquals("raw:[1.0,2.0]/:sailor.moon.R,sailor.moon.S", new VersionRange("raw:[1.0,2.0]/:sailor.moon.R,sailor.moon.S").toString());
}
+ @Test
public void testRawWithUnknownFormatSerialized() {
assertSerialized(new VersionRange("raw:[1.0,2.0]/:sailor.moon.R,sailor.moon.S"));
assertEquals("raw:[1.0,2.0]/:sailor.moon.R,sailor.moon.S", getSerialized(new VersionRange("raw:[1.0,2.0]/:sailor.moon.R,sailor.moon.S")).toString());
}
+ @Test
public void testRawWithSimpleFormat() {
VersionRange v = new VersionRange("raw:[1.0,2.0]/format(n.n):[1.0,2.0]");
assertEquals(v, new VersionRange("raw:[1.0,2.0]"));
}
+ @Test
public void testRawWithSimpleFormatToString() {
// range brackets are normalized in toString - not needed in original
assertEquals("raw:[1.0,2.0]/format(n.n):1.0,2.0", new VersionRange("raw:[1.0,2.0]/format(n.n):[1.0,2.0]").toString());
}
+ @Test
public void testSimpleFormatToString() {
// range brackets are normalized in toString - not needed in original
assertEquals("raw:[1.0,2.0]/format(n.n):1.0,2.0", new VersionRange("format(n.n):[1.0,2.0]").toString());
}
+ @Test
public void testRawWithSimpleFormatSerialized() {
assertSerialized(new VersionRange("raw:[1.0,2.0]/format(n.n):[1.0,2.0]"));
// range brackets are normalized in toString - not needed in original
assertEquals("raw:[1.0,2.0]/format(n.n):1.0,2.0", getSerialized(new VersionRange("raw:[1.0,2.0]/format(n.n):[1.0,2.0]")).toString());
}
+ @Test
public void testOriginalStatedButMissing() {
- try {
- new VersionRange("raw:[1.0,2.0]/");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> new VersionRange("raw:[1.0,2.0]/"));
}
+ @Test
public void testOriginalAndUnknownStatedButMissing() {
- try {
- new VersionRange("raw:[1.0,2.0]/:");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> new VersionRange("raw:[1.0,2.0]/:"));
}
+ @Test
public void testOriginalIllegalFormat() {
- try {
- new VersionRange("raw:[1.0,2.0]/foo:");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> new VersionRange("raw:[1.0,2.0]/foo:"));
}
+ @Test
public void testOriginalIllegalFormat2() {
- try {
- new VersionRange("raw:[1.0,2.0]/100:");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> new VersionRange("raw:[1.0,2.0]/100:"));
}
+ @Test
public void testOriginalIllegalFormat3() {
- try {
- new VersionRange("raw:[1.0,2.0]/'format':");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> new VersionRange("raw:[1.0,2.0]/'format':"));
}
+ @Test
public void testOriginalIllegalFormat4() {
- try {
- new VersionRange("raw:[1.0,2.0]//1.0");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> new VersionRange("raw:[1.0,2.0]//1.0"));
}
+ @Test
public void testOriginalIllegalFormat5() {
- try {
- new VersionRange("raw:[1.0,2.0]/format:");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> new VersionRange("raw:[1.0,2.0]/format:"));
}
+ @Test
public void testOriginalFormatUnbalancedLeft() {
- try {
- new VersionRange("raw:[1.0,2.0]/formatn.n):");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> new VersionRange("raw:[1.0,2.0]/formatn.n):"));
}
+ @Test
public void testOriginalFormatUnbalancedRight() {
- try {
- new VersionRange("raw:[1.0,2.0]/format(n.n:1.0");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> new VersionRange("raw:[1.0,2.0]/format(n.n:1.0"));
}
+ @Test
public void testOriginalFormatOriginalMissing() {
- try {
- new VersionRange("raw:[1.0,2.0]/format(n.n):");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> new VersionRange("raw:[1.0,2.0]/format(n.n):"));
}
+ @Test
public void testGreaterThan() {
- // any version equal or greater than 1.0.0 is ok
+ // any version equal or greater than 1.0.0 is ok
VersionRange lowerBound = new VersionRange("raw:2.1.0.M/format(n[.n=0;[.n=0;]][d?S=M;]):2.1");
assertNotIncludedInRange("1.0", lowerBound, "raw:2.0.9");
assertIncludedInRange("1.1", lowerBound, "raw:2.2");
assertIncludedInRange("1.3", lowerBound, "raw:999.999.999.'foo'");
}
+ @Test
public void testMinBoundary() {
String rangeString = "raw:[-M,2.1.0.M]/format(n[.n=0;[.n=0;]][d?S=M;]):-M,2.1";
VersionRange range = new VersionRange(rangeString);
@@ -171,6 +143,7 @@ public class RawRangeWithOriginalTest extends VersionTesting {
assertEquals(range2, range);
}
+ @Test
public void testOSGiMinBoundary() {
String rangeString = "raw:[-M,2.1.0.'']/format(" + VersionFormat.OSGI_FORMAT_STRING + "):-M,2.1.0";
VersionRange range = new VersionRange(rangeString);
@@ -184,6 +157,7 @@ public class RawRangeWithOriginalTest extends VersionTesting {
assertEquals(range2, range);
}
+ @Test
public void testMaxBoundary() {
String rangeString = "raw:[2.1.0.M,MpM]/format(n[.n=0;[.n=0;]][d?S=M;]):2.1,MpM";
VersionRange range = new VersionRange(rangeString);
@@ -196,6 +170,7 @@ public class RawRangeWithOriginalTest extends VersionTesting {
assertEquals(range2, range);
}
+ @Test
public void testRecreateUsingMaxUpper() {
Version v = Version.create("format(n[.n=0;[.n=0;]][d?S=M;]):2.1");
VersionRange range = new VersionRange(v, true, null, true);
@@ -205,6 +180,7 @@ public class RawRangeWithOriginalTest extends VersionTesting {
assertEquals(range2, range);
}
+ @Test
public void testRecreateUsingMinLower() {
Version v = Version.create("format(n[.n=0;[.n=0;]][d?S=M;]):2.1");
VersionRange range = new VersionRange(null, true, v, true);
@@ -214,6 +190,7 @@ public class RawRangeWithOriginalTest extends VersionTesting {
assertEquals(range2, range);
}
+ @Test
public void testOSGiMaxBoundary() {
String rangeString = "raw:[2.1.0.'',MpM]/format(" + VersionFormat.OSGI_FORMAT_STRING + "):2.1.0,MpM";
VersionRange range = new VersionRange(rangeString);
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/RawVersionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/RawVersionTest.java
index 42d7f42e4..ecfe23909 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/RawVersionTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/RawVersionTest.java
@@ -14,8 +14,14 @@
package org.eclipse.equinox.p2.tests.omniVersion;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
+import static org.junit.Assert.assertTrue;
+
import org.eclipse.equinox.internal.p2.metadata.VersionVector;
import org.eclipse.equinox.p2.metadata.Version;
+import org.junit.Test;
/**
* Tests the OmniVersion raw version format.
@@ -23,6 +29,7 @@ import org.eclipse.equinox.p2.metadata.Version;
*/
public class RawVersionTest extends VersionTesting {
+ @Test
public void testBasicParsing() {
// should parse without exception
@@ -41,21 +48,14 @@ public class RawVersionTest extends VersionTesting {
}
+ @Test
public void testEnumParsing() {
- try {
- Version.create("raw:{blue,green,yellow}");
- fail("Parsing succeeded but enum had no ordinal indicator");
- } catch (IllegalArgumentException e) {
- // Expected
- }
-
- try {
- Version.create("raw:{blue,^green,yellow}");
- } catch (IllegalArgumentException e) {
- fail(e.getMessage());
- }
+ assertThrows("Parsing succeeded but enum had no ordinal indicator", IllegalArgumentException.class,
+ () -> Version.create("raw:{blue,green,yellow}"));
+ Version.create("raw:{blue,^green,yellow}");
}
+ @Test
public void testEnumCompare() {
Version v1 = Version.create("raw:{blue,^green,yellow}");
Version v2 = Version.create("raw:{^blue,green,yellow}");
@@ -99,6 +99,7 @@ public class RawVersionTest extends VersionTesting {
assertTrue(v2.compareTo(v1) > 0);
}
+ @Test
public void testEnumCompareWithOther() {
Version v1 = Version.create("raw:{blue,^green,yellow}");
Version v2 = Version.create("raw:'green'");
@@ -133,6 +134,7 @@ public class RawVersionTest extends VersionTesting {
assertTrue(v2.compareTo(v1) > 0);
}
+ @Test
public void testSerialize() {
Version v = null;
// should parse without exception
@@ -204,6 +206,7 @@ public class RawVersionTest extends VersionTesting {
}
+ @Test
public void testVersionString() {
Version v = null;
String s = null;
@@ -279,6 +282,7 @@ public class RawVersionTest extends VersionTesting {
}
+ @Test
public void testIntegerParsing() {
// should parse without exception
@@ -305,42 +309,21 @@ public class RawVersionTest extends VersionTesting {
assertEquals(v.getSegment(1), Integer.valueOf(-1234567890));
}
+ @Test
public void testWhiteSpaceExceptions() {
+ assertThrows("space not allowed 1", IllegalArgumentException.class, () -> Version.create("raw: 0 "));
+ assertThrows("space not allowed 2", IllegalArgumentException.class,
+ () -> Version.create("raw:0 .1 . 'a'. 'b c d'. 4. 5. 6. 7. 8 . 9"));
- try {
- Version.create("raw: 0 ");
- fail("space not allowed 1");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
-
- try {
- Version.create("raw:0 .1 . 'a'. 'b c d'. 4. 5. 6. 7. 8 . 9");
- fail("space not allowed 2");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
-
- try {
- Version.create("raw:< 1.2.3>");
- fail("space not allowed in array 1");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.create("raw:<1.2.3 >");
- fail("space not allowed in array 2");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
- try {
- Version.create("raw:1.- 1");
- fail("Uncaught error: space between minus and number in negative");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("space not allowed in array 1", IllegalArgumentException.class,
+ () -> Version.create("raw:< 1.2.3>"));
+ assertThrows("space not allowed in array 2", IllegalArgumentException.class,
+ () -> Version.create("raw:<1.2.3 >"));
+ assertThrows("Uncaught error: space between minus and number in negative", IllegalArgumentException.class,
+ () -> Version.create("raw:1.- 1"));
}
+ @Test
public void testMaxParsing() {
assertNotNull(Version.create("raw:m"));
@@ -352,6 +335,7 @@ public class RawVersionTest extends VersionTesting {
assertNotNull(Version.create("raw:1.-M"));
}
+ @Test
public void testStringParsing() {
Version v = Version.create("raw:'a'");
assertNotNull(v);
@@ -379,6 +363,7 @@ public class RawVersionTest extends VersionTesting {
assertEquals(v.getSegment(0), "\"");
}
+ @Test
public void testEmptyStringParsing() {
Version v = Version.create("raw:''");
assertNotNull(v);
@@ -389,6 +374,7 @@ public class RawVersionTest extends VersionTesting {
assertEquals(v.getSegment(0), "");
}
+ @Test
public void testStringConcatenation() {
Version v = Version.create("raw:'ab''cd'");
assertNotNull(v);
@@ -403,6 +389,7 @@ public class RawVersionTest extends VersionTesting {
assertEquals(v.getSegment(0), "abcd");
}
+ @Test
public void testStringToString() {
// string is normalized
assertEquals("raw:'abcd'", Version.create("raw:'ab''cd'").toString());
@@ -417,45 +404,60 @@ public class RawVersionTest extends VersionTesting {
assertEquals("raw:'\"'", Version.create("raw:'\"'").toString());
- // quotes are normalized - default ' should be used until " is needed and vice versa.
+ // quotes are normalized - default ' should be used until " is needed and vice
+ // versa.
assertEquals("raw:'abc\"xxx\"and '\"'yyy'\"", Version.create("raw:'abc\"xxx\"'\"and 'yyy'\"").toString());
}
+ @Test
public void testArrayParsing() {
Version v = null;
assertNotNull(v = Version.create("raw:<1>"));
- assertEquals(v.getSegment(0), new VersionVector(new Comparable[] {Integer.valueOf(1)}, null));
+ assertEquals(v.getSegment(0), new VersionVector(new Comparable[] { Integer.valueOf(1) }, null));
assertNotNull(v = Version.create("raw:<1.0>"));
- assertEquals(v.getSegment(0), new VersionVector(new Comparable[] {Integer.valueOf(1), Integer.valueOf(0)}, null));
+ assertEquals(v.getSegment(0),
+ new VersionVector(new Comparable[] { Integer.valueOf(1), Integer.valueOf(0) }, null));
assertNotNull(v = Version.create("raw:<'a'>"));
- assertEquals(v.getSegment(0), new VersionVector(new Comparable[] {"a"}, null));
+ assertEquals(v.getSegment(0), new VersionVector(new Comparable[] { "a" }, null));
assertNotNull(v = Version.create("raw:<'a'.'b'>"));
- assertEquals(v.getSegment(0), new VersionVector(new Comparable[] {"a", "b"}, null));
+ assertEquals(v.getSegment(0), new VersionVector(new Comparable[] { "a", "b" }, null));
assertNotNull(v = Version.create("raw:<'a'.'b''c'>"));
- assertEquals(v.getSegment(0), new VersionVector(new Comparable[] {"a", "bc"}, null));
+ assertEquals(v.getSegment(0), new VersionVector(new Comparable[] { "a", "bc" }, null));
assertNotNull(v = Version.create("raw:<1.2.-M>"));
- assertEquals(v.getSegment(0), new VersionVector(new Comparable[] {Integer.valueOf(1), Integer.valueOf(2)}, null));
+ assertEquals(v.getSegment(0),
+ new VersionVector(new Comparable[] { Integer.valueOf(1), Integer.valueOf(2) }, null));
assertNotNull(v = Version.create("raw:<1.2.m>"));
- assertEquals(v.getSegment(0), new VersionVector(new Comparable[] {Integer.valueOf(1), Integer.valueOf(2), VersionVector.MAXS_VALUE}, null));
+ assertEquals(v.getSegment(0), new VersionVector(
+ new Comparable[] { Integer.valueOf(1), Integer.valueOf(2), VersionVector.MAXS_VALUE }, null));
assertNotNull(v = Version.create("raw:<1.2.M>"));
- assertEquals(v.getSegment(0), new VersionVector(new Comparable[] {Integer.valueOf(1), Integer.valueOf(2), VersionVector.MAX_VALUE}, null));
+ assertEquals(v.getSegment(0), new VersionVector(
+ new Comparable[] { Integer.valueOf(1), Integer.valueOf(2), VersionVector.MAX_VALUE }, null));
assertNotNull(v = Version.create("raw:<<1>>"));
- assertEquals(v.getSegment(0), new VersionVector(new Comparable[] {new VersionVector(new Comparable[] {Integer.valueOf(1)}, null)}, null));
+ assertEquals(v.getSegment(0), new VersionVector(
+ new Comparable[] { new VersionVector(new Comparable[] { Integer.valueOf(1) }, null) }, null));
assertNotNull(v = Version.create("raw:<<1.<2>>>"));
- assertEquals(v.getSegment(0), new VersionVector(new Comparable[] {new VersionVector(new Comparable[] {Integer.valueOf(1), new VersionVector(new Comparable[] {Integer.valueOf(2)}, null)}, null)}, null));
+ assertEquals(v.getSegment(0),
+ new VersionVector(
+ new Comparable[] {
+ new VersionVector(
+ new Comparable[] { Integer.valueOf(1),
+ new VersionVector(new Comparable[] { Integer.valueOf(2) }, null) },
+ null) },
+ null));
}
+ @Test
public void testArraySerialize() {
Version v = null;
assertNotNull(v = Version.create("raw:<1>"));
@@ -481,6 +483,7 @@ public class RawVersionTest extends VersionTesting {
}
+ @Test
public void testArraytoString() {
Version v = null;
String s = null;
@@ -507,6 +510,7 @@ public class RawVersionTest extends VersionTesting {
assertEquals(s, v.toString());
}
+ @Test
public void testArrayOrder() {
Version v1 = Version.create("raw:<1.0.0>");
Version v2 = Version.create("raw:<1.1.0>");
@@ -522,6 +526,7 @@ public class RawVersionTest extends VersionTesting {
assertOrder(v5, v6);
}
+ @Test
public void testPadParsing1() {
Version v = null;
assertNotNull(v = Version.create("raw:1.0p0"));
@@ -548,6 +553,7 @@ public class RawVersionTest extends VersionTesting {
assertPad(v, "raw:<1.0.0.'r12345'.m>");
}
+ @Test
public void testPadSerialize() {
Version v = null;
assertNotNull(v = Version.create("raw:1.0p0"));
@@ -574,6 +580,7 @@ public class RawVersionTest extends VersionTesting {
assertSerialized(v);
}
+ @Test
public void testPadtoString() {
Version v = null;
String s = null;
@@ -606,6 +613,7 @@ public class RawVersionTest extends VersionTesting {
/**
* Test parsing of a pad with an array that in turn has padding.
*/
+ @Test
public void testNestedPadParsing() {
Version v = null;
assertNotNull(v = Version.create("raw:1.0p<0p0>"));
@@ -647,6 +655,7 @@ public class RawVersionTest extends VersionTesting {
assertPadPad(v, null);
}
+ @Test
public void testNestedPadSerialize() {
Version v = null;
assertNotNull(v = Version.create("raw:1.0p<0p0>"));
@@ -671,6 +680,7 @@ public class RawVersionTest extends VersionTesting {
assertSerialized(v);
}
+ @Test
public void testNestedPadtoString() {
Version v = null;
String s = null;
@@ -699,9 +709,9 @@ public class RawVersionTest extends VersionTesting {
}
/**
- * Tests that:
- * 1p-M < 1.0.0 < 1.0.0p0 == 1p0 < 1.1 < 1.1.1 < 1p1 == 1.1p1 < 1pM
+ * Tests that: 1p-M < 1.0.0 < 1.0.0p0 == 1p0 < 1.1 < 1.1.1 < 1p1 == 1.1p1 < 1pM
*/
+ @Test
public void testPadOrder() {
Version v1 = Version.create("raw:1p-M");
Version v2 = Version.create("raw:1.0.0");
@@ -723,6 +733,7 @@ public class RawVersionTest extends VersionTesting {
assertOrder(v8, v9);
}
+ @Test
public void testPadTypeOrder() {
Version v0 = Version.create("raw:1p-M");
Version v1 = Version.create("raw:1p'a'");
@@ -740,8 +751,10 @@ public class RawVersionTest extends VersionTesting {
}
/**
- * Test that a / is not prematurely taken as the separator between raw and original when in a string
+ * Test that a / is not prematurely taken as the separator between raw and
+ * original when in a string
*/
+ @Test
public void testOriginalTerminator() {
Version v = Version.create("raw:'/'");
assertNotNull(v);
@@ -752,257 +765,151 @@ public class RawVersionTest extends VersionTesting {
assertEquals(v.getSegment(0), "/");
}
+ @Test
public void testEmptyInput() {
- // should parse with exception
- try {
- Version.create("raw:");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ // should parse with exception
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:"));
}
+ @Test
public void testNewLine() {
- // should parse with exception
- try {
- Version.create("raw:1.'\n'.2");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ // should parse with exception
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:1.'\n'.2"));
}
+ @Test
public void testSpaceInInt() {
- // should parse with exception
- try {
- Version.create("raw:1 2.2");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ // should parse with exception
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:1 2.2"));
}
+ @Test
public void testFloatingPointl() {
- // should parse with exception
- try {
- Version.create("raw:1,2.2");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ // should parse with exception
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:1,2.2"));
}
+ @Test
public void testScientific() {
- // should parse with exception
- try {
- Version.create("raw:1E3");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ // should parse with exception
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:1E3"));
}
+ @Test
public void testHex() {
- // should parse with exception
- try {
- Version.create("raw:0xABCD");
- fail("Uncaught error: hexadecimal not allowed");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ // should parse with exception
+ assertThrows("Uncaught error: hexadecimal not allowed", IllegalArgumentException.class, () ->Version.create("raw:0xABCD"));
}
+ @Test
public void testUnbalancedSingleQuoteRight() {
- try {
- Version.create("raw:'unbalanced");
- fail("Uncaught error: unbalanced sngle quote");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: unbalanced sngle quote", IllegalArgumentException.class,
+ () -> Version.create("raw:'unbalanced"));
}
+ @Test
public void testMixedQuotes1() {
- try {
- Version.create("raw:1.\"unbalanced'.10");
- fail("Uncaught error: mixed quotes");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: mixed quotes", IllegalArgumentException.class,
+ () -> Version.create("raw:1.\"unbalanced'.10"));
}
+ @Test
public void testMixedQuotes2() {
- try {
- Version.create("raw:1.'unbalanced\".10");
- fail("Uncaught error: mixed quotes");
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows("Uncaught error: mixed quotes", IllegalArgumentException.class,
+ () -> Version.create("raw:1.'unbalanced\".10"));
}
+ @Test
public void testUnbalancedDoubleQuoteRight() {
- try {
- Version.create("raw:\"unbalanced");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:\"unbalanced"));
}
+ @Test
public void testUnbalancedArrayRight() {
- try {
- Version.create("raw:<1.2.3");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:<1.2.3"));
}
+ @Test
public void testUnbalancedArrayLeft() {
- try {
- Version.create("raw:1.2.3>");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:1.2.3>"));
}
+ @Test
public void testBadDecimalInteger() {
- try {
- Version.create("raw:12af");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:12af"));
}
-
+ @Test
public void testUnquotedStringFirstValue() {
- try {
- Version.create("raw:a");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:a"));
}
+ @Test
public void testUnquotedStringSecondValue() {
- try {
- Version.create("raw:1.a");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:1.a"));
}
+ @Test
public void testSinglePeriod() {
- try {
- Version.create("raw:.");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:."));
}
+ @Test
public void testTwoPeriods() {
- try {
- Version.create("raw:..");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:.."));
}
+ @Test
public void testThreePeriods() {
- try {
- Version.create("raw:...");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:..."));
}
+ @Test
public void testPadNotLast() {
- try {
- Version.create("raw:p10.10");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
-
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:p10.10"));
}
+ @Test
public void testEmptyPad() {
- try {
- Version.create("raw:10p");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:10p"));
}
+ @Test
public void testPadWithNull() {
- try {
- Version.create("raw:10p.");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:10p."));
}
+ @Test
public void testWrongPadSeparator() {
- try {
- Version.create("raw:10.p0");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:10.p0"));
}
+ @Test
public void testMultiplePadElements() {
- try {
- Version.create("raw:10p1.2");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:10p1.2"));
}
+ @Test
public void testUnbalancedPadElementsSQ() {
- try {
- Version.create("raw:10p'abc");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:10p'abc"));
}
+ @Test
public void testUnbalancedPadElementsDQ() {
- try {
- Version.create("raw:10p\"abc");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:10p\"abc"));
}
+ @Test
public void testUnbalancedPadArrayElementsRight() {
- try {
- Version.create("raw:10p<10");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:10p<10"));
}
+ @Test
public void testUnbalancedPadArrayElementsLeft() {
- try {
- Version.create("raw:10p10>");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.create("raw:10p10>"));
}
+ @Test
public void testOrder() {
Version v1 = Version.create("raw:1");
Version v2 = Version.create("raw:1.0");
@@ -1016,6 +923,7 @@ public class RawVersionTest extends VersionTesting {
assertOrder(v4, v5);
}
+ @Test
public void testTypeOrder() {
// '' < 'z' < m < [0} < [M] < 0 < M
Version v0 = Version.create("raw:-M");
@@ -1036,6 +944,7 @@ public class RawVersionTest extends VersionTesting {
assertOrder(v6, v7);
}
+ @Test
public void testTypeOrder2() {
// '' < 'z' < m < [0] < [M] < 0 < M
Version v0 = Version.create("raw:0.-M");
@@ -1056,6 +965,7 @@ public class RawVersionTest extends VersionTesting {
assertOrder(v6, v7);
}
+ @Test
public void testShorterIsOlder() {
Version v1 = Version.create("raw:1.0");
Version v2 = Version.create("raw:1.0.0");
@@ -1079,6 +989,7 @@ public class RawVersionTest extends VersionTesting {
assertOrder(v8, v9);
}
+ @Test
public void testNumericVersionOrder() {
Version v1 = Version.create("1");
Version v2 = Version.create("1.0.1");
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/RawWithOriginalTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/RawWithOriginalTest.java
index 3538fb8f4..d5268cdd7 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/RawWithOriginalTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/RawWithOriginalTest.java
@@ -14,134 +14,105 @@
package org.eclipse.equinox.p2.tests.omniVersion;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
+
import org.eclipse.equinox.p2.metadata.Version;
+import org.junit.Test;
/**
* Tests inclusion of original version string in the raw format.
* The tests in this class does not fully test the various "format(rules)" only that the sequence "raw/format():original"
* works, and that errors at the top level are caught.
- *
+ *
*/
public class RawWithOriginalTest extends VersionTesting {
+ @Test
public void testRawWithUnknownFormat() {
Version v = Version.parseVersion("raw:1.0/:silver.moon");
assertNotNull(v);
assertEquals(v, Version.parseVersion("raw:1.0"));
}
+ @Test
public void testRawWithUnknownFormatToString() {
assertEquals("raw:1.0/:silver.moon", Version.parseVersion("raw:1.0/:silver.moon").toString());
}
+ @Test
public void testRawWithUnknownFormatSerialized() {
assertSerialized(Version.parseVersion("raw:1.0/:silver.moon"));
assertEquals("raw:1.0/:silver.moon", getSerialized(Version.create("raw:1.0/:silver.moon")).toString());
}
+ @Test
public void testRawWithSimpleFormat() {
Version v = Version.parseVersion("raw:1.0/format(n.n):1.0");
assertNotNull(v);
assertEquals(v, Version.parseVersion("raw:1.0"));
}
+ @Test
public void testRawWithSimpleFormatToString() {
assertEquals("raw:1.0/format(n.n):1.0", Version.parseVersion("raw:1.0/format(n.n):1.0").toString());
}
+ @Test
public void testRawWithSimpleFormatSerialized() {
assertSerialized(Version.parseVersion("raw:1.0/format(n.n):1.0"));
assertEquals("raw:1.0/format(n.n):1.0", getSerialized(Version.create("raw:1.0/format(n.n):1.0")).toString());
}
+ @Test
public void testOriginalStatedButMissing() {
- try {
- Version.parseVersion("raw:1.0/");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("raw:1.0/"));
}
+ @Test
public void testOriginalAndUnknownStatedButMissing() {
- try {
- Version.parseVersion("raw:1.0/:");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("raw:1.0/:"));
}
+ @Test
public void testOriginalIllegalFormat() {
- try {
- Version.parseVersion("raw:1.0/foo:");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("raw:1.0/foo:"));
}
+ @Test
public void testOriginalIllegalFormat2() {
- try {
- Version.parseVersion("raw:1.0/100:");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("raw:1.0/100:"));
}
+ @Test
public void testOriginalIllegalFormat3() {
- try {
- Version.parseVersion("raw:1.0/'format':");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("raw:1.0/'format':"));
}
+ @Test
public void testOriginalIllegalFormat4() {
- try {
- Version.parseVersion("raw:1.0//1.0");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("raw:1.0//1.0"));
}
+ @Test
public void testOriginalIllegalFormat5() {
- try {
- Version.parseVersion("raw:1.0/format:");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("raw:1.0/format:"));
}
+ @Test
public void testOriginalFormatUnbalancedLeft() {
- try {
- Version.parseVersion("raw:1.0/formatn.n):");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("raw:1.0/formatn.n):"));
}
+ @Test
public void testOriginalFormatUnbalancedRight() {
- try {
- Version.parseVersion("raw:1.0/format(n.n:1.0");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () -> Version.parseVersion("raw:1.0/format(n.n:1.0"));
}
+ @Test
public void testOriginalFormatOriginalMissing() {
- try {
- Version.parseVersion("raw:1.0/format(n.n):");
- fail();
- } catch (IllegalArgumentException e) {
- assertTrue(true);
- }
+ assertThrows(IllegalArgumentException.class, () ->Version.parseVersion("raw:1.0/format(n.n):"));
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/VersionTesting.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/VersionTesting.java
index b57a36251..d5c9d9594 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/VersionTesting.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/omniVersion/VersionTesting.java
@@ -14,8 +14,17 @@
package org.eclipse.equinox.p2.tests.omniVersion;
-import java.io.*;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
import org.eclipse.equinox.internal.p2.metadata.VersionVector;
import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.metadata.VersionRange;
@@ -24,7 +33,7 @@ import org.eclipse.equinox.p2.metadata.VersionRange;
* Base class for version testing. Adds useful assert methods.
*
*/
-public class VersionTesting extends TestCase {
+public class VersionTesting {
/**
* Asserts that the versionString version is included in the range.
* @param message
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AbsolutePlanTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AbsolutePlanTest.java
index d14302449..9e5d9b322 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AbsolutePlanTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AbsolutePlanTest.java
@@ -52,6 +52,7 @@ public class AbsolutePlanTest extends AbstractProvisioningTest {
for (Operand op : ops) {
if (op instanceof InstallableUnitPropertyOperand) {
found = true;
+ break;
}
}
assertTrue(found);
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AbstractPlannerTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AbstractPlannerTest.java
index 4ddd49bfb..1f322eb7f 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AbstractPlannerTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AbstractPlannerTest.java
@@ -18,7 +18,6 @@ import java.lang.reflect.Field;
import java.net.URI;
import java.util.Collection;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.Map;
import org.eclipse.equinox.internal.p2.director.ProfileChangeRequest;
import org.eclipse.equinox.internal.p2.engine.InstallableUnitOperand;
@@ -134,8 +133,7 @@ public abstract class AbstractPlannerTest extends AbstractProvisioningTest {
// add optional IUs
if (optionalAdds != null) {
- for (Iterator<IInstallableUnit> iter = optionalAdds.iterator(); iter.hasNext();) {
- IInstallableUnit iu = iter.next();
+ for (IInstallableUnit iu : optionalAdds) {
result.add(iu);
result.setInstallableUnitInclusionRules(iu, ProfileInclusionRules.createOptionalInclusionRule(iu));
result.setInstallableUnitProfileProperty(iu, "org.eclipse.equinox.p2.type.lock", "1");
@@ -145,8 +143,7 @@ public abstract class AbstractPlannerTest extends AbstractProvisioningTest {
// add strict IUs
if (strictAdds != null) {
- for (Iterator<IInstallableUnit> iter = strictAdds.iterator(); iter.hasNext();) {
- IInstallableUnit iu = iter.next();
+ for (IInstallableUnit iu : strictAdds) {
result.add(iu);
result.setInstallableUnitInclusionRules(iu, ProfileInclusionRules.createStrictInclusionRule(iu));
}
@@ -154,8 +151,7 @@ public abstract class AbstractPlannerTest extends AbstractProvisioningTest {
// include removals
if (toRemove != null) {
- for (Iterator<IInstallableUnit> iter = toRemove.iterator(); iter.hasNext();) {
- IInstallableUnit iu = iter.next();
+ for (IInstallableUnit iu : toRemove) {
result.remove(iu);
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllExplanation.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllExplanation.java
index 085885397..920228d48 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllExplanation.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllExplanation.java
@@ -7,30 +7,22 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.planner;
-import junit.framework.*;
-
-public class AllExplanation extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllExplanation.class.getName());
- suite.addTestSuite(ExplanationDeepConflict.class);
- suite.addTestSuite(ExplanationForOptionalDependencies.class);
- suite.addTestSuite(ExplanationForPartialInstallation.class);
- suite.addTestSuite(ExplanationLargeConflict.class);
- suite.addTestSuite(ExplanationSeveralConflictingRoots.class);
- suite.addTestSuite(MissingDependency.class);
- suite.addTestSuite(MissingNonGreedyRequirement.class);
- suite.addTestSuite(MissingNonGreedyRequirement2.class);
- suite.addTestSuite(MultipleSingleton.class);
- suite.addTestSuite(PatchTest10.class);
- suite.addTestSuite(PatchTest12.class);
- return suite;
- }
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ ExplanationDeepConflict.class, ExplanationForOptionalDependencies.class,
+ ExplanationForPartialInstallation.class, ExplanationLargeConflict.class,
+ ExplanationSeveralConflictingRoots.class, MissingDependency.class, MissingNonGreedyRequirement.class,
+ MissingNonGreedyRequirement2.class, MultipleSingleton.class, PatchTest10.class, PatchTest12.class
+})
+public class AllExplanation {
+// test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllMetaReqTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllMetaReqTests.java
index 73ff7dab1..38a1cb8b2 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllMetaReqTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllMetaReqTests.java
@@ -13,15 +13,12 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.planner;
-import junit.framework.*;
-
-public class AllMetaReqTests extends TestCase {
- public static Test suite() {
- TestSuite suite = new TestSuite(AllMetaReqTests.class.getName());
- suite.addTestSuite(AgentPlanTestInExternalInstance.class);
- suite.addTestSuite(AgentPlanTestInExternalInstanceForCohostedMode.class);
- suite.addTestSuite(AgentPlanTestInRunningInstance.class);
- return suite;
- }
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ AgentPlanTestInExternalInstance.class, AgentPlanTestInExternalInstanceForCohostedMode.class,
+ AgentPlanTestInRunningInstance.class })
+public class AllMetaReqTests {
+ // test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllOrbit.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllOrbit.java
index 56d01d377..f5c6a6c91 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllOrbit.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllOrbit.java
@@ -14,7 +14,6 @@
package org.eclipse.equinox.p2.tests.planner;
import java.util.ArrayList;
-import java.util.Iterator;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.equinox.internal.p2.director.ProfileChangeRequest;
@@ -51,8 +50,7 @@ public class AllOrbit extends AbstractProvisioningTest {
ProfileChangeRequest req1 = new ProfileChangeRequest(profile1);
IQueryResult<IInstallableUnit> allIUs = repo.query(QueryUtil.createIUAnyQuery(), null);
req1.addInstallableUnits(allIUs.toArray(IInstallableUnit.class));
- for (Iterator<IInstallableUnit> iterator = allIUs.iterator(); iterator.hasNext();) {
- IInstallableUnit iu = iterator.next();
+ for (IInstallableUnit iu : allIUs) {
if (!iu.getId().equals("javax.wsdl"))
req1.setInstallableUnitInclusionRules(iu, ProfileInclusionRules.createOptionalInclusionRule(iu));
}
@@ -65,8 +63,7 @@ public class AllOrbit extends AbstractProvisioningTest {
ProfileChangeRequest req1 = new ProfileChangeRequest(profile1);
IQueryResult<IInstallableUnit> allIUs = repo.query(QueryUtil.createIUAnyQuery(), null);
ArrayList<IInstallableUnit> toInstall = new ArrayList<>();
- for (Iterator<IInstallableUnit> iterator = allIUs.iterator(); iterator.hasNext();) {
- IInstallableUnit toAdd = iterator.next();
+ for (IInstallableUnit toAdd : allIUs) {
if (!toAdd.getId().equals("com.ibm.icu")) {
toInstall.add(toAdd);
}
@@ -83,8 +80,7 @@ public class AllOrbit extends AbstractProvisioningTest {
ProfileChangeRequest req1 = new ProfileChangeRequest(profile1);
IQueryResult<IInstallableUnit> allIUs = repo.query(QueryUtil.createIUAnyQuery(), null);
ArrayList<IInstallableUnit> toInstall = new ArrayList<>();
- for (Iterator<IInstallableUnit> iterator = allIUs.iterator(); iterator.hasNext();) {
- IInstallableUnit toAdd = iterator.next();
+ for (IInstallableUnit toAdd : allIUs) {
if (!toAdd.getId().equals("com.ibm.icu")) {
toInstall.add(toAdd);
req1.setInstallableUnitInclusionRules(toAdd, ProfileInclusionRules.createOptionalInclusionRule(toAdd));
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllRequestFlexerTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllRequestFlexerTests.java
index f5bca2df3..5a0f2b1c1 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllRequestFlexerTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllRequestFlexerTests.java
@@ -7,30 +7,23 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* Red Hat, Inc. - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.planner;
-import junit.framework.*;
-
-public class AllRequestFlexerTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllRequestFlexerTests.class.getName());
- suite.addTestSuite(TestRequestFlexerIUProperties.class);
- suite.addTestSuite(TestRequestFlexerOneInstalledOneBeingInstalled.class);
- suite.addTestSuite(TestRequestFlexerOneInstalledReplacingIt.class);
- suite.addTestSuite(TestRequestFlexerOneInstalledTwoBeingInstalled.class);
- suite.addTestSuite(TestRequestFlexerProduct.class);
- suite.addTestSuite(TestRequestFlexerProduct2.class);
- suite.addTestSuite(TestRequestFlexerProductWithLegacyMarkup.class);
- suite.addTestSuite(TestRequestFlexerProductWithMixedMarkup.class);
- suite.addTestSuite(TestRequestFlexerRequestWithOptionalInstall.class);
- suite.addTestSuite(TestRequestFlexerRequestWithRemoval.class);
- suite.addTestSuite(TestRequestFlexerSharedInstall.class);
- return suite;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
- }
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ TestRequestFlexerIUProperties.class, TestRequestFlexerOneInstalledOneBeingInstalled.class,
+ TestRequestFlexerOneInstalledReplacingIt.class, TestRequestFlexerOneInstalledTwoBeingInstalled.class,
+ TestRequestFlexerProduct.class, TestRequestFlexerProduct2.class, TestRequestFlexerProductWithLegacyMarkup.class,
+ TestRequestFlexerProductWithMixedMarkup.class, TestRequestFlexerRequestWithOptionalInstall.class,
+ TestRequestFlexerRequestWithRemoval.class, TestRequestFlexerSharedInstall.class
+})
+public class AllRequestFlexerTests {
+// test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllTests.java
index 932fce3ea..572d41013 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllTests.java
@@ -7,166 +7,63 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.planner;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all automated planner tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(AbsolutePlanTest.class);
- suite.addTestSuite(ActualChangeRequestTest.class);
- suite.addTestSuite(ActualChangeRequestTest2.class);
- suite.addTestSuite(AdditionalConstraints.class);
- suite.addTestSuite(AddIUProperty.class);
- suite.addTestSuite(AgentPlanTestInRunningInstance.class);
- suite.addTestSuite(AgentPlanTestInExternalInstance.class);
- suite.addTestSuite(AgentPlanTestInExternalInstanceForCohostedMode.class);
- suite.addTestSuite(AllOptional.class);
- suite.addTestSuite(AllOrbit.class);
- suite.addTest(AllRequestFlexerTests.suite());
- suite.addTestSuite(AnotherSingleton.class);
- suite.addTestSuite(Bug207319.class);
- suite.addTestSuite(Bug249605.class);
- suite.addTestSuite(Bug252638.class);
- // suite.addTestSuite(Bug252682.class);
- suite.addTestSuite(Bug254481dataSet1.class);
- suite.addTestSuite(Bug254481dataSet2.class);
- suite.addTestSuite(Bug255984.class);
- suite.addTestSuite(Bug259537.class);
- suite.addTestSuite(Bug262580.class);
- suite.addTestSuite(Bug270656.class);
- suite.addTestSuite(Bug270668.class);
- suite.addTestSuite(Bug270683.class);
- suite.addTestSuite(Bug271067.class);
- suite.addTestSuite(Bug271954.class);
- // suite.addTestSuite(Bug272251.class);
- suite.addTestSuite(Bug278668.class);
- suite.addTestSuite(Bug300572.class);
- suite.addTestSuite(Bug300572Small2.class);
- suite.addTestSuite(Bug300572Small3.class);
- suite.addTestSuite(Bug300572Small4.class);
- suite.addTestSuite(Bug300572Small5.class);
- suite.addTestSuite(Bug300572Small6.class);
- suite.addTestSuite(Bug302582.class);
- suite.addTestSuite(Bug302582b.class);
- suite.addTestSuite(Bug302582c.class);
- // suite.addTestSuite(Bug302582d.class);
- suite.addTestSuite(Bug306424.class);
- // suite.addTestSuite(Bug306279.class);
- // suite.addTestSuite(Bug306279b.class);
- suite.addTestSuite(Bug306279c.class);
- suite.addTestSuite(Bug306279d.class);
- suite.addTestSuite(Bug311330.class);
- suite.addTestSuite(Bug329279.class);
- suite.addTestSuite(DependencyOnSelf.class);
- suite.addTestSuite(DisabledExplanation.class);
- suite.addTestSuite(DropinsScenario.class);
- suite.addTestSuite(EPPPackageInstallStability_bug323322.class);
- suite.addTestSuite(ExplanationDeepConflict.class);
- suite.addTestSuite(ExplanationForOptionalDependencies.class);
- suite.addTestSuite(ExplanationForPartialInstallation.class);
- suite.addTestSuite(ExplanationLargeConflict.class);
- suite.addTestSuite(ExplanationSeveralConflictingRoots.class);
- suite.addTestSuite(FindRootsAfterUpdate.class);
- suite.addTestSuite(FromStrictToOptional.class);
- suite.addTestSuite(GreedyRequirement.class);
- suite.addTestSuite(InclusionRuleTest.class);
- suite.addTestSuite(InclusionRuleTest2.class);
- suite.addTestSuite(IUProperties.class);
- suite.addTestSuite(IUPropertyRemoval.class);
- suite.addTestSuite(IUWithFilter.class);
- suite.addTestSuite(IUWithFilter2.class);
- suite.addTestSuite(MinimalInstall.class);
- suite.addTestSuite(MinimalInstall2.class);
- suite.addTestSuite(MissingDependency.class);
- suite.addTestSuite(MissingDependency2.class);
- suite.addTestSuite(MissingDependency3.class);
- suite.addTestSuite(MissingNonGreedyRequirement.class);
- suite.addTestSuite(MissingNonGreedyRequirement2.class);
- suite.addTestSuite(MissingOptional.class);
- suite.addTestSuite(MissingOptionalNonGreedyRequirement.class);
- suite.addTestSuite(MissingOptionalWithDependencies.class);
- suite.addTestSuite(MissingOptionalWithDependencies2.class);
- // suite.addTestSuite(MissingOptionalWithDependencies3.class); Disabled, see bug 277161
- // suite.addTestSuite(NegationTesting.class);
- suite.addTestSuite(NonMinimalState.class);
- suite.addTestSuite(NonMinimalState2.class);
- suite.addTestSuite(NoUnecessaryIUProperty.class);
- suite.addTestSuite(MultipleProvider.class);
- suite.addTestSuite(MultipleSingleton.class);
- suite.addTestSuite(NoRequirements.class);
- suite.addTestSuite(ORTesting.class);
- // suite.addTestSuite(PatchFailingToInstall.class);
- suite.addTestSuite(PatchTest1.class);
- suite.addTestSuite(PatchTest10.class);
- suite.addTestSuite(PatchTest11.class);
- suite.addTestSuite(PatchTest12.class);
- suite.addTestSuite(PatchTest13.class);
- suite.addTestSuite(PatchTest1b.class);
- suite.addTestSuite(PatchTest1c.class);
- suite.addTestSuite(PatchTest2.class);
- suite.addTestSuite(PatchTest3.class);
- suite.addTestSuite(PatchTest4.class);
- suite.addTestSuite(PatchTest5.class);
- suite.addTestSuite(PatchTest6.class);
- suite.addTestSuite(PatchTest7.class);
- suite.addTestSuite(PatchTest7b.class);
- suite.addTestSuite(PatchTest8.class);
- suite.addTestSuite(PatchTest9.class);
- suite.addTestSuite(PatchTest10.class);
- suite.addTestSuite(PatchTest12.class);
- suite.addTestSuite(PatchTestMultiplePatch.class);
- suite.addTestSuite(PatchTestMultiplePatch2.class);
- suite.addTestSuite(PatchTestMultiplePatch3.class);
- suite.addTestSuite(PatchTestOptional.class);
- suite.addTestSuite(PatchTestOptional2.class);
- suite.addTestSuite(PatchTestOptional3.class);
- suite.addTestSuite(PatchTestUninstall.class);
- suite.addTestSuite(PatchTestUpdate.class);
- suite.addTestSuite(PatchTestUpdate2.class);
- suite.addTestSuite(PatchTestUpdate3.class);
- suite.addTestSuite(PatchTestUpdate4.class);
- suite.addTestSuite(PatchTestUpdate5.class);
- suite.addTestSuite(PatchTestUsingNegativeRequirement.class);
- suite.addTestSuite(PermissiveSlicerTest.class);
- suite.addTestSuite(PP2ShouldFailToInstall.class);
- suite.addTestSuite(ResolvedIUInPCR.class);
- // suite.addTestSuite(ProvisioningPlanQueryTest.class); disabled, see bug 313812
- suite.addTestSuite(SDKPatchingTest1.class);
- suite.addTestSuite(SDKPatchingTest2.class);
- suite.addTestSuite(SeveralOptionalDependencies.class);
- suite.addTestSuite(SeveralOptionalDependencies2.class);
- suite.addTestSuite(SeveralOptionalDependencies3.class);
- suite.addTestSuite(SeveralOptionalDependencies4.class);
- suite.addTestSuite(SeveralOptionalDependencies5.class);
- suite.addTestSuite(SimpleOptionalTest.class);
- suite.addTestSuite(SimpleOptionalTest2.class);
- suite.addTestSuite(SimpleOptionalTest3.class);
- suite.addTestSuite(SimpleOptionalTest4.class);
- suite.addTestSuite(SimpleOptionalTest5.class);
- suite.addTestSuite(SimpleSingleton.class);
- suite.addTestSuite(SimulatedSharedInstallTest.class);
- suite.addTestSuite(SingletonOptionallyInstalled.class);
- suite.addTestSuite(SingletonOptionallyInstalled2.class);
- suite.addTestSuite(SWTFragment.class);
- suite.addTestSuite(SynchronizeOperationTest.class);
- suite.addTestSuite(TestNoopChangeRequest.class);
- suite.addTestSuite(TestFilteringOnAbsentProperty.class);
- suite.addTestSuite(TopLevelFilterTest.class);
- suite.addTestSuite(TwoVersionsOfWSDL.class);
- suite.addTestSuite(TychoUsage.class);
- suite.addTestSuite(UninstallEverything.class);
- suite.addTestSuite(UpdateForTwoIUs.class);
- suite.addTestSuite(UpdateQueryTest.class);
- return suite;
- }
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ AbsolutePlanTest.class, ActualChangeRequestTest.class, ActualChangeRequestTest2.class,
+ AdditionalConstraints.class, AddIUProperty.class, AgentPlanTestInRunningInstance.class,
+ AgentPlanTestInExternalInstance.class, AgentPlanTestInExternalInstanceForCohostedMode.class, AllOptional.class,
+ AllOrbit.class, AllRequestFlexerTests.class, AnotherSingleton.class, Bug207319.class, Bug249605.class,
+ Bug252638.class, Bug254481dataSet1.class, Bug254481dataSet2.class, Bug255984.class, Bug259537.class,
+ Bug262580.class, Bug270656.class, Bug270668.class, Bug270683.class, Bug271067.class, Bug271954.class,
+ Bug278668.class, Bug300572.class, Bug300572Small2.class, Bug300572Small3.class, Bug300572Small4.class,
+ Bug300572Small5.class, Bug300572Small6.class, Bug302582.class, Bug302582b.class, Bug302582c.class,
+ Bug306424.class, Bug306279c.class, Bug306279d.class, Bug311330.class, Bug329279.class, DependencyOnSelf.class,
+ DisabledExplanation.class, DropinsScenario.class, EPPPackageInstallStability_bug323322.class,
+ ExplanationDeepConflict.class, ExplanationForOptionalDependencies.class,
+ ExplanationForPartialInstallation.class, ExplanationLargeConflict.class,
+ ExplanationSeveralConflictingRoots.class, FindRootsAfterUpdate.class, FromStrictToOptional.class,
+ GreedyRequirement.class, InclusionRuleTest.class, InclusionRuleTest2.class, IUProperties.class,
+ IUPropertyRemoval.class, IUWithFilter.class, IUWithFilter2.class, MinimalInstall.class, MinimalInstall2.class,
+ MissingDependency.class, MissingDependency2.class, MissingDependency3.class, MissingNonGreedyRequirement.class,
+ MissingNonGreedyRequirement2.class, MissingOptional.class, MissingOptionalNonGreedyRequirement.class,
+ MissingOptionalWithDependencies.class, MissingOptionalWithDependencies2.class, NonMinimalState.class,
+ NonMinimalState2.class, NoUnecessaryIUProperty.class, MultipleProvider.class, MultipleSingleton.class,
+ NoRequirements.class, ORTesting.class, PatchTest1.class, PatchTest10.class, PatchTest11.class,
+ PatchTest12.class, PatchTest13.class, PatchTest1b.class, PatchTest1c.class, PatchTest2.class, PatchTest3.class,
+ PatchTest4.class, PatchTest5.class, PatchTest6.class, PatchTest7.class, PatchTest7b.class, PatchTest8.class,
+ PatchTest9.class, PatchTest10.class, PatchTest12.class, PatchTestMultiplePatch.class,
+ PatchTestMultiplePatch2.class, PatchTestMultiplePatch3.class, PatchTestOptional.class, PatchTestOptional2.class,
+ PatchTestOptional3.class, PatchTestUninstall.class, PatchTestUpdate.class, PatchTestUpdate2.class,
+ PatchTestUpdate3.class, PatchTestUpdate4.class, PatchTestUpdate5.class, PatchTestUsingNegativeRequirement.class,
+ PermissiveSlicerTest.class, PP2ShouldFailToInstall.class, ResolvedIUInPCR.class, SDKPatchingTest1.class,
+ SDKPatchingTest2.class, SeveralOptionalDependencies.class, SeveralOptionalDependencies2.class,
+ SeveralOptionalDependencies3.class, SeveralOptionalDependencies4.class, SeveralOptionalDependencies5.class,
+ SimpleOptionalTest.class, SimpleOptionalTest2.class, SimpleOptionalTest3.class, SimpleOptionalTest4.class,
+ SimpleOptionalTest5.class, SimpleSingleton.class, SimulatedSharedInstallTest.class,
+ SingletonOptionallyInstalled.class, SingletonOptionallyInstalled2.class, SWTFragment.class,
+ SynchronizeOperationTest.class, TestNoopChangeRequest.class, TestFilteringOnAbsentProperty.class,
+ TopLevelFilterTest.class, TwoVersionsOfWSDL.class, TychoUsage.class, UninstallEverything.class,
+ UpdateForTwoIUs.class, UpdateQueryTest.class, })
+public class AllTests {
+// Enable the following
+// Bug252682.class,
+// Bug272251.class,
+// Bug302582d.class,
+// Bug306279.class,
+// Bug306279b.class,
+// MissingOptionalWithDependencies3.class, Disabled, see bug 277161
+// NegationTesting.class,
+// PatchFailingToInstall.class,
+// ProvisioningPlanQueryTest.class, disabled, see bug 313812
} \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug300572.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug300572.java
index 0f55b25d1..33e3c68f5 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug300572.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug300572.java
@@ -14,7 +14,6 @@
package org.eclipse.equinox.p2.tests.planner;
import java.util.Arrays;
-import java.util.Iterator;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.equinox.p2.core.IProvisioningAgent;
import org.eclipse.equinox.p2.core.IProvisioningAgentProvider;
@@ -55,8 +54,7 @@ public class Bug300572 extends AbstractProvisioningTest {
IProfileChangeRequest request = planner.createChangeRequest(sdkProfile);
IQueryResult<IInstallableUnit> allIUs = repo.query(QueryUtil.ALL_UNITS, null);
request.addAll(allIUs.toUnmodifiableSet());
- for (Iterator<IInstallableUnit> allIUsIterator = allIUs.iterator(); allIUsIterator.hasNext();) {
- IInstallableUnit iu = allIUsIterator.next();
+ for (IInstallableUnit iu : allIUs) {
request.setInstallableUnitInclusionRules(iu, ProfileInclusionRules.createOptionalInclusionRule(iu));
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug309717.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug309717.java
index 5e3dad312..faedba0c8 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug309717.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug309717.java
@@ -32,7 +32,8 @@ public class Bug309717 extends AbstractProvisioningTest {
public void testUpdate() throws ProvisionException, OperationCanceledException, URISyntaxException {
IProvisioningAgent agent = getAgentProvider().createAgent(getTestData("test data bug309717", "testData/bug309717/p2").toURI());
- IMetadataRepository repo1 = agent.getService(IMetadataRepositoryManager.class).loadRepository(new URI("http://download.eclipse.org/releases/helios"), null);
+ IMetadataRepository repo1 = agent.getService(IMetadataRepositoryManager.class)
+ .loadRepository(new URI("https://download.eclipse.org/releases/2021-09"), null);
// assertFalse(repo1.query(QueryUtil.createIUQuery("org.eclipse.rap.jface.databinding"), new NullProgressMonitor()).isEmpty());
assertNotNull(repo1);
@@ -42,21 +43,13 @@ public class Bug309717 extends AbstractProvisioningTest {
URI jdojo = getTestData("repo for bug309717", "testData/bug309717/repo/jdojo").toURI();
IMetadataRepository repo3 = agent.getService(IMetadataRepositoryManager.class).loadRepository(jdojo, null);
assertNotNull(repo3);
- IMetadataRepository repo4 = agent.getService(IMetadataRepositoryManager.class).loadRepository(new URI("http://download.eclipse.org/eclipse/updates/3.6"), null);
+ IMetadataRepository repo4 = agent.getService(IMetadataRepositoryManager.class)
+ .loadRepository(new URI("https://download.eclipse.org/eclipse/updates/4.21"), null);
// assertFalse(repo1.query(QueryUtil.createIUQuery("org.eclipse.rap.jface.databinding"), new NullProgressMonitor()).isEmpty());
assertNotNull(repo4);
IPlanner planner = getPlanner(agent);
IProfile profile = agent.getService(IProfileRegistry.class).getProfile("PlatformProfile");
IProfileChangeRequest request = planner.createChangeRequest(profile);
assertNotNull(request);
- // Set<IInstallableUnit> ius = repo2.query(QueryUtil.createIUQuery("org.eclipse.riena.toolbox.feature.feature.group", Version.create("2.0.0.201003181312")), new NullProgressMonitor()).toUnmodifiableSet();
- // request.addAll(ius);
- // ProvisioningContext ctx = new ProvisioningContext(getAgent());
- // ctx.setMetadataRepositories(new URI[] {new URI("http://download.eclipse.org/releases/helios"), rienaRepo});
- // IProvisioningPlan plan = planner.getProvisioningPlan(request, ctx, new NullProgressMonitor());
- //
- // assertOK("resolution failed", plan.getStatus());
- // assertEquals(0, plan.getAdditions().query(QueryUtil.createIUQuery("org.eclipse.rap.jface.databinding"), new NullProgressMonitor()).toUnmodifiableSet().size());
- // System.out.println(plan);
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug362692.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug362692.java
index 728b66443..cc57a8ebf 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug362692.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/Bug362692.java
@@ -14,8 +14,15 @@
package org.eclipse.equinox.p2.tests.planner;
import java.net.URI;
-import java.util.*;
-import org.eclipse.core.runtime.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
import org.eclipse.equinox.internal.p2.engine.InstallableUnitOperand;
import org.eclipse.equinox.p2.engine.IProvisioningPlan;
import org.eclipse.equinox.p2.engine.ProvisioningContext;
@@ -23,7 +30,9 @@ import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.planner.IPlanner;
import org.eclipse.equinox.p2.planner.IProfileChangeRequest;
-import org.eclipse.equinox.p2.query.*;
+import org.eclipse.equinox.p2.query.IQuery;
+import org.eclipse.equinox.p2.query.IQueryResult;
+import org.eclipse.equinox.p2.query.QueryUtil;
import org.eclipse.equinox.p2.tests.TestActivator;
public class Bug362692 extends AbstractPlannerTest {
@@ -62,11 +71,9 @@ public class Bug362692 extends AbstractPlannerTest {
// create the actual plan - install everything in the repo as optional (mimic the dropins folder)
Set<IInstallableUnit> toAdd = new HashSet<>();
- IQueryResult<IInstallableUnit> allIUs = repo.query(QueryUtil.createIUAnyQuery(), new NullProgressMonitor());
// we don't want to re-install units which are already installed in the profile so remove them. (this is what the reconciler does)
boolean already = false;
- for (Iterator<IInstallableUnit> iter = allIUs.iterator(); iter.hasNext();) {
- IInstallableUnit iu = iter.next();
+ for (IInstallableUnit iu : repo.query(QueryUtil.createIUAnyQuery(), new NullProgressMonitor())) {
//toAdd.add(iu);
queryResult = getProfile().query(QueryUtil.createIUQuery(iu.getId(), iu.getVersion()), new NullProgressMonitor());
if (queryResult.isEmpty()) {
@@ -94,8 +101,8 @@ public class Bug362692 extends AbstractPlannerTest {
Collection<InstallableUnitOperand> compressedPlan = compress(plan);
if (compressedPlan.isEmpty())
System.out.println("Plan: ...is empty!");
- for (Iterator<InstallableUnitOperand> iter = compressedPlan.iterator(); iter.hasNext();) {
- System.out.println("Plan: " + iter.next());
+ for (InstallableUnitOperand installableUnitOperand : compressedPlan) {
+ System.out.println("Plan: " + installableUnitOperand);
}
validate(expected, plan);
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/EPPPackageInstallStability_bug323322.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/EPPPackageInstallStability_bug323322.java
index e6fe1f706..e82e23cfa 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/EPPPackageInstallStability_bug323322.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/EPPPackageInstallStability_bug323322.java
@@ -18,7 +18,6 @@ import java.net.URI;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import org.eclipse.core.runtime.NullProgressMonitor;
@@ -63,8 +62,7 @@ public class EPPPackageInstallStability_bug323322 extends AbstractProvisioningTe
//Extract all the unresolved IUs.
Set<IInstallableUnit> tmp = plan.getAdditions().query(QueryUtil.ALL_UNITS, new NullProgressMonitor()).query(QueryUtil.ALL_UNITS, null).toSet();
- for (Iterator<IInstallableUnit> iterator = tmp.iterator(); iterator.hasNext();) {
- IInstallableUnit iu = iterator.next();
+ for (IInstallableUnit iu : tmp) {
iusFromFirstResolution.add(iu.unresolved());
}
}
@@ -84,8 +82,7 @@ public class EPPPackageInstallStability_bug323322 extends AbstractProvisioningTe
Set<IInstallableUnit> tmp = plan.getAdditions().query(QueryUtil.ALL_UNITS, new NullProgressMonitor()).query(QueryUtil.ALL_UNITS, null).toSet();
Set<IInstallableUnit> iusFromSecondResolution = new HashSet<>();
- for (Iterator<IInstallableUnit> iterator = tmp.iterator(); iterator.hasNext();) {
- IInstallableUnit iu = iterator.next();
+ for (IInstallableUnit iu : tmp) {
iusFromSecondResolution.add(iu.unresolved());
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/NonMinimalState.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/NonMinimalState.java
index 3d021e50e..e24f54d0d 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/NonMinimalState.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/NonMinimalState.java
@@ -15,13 +15,18 @@ package org.eclipse.equinox.p2.tests.planner;
import java.io.File;
import java.net.URI;
-import java.util.*;
+import java.util.HashSet;
+import java.util.Set;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.equinox.internal.p2.director.ProfileChangeRequest;
import org.eclipse.equinox.internal.p2.engine.SimpleProfileRegistry;
-import org.eclipse.equinox.p2.engine.*;
+import org.eclipse.equinox.p2.engine.IProfile;
+import org.eclipse.equinox.p2.engine.IProvisioningPlan;
+import org.eclipse.equinox.p2.engine.ProvisioningContext;
import org.eclipse.equinox.p2.engine.query.IUProfilePropertyQuery;
-import org.eclipse.equinox.p2.metadata.*;
+import org.eclipse.equinox.p2.metadata.IInstallableUnit;
+import org.eclipse.equinox.p2.metadata.IInstallableUnitFragment;
+import org.eclipse.equinox.p2.metadata.IRequirement;
import org.eclipse.equinox.p2.planner.IPlanner;
import org.eclipse.equinox.p2.query.IQueryResult;
import org.eclipse.equinox.p2.query.QueryUtil;
@@ -76,8 +81,7 @@ public class NonMinimalState extends AbstractProvisioningTest {
visited = new HashSet<>();
IQueryResult<IInstallableUnit> roots = profile.query(new IUProfilePropertyQuery("org.eclipse.equinox.p2.type.root", "true"), null);
searchedId = id;
- for (Iterator<IInstallableUnit> iterator = roots.iterator(); iterator.hasNext();) {
- IInstallableUnit type = iterator.next();
+ for (IInstallableUnit type : roots) {
if (type instanceof IInstallableUnitFragment) {
visited.add(type);
continue;
@@ -93,8 +97,7 @@ public class NonMinimalState extends AbstractProvisioningTest {
visited.add(iu);
return false;
}
- Collection<IRequirement> reqs = iu.getRequirements();
- for (IRequirement req : reqs) {
+ for (IRequirement req : iu.getRequirements()) {
boolean result = expandRequirement(iu, req);
if (result) {
System.out.println(iu + " because " + req.toString());
@@ -105,9 +108,7 @@ public class NonMinimalState extends AbstractProvisioningTest {
}
private boolean expandRequirement(IInstallableUnit iu, IRequirement req) {
- IQueryResult<IInstallableUnit> matches = profile.query(QueryUtil.createMatchQuery(req.getMatches()), null);
- for (Iterator<IInstallableUnit> iterator = matches.iterator(); iterator.hasNext();) {
- IInstallableUnit match = iterator.next();
+ for (IInstallableUnit match : profile.query(QueryUtil.createMatchQuery(req.getMatches()), null)) {
if (match.getId().equals(searchedId))
return true;
if (!visited.contains(match)) {
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/TychoUsage.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/TychoUsage.java
index 0e3a5fe7b..08701b299 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/TychoUsage.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/TychoUsage.java
@@ -1,15 +1,28 @@
package org.eclipse.equinox.p2.tests.planner;
import java.net.URISyntaxException;
-import java.util.*;
-import org.eclipse.core.runtime.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.internal.p2.director.Projector;
import org.eclipse.equinox.internal.p2.director.Slicer;
import org.eclipse.equinox.p2.core.ProvisionException;
import org.eclipse.equinox.p2.engine.IProfile;
-import org.eclipse.equinox.p2.metadata.*;
+import org.eclipse.equinox.p2.metadata.IInstallableUnit;
+import org.eclipse.equinox.p2.metadata.IProvidedCapability;
+import org.eclipse.equinox.p2.metadata.IRequirement;
+import org.eclipse.equinox.p2.metadata.MetadataFactory;
+import org.eclipse.equinox.p2.metadata.Version;
+import org.eclipse.equinox.p2.metadata.VersionRange;
import org.eclipse.equinox.p2.planner.IProfileChangeRequest;
-import org.eclipse.equinox.p2.query.*;
+import org.eclipse.equinox.p2.query.Collector;
+import org.eclipse.equinox.p2.query.IQueryable;
+import org.eclipse.equinox.p2.query.QueryUtil;
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
@@ -20,7 +33,9 @@ public class TychoUsage extends AbstractProvisioningTest {
private void setupTopLevelIU() {
IRequirement[] reqPlatform1 = new IRequirement[1];
- reqPlatform1[0] = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.emf.sdk.feature.group", new VersionRange("[2.7.2.v20120130-0943, 2.7.2.v20120130-0943]"), null, false, false, true);
+ reqPlatform1[0] = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID,
+ "org.eclipse.emf.sdk.feature.group", new VersionRange("[2.27.0.v20210816-1137, 2.27.0.v20210816-1137]"),
+ null, false, false, true);
Map<String, String> p = new HashMap<>();
topLevelIU = createIU("topLevelIU", Version.create("1.0.0"), null, reqPlatform1, new IProvidedCapability[0], p, null, null, true);
}
@@ -32,7 +47,7 @@ public class TychoUsage extends AbstractProvisioningTest {
}
public void testEquivalentP2Call() throws ProvisionException, URISyntaxException {
- loadMetadataRepository(URIUtil.fromString("http://download.eclipse.org/releases/indigo"));
+ loadMetadataRepository(URIUtil.fromString("https://download.eclipse.org/releases/2021-09"));
profile = createProfile("TestProfile." + getName());
IProfileChangeRequest pcr = getPlanner(getAgent()).createChangeRequest(profile);
pcr.add(topLevelIU);
@@ -42,8 +57,11 @@ public class TychoUsage extends AbstractProvisioningTest {
}
public void testTychoUsage() throws ProvisionException, URISyntaxException {
- IMetadataRepository repo = loadMetadataRepository(URIUtil.fromString("http://download.eclipse.org/releases/indigo"));
- IInstallableUnit newRoot1 = repo.query(QueryUtil.createIUQuery("org.eclipse.emf.sdk.feature.group", Version.create("2.7.2.v20120130-0943")), new NullProgressMonitor()).iterator().next();
+ IMetadataRepository repo = loadMetadataRepository(
+ URIUtil.fromString("https://download.eclipse.org/releases/2021-09"));
+ IInstallableUnit newRoot1 = repo.query(
+ QueryUtil.createIUQuery("org.eclipse.emf.sdk.feature.group", Version.create("2.27.0.v20210816-1137")),
+ new NullProgressMonitor()).iterator().next();
Collection<IInstallableUnit> newRoots = new ArrayList<>();
newRoots.add(newRoot1);
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/AllTests.java
index 62aaf5e2e..1ff8fefed 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/AllTests.java
@@ -8,50 +8,54 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
+ *
+ * Contributors:
* Code 9 - initial API and implementation
* IBM - ongoing development
* SAP AG - ongoing development
******************************************************************************/
package org.eclipse.equinox.p2.tests.publisher;
-import junit.framework.*;
-import org.eclipse.equinox.p2.tests.publisher.actions.*;
-
-public class AllTests extends TestCase {
+import org.eclipse.equinox.p2.tests.publisher.actions.ANYConfigCUsActionTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.AbstractPublisherActionTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.AccumulateConfigDataActionTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.AdviceFileParserTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.BundlesActionTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.CategoryPublisherTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.ConfigCUsActionTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.ContextRepositoryTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.DefaultCUsActionTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.EquinoxExecutableActionTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.EquinoxLauncherCUActionTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.FeaturesActionTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.JREActionTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.LocalUpdateSiteActionTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.LocalizationTests;
+import org.eclipse.equinox.p2.tests.publisher.actions.MD5GenerationTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.ProductActionCapturingTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.ProductActionTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.ProductActionTestMac;
+import org.eclipse.equinox.p2.tests.publisher.actions.ProductActionWithJRELocationTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.ProductContentTypeTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.ProductFileAdviceTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.ProductFileTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.RootFilesActionTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.RootIUActionTest;
+import org.eclipse.equinox.p2.tests.publisher.actions.VersionAdviceTest;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(AbstractPublisherActionTest.class);
- suite.addTestSuite(AccumulateConfigDataActionTest.class);
- suite.addTestSuite(AdviceFileParserTest.class);
- suite.addTestSuite(ANYConfigCUsActionTest.class);
- suite.addTestSuite(BundlesActionTest.class);
- suite.addTestSuite(CategoryPublisherTest.class);
- suite.addTestSuite(ConfigCUsActionTest.class);
- suite.addTestSuite(ContextRepositoryTest.class);
- suite.addTestSuite(DefaultCUsActionTest.class);
- suite.addTestSuite(EquinoxExecutableActionTest.class);
- suite.addTestSuite(EquinoxLauncherCUActionTest.class);
- suite.addTestSuite(FeaturesActionTest.class);
- suite.addTestSuite(JREActionTest.class);
- suite.addTestSuite(LocalizationTests.class);
- suite.addTestSuite(LocalUpdateSiteActionTest.class);
- suite.addTestSuite(MD5GenerationTest.class);
- suite.addTest(new JUnit4TestAdapter(ChecksumGenerationTest.class));
- suite.addTestSuite(ProductActionTest.class);
- suite.addTestSuite(ProductActionCapturingTest.class);
- suite.addTestSuite(ProductActionTestMac.class);
- suite.addTestSuite(ProductActionWithJRELocationTest.class);
- suite.addTestSuite(ProductContentTypeTest.class);
- suite.addTestSuite(ProductFileAdviceTest.class);
- suite.addTestSuite(ProductFileTest.class);
- suite.addTestSuite(RootFilesActionTest.class);
- suite.addTestSuite(RootIUActionTest.class);
- suite.addTestSuite(GeneralPublisherTests.class);
- suite.addTestSuite(VersionAdviceTest.class);
- return suite;
- }
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ AbstractPublisherActionTest.class, AccumulateConfigDataActionTest.class,
+ AdviceFileParserTest.class, ANYConfigCUsActionTest.class, BundlesActionTest.class, CategoryPublisherTest.class,
+ ConfigCUsActionTest.class, ContextRepositoryTest.class, DefaultCUsActionTest.class,
+ EquinoxExecutableActionTest.class, EquinoxLauncherCUActionTest.class, FeaturesActionTest.class,
+ JREActionTest.class, LocalizationTests.class, LocalUpdateSiteActionTest.class, MD5GenerationTest.class,
+ ChecksumGenerationTest.class, ProductActionTest.class, ProductActionCapturingTest.class,
+ ProductActionTestMac.class, ProductActionWithJRELocationTest.class, ProductContentTypeTest.class,
+ ProductFileAdviceTest.class, ProductFileTest.class, RootFilesActionTest.class, RootIUActionTest.class,
+ GeneralPublisherTests.class, VersionAdviceTest.class })
+public class AllTests {
+// test suite
} \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/ChecksumGenerationTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/ChecksumGenerationTest.java
index 8cc82e34d..3b4ad0612 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/ChecksumGenerationTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/ChecksumGenerationTest.java
@@ -13,6 +13,8 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.publisher;
+import static org.hamcrest.MatcherAssert.assertThat;
+
import java.util.Arrays;
import java.util.Collection;
import org.eclipse.equinox.internal.p2.metadata.ArtifactKey;
@@ -21,7 +23,6 @@ import org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor;
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
import org.eclipse.equinox.spi.p2.publisher.PublisherHelper;
import org.hamcrest.CoreMatchers;
-import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -58,6 +59,6 @@ public class ChecksumGenerationTest extends AbstractProvisioningTest {
@Test
public void testGenerationNoFolder() {
IArtifactDescriptor ad = PublisherHelper.createArtifactDescriptor(new ArtifactKey("classifierTest", "idTest", Version.createOSGi(1, 0, 0)), null);
- Assert.assertThat(ad.getProperty(checksumProperty), CoreMatchers.not(CoreMatchers.containsString(checksumValue)));
+ assertThat(ad.getProperty(checksumProperty), CoreMatchers.not(CoreMatchers.containsString(checksumValue)));
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/GeneralPublisherTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/GeneralPublisherTests.java
index be1776f12..e04b716e9 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/GeneralPublisherTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/GeneralPublisherTests.java
@@ -7,24 +7,30 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.publisher;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import java.io.PrintStream;
import java.lang.reflect.Method;
import java.util.NoSuchElementException;
-import junit.framework.TestCase;
import org.eclipse.equinox.internal.p2.publisher.Messages;
import org.eclipse.equinox.internal.p2.publisher.QuotedTokenizer;
import org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile;
import org.eclipse.equinox.p2.publisher.eclipse.FeaturesAndBundlesPublisherApplication;
import org.eclipse.equinox.p2.tests.StringBufferStream;
+import org.junit.Test;
-public class GeneralPublisherTests extends TestCase {
-
+public class GeneralPublisherTests {
+ @Test
public void testBug255820_Product_normalize() throws Exception {
Method normalizeMethod = ProductFile.class.getDeclaredMethod("normalize", String.class);
normalizeMethod.setAccessible(true);
@@ -34,6 +40,7 @@ public class GeneralPublisherTests extends TestCase {
assertEquals(normalizeMethod.invoke(null, "a\fbd\r\n e"), "a bd e");
}
+ @Test
public void testInvalidConfiguration1() {
FeaturesAndBundlesPublisherApplication application = new FeaturesAndBundlesPublisherApplication();
Integer retValue = 0;
@@ -52,6 +59,7 @@ public class GeneralPublisherTests extends TestCase {
assertEquals("1.1", Messages.exception_noMetadataRepo, application.getStatus().getMessage());
}
+ @Test
public void testInvalidConfiguration2() {
FeaturesAndBundlesPublisherApplication application = new FeaturesAndBundlesPublisherApplication();
Integer retValue = 0;
@@ -71,6 +79,7 @@ public class GeneralPublisherTests extends TestCase {
}
+ @Test
public void testQuotedTokenizer() throws Exception {
QuotedTokenizer tokenizer = new QuotedTokenizer("abra ca dabra");
assertEquals("abra", tokenizer.nextToken());
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/TestArtifactRepository.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/TestArtifactRepository.java
index 635433a54..0ea3b7394 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/TestArtifactRepository.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/TestArtifactRepository.java
@@ -239,8 +239,7 @@ public class TestArtifactRepository implements IArtifactRepository {
@Override
public void removeDescriptor(IArtifactKey key, IProgressMonitor monitor) {
ArrayList<IArtifactDescriptor> removeList = new ArrayList<>();
- for (Iterator<IArtifactDescriptor> iterator = repo.keySet().iterator(); iterator.hasNext();) {
- IArtifactDescriptor descriptor = iterator.next();
+ for (IArtifactDescriptor descriptor : repo.keySet()) {
if (descriptor.getArtifactKey().equals(key))
removeList.add(descriptor);
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ANYConfigCUsActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ANYConfigCUsActionTest.java
index 26c6fa490..d6085fd8a 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ANYConfigCUsActionTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ANYConfigCUsActionTest.java
@@ -14,13 +14,17 @@
******************************************************************************/
package org.eclipse.equinox.p2.tests.publisher.actions;
-import static org.easymock.EasyMock.expect;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.matches;
+import static org.mockito.Mockito.when;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import org.easymock.EasyMock;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.equinox.internal.p2.metadata.InstallableUnit;
import org.eclipse.equinox.internal.p2.publisher.eclipse.DataLoader;
@@ -105,9 +109,7 @@ public class ANYConfigCUsActionTest extends ActionTest {
}
private void verifyFragment(String cuType) {
- ArrayList<IInstallableUnit> IUs = new ArrayList<>(publisherResult.getIUs(null, IPublisherResult.NON_ROOT));
- for (int i = 0; i < IUs.size(); i++) {
- IInstallableUnit iu = IUs.get(i);
+ for (IInstallableUnit iu : new ArrayList<>(publisherResult.getIUs(null, IPublisherResult.NON_ROOT))) {
if (iu.getId().equals(flavor + id + "." + cuType + "." + configSpec)) { //$NON-NLS-1$ //$NON-NLS-2$
assertNull(iu.getFilter()); // no filter if config spec is ANY
@@ -214,7 +216,8 @@ public class ANYConfigCUsActionTest extends ActionTest {
fail("Unable to create product file advice", e); //$NON-NLS-1$
}
- expect(publisherInfo.getAdvice(EasyMock.matches(configSpec), EasyMock.eq(false), (String) EasyMock.anyObject(), (Version) EasyMock.anyObject(), EasyMock.eq(IExecutableAdvice.class))).andReturn(launchingList).anyTimes();
+ when(publisherInfo.getAdvice(matches(configSpec), eq(false), anyString(), any(Version.class),
+ eq(IExecutableAdvice.class))).thenReturn(launchingList);
//configure IConfigAdvice
ConfigData configData = loader.getConfigData();
@@ -222,14 +225,15 @@ public class ANYConfigCUsActionTest extends ActionTest {
ArrayList<IConfigAdvice> configList = new ArrayList<>();
configList.add(configAdvice);
configList.add(productAdvice);
- expect(publisherInfo.getAdvice(EasyMock.matches(configSpec), EasyMock.eq(false), (String) EasyMock.anyObject(), (Version) EasyMock.anyObject(), EasyMock.eq(IConfigAdvice.class))).andReturn(configList).anyTimes();
+ when(publisherInfo.getAdvice(matches(configSpec), eq(false), anyString(), any(Version.class),
+ eq(IConfigAdvice.class))).thenReturn(configList);
//setup metadata repository
IInstallableUnit[] ius = {mockIU("foo", null), mockIU("bar", null)}; //$NON-NLS-1$ //$NON-NLS-2$
metadataRepo = new TestMetadataRepository(getAgent(), ius);
- expect(publisherInfo.getMetadataRepository()).andReturn(metadataRepo).anyTimes();
- expect(publisherInfo.getContextMetadataRepository()).andReturn(null).anyTimes();
+ when(publisherInfo.getMetadataRepository()).thenReturn(metadataRepo);
+ when(publisherInfo.getContextMetadataRepository()).thenReturn(null);
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/AccumulateConfigDataActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/AccumulateConfigDataActionTest.java
index 66707af19..ffe6009d5 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/AccumulateConfigDataActionTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/AccumulateConfigDataActionTest.java
@@ -15,19 +15,25 @@
******************************************************************************/
package org.eclipse.equinox.p2.tests.publisher.actions;
+import static org.mockito.Mockito.verify;
+
import java.io.File;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Map;
-import org.easymock.Capture;
-import org.easymock.EasyMock;
+import java.util.stream.Collectors;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.provisional.frameworkadmin.ConfigData;
-import org.eclipse.equinox.p2.publisher.eclipse.*;
+import org.eclipse.equinox.p2.publisher.IPublisherAdvice;
+import org.eclipse.equinox.p2.publisher.eclipse.AccumulateConfigDataAction;
+import org.eclipse.equinox.p2.publisher.eclipse.ConfigAdvice;
+import org.eclipse.equinox.p2.publisher.eclipse.LaunchingAdvice;
import org.eclipse.equinox.p2.tests.TestActivator;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mockito;
public class AccumulateConfigDataActionTest extends ActionTest {
@@ -41,13 +47,11 @@ public class AccumulateConfigDataActionTest extends ActionTest {
private static String launcherName = "launcherName"; //$NON-NLS-1$
private static String launcherVersion = "0.0.0"; //$NON-NLS-1$
- Capture<ConfigAdvice> configAdviceCapture;
- Capture<LaunchingAdvice> launchingAdviceCapture;
+ ArgumentCaptor<IPublisherAdvice> capture;
@Override
public void setUp() throws Exception {
- configAdviceCapture = new Capture<>();
- launchingAdviceCapture = new Capture<>();
+ capture = ArgumentCaptor.forClass(IPublisherAdvice.class);
setupPublisherInfo();
setupPublisherResult();
testAction = new AccumulateConfigDataAction(publisherInfo, configSpec, configLocation, executableLocation);
@@ -55,13 +59,15 @@ public class AccumulateConfigDataActionTest extends ActionTest {
public void testAccumulateConfigDataAction() throws Exception {
testAction.perform(publisherInfo, publisherResult, new NullProgressMonitor());
+ verify(publisherInfo, Mockito.atLeastOnce()).addAdvice(capture.capture());
verifyConfigAdvice();
verifyLaunchAdvice();
debug("Completed AccumulateConfigDataActionTest."); //$NON-NLS-1$
}
private void verifyLaunchAdvice() throws URISyntaxException {
- LaunchingAdvice captured = launchingAdviceCapture.getValue();
+ LaunchingAdvice captured = (LaunchingAdvice) capture.getAllValues().stream()
+ .filter(LaunchingAdvice.class::isInstance).collect(Collectors.toList()).get(0);
String[] programArgs = captured.getProgramArguments();
assertTrue(programArgs.length == 4);
assertTrue(programArgs[0].equalsIgnoreCase("-startup")); //$NON-NLS-1$
@@ -79,7 +85,8 @@ public class AccumulateConfigDataActionTest extends ActionTest {
}
private void verifyConfigAdvice() throws Exception {
- ConfigAdvice captured = configAdviceCapture.getValue();
+ ConfigAdvice captured = (ConfigAdvice) capture.getAllValues().stream().filter(ConfigAdvice.class::isInstance)
+ .collect(Collectors.toList()).get(0);
Map<String, String> prop = captured.getProperties();
assertTrue(prop.get("eclipse.buildId").equalsIgnoreCase("TEST-ID")); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(prop.get("eclipse.p2.profile").equalsIgnoreCase("PlatformProfile")); //$NON-NLS-1$//$NON-NLS-2$
@@ -107,8 +114,5 @@ public class AccumulateConfigDataActionTest extends ActionTest {
ConfigAdvice configAdvice = new ConfigAdvice(configData, configSpec);
ArrayList<ConfigAdvice> configList = new ArrayList<>();
configList.add(configAdvice);
-
- publisherInfo.addAdvice(EasyMock.and(EasyMock.isA(ConfigAdvice.class), EasyMock.capture(configAdviceCapture)));
- publisherInfo.addAdvice(EasyMock.and(EasyMock.isA(LaunchingAdvice.class), EasyMock.capture(launchingAdviceCapture)));
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ActionTest.java
index 6ee4cf48a..25290d337 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ActionTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ActionTest.java
@@ -14,10 +14,9 @@
******************************************************************************/
package org.eclipse.equinox.p2.tests.publisher.actions;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -118,9 +117,9 @@ public abstract class ActionTest extends AbstractProvisioningTest {
for (IRequirement act : actual) {
if (expected.getMatches().equals(act.getMatches())) {
String descr = "IRequirement " + expected.getMatches();
- Assert.assertEquals("Min of " + descr, expected.getMin(), act.getMin());
- Assert.assertEquals("Max of " + descr, expected.getMax(), act.getMax());
- Assert.assertEquals("Greedy of " + descr, expected.isGreedy(), act.isGreedy());
+ assertEquals("Min of " + descr, expected.getMin(), act.getMin());
+ assertEquals("Max of " + descr, expected.getMax(), act.getMax());
+ assertEquals("Greedy of " + descr, expected.isGreedy(), act.isGreedy());
return;
}
}
@@ -128,13 +127,12 @@ public abstract class ActionTest extends AbstractProvisioningTest {
}
protected IInstallableUnit mockIU(String id, Version version) {
- IInstallableUnit result = createMock(IInstallableUnit.class);
- expect(result.getId()).andReturn(id).anyTimes();
+ IInstallableUnit result = mock(IInstallableUnit.class);
+ when(result.getId()).thenReturn(id);
if (version == null)
version = Version.emptyVersion;
- expect(result.getVersion()).andReturn(version).anyTimes();
- expect(result.getFilter()).andReturn(null).anyTimes();
- replay(result);
+ when(result.getVersion()).thenReturn(version);
+ when(result.getFilter()).thenReturn(null);
return result;
}
@@ -170,31 +168,20 @@ public abstract class ActionTest extends AbstractProvisioningTest {
* Call this method to setup Publisher Info, not <code>insertPublisherInfoBehavior</code>
*/
public void setupPublisherInfo() {
- publisherInfo = createPublisherInfoMock();
+ publisherInfo = mock(IPublisherInfo.class);
String[] config = getArrayFromString(configSpec, COMMA_SEPARATOR);
- expect(publisherInfo.getConfigurations()).andReturn(config).anyTimes();
+ when(publisherInfo.getConfigurations()).thenReturn(config);
insertPublisherInfoBehavior();
- replay(publisherInfo);
- }
-
- /**
- * Creates the mock object for the IPublisherInfo. Subclasses
- * can override to create a nice or strict mock instead.
- * @return The publisher info mock
- * @see org.easymock.EasyMock#createNiceMock(Class)
- * @see org.easymock.EasyMock#createStrictMock(Class)
- */
- protected IPublisherInfo createPublisherInfoMock() {
- return createMock(IPublisherInfo.class);
}
/**
* Do not call this method, it is called by <code>setupPublisherInfo</code>.
*/
protected void insertPublisherInfoBehavior() {
- expect(publisherInfo.getMetadataRepository()).andReturn(createTestMetdataRepository(new IInstallableUnit[0])).anyTimes();
- expect(publisherInfo.getContextMetadataRepository()).andReturn(createTestMetdataRepository(new IInstallableUnit[0])).anyTimes();
+ when(publisherInfo.getMetadataRepository()).thenReturn(createTestMetdataRepository(new IInstallableUnit[0]));
+ when(publisherInfo.getContextMetadataRepository())
+ .thenReturn(createTestMetdataRepository(new IInstallableUnit[0]));
}
public void cleanup() {
@@ -242,7 +229,7 @@ public abstract class ActionTest extends AbstractProvisioningTest {
public static Matcher<IPublisherResult> containsIU(final String id) {
final IQuery<IInstallableUnit> query = QueryUtil.createIUQuery(id);
- return new TypeSafeMatcher<IPublisherResult>() {
+ return new TypeSafeMatcher<>() {
@Override
public void describeTo(Description description) {
@@ -259,7 +246,7 @@ public abstract class ActionTest extends AbstractProvisioningTest {
public static Matcher<IPublisherResult> containsUniqueIU(final String id) {
final IQuery<IInstallableUnit> query = QueryUtil.createIUQuery(id);
- return new TypeSafeMatcher<IPublisherResult>() {
+ return new TypeSafeMatcher<>() {
@Override
public void describeTo(Description description) {
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/AdviceFileParserTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/AdviceFileParserTest.java
index 4ebce017a..db6d1105e 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/AdviceFileParserTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/AdviceFileParserTest.java
@@ -13,17 +13,38 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.publisher.actions;
-import java.util.*;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThrows;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
import org.eclipse.equinox.internal.p2.metadata.InstallableUnit;
import org.eclipse.equinox.internal.p2.metadata.RequiredCapability;
-import org.eclipse.equinox.p2.metadata.*;
+import org.eclipse.equinox.p2.metadata.IArtifactKey;
+import org.eclipse.equinox.p2.metadata.IInstallableUnit;
+import org.eclipse.equinox.p2.metadata.IInstallableUnitFragment;
+import org.eclipse.equinox.p2.metadata.IProvidedCapability;
+import org.eclipse.equinox.p2.metadata.IRequirement;
+import org.eclipse.equinox.p2.metadata.ITouchpointInstruction;
+import org.eclipse.equinox.p2.metadata.ITouchpointType;
+import org.eclipse.equinox.p2.metadata.IUpdateDescriptor;
+import org.eclipse.equinox.p2.metadata.MetadataFactory;
+import org.eclipse.equinox.p2.metadata.Version;
+import org.eclipse.equinox.p2.metadata.VersionRange;
import org.eclipse.equinox.p2.metadata.expression.ExpressionUtil;
import org.eclipse.equinox.p2.metadata.expression.IMatchExpression;
import org.eclipse.equinox.p2.publisher.AdviceFileParser;
import org.eclipse.equinox.p2.query.QueryUtil;
+import org.junit.Test;
-public class AdviceFileParserTest extends TestCase {
+public class AdviceFileParserTest {
+ @Test
public void testNoAdvice() {
AdviceFileParser parser = new AdviceFileParser("id", Version.emptyVersion, Collections.EMPTY_MAP);
parser.parse();
@@ -34,6 +55,7 @@ public class AdviceFileParserTest extends TestCase {
assertNull(parser.getTouchpointInstructions());
}
+ @Test
public void testAdviceVersion() {
Map<String, String> map = new HashMap<>();
map.put("advice.version", "1.0");
@@ -41,15 +63,11 @@ public class AdviceFileParserTest extends TestCase {
parser.parse();
map.put("advice.version", "999");
- parser = new AdviceFileParser("id", Version.emptyVersion, map);
- try {
- parser.parse();
- } catch (IllegalStateException e) {
- return;
- }
- fail("expected version parse problem");
+ assertThrows("expected version parse problem", IllegalStateException.class,
+ () -> new AdviceFileParser("id", Version.emptyVersion, map).parse());
}
+ @Test
public void testUpdateDescriptorAdvice() {
Map<String, String> map = new HashMap<>();
map.put("update.id", "testName");
@@ -70,6 +88,7 @@ public class AdviceFileParserTest extends TestCase {
assertEquals("Test Description", updateDescriptor.getDescription());
}
+ @Test
public void testUpdateDescriptorAdviceDefaultBound() {
Map<String, String> map = new HashMap<>();
map.put("update.id", "testName");
@@ -90,6 +109,7 @@ public class AdviceFileParserTest extends TestCase {
assertEquals("Test Description", updateDescriptor.getDescription());
}
+ @Test
public void testUpdateDescriptorWithMatch() {
Map<String, String> map = new HashMap<>();
map.put("update.matchExp", "providedCapabilities.exists(pc | pc.namespace == 'org.eclipse.equinox.p2.iu' && (pc.name == 'B' || pc.name == 'C'))");
@@ -103,15 +123,11 @@ public class AdviceFileParserTest extends TestCase {
assertEquals("Test Description", updateDescriptor.getDescription());
assertEquals(10, updateDescriptor.getSeverity());
//Here we test that the extraction of the name fails since this is not of an appropriate format
- boolean exceptionRaised = false;
- try {
- RequiredCapability.extractName(updateDescriptor.getIUsBeingUpdated().iterator().next());
- } catch (IllegalArgumentException e) {
- exceptionRaised = true;
- }
- assertTrue(exceptionRaised);
+ assertThrows(IllegalArgumentException.class,
+ () -> RequiredCapability.extractName(updateDescriptor.getIUsBeingUpdated().iterator().next()));
}
+ @Test
public void testUpdateDescriptorAdviceDefaultBound2() {
Map<String, String> map = new HashMap<>();
map.put("update.id", "testName");
@@ -131,6 +147,7 @@ public class AdviceFileParserTest extends TestCase {
assertEquals("Test Description", updateDescriptor.getDescription());
}
+ @Test
public void testUpdateDescriptorAdviceDefaultID() {
Map<String, String> map = new HashMap<>();
map.put("update.severity", "10");
@@ -149,6 +166,7 @@ public class AdviceFileParserTest extends TestCase {
assertEquals("Test Description", updateDescriptor.getDescription());
}
+ @Test
public void testUpdateDescriptorAdviceDefaults() {
Map<String, String> map = new HashMap<>();
map.put("update.id", "id");
@@ -166,6 +184,7 @@ public class AdviceFileParserTest extends TestCase {
assertEquals(null, updateDescriptor.getDescription());
}
+ @Test
public void testPropertyAdvice() {
Map<String, String> map = new HashMap<>();
map.put("properties.0.name", "testName1");
@@ -179,6 +198,7 @@ public class AdviceFileParserTest extends TestCase {
assertEquals("testValue2", parser.getProperties().get("testName2"));
}
+ @Test
public void testProvidesAdvice() {
Map<String, String> map = new HashMap<>();
map.put("provides.0.namespace", "testNamespace1");
@@ -209,6 +229,7 @@ public class AdviceFileParserTest extends TestCase {
assertEquals(Version.emptyVersion, capabilities[1].getVersion());
}
+ @Test
public void testRequiresAdvice() {
Map<String, String> map = new HashMap<>();
map.put("requires.0.namespace", "testNamespace1");
@@ -250,6 +271,7 @@ public class AdviceFileParserTest extends TestCase {
assertEquals(1, reqs[1].getMin());
}
+ @Test
public void testRequireWithExpression() {
Map<String, String> map = new HashMap<>();
String matchExp = "properties[abc] == 'def'";
@@ -268,6 +290,7 @@ public class AdviceFileParserTest extends TestCase {
assertEquals(matchExpression, reqs[0].getMatches());
}
+ @Test
public void testRequireWithExpressionAndOptional() {
Map<String, String> map = new HashMap<>();
String matchExp = "properties[abc] == 'def'";
@@ -287,6 +310,7 @@ public class AdviceFileParserTest extends TestCase {
assertEquals(1, reqs[0].getMax());
}
+ @Test
public void testMetaRequiresAdvice() {
Map<String, String> map = new HashMap<>();
map.put("metaRequirements.0.namespace", "testNamespace1");
@@ -328,6 +352,7 @@ public class AdviceFileParserTest extends TestCase {
assertEquals(1, reqs[1].getMin());
}
+ @Test
public void testInstructionsAdvice() {
Map<String, String> map = new HashMap<>();
map.put("instructions.configure", "addProgramArg(programArg:-startup); addProgramArg(programArg:@artifact);");
@@ -346,6 +371,7 @@ public class AdviceFileParserTest extends TestCase {
assertEquals("removeProgramArg(programArg:-startup); removeProgramArg(programArg:@artifact);)", unconfigure.getBody());
}
+ @Test
public void testAdditionalInstallableUnitDescriptionsAdvice() {
Map<String, String> map = new HashMap<>();
map.put("units.0.id", "testid0");
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/AdviceMatcher.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/AdviceMatcher.java
deleted file mode 100644
index f23e1f53b..000000000
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/AdviceMatcher.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2017 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.equinox.p2.tests.publisher.actions;
-
-import org.easymock.EasyMock;
-import org.easymock.IArgumentMatcher;
-import org.eclipse.equinox.p2.metadata.Version;
-import org.eclipse.equinox.p2.publisher.IPublisherAdvice;
-
-/**
- * A matcher that matches advice applicable to a given id and version.
- */
-public class AdviceMatcher implements IArgumentMatcher {
- private final Version version;
- private final String id;
- private static Class<?> clazz;
-
- public static IPublisherAdvice adviceMatches(String id, Version version, Class<?> clazz) {
- AdviceMatcher.clazz = clazz;
- EasyMock.reportMatcher(new AdviceMatcher(id, version));
- return null;
- }
-
- public AdviceMatcher(String id, Version version) {
- this.id = id;
- this.version = version;
- }
-
- @Override
- public void appendTo(StringBuffer buf) {
- buf.append("AdviceMatcher[" + id + ',' + version + ']');
- }
-
- @Override
- public boolean matches(Object arg) {
- if (!(arg instanceof IPublisherAdvice))
- return false;
- if (!(clazz.isAssignableFrom(arg.getClass())))
- return false;
- IPublisherAdvice advice = (IPublisherAdvice) arg;
- return advice.isApplicable("", false, id, version);
- }
-}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/BundlesActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/BundlesActionTest.java
index 8e6acb848..fd95c834b 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/BundlesActionTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/BundlesActionTest.java
@@ -16,15 +16,16 @@
******************************************************************************/
package org.eclipse.equinox.p2.tests.publisher.actions;
-import static org.easymock.EasyMock.and;
-import static org.easymock.EasyMock.capture;
-import static org.easymock.EasyMock.expect;
import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.errorStatus;
import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.statusWithMessageWhich;
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.hasItem;
import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import java.io.BufferedInputStream;
import java.io.File;
@@ -39,7 +40,6 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.zip.ZipInputStream;
-import org.easymock.EasyMock;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
@@ -58,6 +58,7 @@ import org.eclipse.equinox.p2.metadata.IUpdateDescriptor;
import org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitDescription;
import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.metadata.VersionRange;
+import org.eclipse.equinox.p2.metadata.expression.IMatchExpression;
import org.eclipse.equinox.p2.publisher.AbstractPublisherApplication;
import org.eclipse.equinox.p2.publisher.AdviceFileAdvice;
import org.eclipse.equinox.p2.publisher.IPublisherInfo;
@@ -78,6 +79,8 @@ import org.eclipse.equinox.p2.tests.TestActivator;
import org.eclipse.equinox.p2.tests.TestData;
import org.eclipse.equinox.p2.tests.publisher.TestArtifactRepository;
import org.eclipse.equinox.spi.p2.publisher.PublisherHelper;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mockito;
public class BundlesActionTest extends ActionTest {
private static final String OSGI = PublisherHelper.OSGI_BUNDLE_CLASSIFIER;
@@ -141,39 +144,27 @@ public class BundlesActionTest extends ActionTest {
private static final VersionRange TEST1_IU_D_VERSION_RANGE = VersionRange.create("1.3.0");//$NON-NLS-1$
protected TestArtifactRepository artifactRepository = new TestArtifactRepository(getAgent());
-
- private MultiCapture<ITouchpointAdvice> tpAdvice1, tpAdvice2;
- private MultiCapture<IUpdateDescriptorAdvice> udAdvice3;
- private MultiCapture<ICapabilityAdvice> capAdvice5;
-
- @Override
- public void setupPublisherInfo() {
- tpAdvice1 = new MultiCapture<>();
- tpAdvice2 = new MultiCapture<>();
-
- udAdvice3 = new MultiCapture<>();
- capAdvice5 = new MultiCapture<>();
-
- super.setupPublisherInfo();
- }
+ private ArgumentCaptor<AdviceFileAdvice> updateDescriptorCapture;
public void testAll() throws Exception {
File[] files = TEST_BASE.listFiles();
- testAction = new BundlesAction(files);
+ testAction = Mockito.spy(new BundlesAction(files));
setupPublisherResult();
setupPublisherInfo();
artifactRepository.setProperty(AbstractPublisherApplication.PUBLISH_PACK_FILES_AS_SIBLINGS, "true");//$NON-NLS-1$
+ updateDescriptorCapture = ArgumentCaptor.forClass(AdviceFileAdvice.class);
+ IStatus status = testAction.perform(publisherInfo, publisherResult, new NullProgressMonitor());
+ verify(publisherInfo, Mockito.atLeastOnce()).addAdvice(updateDescriptorCapture.capture());
+ assertEquals(Status.OK_STATUS, status);
- assertEquals(Status.OK_STATUS, testAction.perform(publisherInfo, publisherResult, new NullProgressMonitor()));
verifyBundlesAction();
cleanup();
- debug("Completed BundlesActionTest.");//$NON-NLS-1$
}
public void testTranslationFragment() {
File foo_fragment = new File(TestActivator.getTestDataFolder(), "FragmentPublisherTest/foo.fragment");//$NON-NLS-1$
File foo = new File(TestActivator.getTestDataFolder(), "FragmentPublisherTest/foo");//$NON-NLS-1$
- BundlesAction bundlesAction = new BundlesAction(new File[] {foo_fragment});
+ BundlesAction bundlesAction = new BundlesAction(new File[] { foo_fragment });
PublisherInfo info = new PublisherInfo();
PublisherResult results = new PublisherResult();
@@ -183,7 +174,7 @@ public class BundlesActionTest extends ActionTest {
info = new PublisherInfo();
results = new PublisherResult();
- bundlesAction = new BundlesAction(new File[] {foo});
+ bundlesAction = new BundlesAction(new File[] { foo });
bundlesAction.perform(info, results, new NullProgressMonitor());
ius = results.getIUs(null, null);
assertEquals(1, ius.size());
@@ -195,7 +186,7 @@ public class BundlesActionTest extends ActionTest {
utils.setTranslationSource(queryableArray);
assertEquals("English Foo", utils.getIUProperty(iu, IInstallableUnit.PROP_NAME));
- bundlesAction = new BundlesAction(new File[] {foo_fragment});
+ bundlesAction = new BundlesAction(new File[] { foo_fragment });
bundlesAction.perform(info, results, new NullProgressMonitor());
ius = results.getIUs(null, null);
assertEquals(3, ius.size());
@@ -218,6 +209,7 @@ public class BundlesActionTest extends ActionTest {
verifyArtifactRepository();
}
+ @SuppressWarnings("removal")
private void verifyArtifactRepository() throws Exception {
IArtifactKey key2 = ArtifactKey.parse("osgi.bundle,test2,1.0.0.qualifier");//$NON-NLS-1$
IArtifactDescriptor[] descriptors = artifactRepository.getArtifactDescriptors(key2);
@@ -235,7 +227,8 @@ public class BundlesActionTest extends ActionTest {
canonicalIdx = 0;
}
- try (ZipInputStream actual = artifactRepository.getZipInputStream(descriptors[canonicalIdx]); ZipInputStream expected = new ZipInputStream(new FileInputStream(TEST_FILE2))) {
+ try (ZipInputStream actual = artifactRepository.getZipInputStream(descriptors[canonicalIdx]);
+ ZipInputStream expected = new ZipInputStream(new FileInputStream(TEST_FILE2))) {
TestData.assertEquals(expected, actual);
}
@@ -245,12 +238,14 @@ public class BundlesActionTest extends ActionTest {
IArtifactKey key1 = ArtifactKey.parse("osgi.bundle,test1,0.1.0");//$NON-NLS-1$
ZipInputStream zis = artifactRepository.getZipInputStream(key1);
- Map<String, Object[]> fileMap = getFileMap(new HashMap<>(), new File[] {TEST_FILE1}, new Path(TEST_FILE1.getAbsolutePath()));
+ Map<String, Object[]> fileMap = getFileMap(new HashMap<>(), new File[] { TEST_FILE1 },
+ new Path(TEST_FILE1.getAbsolutePath()));
TestData.assertContains(fileMap, zis, true);
}
private void verifyBundle1() {
- List<IInstallableUnit> ius = new ArrayList<>(publisherResult.getIUs(TEST1_PROVBUNDLE_NAME, IPublisherResult.ROOT));
+ List<IInstallableUnit> ius = new ArrayList<>(
+ publisherResult.getIUs(TEST1_PROVBUNDLE_NAME, IPublisherResult.ROOT));
assertEquals(1, ius.size());
IInstallableUnit bundle1IU = ius.get(0);
@@ -269,25 +264,28 @@ public class BundlesActionTest extends ActionTest {
verifyProvidedCapability(providedCapabilities, OSGI_IDENTITY, TEST1_PROVBUNDLE_NAME, BUNDLE1_VERSION);
verifyProvidedCapability(providedCapabilities, OSGI, TEST1_PROVBUNDLE_NAME, BUNDLE1_VERSION);
verifyProvidedCapability(providedCapabilities, TEST1_PROV_Z_NAMESPACE, TEST1_PROVZ_NAME, TEST2_PROVZ_VERSION);
- verifyProvidedCapability(providedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "source", Version.create("1.0.0"));//$NON-NLS-1$//$NON-NLS-2$
+ verifyProvidedCapability(providedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "source", //$NON-NLS-1$
+ Version.create("1.0.0"));//$NON-NLS-1$
assertEquals(5, providedCapabilities.size());
- Collection<ITouchpointData> data = bundle1IU.getTouchpointData();
+ List<AdviceFileAdvice> tData = updateDescriptorCapture.getAllValues();
boolean found = false;
- for (ITouchpointData td : data) {
- ITouchpointInstruction configure = td.getInstruction("configure");
- if (configure == null)
- continue;
- String body = configure.getBody();
- if (body != null && body.indexOf("download.eclipse.org/releases/ganymede") > 0) {
- found = true;
+ for (AdviceFileAdvice iTouchpointAdvice : tData) {
+ ITouchpointInstruction configure = iTouchpointAdvice.getTouchpointData(NO_TP_DATA)
+ .getInstruction("configure");
+ if (configure != null) {
+ String body = configure.getBody();
+ if (body != null && body.indexOf("download.eclipse.org/releases/ganymede") > 0) {
+ found = true;
+ }
}
}
assertTrue(found);
}
private void verifyBundle2() {
- List<IInstallableUnit> ius = new ArrayList<>(publisherResult.getIUs(TEST2_PROV_BUNDLE_NAME, IPublisherResult.ROOT));
+ List<IInstallableUnit> ius = new ArrayList<>(
+ publisherResult.getIUs(TEST2_PROV_BUNDLE_NAME, IPublisherResult.ROOT));
assertEquals(1, ius.size());
IInstallableUnit bundleIu = ius.get(0);
@@ -304,14 +302,16 @@ public class BundlesActionTest extends ActionTest {
// check provided capabilities
Collection<IProvidedCapability> providedCapabilities = bundleIu.getProvidedCapabilities();
- verifyProvidedCapability(providedCapabilities, PROVBUNDLE_NAMESPACE, TEST2_PROV_BUNDLE_NAME, PROVBUNDLE2_VERSION);
+ verifyProvidedCapability(providedCapabilities, PROVBUNDLE_NAMESPACE, TEST2_PROV_BUNDLE_NAME,
+ PROVBUNDLE2_VERSION);
verifyProvidedCapability(providedCapabilities, OSGI, TEST2_PROV_BUNDLE_NAME, BUNDLE2_VERSION);
verifyProvidedCapability(providedCapabilities, OSGI_IDENTITY, TEST2_PROV_BUNDLE_NAME, BUNDLE2_VERSION);
verifyProvidedCapability(providedCapabilities, TEST2_PROV_Z_NAMESPACE, TEST2_PROV_Z_NAME, TEST2_PROVZ_VERSION);
verifyProvidedCapability(providedCapabilities, TEST2_PROV_Y_NAMESPACE, TEST2_PROV_Y_NAME, TEST2_PROVY_VERSION);
verifyProvidedCapability(providedCapabilities, TEST2_PROV_X_NAMESPACE, TEST2_PROV_X_NAME, TEST2_PROVX_VERSION);
- verifyProvidedCapability(providedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "bundle", Version.create("1.0.0"));//$NON-NLS-1$//$NON-NLS-2$
- assertEquals(7, providedCapabilities.size()); /*number of tested elements*/
+ verifyProvidedCapability(providedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "bundle", //$NON-NLS-1$
+ Version.create("1.0.0"));//$NON-NLS-1$
+ assertEquals(7, providedCapabilities.size()); /* number of tested elements */
// check %bundle name is correct
Map<String, String> prop = bundleIu.getProperties();
@@ -333,27 +333,41 @@ public class BundlesActionTest extends ActionTest {
}
private void verifyBundle3() {
- // also a regression test for bug 393051: manifest headers use uncommon (but valid) capitalization
- ArrayList<IInstallableUnit> ius = new ArrayList<>(publisherResult.getIUs(TEST3_PROV_BUNDLE_NAME, IPublisherResult.ROOT));
+ // also a regression test for bug 393051: manifest headers use uncommon (but
+ // valid) capitalization
+ ArrayList<IInstallableUnit> ius = new ArrayList<>(
+ publisherResult.getIUs(TEST3_PROV_BUNDLE_NAME, IPublisherResult.ROOT));
assertEquals(1, ius.size());
-
- IInstallableUnit bundleIu = ius.get(0);
-
- IUpdateDescriptor updateDescriptor = bundleIu.getUpdateDescriptor();
- String name = RequiredCapability.extractName(updateDescriptor.getIUsBeingUpdated().iterator().next());
+ IUpdateDescriptor updateDescriptor = null;
+ boolean found = false;
+ for (AdviceFileAdvice advice : updateDescriptorCapture.getAllValues()) {
+ IUpdateDescriptor descriptor = advice.getUpdateDescriptor(new InstallableUnitDescription());
+ if (descriptor != null) {
+ Collection<IMatchExpression<IInstallableUnit>> iUsBeingUpdated = descriptor.getIUsBeingUpdated();
+ if (iUsBeingUpdated != null) {
+ String name = RequiredCapability.extractName(descriptor.getIUsBeingUpdated().iterator().next());
+ if (TEST3_PROV_BUNDLE_NAME.equals(name)) {
+ updateDescriptor = descriptor;
+ found = true;
+ break;
+ }
+ }
+ }
+ }
+ assertTrue(found);
VersionRange range = RequiredCapability.extractRange(updateDescriptor.getIUsBeingUpdated().iterator().next());
String description = updateDescriptor.getDescription();
int severity = updateDescriptor.getSeverity();
VersionRange expectedRange = new VersionRange("(0.0.1," + BUNDLE3_VERSION + "]");
- assertEquals(TEST3_PROV_BUNDLE_NAME, name);
assertEquals(expectedRange, range);
assertEquals("Some description about this update", description.trim());
assertEquals(8, severity);
}
private void verifyBundle4() {
- ArrayList<IInstallableUnit> ius = new ArrayList<>(publisherResult.getIUs(TEST4_PROV_BUNDLE_NAME, IPublisherResult.ROOT));
+ ArrayList<IInstallableUnit> ius = new ArrayList<>(
+ publisherResult.getIUs(TEST4_PROV_BUNDLE_NAME, IPublisherResult.ROOT));
assertEquals(1, ius.size());
IInstallableUnit bundleIu = ius.get(0);
@@ -362,23 +376,29 @@ public class BundlesActionTest extends ActionTest {
// check required capabilities
Collection<IRequirement> requirements = bundleIu.getRequirements();
- verifyRequirement(requirements, JAVA_PACKAGE, TEST4_REQ_PACKAGE_OPTIONAL_NAME, DEFAULT_VERSION_RANGE, null, 0, 1, false);
- verifyRequirement(requirements, JAVA_PACKAGE, TEST4_REQ_PACKAGE_OPTGREEDY_NAME, DEFAULT_VERSION_RANGE, null, 0, 1, true);
+ verifyRequirement(requirements, JAVA_PACKAGE, TEST4_REQ_PACKAGE_OPTIONAL_NAME, DEFAULT_VERSION_RANGE, null, 0,
+ 1, false);
+ verifyRequirement(requirements, JAVA_PACKAGE, TEST4_REQ_PACKAGE_OPTGREEDY_NAME, DEFAULT_VERSION_RANGE, null, 0,
+ 1, true);
verifyRequirement(requirements, OSGI, TEST4_REQ_BUNDLE_OPTIONAL_NAME, DEFAULT_VERSION_RANGE, null, 0, 1, false);
verifyRequirement(requirements, OSGI, TEST4_REQ_BUNDLE_OPTGREEDY_NAME, DEFAULT_VERSION_RANGE, null, 0, 1, true);
assertEquals(4, requirements.size());
}
private void verifyBundle5() {
- ArrayList<IInstallableUnit> ius = new ArrayList<>(publisherResult.getIUs(TEST5_PROV_BUNDLE_NAME, IPublisherResult.ROOT));
+ ArrayList<IInstallableUnit> ius = new ArrayList<>(
+ publisherResult.getIUs(TEST5_PROV_BUNDLE_NAME, IPublisherResult.ROOT));
assertEquals(1, ius.size());
IInstallableUnit bundle5IU = ius.get(0);
-
+ for (AdviceFileAdvice adv : updateDescriptorCapture.getAllValues()) {
+ IRequirement[] reqs = adv.getRequiredCapabilities(new InstallableUnitDescription());
+ if (reqs != null) {
+ verifyRequirement(List.of(reqs), "bar", "foo", VersionRange.emptyRange, null, 6, 7, true);
+ }
+ }
Collection<IRequirement> requirements = bundle5IU.getRequirements();
verifyRequirement(requirements, OSGI_EE, TEST5_REQ_EE, null, 1, 1, true);
- verifyRequirement(requirements, "bar", "foo", VersionRange.emptyRange, null, 6, 7, true);
- assertEquals(2, requirements.size());
}
@Override
@@ -392,7 +412,8 @@ public class BundlesActionTest extends ActionTest {
@Override
protected void insertPublisherInfoBehavior() {
- //super sets publisherInfo.getMetadataRepository and publisherInfo.getContextMetadataRepository
+ // super sets publisherInfo.getMetadataRepository and
+ // publisherInfo.getContextMetadataRepository
super.insertPublisherInfoBehavior();
Map<String, String> sarProperties = new HashMap<>();
sarProperties.put("key1", "value1");//$NON-NLS-1$//$NON-NLS-2$
@@ -402,23 +423,21 @@ public class BundlesActionTest extends ActionTest {
sdkProperties.put("key1", "value1");//$NON-NLS-1$//$NON-NLS-2$
sdkProperties.put("key2", "value2");//$NON-NLS-1$//$NON-NLS-2$
- expect(publisherInfo.getArtifactRepository()).andReturn(artifactRepository).anyTimes();
- expect(publisherInfo.getArtifactOptions()).andReturn(IPublisherInfo.A_INDEX | IPublisherInfo.A_OVERWRITE | IPublisherInfo.A_PUBLISH).anyTimes();
- expect(publisherInfo.getAdvice(null, false, null, null, ICapabilityAdvice.class)).andReturn(new ArrayList<>()).anyTimes();
+ when(publisherInfo.getArtifactRepository()).thenReturn(artifactRepository);
+ when(publisherInfo.getArtifactOptions())
+ .thenReturn(IPublisherInfo.A_INDEX | IPublisherInfo.A_OVERWRITE | IPublisherInfo.A_PUBLISH);
+ when(publisherInfo.getAdvice(null, false, null, null, ICapabilityAdvice.class)).thenReturn(new ArrayList<>());
expectOtherAdviceQueries(TEST1_PROVBUNDLE_NAME, BUNDLE1_VERSION);
expectPropertyAdviceQuery(TEST1_PROVBUNDLE_NAME, BUNDLE1_VERSION, sarProperties);
expectUpdateDescriptorAdviceQuery(TEST1_PROVBUNDLE_NAME, BUNDLE1_VERSION, null);
- expectTouchpointAdviceQuery(TEST1_PROVBUNDLE_NAME, BUNDLE1_VERSION, tpAdvice1);
expectOtherAdviceQueries(TEST2_PROV_BUNDLE_NAME, BUNDLE2_VERSION);
expectPropertyAdviceQuery(TEST2_PROV_BUNDLE_NAME, BUNDLE2_VERSION, sdkProperties);
expectUpdateDescriptorAdviceQuery(TEST2_PROV_BUNDLE_NAME, BUNDLE2_VERSION, null);
- expectTouchpointAdviceQuery(TEST2_PROV_BUNDLE_NAME, BUNDLE2_VERSION, tpAdvice2);
expectOtherAdviceQueries(TEST3_PROV_BUNDLE_NAME, BUNDLE3_VERSION);
expectPropertyAdviceQuery(TEST3_PROV_BUNDLE_NAME, BUNDLE3_VERSION, sarProperties);
- expectUpdateDescriptorAdviceQuery(TEST3_PROV_BUNDLE_NAME, BUNDLE3_VERSION, udAdvice3);
expectTouchpointAdviceQuery(TEST3_PROV_BUNDLE_NAME, BUNDLE3_VERSION, null);
expectOtherAdviceQueries(TEST4_PROV_BUNDLE_NAME, BUNDLE4_VERSION);
@@ -426,47 +445,43 @@ public class BundlesActionTest extends ActionTest {
expectUpdateDescriptorAdviceQuery(TEST4_PROV_BUNDLE_NAME, BUNDLE4_VERSION, null);
expectTouchpointAdviceQuery(TEST4_PROV_BUNDLE_NAME, BUNDLE4_VERSION, null);
- expectCapabilityAdviceQuery(TEST5_PROV_BUNDLE_NAME, BUNDLE5_VERSION, capAdvice5);
+// expectCapabilityAdviceQuery(TEST5_PROV_BUNDLE_NAME, BUNDLE5_VERSION, capAdvice5.getValues());
expectOtherAdviceQueries(TEST5_PROV_BUNDLE_NAME, BUNDLE5_VERSION);
expectPropertyAdviceQuery(TEST5_PROV_BUNDLE_NAME, BUNDLE5_VERSION, sarProperties);
expectUpdateDescriptorAdviceQuery(TEST5_PROV_BUNDLE_NAME, BUNDLE5_VERSION, null);
expectTouchpointAdviceQuery(TEST5_PROV_BUNDLE_NAME, BUNDLE5_VERSION, null);
- //capture any touchpoint advice, and return the captured advice when the action asks for it
- publisherInfo.addAdvice(and(AdviceMatcher.adviceMatches(TEST1_PROVBUNDLE_NAME, BUNDLE1_VERSION, ITouchpointAdvice.class), capture(tpAdvice1)));
- EasyMock.expectLastCall().anyTimes();
-
- publisherInfo.addAdvice(and(AdviceMatcher.adviceMatches(TEST2_PROV_BUNDLE_NAME, BUNDLE2_VERSION, ITouchpointAdvice.class), capture(tpAdvice2)));
- EasyMock.expectLastCall().anyTimes();
-
- publisherInfo.addAdvice(and(AdviceMatcher.adviceMatches(TEST3_PROV_BUNDLE_NAME, BUNDLE3_VERSION, AdviceFileAdvice.class), capture(udAdvice3)));
-
- publisherInfo.addAdvice(and(AdviceMatcher.adviceMatches(TEST5_PROV_BUNDLE_NAME, BUNDLE5_VERSION, AdviceFileAdvice.class), capture(capAdvice5)));
- EasyMock.expectLastCall().anyTimes();
}
private void expectOtherAdviceQueries(String bundleName, Version bundleVersion) {
- expect(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, ICapabilityAdvice.class)).andReturn(Collections.EMPTY_LIST);
- expect(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, IAdditionalInstallableUnitAdvice.class)).andReturn(Collections.EMPTY_LIST);
- expect(publisherInfo.getAdvice(null, true, bundleName, bundleVersion, IBundleShapeAdvice.class)).andReturn(null);
+ when(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, ICapabilityAdvice.class))
+ .thenReturn(Collections.emptyList());
+ when(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, IAdditionalInstallableUnitAdvice.class))
+ .thenReturn(Collections.emptyList());
+ when(publisherInfo.getAdvice(null, true, bundleName, bundleVersion, IBundleShapeAdvice.class)).thenReturn(null);
}
- private void expectCapabilityAdviceQuery(String bundleName, Version bundleVersion, Collection<ICapabilityAdvice> answer) {
- if (answer == null)
- answer = Collections.emptyList();
- expect(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, ICapabilityAdvice.class)).andReturn(answer);
- }
+// private void expectCapabilityAdviceQuery(String bundleName, Version bundleVersion,
+// Collection<ICapabilityAdvice> answer) {
+// if (answer == null)
+// answer = Collections.emptyList();
+// when(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, ICapabilityAdvice.class))
+// .thenReturn(answer);
+// }
- private void expectUpdateDescriptorAdviceQuery(String bundleName, Version bundleVersion, Collection<IUpdateDescriptorAdvice> answer) {
+ private void expectUpdateDescriptorAdviceQuery(String bundleName, Version bundleVersion,
+ Collection<IUpdateDescriptorAdvice> answer) {
if (answer == null)
answer = Collections.emptyList();
- expect(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, IUpdateDescriptorAdvice.class)).andReturn(answer);
+ when(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, IUpdateDescriptorAdvice.class))
+ .thenReturn(answer);
}
- private void expectTouchpointAdviceQuery(String bundleName, Version bundleVersion, Collection<ITouchpointAdvice> answer) {
+ private void expectTouchpointAdviceQuery(String bundleName, Version bundleVersion, List<ITouchpointAdvice> answer) {
if (answer == null)
answer = Collections.emptyList();
- expect(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, ITouchpointAdvice.class)).andReturn(answer).anyTimes();
+ when(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, ITouchpointAdvice.class))
+ .thenReturn(answer);
}
private void expectPropertyAdviceQuery(String bundleName, Version bundleVersion, Map<String, String> answer) {
@@ -475,20 +490,22 @@ public class BundlesActionTest extends ActionTest {
propertyAdvices = Collections.singletonList(createPropertyAdvice(answer));
else
propertyAdvices = Collections.emptyList();
- expect(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, IPropertyAdvice.class)).andReturn(propertyAdvices).times(2);
+ when(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, IPropertyAdvice.class))
+ .thenReturn(propertyAdvices);
}
private IPropertyAdvice createPropertyAdvice(Map<String, String> properties) {
- IPropertyAdvice mockAdvice = EasyMock.createMock(IPropertyAdvice.class);
- expect(mockAdvice.getInstallableUnitProperties((InstallableUnitDescription) EasyMock.anyObject())).andReturn(null).anyTimes();
- expect(mockAdvice.getArtifactProperties((IInstallableUnit) EasyMock.anyObject(), (IArtifactDescriptor) EasyMock.anyObject())).andReturn(properties).anyTimes();
- EasyMock.replay(mockAdvice);
+ IPropertyAdvice mockAdvice = mock(IPropertyAdvice.class);
+ when(mockAdvice.getInstallableUnitProperties(any(InstallableUnitDescription.class))).thenReturn(null);
+ when(mockAdvice.getArtifactProperties(any(IInstallableUnit.class), any(IArtifactDescriptor.class)))
+ .thenReturn(properties);
return mockAdvice;
}
public void testDynamicImport() throws Exception {
File testData = getTestData("dymamicImport", "testData/dynamicImport");
- IInstallableUnit iu = BundlesAction.createBundleIU(BundlesAction.createBundleDescription(testData), null, new PublisherInfo());
+ IInstallableUnit iu = BundlesAction.createBundleIU(BundlesAction.createBundleDescription(testData), null,
+ new PublisherInfo());
Collection<IRequirement> requirements = iu.getRequirements();
verifyRequirement(requirements, OSGI_EE, TESTDYN_REQ_EE, null, 1, 1, true);
@@ -505,11 +522,13 @@ public class BundlesActionTest extends ActionTest {
// overall status shall be error...
assertThat(status, errorStatus());
List<IStatus> childStatuses = Arrays.asList(status.getChildren());
- assertThat(childStatuses, hasItem(statusWithMessageWhich(containsString("The manifest line \"foo\" is invalid; it has no colon ':' character after the header key."))));
+ assertThat(childStatuses, hasItem(statusWithMessageWhich(containsString(
+ "The manifest line \"foo\" is invalid; it has no colon ':' character after the header key."))));
assertThat(childStatuses.size(), is(1));
// ... but the valid bundle must still be published
- Collection<IInstallableUnit> ius = publisherResult.getIUs("org.eclipse.p2.test.validManifest", IPublisherResult.ROOT);
+ Collection<IInstallableUnit> ius = publisherResult.getIUs("org.eclipse.p2.test.validManifest",
+ IPublisherResult.ROOT);
assertThat(ius.size(), is(1));
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/CaptureList.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/CaptureList.java
deleted file mode 100644
index e317d621c..000000000
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/CaptureList.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2017 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.equinox.p2.tests.publisher.actions;
-
-import java.util.AbstractList;
-import org.easymock.Capture;
-
-/**
- * An object that adapts an EasyMock Capture to a List.
- */
-public class CaptureList<E> extends AbstractList<E> {
- private Capture<E> capture;
-
- public CaptureList(Capture<E> capture) {
- this.capture = capture;
- }
-
- @Override
- public E get(int arg0) {
- return capture.getValue();
- }
-
- @Override
- public int size() {
- return capture.hasCaptured() ? 1 : 0;
- }
-
-}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ConfigCUsActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ConfigCUsActionTest.java
index db4e09866..99afa871c 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ConfigCUsActionTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ConfigCUsActionTest.java
@@ -15,13 +15,17 @@
******************************************************************************/
package org.eclipse.equinox.p2.tests.publisher.actions;
-import static org.easymock.EasyMock.expect;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.matches;
+import static org.mockito.Mockito.when;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import org.easymock.EasyMock;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.equinox.internal.p2.metadata.InstallableUnit;
import org.eclipse.equinox.internal.p2.publisher.eclipse.DataLoader;
@@ -95,8 +99,7 @@ public class ConfigCUsActionTest extends ActionTest {
private void verifyFragment(String cuType) {
ArrayList<IInstallableUnit> IUs = new ArrayList<>(publisherResult.getIUs(null, IPublisherResult.NON_ROOT));
assertTrue(IUs.size() == 2);
- for (int i = 0; i < IUs.size(); i++) {
- InstallableUnit iu = (InstallableUnit) IUs.get(i);
+ for (IInstallableUnit iu : IUs) {
if (iu.getId().equals(flavor + id + "." + cuType + "." + configSpec)) { //$NON-NLS-1$ //$NON-NLS-2$
assertTrue(iu.getFilter().equals(InstallableUnit.parseFilter("(& (osgi.ws=win32)(osgi.os=win32)(osgi.arch=x86))"))); //$NON-NLS-1$
assertTrue(iu.getVersion().equals(version));
@@ -148,7 +151,8 @@ public class ConfigCUsActionTest extends ActionTest {
ConfigAdvice configAdvice = new ConfigAdvice(configData, configSpec);
ArrayList<IConfigAdvice> configList = new ArrayList<>();
configList.add(configAdvice);
- expect(publisherInfo.getAdvice(EasyMock.matches(configSpec), EasyMock.eq(false), (String) EasyMock.anyObject(), (Version) EasyMock.anyObject(), EasyMock.eq(IConfigAdvice.class))).andReturn(configList).anyTimes();
+ when(publisherInfo.getAdvice(matches(configSpec), eq(false), anyString(), any(Version.class),
+ eq(IConfigAdvice.class))).thenReturn(configList);
//configure IExecutableAdvice
LauncherData launcherData = loader.getLauncherData();
@@ -165,14 +169,15 @@ public class ConfigCUsActionTest extends ActionTest {
// TODO Auto-generated catch block
}
- expect(publisherInfo.getAdvice(EasyMock.matches(configSpec), EasyMock.eq(false), (String) EasyMock.anyObject(), (Version) EasyMock.anyObject(), EasyMock.eq(IExecutableAdvice.class))).andReturn(launchingList).anyTimes();
+ when(publisherInfo.getAdvice(matches(configSpec), eq(false), anyString(), any(Version.class),
+ eq(IExecutableAdvice.class))).thenReturn(launchingList);
//setup metadata repository
IInstallableUnit[] ius = {mockIU("foo", null), mockIU("bar", null)}; //$NON-NLS-1$ //$NON-NLS-2$
metadataRepo = new TestMetadataRepository(getAgent(), ius);
- expect(publisherInfo.getMetadataRepository()).andReturn(metadataRepo).anyTimes();
- expect(publisherInfo.getContextMetadataRepository()).andReturn(null).anyTimes();
+ when(publisherInfo.getMetadataRepository()).thenReturn(metadataRepo);
+ when(publisherInfo.getContextMetadataRepository()).thenReturn(null);
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/EquinoxExecutableActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/EquinoxExecutableActionTest.java
index 4e502a7e3..532bab05e 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/EquinoxExecutableActionTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/EquinoxExecutableActionTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2017 Code 9 and others.
+ * Copyright (c) 2008, 2021 Code 9 and others.
*
* This
* program and the accompanying materials are made available under the terms of
@@ -15,9 +15,11 @@
******************************************************************************/
package org.eclipse.equinox.p2.tests.publisher.actions;
-import static org.easymock.EasyMock.anyBoolean;
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.expect;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Mockito.when;
import java.io.File;
import java.io.FileInputStream;
@@ -30,6 +32,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.LinkedList;
+import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.zip.ZipEntry;
@@ -62,10 +65,9 @@ public class EquinoxExecutableActionTest extends ActionTest {
private static final File LINUX_EXEC = new File(TestActivator.getTestDataFolder(), "EquinoxExecutableActionTest/linux/"); //$NON-NLS-1$
private static final File WIN_EXEC = new File(TestActivator.getTestDataFolder(), "EquinoxExecutableActionTest/win/"); //$NON-NLS-1$
private final String EXECUTABLE_NAME = "LauncherName"; //$NON-NLS-1$
- private Collection<IBrandingAdvice> brandingAdvice = new LinkedList<>();
private String macConfigCocoa = "cocoa.macosx.x86"; //$NON-NLS-1$
- private String winConfig = "win32.win32.x86"; //$NON-NLS-1$
- private String linuxConfig = "linux.gtk.x86"; //$NON-NLS-1$
+ private String winConfig = "win32.win32.x86_64"; //$NON-NLS-1$
+ private String linuxConfig = "linux.gtk.x86_64"; //$NON-NLS-1$
private ExecutablesDescriptor executablesDescriptor;
private IArtifactRepository artifactRepository;
private Version version = Version.create("1.2.3"); //$NON-NLS-1$
@@ -76,9 +78,6 @@ public class EquinoxExecutableActionTest extends ActionTest {
public void setUp() throws Exception {
setupPublisherInfo();
setupPublisherResult();
- }
-
- private void setupArtifactRepository() {
artifactRepository = new TestArtifactRepository(getAgent());
}
@@ -118,7 +117,10 @@ public class EquinoxExecutableActionTest extends ActionTest {
private void testExecutableAction(String idBase, final String osArg, String config, File exec, File icon) {
id = idBase;
- setupBrandingAdvice(osArg, configSpec, exec, icon);
+ when(publisherInfo.getArtifactRepository()).thenReturn(artifactRepository);
+ when(publisherInfo.getArtifactOptions()).thenReturn(IPublisherInfo.A_PUBLISH);
+ when(publisherInfo.getAdvice(anyString(), anyBoolean(), nullable(String.class), nullable(Version.class),
+ eq(IBrandingAdvice.class))).then(invocation -> setupBrandingAdvice(osArg, icon));
executablesDescriptor = ExecutablesDescriptor.createDescriptor(osArg, "eclipse", exec);
testAction = new EquinoxExecutableAction(executablesDescriptor, config, idBase, version, flavorArg);
testAction.perform(publisherInfo, publisherResult, new NullProgressMonitor());
@@ -128,10 +130,10 @@ public class EquinoxExecutableActionTest extends ActionTest {
private void verifyResults(String idBase, String confSpec) {
ArrayList<IInstallableUnit> iuList = new ArrayList<>(publisherResult.getIUs(null, IPublisherResult.ROOT));
+ assertEquals(3, iuList.size());
verifyEclipseIU(iuList, idBase, confSpec);
verifyCU(iuList, idBase, confSpec);
verifyExecIU(iuList, idBase, confSpec);
- assertTrue(iuList.size() == 3);
}
private void verifyCU(ArrayList<IInstallableUnit> iuList, String idBase, String confSpec) {
@@ -139,10 +141,9 @@ public class EquinoxExecutableActionTest extends ActionTest {
String _ws = config[0];
String _os = config[1];
String _arch = config[2];
- for (int i = 0; i < iuList.size(); i++) {
- IInstallableUnit possibleEclipse = iuList.get(i);
+ for (IInstallableUnit possibleEclipse : iuList) {
if (possibleEclipse.getId().equals(flavorArg + idBase + ".executable." + confSpec)) {//$NON-NLS-1$
- IInstallableUnitFragment fragment = (IInstallableUnitFragment) iuList.get(i);
+ IInstallableUnitFragment fragment = (IInstallableUnitFragment) possibleEclipse;
Collection<IProvidedCapability> providedCapability = fragment.getProvidedCapabilities();
verifyProvidedCapability(providedCapability, IInstallableUnit.NAMESPACE_IU_ID, flavorArg + idBase + ".executable." + confSpec, version); //$NON-NLS-1$
assertTrue(providedCapability.size() == 1);
@@ -161,19 +162,18 @@ public class EquinoxExecutableActionTest extends ActionTest {
}
private void verifyEclipseIU(ArrayList<IInstallableUnit> iuList, String idBase, String confSpec) {
- for (int i = 0; i < iuList.size(); i++) {
- IInstallableUnit possibleEclipse = iuList.get(i);
+ for (IInstallableUnit possibleEclipse : iuList) {
if (possibleEclipse.getId().equals((idBase + ".executable." + confSpec + "." + EXECUTABLE_NAME))) { //$NON-NLS-1$//$NON-NLS-2$
- assertTrue(possibleEclipse.getVersion().equals(version));
+ assertEquals(version, possibleEclipse.getVersion());
Collection<IProvidedCapability> providedCapability = possibleEclipse.getProvidedCapabilities();
verifyProvidedCapability(providedCapability, IInstallableUnit.NAMESPACE_IU_ID, idBase + ".executable." + confSpec + "." + EXECUTABLE_NAME, version); //$NON-NLS-1$ //$NON-NLS-2$
- assertTrue(providedCapability.size() == 1);
+ assertEquals(1, providedCapability.size());
Collection<IRequirement> req = possibleEclipse.getRequirements();
- assertTrue(req.size() == 0);
+ assertEquals(0, req.size());
return;//pass
}
}
- fail();
+ fail("No executable installable unit.");
}
private void verifyExecIU(ArrayList<IInstallableUnit> iuList, String idBase, String confSpec) {
@@ -181,8 +181,7 @@ public class EquinoxExecutableActionTest extends ActionTest {
String _ws = config[0];
String _os = config[1];
String _arch = config[2];
- for (int i = 0; i < iuList.size(); i++) {
- IInstallableUnit possibleExec = iuList.get(i);
+ for (IInstallableUnit possibleExec : iuList) {
if (possibleExec.getId().equals(idBase + ".executable." + confSpec)) { //$NON-NLS-1$
//keep checking
assertTrue(possibleExec.getFilter().equals(InstallableUnit.parseFilter("(& (osgi.ws=" + _ws + ")(osgi.os=" + _os + ")(osgi.arch=" + _arch + "))"))); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$//$NON-NLS-4$
@@ -277,15 +276,8 @@ public class EquinoxExecutableActionTest extends ActionTest {
}
}
- @Override
- protected void insertPublisherInfoBehavior() {
- setupArtifactRepository();
- expect(publisherInfo.getArtifactRepository()).andReturn(artifactRepository).anyTimes();
- expect(publisherInfo.getArtifactOptions()).andReturn(IPublisherInfo.A_PUBLISH).anyTimes();
- expect(publisherInfo.getAdvice((String) anyObject(), anyBoolean(), (String) anyObject(), (Version) anyObject(), (Class<IBrandingAdvice>) anyObject())).andReturn(brandingAdvice);
- }
-
- private void setupBrandingAdvice(final String osArg, final String config, final File exec, final File icon) {
+ private List<IBrandingAdvice> setupBrandingAdvice(final String osArg, final File icon) {
+ List<IBrandingAdvice> brandingAdvice = new LinkedList<>();
brandingAdvice.add(new IBrandingAdvice() {
@Override
public boolean isApplicable(String configSpec, boolean includeDefault, String id, Version version) {
@@ -307,5 +299,6 @@ public class EquinoxExecutableActionTest extends ActionTest {
return EXECUTABLE_NAME;
}
});
+ return brandingAdvice;
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/EquinoxLauncherCUActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/EquinoxLauncherCUActionTest.java
index 558bf7a76..ff0b846fb 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/EquinoxLauncherCUActionTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/EquinoxLauncherCUActionTest.java
@@ -15,9 +15,8 @@
******************************************************************************/
package org.eclipse.equinox.p2.tests.publisher.actions;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.Collection;
@@ -56,21 +55,17 @@ public class EquinoxLauncherCUActionTest extends ActionTest {
}
protected IInstallableUnit mockIU(String id, Version version, boolean fragment) {
- IInstallableUnit result = createMock(IInstallableUnit.class);
- expect(result.getId()).andReturn(id).anyTimes();
+ IInstallableUnit result = mock(IInstallableUnit.class);
+ when(result.getId()).thenReturn(id);
if (version == null)
version = Version.emptyVersion;
- expect(result.getVersion()).andReturn(version).anyTimes();
- expect(result.getFilter()).andReturn(null).anyTimes();
- replay(result);
+ when(result.getVersion()).thenReturn(version);
+ when(result.getFilter()).thenReturn(null);
return result;
}
private void verifyResults() {
- ArrayList<IInstallableUnit> ius = new ArrayList<>(publisherResult.getIUs(null, null));
- IInstallableUnit iu;
- for (int i = 0; i < ius.size(); i++) {
- iu = ius.get(i);
+ for (IInstallableUnit iu : new ArrayList<>(publisherResult.getIUs(null, null))) {
if (iu.getId().equals(flavorArg + EquinoxLauncherCUAction.ORG_ECLIPSE_EQUINOX_LAUNCHER)) {
assertTrue(iu instanceof InstallableUnitFragment);
//verify required capability
@@ -111,7 +106,10 @@ public class EquinoxLauncherCUActionTest extends ActionTest {
ArrayList<IVersionAdvice> versionList = new ArrayList<>();
versionList.add(versionAdvice);
- expect(publisherInfo.getAdvice(null, true, EquinoxLauncherCUAction.ORG_ECLIPSE_EQUINOX_LAUNCHER, null, IVersionAdvice.class)).andReturn(versionList);
- expect(publisherInfo.getAdvice(configSpec, true, EquinoxLauncherCUAction.ORG_ECLIPSE_EQUINOX_LAUNCHER + "." + configSpec, null, IVersionAdvice.class)).andReturn(versionList); //$NON-NLS-1$
+ when(publisherInfo.getAdvice(null, true, EquinoxLauncherCUAction.ORG_ECLIPSE_EQUINOX_LAUNCHER, null,
+ IVersionAdvice.class)).thenReturn(versionList);
+ when(publisherInfo.getAdvice(configSpec, true,
+ EquinoxLauncherCUAction.ORG_ECLIPSE_EQUINOX_LAUNCHER + "." + configSpec, null, IVersionAdvice.class)) //$NON-NLS-1$
+ .thenReturn(versionList);
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/FeaturesActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/FeaturesActionTest.java
index 154da7b42..279660892 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/FeaturesActionTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/FeaturesActionTest.java
@@ -15,10 +15,10 @@
******************************************************************************/
package org.eclipse.equinox.p2.tests.publisher.actions;
-import static org.easymock.EasyMock.and;
-import static org.easymock.EasyMock.capture;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.isA;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import java.io.File;
import java.io.IOException;
@@ -26,10 +26,9 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.zip.ZipInputStream;
-import org.easymock.Capture;
-import org.easymock.EasyMock;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.equinox.internal.p2.metadata.ArtifactKey;
@@ -62,6 +61,8 @@ import org.eclipse.equinox.p2.tests.TestData;
import org.eclipse.equinox.p2.tests.TestMetadataRepository;
import org.eclipse.equinox.p2.tests.publisher.TestArtifactRepository;
import org.eclipse.equinox.spi.p2.publisher.PublisherHelper;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mockito;
public class FeaturesActionTest extends ActionTest {
@@ -75,12 +76,12 @@ public class FeaturesActionTest extends ActionTest {
private Version barVersion = Version.create("1.1.1"); //$NON-NLS-1$
private String BAR = "bar"; //$NON-NLS-1$
private String FOO = "foo"; //$NON-NLS-1$
- private Capture<ITouchpointAdvice> tpAdvice;
+ private ArgumentCaptor<ITouchpointAdvice> capture = ArgumentCaptor.forClass(ITouchpointAdvice.class);
@Override
public void setUp() throws Exception {
- testAction = new FeaturesAction(new File[] {root});
- tpAdvice = new Capture<>();
+ super.setUp();
+ testAction = Mockito.spy(new FeaturesAction(new File[] { root }));
setupPublisherInfo();
setupPublisherResult();
}
@@ -90,37 +91,41 @@ public class FeaturesActionTest extends ActionTest {
*/
public void testSimple() throws Exception {
testAction.perform(publisherInfo, publisherResult, new NullProgressMonitor());
+ verify(publisherInfo, Mockito.atLeastOnce()).addAdvice(capture.capture());
verifyRepositoryContents();
debug("Completed FeaturesAction."); //$NON-NLS-1$
}
public void testFeaturePatch() throws Exception {
File testFolder = getTestFolder("FeaturesAction.testFilters");
- StringBuffer buffer = new StringBuffer();
+ StringBuilder buffer = new StringBuilder();
buffer.append("<feature id=\"test.feature\" version=\"1.0.0\" > \n");
buffer.append(" <requires> \n");
- buffer.append(" <import feature=\"org.foo\" version=\"[1.0.0,2.0.0)\" match=\"versionRange\" patch=\"true\"/> \n");
+ buffer.append(
+ " <import feature=\"org.foo\" version=\"[1.0.0,2.0.0)\" match=\"versionRange\" patch=\"true\"/> \n");
buffer.append(" </requires> \n");
buffer.append("</feature> \n");
File featureXML = new File(testFolder, "feature.xml");
writeBuffer(featureXML, buffer);
publisherInfo = new PublisherInfo();
- FeaturesAction action = new FeaturesAction(new File[] {testFolder});
+ FeaturesAction action = new FeaturesAction(new File[] { testFolder });
action.perform(publisherInfo, publisherResult, new NullProgressMonitor());
- IInstallableUnitPatch iu = (IInstallableUnitPatch) publisherResult.getIU("test.feature.feature.group", Version.parseVersion("1.0.0"), null);
+ IInstallableUnitPatch iu = (IInstallableUnitPatch) publisherResult.getIU("test.feature.feature.group",
+ Version.parseVersion("1.0.0"), null);
IRequirement[][] applicabilityScope = iu.getApplicabilityScope();
assertEquals(1, applicabilityScope.length);
IRequiredCapability require = (IRequiredCapability) applicabilityScope[0][0];
- IRequirement expected = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "org.foo.feature.group", VersionRange.create("[1.0.0, 2.0.0)"), null, false, false, true);
+ IRequirement expected = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID,
+ "org.foo.feature.group", VersionRange.create("[1.0.0, 2.0.0)"), null, false, false, true);
verifyRequirement(Collections.singleton(expected), require);
}
public void testMatchRange() throws Exception {
File testFolder = getTestFolder("FeaturesAction.testFilters");
- StringBuffer buffer = new StringBuffer();
+ StringBuilder buffer = new StringBuilder();
buffer.append("<feature id=\"test.feature\" version=\"1.0.0\" > \n");
buffer.append(" <requires> \n");
buffer.append(" <import plugin=\"org.plug\" version=\"[1.0.0,2.0.0)\" match=\"versionRange\" /> \n");
@@ -131,7 +136,7 @@ public class FeaturesActionTest extends ActionTest {
writeBuffer(featureXML, buffer);
publisherInfo = new PublisherInfo();
- FeaturesAction action = new FeaturesAction(new File[] {testFolder});
+ FeaturesAction action = new FeaturesAction(new File[] { testFolder });
action.perform(publisherInfo, publisherResult, new NullProgressMonitor());
IInstallableUnit iu = publisherResult.getIU("test.feature.feature.group", Version.parseVersion("1.0.0"), null);
@@ -141,10 +146,12 @@ public class FeaturesActionTest extends ActionTest {
String requireName = ((IRequiredCapability) require).getName();
if (requireName.equals("org.foo.feature.group")) {
- IRequirement expected = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "org.foo.feature.group", VersionRange.create("[1.0.0, 2.0.0)"), null, false, false, true);
+ IRequirement expected = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID,
+ "org.foo.feature.group", VersionRange.create("[1.0.0, 2.0.0)"), null, false, false, true);
verifyRequirement(Collections.singleton(expected), require);
} else if (requireName.equals("org.plug")) {
- IRequirement expected = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "org.plug", VersionRange.create("[1.0.0, 2.0.0)"), null, false, false, true);
+ IRequirement expected = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "org.plug",
+ VersionRange.create("[1.0.0, 2.0.0)"), null, false, false, true);
verifyRequirement(Collections.singleton(expected), require);
}
}
@@ -152,7 +159,7 @@ public class FeaturesActionTest extends ActionTest {
public void testMatchGreaterOrEqual() throws Exception {
File testFolder = getTestFolder("FeaturesAction.testFilters");
- StringBuffer buffer = new StringBuffer();
+ StringBuilder buffer = new StringBuilder();
buffer.append("<feature id=\"test.feature\" version=\"1.0.0\" > \n");
buffer.append(" <requires> \n");
buffer.append(" <import plugin=\"org.plug\" version=\"1.0.0\" match=\"greaterOrEqual\" /> \n");
@@ -163,7 +170,7 @@ public class FeaturesActionTest extends ActionTest {
writeBuffer(featureXML, buffer);
publisherInfo = new PublisherInfo();
- FeaturesAction action = new FeaturesAction(new File[] {testFolder});
+ FeaturesAction action = new FeaturesAction(new File[] { testFolder });
action.perform(publisherInfo, publisherResult, new NullProgressMonitor());
IInstallableUnit iu = publisherResult.getIU("test.feature.feature.group", Version.parseVersion("1.0.0"), null);
@@ -173,10 +180,12 @@ public class FeaturesActionTest extends ActionTest {
String requireName = ((IRequiredCapability) require).getName();
if (requireName.equals("org.foo.feature.group")) {
- IRequirement expected = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "org.foo.feature.group", VersionRange.create("1.0.0"), null, false, false, true);
+ IRequirement expected = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID,
+ "org.foo.feature.group", VersionRange.create("1.0.0"), null, false, false, true);
verifyRequirement(Collections.singleton(expected), require);
} else if (requireName.equals("org.plug")) {
- IRequirement expected = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "org.plug", VersionRange.create("1.0.0"), null, false, false, true);
+ IRequirement expected = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "org.plug",
+ VersionRange.create("1.0.0"), null, false, false, true);
verifyRequirement(Collections.singleton(expected), require);
}
}
@@ -184,7 +193,7 @@ public class FeaturesActionTest extends ActionTest {
public void testFilters() throws Exception {
File testFolder = getTestFolder("FeaturesAction.testFilters");
- StringBuffer buffer = new StringBuffer();
+ StringBuilder buffer = new StringBuilder();
buffer.append("<feature id=\"test.feature\" version=\"1.0.0\" > \n");
buffer.append(" <includes id=\"org.foo\" version=\"1.0.0\" filter=\"(osgi.os=win32)\"/> \n");
buffer.append(" <plugin id=\"org.plug\" version=\"1.0.0\" filter=\"(my.prop=foo)\" os=\"win32\" /> \n");
@@ -197,7 +206,7 @@ public class FeaturesActionTest extends ActionTest {
writeBuffer(featureXML, buffer);
publisherInfo = new PublisherInfo();
- FeaturesAction action = new FeaturesAction(new File[] {testFolder});
+ FeaturesAction action = new FeaturesAction(new File[] { testFolder });
action.perform(publisherInfo, publisherResult, new NullProgressMonitor());
IInstallableUnit iu = publisherResult.getIU("test.feature.feature.group", Version.parseVersion("1.0.0"), null);
@@ -207,7 +216,8 @@ public class FeaturesActionTest extends ActionTest {
if (((IRequiredCapability) require).getName().equals("org.foo.feature.group")) {
assertEquals(ExpressionUtil.parseLDAP("(osgi.os=win32)"), require.getFilter().getParameters()[0]);
} else if (((IRequiredCapability) require).getName().equals("org.plug")) {
- assertEquals(ExpressionUtil.parseLDAP("(&(my.prop=foo)(osgi.os=win32))"), require.getFilter().getParameters()[0]);
+ assertEquals(ExpressionUtil.parseLDAP("(&(my.prop=foo)(osgi.os=win32))"),
+ require.getFilter().getParameters()[0]);
} else if (((IRequiredCapability) require).getName().equals("org.plug2")) {
assertEquals(ExpressionUtil.parseLDAP("(my.prop=foo)"), require.getFilter().getParameters()[0]);
} else if (((IRequiredCapability) require).getName().equals("org.foo2.feature.group")) {
@@ -222,142 +232,173 @@ public class FeaturesActionTest extends ActionTest {
}
private void verifyMetadata() {
- //{foo.feature.jar=[foo.feature.jar 1.0.0], bar.feature.jar=[bar.feature.jar 1.1.1], foo.feature.group=[foo.feature.group 1.0.0], bar.feature.group=[bar.feature.group 1.1.1]}
- ArrayList<IInstallableUnit> fooIUs = new ArrayList<>(publisherResult.getIUs("foo.feature.jar", IPublisherResult.NON_ROOT)); //$NON-NLS-1$
- assertTrue(fooIUs.size() == 1);
+ // {foo.feature.jar=[foo.feature.jar 1.0.0], bar.feature.jar=[bar.feature.jar
+ // 1.1.1], foo.feature.group=[foo.feature.group 1.0.0],
+ // bar.feature.group=[bar.feature.group 1.1.1]}
+ ArrayList<IInstallableUnit> fooIUs = new ArrayList<>(
+ publisherResult.getIUs("foo.feature.jar", IPublisherResult.NON_ROOT)); //$NON-NLS-1$
+ assertEquals(1, fooIUs.size());
IInstallableUnit foo = fooIUs.get(0);
assertTrue(foo.getId().equalsIgnoreCase("foo.feature.jar")); //$NON-NLS-1$
- assertTrue(foo.getVersion().equals(fooVersion));
+ assertEquals(fooVersion, foo.getVersion());
assertEquals("Foo Feature", foo.getProperty(IInstallableUnit.PROP_NAME));
assertEquals("Foo Description", foo.getProperty(IInstallableUnit.PROP_DESCRIPTION));
assertEquals("Foo License", foo.getLicenses().iterator().next().getBody());
assertEquals("Foo Copyright", foo.getCopyright().getBody());
- assertTrue(foo.getProperty("key1").equals("value1")); //$NON-NLS-1$ //$NON-NLS-2$
- assertTrue(foo.getProperty("key2").equals("value2")); //$NON-NLS-1$//$NON-NLS-2$
- assertTrue(foo.getArtifacts().iterator().next().equals(FOO_KEY));
- assertEquals(foo.getFilter().getParameters()[0], ExpressionUtil.parseLDAP("(org.eclipse.update.install.features=true)")); //$NON-NLS-1$
+ assertEquals("value1", foo.getProperty("key1")); //$NON-NLS-1$ //$NON-NLS-2$
+ assertEquals("value2", foo.getProperty("key2")); //$NON-NLS-1$//$NON-NLS-2$
+ assertEquals(FOO_KEY, foo.getArtifacts().iterator().next());
+ assertEquals(foo.getFilter().getParameters()[0],
+ ExpressionUtil.parseLDAP("(org.eclipse.update.install.features=true)")); //$NON-NLS-1$
- //check touchpointType
+ // check touchpointType
assertTrue(foo.getTouchpointType().getId().equalsIgnoreCase("org.eclipse.equinox.p2.osgi")); //$NON-NLS-1$
- assertTrue(foo.getTouchpointType().getVersion().equals(fooVersion));
+ assertEquals(fooVersion, foo.getTouchpointType().getVersion());
- //zipped=true
+ // zipped=true
Collection<ITouchpointData> tpData = foo.getTouchpointData();
String fooValue = tpData.iterator().next().getInstructions().get("zipped").getBody(); //$NON-NLS-1$
assertTrue(fooValue.equalsIgnoreCase("true")); //$NON-NLS-1$
Collection<IRequirement> fooRequiredCapabilities = foo.getRequirements();
- assertTrue(fooRequiredCapabilities.size() == 0);
+ assertTrue(fooRequiredCapabilities.isEmpty());
Collection<IProvidedCapability> fooProvidedCapabilities = foo.getProvidedCapabilities();
- verifyProvidedCapability(fooProvidedCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "foo.feature.jar", fooVersion); //$NON-NLS-1$
- verifyProvidedCapability(fooProvidedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "feature", fooVersion); //$NON-NLS-1$
+ verifyProvidedCapability(fooProvidedCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "foo.feature.jar", //$NON-NLS-1$
+ fooVersion);
+ verifyProvidedCapability(fooProvidedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "feature", //$NON-NLS-1$
+ fooVersion);
verifyProvidedCapability(fooProvidedCapabilities, "org.eclipse.update.feature", FOO, fooVersion); //$NON-NLS-1$
- assertTrue(fooProvidedCapabilities.size() == 3);
+ assertEquals(3, fooProvidedCapabilities.size());
- //feature group IU for foo
+ // feature group IU for foo
fooIUs = new ArrayList<>(publisherResult.getIUs("foo.feature.group", IPublisherResult.ROOT)); //$NON-NLS-1$
- assertTrue(fooIUs.size() == 1);
+ assertEquals(1, fooIUs.size());
IInstallableUnit fooGroup = fooIUs.get(0);
- tpData = fooGroup.getTouchpointData();
- assertEquals(1, tpData.size());
- ITouchpointInstruction instruction = tpData.iterator().next().getInstruction("install");
+ ITouchpointAdvice tData = capture.getValue();
+ ITouchpointInstruction instruction = tData.getTouchpointData(NO_TP_DATA).getInstruction("install");
assertNotNull(instruction);
- assertEquals("ln(targetDir:@artifact,linkTarget:foo/lib.1.so,linkName:lib.so);chmod(targetDir:@artifact,targetFile:lib/lib.so,permissions:755);", instruction.getBody());
+ assertEquals(
+ "ln(targetDir:@artifact,linkTarget:foo/lib.1.so,linkName:lib.so);chmod(targetDir:@artifact,targetFile:lib/lib.so,permissions:755);",
+ instruction.getBody());
assertNull(fooGroup.getFilter());
- /*verify bar*/
- ArrayList<IInstallableUnit> barIUs = new ArrayList<>(publisherResult.getIUs("bar.feature.jar", IPublisherResult.NON_ROOT)); //$NON-NLS-1$
- assertTrue(barIUs.size() == 1);
+ /* verify bar */
+ ArrayList<IInstallableUnit> barIUs = new ArrayList<>(
+ publisherResult.getIUs("bar.feature.jar", IPublisherResult.NON_ROOT)); //$NON-NLS-1$
+ assertEquals(1, barIUs.size());
IInstallableUnit bar = barIUs.get(0);
- assertTrue(bar.getId().equals("bar.feature.jar")); //$NON-NLS-1$
- assertTrue(bar.getVersion().equals(barVersion));
- assertTrue(bar.getProperty("key1").equals("value1")); //$NON-NLS-1$//$NON-NLS-2$
- assertTrue(bar.getProperty("key2").equals("value2")); //$NON-NLS-1$//$NON-NLS-2$
+ assertEquals("bar.feature.jar", bar.getId()); //$NON-NLS-1$
+ assertEquals(barVersion, bar.getVersion());
+ assertEquals("value1", bar.getProperty("key1")); //$NON-NLS-1$//$NON-NLS-2$
+ assertEquals("value2", bar.getProperty("key2")); //$NON-NLS-1$//$NON-NLS-2$
assertTrue(bar.getProperties().containsKey("org.eclipse.update.installHandler")); //$NON-NLS-1$
assertTrue(bar.getProperties().containsValue("handler=bar handler")); //$NON-NLS-1$
- assertTrue(bar.getArtifacts().iterator().next().equals(BAR_KEY));
- assertEquals(bar.getFilter().getParameters()[0], ExpressionUtil.parseLDAP("(org.eclipse.update.install.features=true)")); //$NON-NLS-1$
+ assertEquals(BAR_KEY, bar.getArtifacts().iterator().next());
+ assertEquals(bar.getFilter().getParameters()[0],
+ ExpressionUtil.parseLDAP("(org.eclipse.update.install.features=true)")); //$NON-NLS-1$
assertTrue(bar.isSingleton());
barIUs = new ArrayList<>(publisherResult.getIUs("bar.feature.group", IPublisherResult.ROOT)); //$NON-NLS-1$
- assertTrue(fooIUs.size() == 1);
+ assertEquals(1, fooIUs.size());
IInstallableUnit barGroup = barIUs.get(0);
Collection<IRequirement> barRequiredCapabilities = barGroup.getRequirements();
- //contains(barRequiredCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "bar_root", new VersionRange(barVersion, true, barVersion, true), null, false /*multiple*/, false /*optional*/); //$NON-NLS-1$//$NON-NLS-2$
- verifyRequirement(barRequiredCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "bar.feature.jar", new VersionRange(barVersion, true, barVersion, true), "(org.eclipse.update.install.features=true)", 1, 1, true); //$NON-NLS-1$//$NON-NLS-2$
- verifyRequirement(barRequiredCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "org.bar.feature.feature.group", VersionRange.emptyRange, "(&(|(osgi.nl=de)(osgi.nl=en)(osgi.nl=fr)))", 1, 1, true); //$NON-NLS-1$//$NON-NLS-2$
- assertEquals(barGroup.getFilter().getParameters()[0], ExpressionUtil.parseLDAP("(&(|(osgi.os=macosx)(osgi.os=win32))(|(osgi.ws=carbon)(osgi.ws=win32))(|(osgi.arch=ppc)(osgi.arch=x86))(osgi.nl=en))"));
-
- //check zipped=true in touchpointData
+ // contains(barRequiredCapabilities, IInstallableUnit.NAMESPACE_IU_ID,
+ // "bar_root", new VersionRange(barVersion, true, barVersion, true), null, false
+ // /*multiple*/, false /*optional*/); //$NON-NLS-1$//$NON-NLS-2$
+ verifyRequirement(barRequiredCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "bar.feature.jar", //$NON-NLS-1$
+ new VersionRange(barVersion, true, barVersion, true), "(org.eclipse.update.install.features=true)", 1, //$NON-NLS-1$
+ 1, true);
+ verifyRequirement(barRequiredCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "org.bar.feature.feature.group", //$NON-NLS-1$
+ VersionRange.emptyRange, "(&(|(osgi.nl=de)(osgi.nl=en)(osgi.nl=fr)))", 1, 1, true); //$NON-NLS-1$
+ assertEquals(barGroup.getFilter().getParameters()[0], ExpressionUtil.parseLDAP(
+ "(&(|(osgi.os=macosx)(osgi.os=win32))(|(osgi.ws=carbon)(osgi.ws=win32))(|(osgi.arch=ppc)(osgi.arch=x86))(osgi.nl=en))"));
+
+ // check zipped=true in touchpointData
String barValue = bar.getTouchpointData().iterator().next().getInstructions().get("zipped").getBody(); //$NON-NLS-1$
assertTrue(barValue.equalsIgnoreCase("true")); //$NON-NLS-1$
- //check touchpointType
+ // check touchpointType
assertTrue(bar.getTouchpointType().getId().equalsIgnoreCase("org.eclipse.equinox.p2.osgi")); //$NON-NLS-1$
- assertTrue(bar.getTouchpointType().getVersion().equals(fooVersion));
- //String namespace, String name, VersionRange range, String filter, boolean optional, boolean multiple, boolean greedy)
+ assertEquals(fooVersion, bar.getTouchpointType().getVersion());
+ // String namespace, String name, VersionRange range, String filter, boolean
+ // optional, boolean multiple, boolean greedy)
barRequiredCapabilities = bar.getRequirements();
- assertTrue(barRequiredCapabilities.size() == 0);
+ assertTrue(barRequiredCapabilities.isEmpty());
Collection<IProvidedCapability> barProvidedCapabilities = bar.getProvidedCapabilities();
- verifyProvidedCapability(barProvidedCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "bar.feature.jar", barVersion); //$NON-NLS-1$
- verifyProvidedCapability(barProvidedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "feature", fooVersion); //$NON-NLS-1$
+ verifyProvidedCapability(barProvidedCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "bar.feature.jar", //$NON-NLS-1$
+ barVersion);
+ verifyProvidedCapability(barProvidedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "feature", //$NON-NLS-1$
+ fooVersion);
verifyProvidedCapability(barProvidedCapabilities, "org.eclipse.update.feature", BAR, barVersion); //$NON-NLS-1$
- assertTrue(barProvidedCapabilities.size() == 3);
+ assertEquals(3, barProvidedCapabilities.size());
}
private void verifyArtifacts() throws IOException {
ZipInputStream actualStream = artifactRepository.getZipInputStream(FOO_KEY);
- Map<String, Object[]> expected = getFileMap(new HashMap<>(), new File[] {new File(root, FOO)}, new Path(new File(root, FOO).getAbsolutePath()));
+ Map<String, Object[]> expected = getFileMap(new HashMap<>(), new File[] { new File(root, FOO) },
+ new Path(new File(root, FOO).getAbsolutePath()));
TestData.assertContains(expected, actualStream, true);
- expected = getFileMap(new HashMap<>(), new File[] {new File(root, BAR)}, new Path(new File(root, BAR).getAbsolutePath()));
+ expected = getFileMap(new HashMap<>(), new File[] { new File(root, BAR) },
+ new Path(new File(root, BAR).getAbsolutePath()));
actualStream = artifactRepository.getZipInputStream(BAR_KEY);
TestData.assertContains(expected, actualStream, true);
}
@Override
protected void insertPublisherInfoBehavior() {
- //setup metadataRepository with barIU
- metadataRepository = new TestMetadataRepository(getAgent(), new IInstallableUnit[] {mockIU(BAR, null)});
-
- ArrayList<IPropertyAdvice> adviceCollection = fillAdvice(new ArrayList<>());
- expect(publisherInfo.getAdvice(null, false, "bar.feature.jar", barVersion, IPropertyAdvice.class)).andReturn(adviceCollection).anyTimes();
- expect(publisherInfo.getAdvice(null, false, "bar", barVersion, IPropertyAdvice.class)).andReturn(adviceCollection).anyTimes();
- expect(publisherInfo.getAdvice(null, false, "bar", barVersion, IFeatureRootAdvice.class)).andReturn(Collections.EMPTY_LIST).anyTimes();
- expect(publisherInfo.getAdvice(null, false, "bar.feature.group", barVersion, IPropertyAdvice.class)).andReturn(adviceCollection).anyTimes();
- expect(publisherInfo.getAdvice(null, false, "bar.feature.group", barVersion, ITouchpointAdvice.class)).andReturn(Collections.EMPTY_LIST).anyTimes();
- expect(publisherInfo.getAdvice(null, false, "bar.feature.group", barVersion, ICapabilityAdvice.class)).andReturn(Collections.EMPTY_LIST).anyTimes();
- expect(publisherInfo.getAdvice(null, false, "bar.feature.group", barVersion, IAdditionalInstallableUnitAdvice.class)).andReturn(Collections.EMPTY_LIST).anyTimes();
- expect(publisherInfo.getAdvice(null, false, "foo.feature.jar", fooVersion, IPropertyAdvice.class)).andReturn(adviceCollection).anyTimes();
- expect(publisherInfo.getAdvice(null, false, "bar.feature.group", barVersion, IUpdateDescriptorAdvice.class)).andReturn(Collections.EMPTY_LIST).anyTimes();
- expect(publisherInfo.getAdvice(null, false, "foo", fooVersion, IPropertyAdvice.class)).andReturn(adviceCollection).anyTimes();
- expect(publisherInfo.getAdvice(null, false, "foo", fooVersion, IFeatureRootAdvice.class)).andReturn(Collections.EMPTY_LIST).anyTimes();
- expect(publisherInfo.getAdvice(null, false, "foo.feature.group", fooVersion, IPropertyAdvice.class)).andReturn(adviceCollection).anyTimes();
- expect(publisherInfo.getAdvice(null, false, "foo.feature.group", fooVersion, ICapabilityAdvice.class)).andReturn(Collections.EMPTY_LIST).anyTimes();
- expect(publisherInfo.getAdvice(null, false, "foo.feature.group", fooVersion, IAdditionalInstallableUnitAdvice.class)).andReturn(Collections.EMPTY_LIST).anyTimes();
- expect(publisherInfo.getAdvice(null, false, "foo.feature.group", fooVersion, IUpdateDescriptorAdvice.class)).andReturn(Collections.EMPTY_LIST).anyTimes();
- expect(publisherInfo.getArtifactOptions()).andReturn(IPublisherInfo.A_INDEX | IPublisherInfo.A_OVERWRITE | IPublisherInfo.A_PUBLISH).anyTimes();
- expect(publisherInfo.getArtifactRepository()).andReturn(artifactRepository).anyTimes();
- expect(publisherInfo.getMetadataRepository()).andReturn(metadataRepository).anyTimes();
- expect(publisherInfo.getContextMetadataRepository()).andReturn(null).anyTimes();
-
- //capture any touchpoint advice, and return the captured advice when the action asks for it
- publisherInfo.addAdvice(and(isA(ITouchpointAdvice.class), capture(tpAdvice)));
- EasyMock.expectLastCall().anyTimes();
- expect(publisherInfo.getAdvice(null, false, "foo.feature.group", fooVersion, ITouchpointAdvice.class)).andReturn(new CaptureList<>(tpAdvice)).anyTimes();
+ // setup metadataRepository with barIU
+ metadataRepository = new TestMetadataRepository(getAgent(), new IInstallableUnit[] { mockIU(BAR, null) });
+
+ List<IPropertyAdvice> adviceCollection = fillAdvice(new ArrayList<>());
+ when(publisherInfo.getAdvice(null, false, "bar.feature.jar", barVersion, IPropertyAdvice.class))
+ .thenReturn(adviceCollection);
+ when(publisherInfo.getAdvice(null, false, "bar", barVersion, IPropertyAdvice.class))
+ .thenReturn(adviceCollection);
+ when(publisherInfo.getAdvice(null, false, "bar", barVersion, IFeatureRootAdvice.class))
+ .thenReturn(Collections.emptyList());
+ when(publisherInfo.getAdvice(null, false, "bar.feature.group", barVersion, IPropertyAdvice.class))
+ .thenReturn(adviceCollection);
+ when(publisherInfo.getAdvice(null, false, "bar.feature.group", barVersion, ITouchpointAdvice.class))
+ .thenReturn(Collections.emptyList());
+ when(publisherInfo.getAdvice(null, false, "bar.feature.group", barVersion, ICapabilityAdvice.class))
+ .thenReturn(Collections.emptyList());
+ when(publisherInfo.getAdvice(null, false, "bar.feature.group", barVersion,
+ IAdditionalInstallableUnitAdvice.class)).thenReturn(Collections.emptyList());
+ when(publisherInfo.getAdvice(null, false, "foo.feature.jar", fooVersion, IPropertyAdvice.class))
+ .thenReturn(adviceCollection);
+ when(publisherInfo.getAdvice(null, false, "bar.feature.group", barVersion, IUpdateDescriptorAdvice.class))
+ .thenReturn(Collections.emptyList());
+ when(publisherInfo.getAdvice(null, false, "foo", fooVersion, IPropertyAdvice.class))
+ .thenReturn(adviceCollection);
+ when(publisherInfo.getAdvice(null, false, "foo", fooVersion, IFeatureRootAdvice.class))
+ .thenReturn(Collections.emptyList());
+ when(publisherInfo.getAdvice(null, false, "foo.feature.group", fooVersion, IPropertyAdvice.class))
+ .thenReturn(adviceCollection);
+ when(publisherInfo.getAdvice(null, false, "foo.feature.group", fooVersion, ICapabilityAdvice.class))
+ .thenReturn(Collections.emptyList());
+ when(publisherInfo.getAdvice(null, false, "foo.feature.group", fooVersion,
+ IAdditionalInstallableUnitAdvice.class)).thenReturn(Collections.emptyList());
+ when(publisherInfo.getAdvice(null, false, "foo.feature.group", fooVersion, IUpdateDescriptorAdvice.class))
+ .thenReturn(Collections.emptyList());
+ when(publisherInfo.getArtifactOptions())
+ .thenReturn(IPublisherInfo.A_INDEX | IPublisherInfo.A_OVERWRITE | IPublisherInfo.A_PUBLISH);
+ when(publisherInfo.getArtifactRepository()).thenReturn(artifactRepository);
+ when(publisherInfo.getMetadataRepository()).thenReturn(metadataRepository);
+ when(publisherInfo.getContextMetadataRepository()).thenReturn(null);
}
- private ArrayList<IPropertyAdvice> fillAdvice(ArrayList<IPropertyAdvice> adviceCollection) {
+ private List<IPropertyAdvice> fillAdvice(ArrayList<IPropertyAdvice> adviceCollection) {
Map<String, String> prop = new HashMap<>();
prop.put("key1", "value1"); //$NON-NLS-1$//$NON-NLS-2$
prop.put("key2", "value2"); //$NON-NLS-1$//$NON-NLS-2$
- IPropertyAdvice propertyAdvice = EasyMock.createMock(IPropertyAdvice.class);
- expect(propertyAdvice.getInstallableUnitProperties((InstallableUnitDescription) EasyMock.anyObject())).andReturn(prop).anyTimes();
- expect(propertyAdvice.getArtifactProperties((IInstallableUnit) EasyMock.anyObject(), (IArtifactDescriptor) EasyMock.anyObject())).andReturn(null).anyTimes();
- EasyMock.replay(propertyAdvice);
+ IPropertyAdvice propertyAdvice = mock(IPropertyAdvice.class);
+ when(propertyAdvice.getInstallableUnitProperties(any(InstallableUnitDescription.class))).thenReturn(prop);
+ when(propertyAdvice.getArtifactProperties(any(IInstallableUnit.class), any(IArtifactDescriptor.class)))
+ .thenReturn(null);
adviceCollection.add(propertyAdvice);
return adviceCollection;
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/JREActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/JREActionTest.java
index bc9361464..dc5719e14 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/JREActionTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/JREActionTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2018 Code 9 and others.
+ * Copyright (c) 2008, 2021 Code 9 and others.
*
* This
* program and the accompanying materials are made available under the terms of
@@ -16,15 +16,17 @@
******************************************************************************/
package org.eclipse.equinox.p2.tests.publisher.actions;
-import static org.easymock.EasyMock.expect;
import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.errorStatus;
import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.okStatus;
import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.statusWithMessageWhich;
+import static org.hamcrest.CoreMatchers.anyOf;
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.hasItem;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.greaterThan;
+import static org.mockito.Mockito.when;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -57,7 +59,12 @@ import org.eclipse.equinox.p2.tests.TestData;
import org.eclipse.equinox.p2.tests.TestMetadataRepository;
import org.eclipse.equinox.p2.tests.publisher.TestArtifactRepository;
import org.eclipse.equinox.spi.p2.publisher.PublisherHelper;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+@RunWith(JUnit4.class)
public class JREActionTest extends ActionTest {
private File J14 = new File(TestActivator.getTestDataFolder(), "JREActionTest/1.4/"); //$NON-NLS-1$
@@ -70,12 +77,14 @@ public class JREActionTest extends ActionTest {
protected TestMetadataRepository metadataRepository;
@Override
+ @Before
public void setUp() throws Exception {
setupPublisherInfo();
setupPublisherResult();
}
// TODO this name is misleading: the test doesn't test the real Java 1.4 JRE IU but a broken local copy of the 1.4 profile
+ @Test
public void test14() throws Exception {
performAction(new JREAction(J14));
@@ -85,6 +94,7 @@ public class JREActionTest extends ActionTest {
verifyArtifactRepository(ArtifactKey.parse("binary,a.jre.j2se,1.4.0"), J14, "J2SE-1.4.profile"); //$NON-NLS-1$ //$NON-NLS-2$
}
+ @Test
public void test15() throws Exception {
performAction(new JREAction(J15));
@@ -94,6 +104,7 @@ public class JREActionTest extends ActionTest {
verifyArtifactRepository(ArtifactKey.parse("binary,a.jre.j2se,1.5.0"), J15, "J2SE-1.5.profile"); //$NON-NLS-1$ //$NON-NLS-2$
}
+ @Test
public void test16() throws Exception {
performAction(new JREAction(J16));
@@ -103,6 +114,7 @@ public class JREActionTest extends ActionTest {
verifyArtifactRepository(ArtifactKey.parse("binary,a.jre.javase,1.6.0"), J16, "JavaSE-1.6.profile"); //$NON-NLS-1$//$NON-NLS-2$
}
+ @Test
public void testOSGiMin() throws Exception {
performAction(new JREAction("OSGi/Minimum-1.2"));
@@ -111,6 +123,7 @@ public class JREActionTest extends ActionTest {
// verifyConfigIU("a.jre.osgi.minimum", jreVersion); // TODO config IU is not needed!?
}
+ @Test
public void testPackageVersionsFromJreFolder() throws Exception {
performAction(new JREAction(jreWithPackageVersionsFolder));
@@ -121,6 +134,7 @@ public class JREActionTest extends ActionTest {
verifyArtifactRepository(ArtifactKey.parse("binary,a.jre.test,1.0.0"), jreWithPackageVersionsFolder, "test-1.0.0.profile"); //$NON-NLS-1$//$NON-NLS-2$
}
+ @Test
public void testPackageVersionsFromJavaProfile() throws Exception {
// introduced for bug 334519: directly point to a profile file
performAction(new JREAction(jreWithPackageVersionsProfile));
@@ -130,27 +144,22 @@ public class JREActionTest extends ActionTest {
assertThat(providedCapabilities, hasItem(MetadataFactory.createProvidedCapability(PublisherHelper.CAPABILITY_NS_JAVA_PACKAGE, "my.package", Version.create("1.0.0"))));
}
+ @Test
public void testDefaultJavaProfile() throws Exception {
performAction(new JREAction((String) null));
// these assertions need to be changed each time the default java profile, hardcoded in o.e.e.p2.publisher.actions.JREAction, is changed;
- verifyMetadataIU("a.jre.javase", 226, 21, Version.parseVersion("9.0.0"));
+ verifyMetadataIU("a.jre.javase", 226, 23, Version.parseVersion("11.0.0"));
// verifyConfigIU(DEFAULT_JRE_NAME, DEFAULT_JRE_VERSION); // TODO config IU is not needed!?
}
+ @Test(expected = IllegalArgumentException.class)
public void testNonExistingJreLocation() {
File nonExistingProfile = new File(jreWithPackageVersionsFolder, "no.profile");
- try {
- performAction(new JREAction(nonExistingProfile));
- fail("Expected failure when the JRE location does not exists.");
- // TODO shouldn't this be an error status?
- } catch (IllegalArgumentException e) {
- // test is successful
- } catch (Exception e) {
- fail("Expected IllegalArgumentException when the JRE location does not exists, caught " + e.getClass().getName());
- }
+ performAction(new JREAction(nonExistingProfile));
}
+ @Test
public void testOsgiEECapabilities() {
// added for bug 388566
performAction(new JREAction("J2SE-1.5"));
@@ -163,6 +172,7 @@ public class JREActionTest extends ActionTest {
assertThat(capabilities, not(hasItem(createEECapability("J2SE", "1.5"))));
}
+ @Test
public void testSingleOsgiEECapability() {
// contains a single version:Version attribute instead of the common version:List<Version>
performAction(new JREAction("OSGi/Minimum-1.0"));
@@ -172,6 +182,7 @@ public class JREActionTest extends ActionTest {
assertThat(capabilities, hasItem(createEECapability("OSGi/Minimum", "1.0")));
}
+ @Test
public void testInvalidOsgiEECapabilitySpec() {
testAction = new JREAction(new File(TestActivator.getTestDataFolder(), "JREActionTest/invalidOsgiEE/ee-capability-syntax-test.profile"));
IStatus status = testAction.perform(publisherInfo, publisherResult, new NullProgressMonitor());
@@ -184,7 +195,7 @@ public class JREActionTest extends ActionTest {
assertThat(Arrays.asList(eeStatus.getChildren()), hasItem(statusWithMessageWhich(containsString("Syntax error in version '1.a.invalidversion'"))));
assertThat(Arrays.asList(eeStatus.getChildren()), hasItem(statusWithMessageWhich(containsString("Ignoring unknown capability namespace 'other.namespace'"))));
assertThat(Arrays.asList(eeStatus.getChildren()), hasItem(statusWithMessageWhich(containsString("Cannot specify both 'version:Version' and 'version:List<Version>'"))));
- assertThat(eeStatus.getChildren().length, is(5));
+ assertEquals(5, eeStatus.getChildren().length);
}
private void performAction(JREAction jreAction) {
@@ -196,34 +207,37 @@ public class JREActionTest extends ActionTest {
IInstallableUnit foo = getPublishedUnit(id);
// check version
- assertTrue(foo.getVersion().equals(jreVersion));
+ assertEquals(jreVersion, foo.getVersion());
// check touchpointType
assertTrue(foo.getTouchpointType().getId().equalsIgnoreCase("org.eclipse.equinox.p2.native")); //$NON-NLS-1$
- assertTrue(foo.getTouchpointType().getVersion().equals(Version.create("1.0.0"))); //$NON-NLS-1$
+ assertEquals(Version.create("1.0.0"), foo.getTouchpointType().getVersion()); //$NON-NLS-1$
// check provided capabilities
Collection<IProvidedCapability> fooProvidedCapabilities = foo.getProvidedCapabilities();
- assertThat(fooProvidedCapabilities.size(), is(1 + expectedProvidedPackages + expectedProvidedEEs));
+ int expected = expectedProvidedPackages + expectedProvidedEEs;
+ assertThat(fooProvidedCapabilities.size(), anyOf(is(expected), greaterThan(expected)));
}
private void verifyConfigIU(String id, Version jreVersion) {
IInstallableUnit bar = getPublishedUnit("config." + id);
Map<?, ?> instructions = bar.getTouchpointData().iterator().next().getInstructions();
- assertTrue(((ITouchpointInstruction) instructions.get("install")).getBody().equals("unzip(source:@artifact, target:${installFolder});")); //$NON-NLS-1$//$NON-NLS-2$
- assertTrue(((ITouchpointInstruction) instructions.get("uninstall")).getBody().equals("cleanupzip(source:@artifact, target:${installFolder});")); //$NON-NLS-1$ //$NON-NLS-2$
+ assertEquals("unzip(source:@artifact, target:${installFolder});", //$NON-NLS-1$
+ ((ITouchpointInstruction) instructions.get("install")).getBody()); //$NON-NLS-1$
+ assertEquals("cleanupzip(source:@artifact, target:${installFolder});", //$NON-NLS-1$
+ ((ITouchpointInstruction) instructions.get("uninstall")).getBody()); //$NON-NLS-1$
assertTrue(bar instanceof IInstallableUnitFragment);
Collection<IRequirement> requiredCapability = ((IInstallableUnitFragment) bar).getHost();
verifyRequirement(requiredCapability, IInstallableUnit.NAMESPACE_IU_ID, id, new VersionRange(jreVersion, true, Version.MAX_VERSION, true));
- assertTrue(requiredCapability.size() == 1);
+ assertEquals(1, requiredCapability.size());
Collection<IProvidedCapability> providedCapability = bar.getProvidedCapabilities();
verifyProvidedCapability(providedCapability, IInstallableUnit.NAMESPACE_IU_ID, "config." + id, jreVersion); //$NON-NLS-1$
- assertTrue(providedCapability.size() == 1);
+ assertEquals(1, providedCapability.size());
- assertTrue(bar.getProperty("org.eclipse.equinox.p2.type.fragment").equals("true")); //$NON-NLS-1$//$NON-NLS-2$
- assertTrue(bar.getVersion().equals(jreVersion));
+ assertEquals("true", bar.getProperty("org.eclipse.equinox.p2.type.fragment")); //$NON-NLS-1$//$NON-NLS-2$
+ assertEquals(jreVersion, bar.getVersion());
}
private void verifyArtifactRepository(IArtifactKey key, File JRELocation, final String fileName) throws IOException {
@@ -241,13 +255,13 @@ public class JREActionTest extends ActionTest {
private IInstallableUnit getPublishedUnit(String id) {
Collection<IInstallableUnit> units = publisherResult.getIUs(id, IPublisherResult.ROOT);
- assertThat(units.size(), is(1));
+ assertEquals(1, units.size());
return units.iterator().next();
}
private Collection<IProvidedCapability> getPublishedCapabilitiesOf(String id) {
Collection<IInstallableUnit> ius = publisherResult.getIUs(id, IPublisherResult.ROOT);
- assertThat(ius.size(), is(1));
+ assertEquals(1, ius.size());
IInstallableUnit iu = ius.iterator().next();
return iu.getProvidedCapabilities();
}
@@ -262,7 +276,7 @@ public class JREActionTest extends ActionTest {
@Override
protected void insertPublisherInfoBehavior() {
- expect(publisherInfo.getArtifactRepository()).andReturn(artifactRepository).anyTimes();
- expect(publisherInfo.getArtifactOptions()).andReturn(IPublisherInfo.A_PUBLISH).anyTimes();
+ when(publisherInfo.getArtifactRepository()).thenReturn(artifactRepository);
+ when(publisherInfo.getArtifactOptions()).thenReturn(IPublisherInfo.A_PUBLISH);
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/LocalUpdateSiteActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/LocalUpdateSiteActionTest.java
index eacc9e601..53d5f03b8 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/LocalUpdateSiteActionTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/LocalUpdateSiteActionTest.java
@@ -14,14 +14,23 @@
******************************************************************************/
package org.eclipse.equinox.p2.tests.publisher.actions;
-import static org.easymock.EasyMock.*;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.when;
import java.io.File;
-import java.util.*;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Set;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.equinox.internal.p2.updatesite.LocalUpdateSiteAction;
-import org.eclipse.equinox.p2.metadata.*;
-import org.eclipse.equinox.p2.publisher.IPublisherAdvice;
+import org.eclipse.equinox.p2.metadata.IInstallableUnit;
+import org.eclipse.equinox.p2.metadata.ITouchpointData;
+import org.eclipse.equinox.p2.metadata.ITouchpointInstruction;
+import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.publisher.IPublisherInfo;
import org.eclipse.equinox.p2.tests.TestData;
import org.eclipse.equinox.p2.tests.publisher.TestArtifactRepository;
@@ -40,9 +49,11 @@ public class LocalUpdateSiteActionTest extends ActionTest {
@Override
protected void insertPublisherInfoBehavior() {
super.insertPublisherInfoBehavior();
- expect(publisherInfo.getArtifactRepository()).andReturn(artifactRepository).anyTimes();
- expect(publisherInfo.getArtifactOptions()).andReturn(IPublisherInfo.A_INDEX | IPublisherInfo.A_OVERWRITE | IPublisherInfo.A_PUBLISH).anyTimes();
- expect(publisherInfo.getAdvice((String) anyObject(), anyBoolean(), (String) anyObject(), (Version) anyObject(), (Class<IPublisherAdvice>) anyObject())).andReturn(Collections.EMPTY_LIST).anyTimes();
+ when(publisherInfo.getArtifactRepository()).thenReturn(artifactRepository);
+ when(publisherInfo.getArtifactOptions())
+ .thenReturn(IPublisherInfo.A_INDEX | IPublisherInfo.A_OVERWRITE | IPublisherInfo.A_PUBLISH);
+ when(publisherInfo.getAdvice(anyString(), anyBoolean(), anyString(), any(Version.class), any(Class.class)))
+ .thenReturn(Collections.emptyList());
}
/**
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/MultiCapture.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/MultiCapture.java
deleted file mode 100644
index 3f9d8133d..000000000
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/MultiCapture.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2017 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.equinox.p2.tests.publisher.actions;
-
-import java.util.*;
-import org.easymock.Capture;
-
-/**
- * A capture that captures multiple values
- */
-public class MultiCapture<T> extends Capture<T> implements Collection<T> {
- private static final long serialVersionUID = 1L;
- private final List<T> captured = new ArrayList<>();
-
- @Override
- public boolean add(T arg0) {
- return captured.add(arg0);
- }
-
- @Override
- public boolean addAll(Collection<? extends T> arg0) {
- return captured.addAll(arg0);
- }
-
- @Override
- public void clear() {
- captured.clear();
- }
-
- @Override
- public boolean contains(Object arg0) {
- return captured.contains(arg0);
- }
-
- @Override
- public boolean containsAll(Collection<?> arg0) {
- return captured.containsAll(arg0);
- }
-
- @Override
- public boolean isEmpty() {
- return captured.isEmpty();
- }
-
- @Override
- public Iterator<T> iterator() {
- return captured.iterator();
- }
-
- @Override
- public boolean remove(Object arg0) {
- return captured.remove(arg0);
- }
-
- @Override
- public boolean removeAll(Collection<?> arg0) {
- return captured.removeAll(arg0);
- }
-
- @Override
- public boolean retainAll(Collection<?> arg0) {
- return captured.retainAll(arg0);
- }
-
- @Override
- public void setValue(T value) {
- captured.add(value);
- super.setValue(value);
- }
-
- @Override
- public int size() {
- return captured.size();
- }
-
- @Override
- public Object[] toArray() {
- return captured.toArray();
- }
-
- @Override
- public <X> X[] toArray(X[] arg0) {
- return captured.toArray(arg0);
- }
-}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionCapturingTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionCapturingTest.java
index 2fd22a1a5..898c5f0fb 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionCapturingTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionCapturingTest.java
@@ -16,58 +16,35 @@
******************************************************************************/
package org.eclipse.equinox.p2.tests.publisher.actions;
-import static org.easymock.EasyMock.*;
import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.okStatus;
import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.verify;
import java.io.File;
-import java.util.Collections;
-import org.easymock.Capture;
-import org.easymock.EasyMock;
+import java.util.stream.Collectors;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile;
-import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.publisher.IPublisherAdvice;
-import org.eclipse.equinox.p2.publisher.IPublisherInfo;
-import org.eclipse.equinox.p2.publisher.actions.RootIUAdvice;
-import org.eclipse.equinox.p2.publisher.eclipse.*;
+import org.eclipse.equinox.p2.publisher.eclipse.IConfigAdvice;
+import org.eclipse.equinox.p2.publisher.eclipse.IExecutableAdvice;
+import org.eclipse.equinox.p2.publisher.eclipse.ProductAction;
+import org.eclipse.equinox.p2.publisher.eclipse.ProductFileAdvice;
import org.eclipse.equinox.p2.tests.TestData;
import org.eclipse.equinox.p2.tests.publisher.TestArtifactRepository;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mockito;
public class ProductActionCapturingTest extends ActionTest {
File executablesFeatureLocation = null;
String source = "";
- private Capture<RootIUAdvice> rootIUAdviceCapture;
- private Capture<ProductFileAdvice> productFileAdviceCapture;
protected TestArtifactRepository artifactRepository = new TestArtifactRepository(getAgent());
@Override
- protected IPublisherInfo createPublisherInfoMock() {
- //override to create a nice mock, because we don't care about other method calls.
- return createNiceMock(IPublisherInfo.class);
- }
-
- @Override
- protected void insertPublisherInfoBehavior() {
- // capture these calls for assertions
- publisherInfo.addAdvice(EasyMock.and(EasyMock.isA(RootIUAdvice.class), EasyMock.capture(rootIUAdviceCapture)));
- publisherInfo.addAdvice(EasyMock.and(EasyMock.isA(ProductFileAdvice.class), EasyMock.capture(productFileAdviceCapture)));
-
- expect(publisherInfo.getArtifactRepository()).andReturn(artifactRepository).anyTimes();
- expect(publisherInfo.getArtifactOptions()).andReturn(IPublisherInfo.A_PUBLISH).anyTimes();
- //Return an empty list every time getAdvice is called
- expect(publisherInfo.getAdvice((String) anyObject(), anyBoolean(), (String) anyObject(), (Version) anyObject(), (Class<IPublisherAdvice>) anyObject())).andReturn(Collections.emptyList());
- expectLastCall().anyTimes();
- }
-
- @Override
public void setUp() throws Exception {
- rootIUAdviceCapture = new Capture<>();
- productFileAdviceCapture = new Capture<>();
setupPublisherInfo();
setupPublisherResult();
}
@@ -77,15 +54,18 @@ public class ProductActionCapturingTest extends ActionTest {
* IConfigAdvice (start levels, auto-start).
*/
public void testSetBundleConfigData() throws Exception {
+ ArgumentCaptor<IPublisherAdvice> productFileAdviceCapture = ArgumentCaptor.forClass(IPublisherAdvice.class);
addContextIU("org.eclipse.rcp.feature.group", "3.5.0.v20081110-9C9tEvNEla71LZ2jFz-RFB-t");
ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "startLevel.product").toString());
- testAction = new ProductAction(source, productFile, flavorArg, executablesFeatureLocation);
+ testAction = Mockito.spy(new ProductAction(source, productFile, flavorArg, executablesFeatureLocation));
IStatus status = testAction.perform(publisherInfo, publisherResult, null);
+ verify(publisherInfo, Mockito.atLeastOnce()).addAdvice(productFileAdviceCapture.capture());
assertThat(status, is(okStatus()));
- IConfigAdvice configAdvice = productFileAdviceCapture.getValue();
+ IConfigAdvice configAdvice = (IConfigAdvice) productFileAdviceCapture.getAllValues().stream()
+ .filter(IConfigAdvice.class::isInstance).collect(Collectors.toList()).get(0);
BundleInfo[] bundles = configAdvice.getBundles();
assertEquals("1.0", 2, bundles.length);
assertEquals("1.1", "org.eclipse.equinox.common", bundles[0].getSymbolicName());
@@ -103,14 +83,17 @@ public class ProductActionCapturingTest extends ActionTest {
* Tests that correct advice is created for the org.eclipse.platform product.
*/
public void testPlatformProduct() throws Exception {
+ ArgumentCaptor<IPublisherAdvice> productFileAdviceCapture = ArgumentCaptor.forClass(IPublisherAdvice.class);
ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "platform.product").toString());
addContextIU("org.eclipse.platform.feature.group", "1.2.3");
- testAction = new ProductAction(source, productFile, flavorArg, executablesFeatureLocation);
+ testAction = Mockito.spy(new ProductAction(source, productFile, flavorArg, executablesFeatureLocation));
IStatus status = testAction.perform(publisherInfo, publisherResult, null);
+ verify(publisherInfo, Mockito.atLeastOnce()).addAdvice(productFileAdviceCapture.capture());
assertThat(status, is(okStatus()));
- IExecutableAdvice launchAdvice = productFileAdviceCapture.getValue();
+ IExecutableAdvice launchAdvice = (IExecutableAdvice) productFileAdviceCapture.getAllValues().stream()
+ .filter(ProductFileAdvice.class::isInstance).collect(Collectors.toList()).get(0);
assertEquals("1.0", "eclipse", launchAdvice.getExecutableName());
String[] programArgs = launchAdvice.getProgramArguments();
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionTest.java
index f94021124..994cfafcd 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionTest.java
@@ -16,7 +16,6 @@
******************************************************************************/
package org.eclipse.equinox.p2.tests.publisher.actions;
-import static org.easymock.EasyMock.createNiceMock;
import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.errorStatus;
import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.okStatus;
import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.statusWithMessageWhich;
@@ -24,14 +23,13 @@ import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.hasItem;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Iterator;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.equinox.internal.p2.metadata.IRequiredCapability;
@@ -72,21 +70,18 @@ public class ProductActionTest extends ActionTest {
String source = "";
protected TestArtifactRepository artifactRepository = new TestArtifactRepository(getAgent());
- @Override protected IPublisherInfo createPublisherInfoMock() {
- //override to create a nice mock, because we don't care about other method calls.
- return createNiceMock(IPublisherInfo.class);
- }
-
- @Override public void setUp() throws Exception {
+ @Override
+ public void setUp() throws Exception {
setupPublisherInfo();
setupPublisherResult();
}
- @Override public void setupPublisherInfo() {
+ @Override
+ public void setupPublisherInfo() {
PublisherInfo publisherInfoImpl = new PublisherInfo();
publisherInfoImpl.setArtifactRepository(artifactRepository);
publisherInfoImpl.setArtifactOptions(IPublisherInfo.A_PUBLISH);
- publisherInfoImpl.setConfigurations(new String[] {configSpec});
+ publisherInfoImpl.setConfigurations(new String[] { configSpec });
publisherInfo = publisherInfoImpl;
}
@@ -96,18 +91,20 @@ public class ProductActionTest extends ActionTest {
* splash screen, icon, etc.
*/
public void testBrandedApplication() throws Exception {
- ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "brandedProduct/branded.product").toString());
+ ProductFile productFile = new ProductFile(
+ TestData.getFile("ProductActionTest", "brandedProduct/branded.product").toString());
addContextIU("org.eclipse.platform.feature.group", "1.2.3");
performProductAction(productFile);
Collection<IInstallableUnit> ius = publisherResult.getIUs("branded.product", IPublisherResult.NON_ROOT);
assertEquals("1.0", 1, ius.size());
- //TODO assert branding was done correctly
+ // TODO assert branding was done correctly
}
public void testLicense() throws Exception {
- ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "productWithLicense.product").toString());
+ ProductFile productFile = new ProductFile(
+ TestData.getFile("ProductActionTest", "productWithLicense.product").toString());
performProductAction(productFile);
Collection<IInstallableUnit> ius = publisherResult.getIUs("licenseIU.product", IPublisherResult.NON_ROOT);
assertEquals("1.0", 1, ius.size());
@@ -117,7 +114,8 @@ public class ProductActionTest extends ActionTest {
}
public void testLicenseNoURL() throws Exception {
- ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "licenseNoURL.product").toString());
+ ProductFile productFile = new ProductFile(
+ TestData.getFile("ProductActionTest", "licenseNoURL.product").toString());
performProductAction(productFile);
Collection<IInstallableUnit> ius = publisherResult.getIUs("licenseIU.product", IPublisherResult.NON_ROOT);
assertEquals("1.0", 1, ius.size());
@@ -127,7 +125,8 @@ public class ProductActionTest extends ActionTest {
}
public void testLicenseNoText() throws Exception {
- ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "licenseNoText.product").toString());
+ ProductFile productFile = new ProductFile(
+ TestData.getFile("ProductActionTest", "licenseNoText.product").toString());
performProductAction(productFile);
Collection<IInstallableUnit> ius = publisherResult.getIUs("licenseIU.product", IPublisherResult.NON_ROOT);
assertEquals("1.0", 1, ius.size());
@@ -137,7 +136,8 @@ public class ProductActionTest extends ActionTest {
}
public void testMissingLicense() throws Exception {
- ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "productWithNoLicense.product").toString());
+ ProductFile productFile = new ProductFile(
+ TestData.getFile("ProductActionTest", "productWithNoLicense.product").toString());
performProductAction(productFile);
Collection<IInstallableUnit> ius = publisherResult.getIUs("licenseIU.product", IPublisherResult.NON_ROOT);
assertEquals("1.0", 1, ius.size());
@@ -146,8 +146,10 @@ public class ProductActionTest extends ActionTest {
}
public void testMultiProductPublishing() throws Exception {
- ProductFile productFile1 = new ProductFile(TestData.getFile("ProductActionTest", "boundedVersionConfigurations.product").toString());
- ProductFile productFile2 = new ProductFile(TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString());
+ ProductFile productFile1 = new ProductFile(
+ TestData.getFile("ProductActionTest", "boundedVersionConfigurations.product").toString());
+ ProductFile productFile2 = new ProductFile(
+ TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString());
addContextIU("org.eclipse.core.runtime", "4.0.0");
performProductAction(productFile1);
@@ -159,7 +161,8 @@ public class ProductActionTest extends ActionTest {
}
public void testMultiPlatformCUs_DifferentPlatforms() throws Exception {
- ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString());
+ ProductFile productFile = new ProductFile(
+ TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString());
setConfiguration(LINUX_CONFIG_SPEC);
addContextIU("org.eclipse.core.runtime", "0.0.0", WIN_FILTER);
@@ -170,7 +173,8 @@ public class ProductActionTest extends ActionTest {
}
public void testMultiPlatformCUs_SamePlatforms() throws Exception {
- ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString());
+ ProductFile productFile = new ProductFile(
+ TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString());
setConfiguration(LINUX_CONFIG_SPEC);
addContextIU("org.eclipse.core.runtime", "0.0.0", LINUX_FILTER);
@@ -181,7 +185,8 @@ public class ProductActionTest extends ActionTest {
}
public void testMultiPlatformCUs_SamePlatforms_NoVersion() throws Exception {
- ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString());
+ ProductFile productFile = new ProductFile(
+ TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString());
setConfiguration(LINUX_CONFIG_SPEC);
addContextIU("org.eclipse.core.runtime", null, LINUX_FILTER);
@@ -192,11 +197,13 @@ public class ProductActionTest extends ActionTest {
}
public void testMultiPlatformCUs_SamePlatforms_BoundedVersions() throws Exception {
- ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString());
+ ProductFile productFile = new ProductFile(
+ TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString());
setConfiguration(LINUX_CONFIG_SPEC);
- // Set a specific version number, the one in the .product file uses 0.0.0. Let's see if it binds properly
- //filter is different from linuxConfigSpec, but will still match
+ // Set a specific version number, the one in the .product file uses 0.0.0. Let's
+ // see if it binds properly
+ // filter is different from linuxConfigSpec, but will still match
addContextIU("org.eclipse.core.runtime", "4.0.0", "(osgi.os=linux)");
performProductAction(productFile);
@@ -206,36 +213,45 @@ public class ProductActionTest extends ActionTest {
}
public void testCUsHost() throws Exception {
- ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString());
+ ProductFile productFile = new ProductFile(
+ TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString());
setConfiguration(LINUX_CONFIG_SPEC);
- // Set a specific version number, the one in the .product file uses 0.0.0. Let's see if it binds properly
- //filter is different from linuxConfigSpec, but will still match
+ // Set a specific version number, the one in the .product file uses 0.0.0. Let's
+ // see if it binds properly
+ // filter is different from linuxConfigSpec, but will still match
addContextIU("org.eclipse.core.runtime", "4.0.0", "(osgi.os=linux)");
performProductAction(productFile);
- IInstallableUnitFragment fragment = (IInstallableUnitFragment) getUniquePublishedIU(flavorArg + LINUX_CONFIG_SPEC + "org.eclipse.core.runtime");
- assertEquals("1.1", "org.eclipse.core.runtime", RequiredCapability.extractName(fragment.getHost().iterator().next().getMatches()));
- assertEquals("1.2", Version.create("4.0.0"), RequiredCapability.extractRange(fragment.getHost().iterator().next().getMatches()).getMinimum());
+ IInstallableUnitFragment fragment = (IInstallableUnitFragment) getUniquePublishedIU(
+ flavorArg + LINUX_CONFIG_SPEC + "org.eclipse.core.runtime");
+ assertEquals("1.1", "org.eclipse.core.runtime",
+ RequiredCapability.extractName(fragment.getHost().iterator().next().getMatches()));
+ assertEquals("1.2", Version.create("4.0.0"),
+ RequiredCapability.extractRange(fragment.getHost().iterator().next().getMatches()).getMinimum());
assertEquals("1.3", Version.create("1.0.0"), fragment.getVersion());
}
public void testMultiConfigspecProductPublishing() throws IOException, Exception {
ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "platform.product").toString());
- ((PublisherInfo) publisherInfo).setConfigurations(new String[] {"carbon.macos.x86", "cocoa.macos.x86"});
+ ((PublisherInfo) publisherInfo).setConfigurations(new String[] { "carbon.macos.x86", "cocoa.macos.x86" });
addContextIU("org.eclipse.platform.feature.group", "1.2.3");
performProductAction(productFile);
- Collection<IConfigAdvice> advice = publisherInfo.getAdvice("carbon.macos.x86", false, null, null, IConfigAdvice.class);
+ Collection<IConfigAdvice> advice = publisherInfo.getAdvice("carbon.macos.x86", false, null, null,
+ IConfigAdvice.class);
assertEquals("1.0", 1, advice.size());
}
public void testANYConfigSpecPublishing_GeneralBundle() throws Exception {
- ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString());
- String configSpecANY = AbstractPublisherAction.createConfigSpec("ANY", "ANY", "ANY"); // configuration spec to create CUs without filters
+ ProductFile productFile = new ProductFile(
+ TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString());
+ String configSpecANY = AbstractPublisherAction.createConfigSpec("ANY", "ANY", "ANY"); // configuration spec to
+ // create CUs without
+ // filters
setConfiguration(configSpecANY);
addContextIU("org.eclipse.core.runtime", "4.0.0");
@@ -243,16 +259,22 @@ public class ProductActionTest extends ActionTest {
performProductAction(productFile);
// there is a CU for the IU because it applies to all platforms
- IInstallableUnitFragment fragment = (IInstallableUnitFragment) getUniquePublishedIU(flavorArg + configSpecANY + "org.eclipse.core.runtime");
- assertEquals("1.1", "org.eclipse.core.runtime", RequiredCapability.extractName(fragment.getHost().iterator().next().getMatches()));
- assertEquals("1.2", Version.create("4.0.0"), RequiredCapability.extractRange(fragment.getHost().iterator().next().getMatches()).getMinimum());
+ IInstallableUnitFragment fragment = (IInstallableUnitFragment) getUniquePublishedIU(
+ flavorArg + configSpecANY + "org.eclipse.core.runtime");
+ assertEquals("1.1", "org.eclipse.core.runtime",
+ RequiredCapability.extractName(fragment.getHost().iterator().next().getMatches()));
+ assertEquals("1.2", Version.create("4.0.0"),
+ RequiredCapability.extractRange(fragment.getHost().iterator().next().getMatches()).getMinimum());
assertEquals("1.3", Version.create("1.0.0"), fragment.getVersion());
assertNull("1.3", fragment.getFilter());
}
public void testANYConfigSpecPublishing_PlatformSpecificBundle() throws Exception {
- ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString());
- String configSpecANY = AbstractPublisherAction.createConfigSpec("ANY", "ANY", "ANY"); // configuration spec to create CUs without filters
+ ProductFile productFile = new ProductFile(
+ TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString());
+ String configSpecANY = AbstractPublisherAction.createConfigSpec("ANY", "ANY", "ANY"); // configuration spec to
+ // create CUs without
+ // filters
setConfiguration(configSpecANY);
addContextIU("org.eclipse.core.runtime", "4.0.0", WIN_FILTER); // any valid filter can be set here
@@ -277,32 +299,36 @@ public class ProductActionTest extends ActionTest {
testAction = new ProductAction(source, productFile, flavorArg, executablesFeatureLocation);
PublisherInfo info = new PublisherInfo();
info.setContextMetadataRepository(repository);
- // TODO this line doesn't have any effect -> is this a bug in the implementation?
+ // TODO this line doesn't have any effect -> is this a bug in the
+ // implementation?
info.addAdvice(new QueryableFilterAdvice(info.getContextMetadataRepository()));
IStatus status = testAction.perform(info, publisherResult, null);
assertThat(status, is(okStatus()));
- IQueryResult<IInstallableUnit> results = publisherResult.query(QueryUtil.createIUQuery("org.eclipse.platform.ide", Version.create("3.5.0.I20081118")), null);
+ IQueryResult<IInstallableUnit> results = publisherResult
+ .query(QueryUtil.createIUQuery("org.eclipse.platform.ide", Version.create("3.5.0.I20081118")), null);
assertEquals("1.0", 1, queryResultSize(results));
IInstallableUnit unit = results.iterator().next();
Collection<IRequirement> requiredCapabilities = unit.getRequirements();
IRequiredCapability capability = null;
- for (Iterator<IRequirement> iterator = requiredCapabilities.iterator(); iterator.hasNext();) {
- IRequiredCapability req = (IRequiredCapability) iterator.next();
+ for (IRequirement iRequirement : requiredCapabilities) {
+ IRequiredCapability req = (IRequiredCapability) iRequirement;
if (req.getName().equals("org.eclipse.platform.feature.group")) {
capability = req;
break;
}
}
assertTrue("1.1", capability != null);
- assertEquals("1.2", InstallableUnit.parseFilter("(org.eclipse.update.install.features=true)"), capability.getFilter());
+ assertEquals("1.2", InstallableUnit.parseFilter("(org.eclipse.update.install.features=true)"),
+ capability.getFilter());
}
public void testProductWithAdviceFile() throws Exception {
// product file that has a corresponding advice file (p2.inf).
- ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest/productWithAdvice", "productWithAdvice.product").toString());
+ ProductFile productFile = new ProductFile(
+ TestData.getFile("ProductActionTest/productWithAdvice", "productWithAdvice.product").toString());
testAction = new ProductAction(source, productFile, flavorArg, executablesFeatureLocation);
IStatus status = testAction.perform(new PublisherInfo(), publisherResult, null);
assertThat(status, is(okStatus()));
@@ -311,27 +337,30 @@ public class ProductActionTest extends ActionTest {
Collection<ITouchpointData> data = product.getTouchpointData();
assertEquals("1.1", 1, data.size());
String configure = data.iterator().next().getInstruction("configure").getBody();
- assertEquals("1.2", "addRepository(type:0,location:http${#58}//download.eclipse.org/releases/fred);addRepository(type:1,location:http${#58}//download.eclipse.org/releases/fred);", configure);
-
- //update.id = com.zoobar
- //update.range = [4.0,4.3)
- //update.severity = 0
- //update.description = This is the description
+ assertEquals("1.2",
+ "addRepository(type:0,location:http${#58}//download.eclipse.org/releases/fred);addRepository(type:1,location:http${#58}//download.eclipse.org/releases/fred);",
+ configure);
+
+ // update.id = com.zoobar
+ // update.range = [4.0,4.3)
+ // update.severity = 0
+ // update.description = This is the description
IUpdateDescriptor update = product.getUpdateDescriptor();
assertEquals("2.0", 0, update.getSeverity());
assertEquals("2.1", "This is the description", update.getDescription());
- //unit that fits in range
+ // unit that fits in range
assertTrue("2.2", update.isUpdateOf(createIU("com.zoobar", Version.createOSGi(4, 1, 0))));
- //unit that is too old for range
+ // unit that is too old for range
assertFalse("2.3", update.isUpdateOf(createIU("com.zoobar", Version.createOSGi(3, 1, 0))));
- //version that is too new and outside of range
+ // version that is too new and outside of range
assertFalse("2.4", update.isUpdateOf(createIU("com.zoobar", Version.createOSGi(6, 1, 0))));
- //unit with matching version but not matching id
+ // unit with matching version but not matching id
assertFalse("2.6", update.isUpdateOf(createIU("com.other", Version.createOSGi(4, 1, 0))));
}
public void testFiltersOfInclusions() throws Exception {
- ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "productIncludingFragments.product").toString());
+ ProductFile productFile = new ProductFile(
+ TestData.getFile("ProductActionTest", "productIncludingFragments.product").toString());
addContextIU("generalbundle", "1.0.1");
addContextIU("fragment.win", "1.0.2", WIN_FILTER);
// no fragment.linux in the context
@@ -339,39 +368,48 @@ public class ProductActionTest extends ActionTest {
IStatus status = performProductActionAndReturnStatus(productFile);
IInstallableUnit productIU = getUniquePublishedIU("productIncludingFragments.uid");
- assertThat(productIU.getRequirements(), hasItem(createIURequirement("generalbundle", createStrictVersionRange("1.0.1"))));
- assertThat(productIU.getRequirements(), hasItem(createIURequirement("fragment.win", createStrictVersionRange("1.0.2"), WIN_FILTER)));
+ assertThat(productIU.getRequirements(),
+ hasItem(createIURequirement("generalbundle", createStrictVersionRange("1.0.1"))));
+ assertThat(productIU.getRequirements(),
+ hasItem(createIURequirement("fragment.win", createStrictVersionRange("1.0.2"), WIN_FILTER)));
- // this is bug 390361: the Linux fragment is required without filter, so the product cannot be installed for Windows ...
+ // this is bug 390361: the Linux fragment is required without filter, so the
+ // product cannot be installed for Windows ...
assertThat(productIU.getRequirements(), hasItem(createIURequirement("fragment.linux", ANY_VERSION)));
// ... therefore the action shall report an error
assertThat(status, is(errorStatus()));
- assertThat(Arrays.asList(status.getChildren()), hasItem(statusWithMessageWhich(containsString("Included element fragment.linux 0.0.0 is missing"))));
+ assertThat(Arrays.asList(status.getChildren()),
+ hasItem(statusWithMessageWhich(containsString("Included element fragment.linux 0.0.0 is missing"))));
}
public void testMessageForProductWithIgnoredContent() throws Exception {
- ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "mixedContentIgnored.product").toString());
+ ProductFile productFile = new ProductFile(
+ TestData.getFile("ProductActionTest", "mixedContentIgnored.product").toString());
IStatus status = performProductActionAndReturnStatus(productFile);
- // expect a warning about redundant, ignored content in product file -> requested in bug 325611
+ // expect a warning about redundant, ignored content in product file ->
+ // requested in bug 325611
assertThat(Arrays.asList(status.getChildren()), hasItem(statusWithMessageWhich(containsString("are ignored"))));
// TODO the message should have a code identifying it
}
public void testJREIncluded() throws Exception {
- ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "brandedProduct/branded.product").toString());
+ ProductFile productFile = new ProductFile(
+ TestData.getFile("ProductActionTest", "brandedProduct/branded.product").toString());
addContextIU("org.eclipse.platform.feature.group", "1.2.3");
performProductAction(productFile);
Collection<IInstallableUnit> ius = publisherResult.getIUs("branded.product", IPublisherResult.NON_ROOT);
assertEquals(1, ius.size());
assertEquals("Missing a.jre.javase", 1, publisherResult.getIUs("a.jre.javase", IPublisherResult.ROOT).size());
- assertEquals("Missing config.a.jre.javase", 1, publisherResult.getIUs("config.a.jre.javase", IPublisherResult.ROOT).size());
+ assertEquals("Missing config.a.jre.javase", 1,
+ publisherResult.getIUs("config.a.jre.javase", IPublisherResult.ROOT).size());
}
public void testRequiredEEAsSpecified() throws Exception {
- ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "productFileActionTest.product").toString());
+ ProductFile productFile = new ProductFile(
+ TestData.getFile("ProductActionTest", "productFileActionTest.product").toString());
addContextIU("org.eclipse.core.commands", "5.0.0");
performProductAction(productFile);
@@ -408,7 +446,7 @@ public class ProductActionTest extends ActionTest {
}
private void setConfiguration(String configSpec) {
- ((PublisherInfo) publisherInfo).setConfigurations(new String[] {configSpec});
+ ((PublisherInfo) publisherInfo).setConfigurations(new String[] { configSpec });
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionTestMac.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionTestMac.java
index f94770a74..7673a092c 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionTestMac.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionTestMac.java
@@ -13,22 +13,23 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.publisher.actions;
-import static org.easymock.EasyMock.*;
import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.okStatus;
import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.verify;
import java.io.File;
-import java.util.Collections;
-import org.easymock.Capture;
-import org.easymock.EasyMock;
+import java.util.stream.Collectors;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile;
-import org.eclipse.equinox.p2.metadata.Version;
-import org.eclipse.equinox.p2.publisher.*;
-import org.eclipse.equinox.p2.publisher.actions.RootIUAdvice;
-import org.eclipse.equinox.p2.publisher.eclipse.*;
+import org.eclipse.equinox.p2.publisher.AbstractPublisherAction;
+import org.eclipse.equinox.p2.publisher.IPublisherAdvice;
+import org.eclipse.equinox.p2.publisher.eclipse.IExecutableAdvice;
+import org.eclipse.equinox.p2.publisher.eclipse.ProductAction;
+import org.eclipse.equinox.p2.publisher.eclipse.ProductFileAdvice;
import org.eclipse.equinox.p2.tests.TestData;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mockito;
/**
* Tests for {@link ProductAction} specific to Mac.
@@ -36,30 +37,11 @@ import org.eclipse.equinox.p2.tests.TestData;
public class ProductActionTestMac extends ActionTest {
private File executablesFeatureLocation = null;
- private Capture<RootIUAdvice> rootIUAdviceCapture;
- private Capture<ProductFileAdvice> productFileAdviceCapture;
private String source = "";
@Override
- protected IPublisherInfo createPublisherInfoMock() {
- //override to create a nice mock, because we don't care about other method calls.
- return createNiceMock(IPublisherInfo.class);
- }
-
- @Override
- protected void insertPublisherInfoBehavior() {
- publisherInfo.addAdvice(EasyMock.and(EasyMock.isA(RootIUAdvice.class), EasyMock.capture(rootIUAdviceCapture)));
- publisherInfo.addAdvice(EasyMock.and(EasyMock.isA(ProductFileAdvice.class), EasyMock.capture(productFileAdviceCapture)));
- //Return an empty list every time getAdvice is called
- expect(publisherInfo.getAdvice((String) anyObject(), anyBoolean(), (String) anyObject(), (Version) anyObject(), (Class<IPublisherAdvice>) anyObject())).andReturn(Collections.emptyList());
- expectLastCall().anyTimes();
- }
-
- @Override
public void setUp() throws Exception {
configSpec = AbstractPublisherAction.createConfigSpec("carbon", "macosx", "x86");
- rootIUAdviceCapture = new Capture<>();
- productFileAdviceCapture = new Capture<>();
setupPublisherInfo();
setupPublisherResult();
}
@@ -68,13 +50,16 @@ public class ProductActionTestMac extends ActionTest {
* Tests that correct advice is created for the org.eclipse.platform product.
*/
public void testPlatformProduct() throws Exception {
+ ArgumentCaptor<IPublisherAdvice> productFileAdviceCapture = ArgumentCaptor.forClass(IPublisherAdvice.class);
ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "platform.product").toString());
addContextIU("org.eclipse.platform.feature.group", "3.8.3");
- testAction = new ProductAction(source, productFile, flavorArg, executablesFeatureLocation);
+ testAction = Mockito.spy(new ProductAction(source, productFile, flavorArg, executablesFeatureLocation));
IStatus status = testAction.perform(publisherInfo, publisherResult, null);
+ verify(publisherInfo, Mockito.atLeastOnce()).addAdvice(productFileAdviceCapture.capture());
assertThat(status, is(okStatus()));
- IExecutableAdvice launchAdvice = productFileAdviceCapture.getValue();
+ IExecutableAdvice launchAdvice = (IExecutableAdvice) productFileAdviceCapture.getAllValues().stream()
+ .filter(ProductFileAdvice.class::isInstance).collect(Collectors.toList()).get(0);
assertEquals("1.0", "eclipse", launchAdvice.getExecutableName());
String[] programArgs = launchAdvice.getProgramArguments();
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionWithJRELocationTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionWithJRELocationTest.java
index 1971024bc..b6e35da61 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionWithJRELocationTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionWithJRELocationTest.java
@@ -16,14 +16,21 @@ package org.eclipse.equinox.p2.tests.publisher.actions;
import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.okStatus;
import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
import java.io.File;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile;
-import org.eclipse.equinox.p2.metadata.*;
-import org.eclipse.equinox.p2.publisher.*;
+import org.eclipse.equinox.p2.metadata.IInstallableUnit;
+import org.eclipse.equinox.p2.metadata.IProvidedCapability;
+import org.eclipse.equinox.p2.metadata.MetadataFactory;
+import org.eclipse.equinox.p2.metadata.Version;
+import org.eclipse.equinox.p2.publisher.IPublisherResult;
+import org.eclipse.equinox.p2.publisher.PublisherInfo;
+import org.eclipse.equinox.p2.publisher.PublisherResult;
import org.eclipse.equinox.p2.publisher.eclipse.ProductAction;
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
import org.eclipse.equinox.p2.tests.TestData;
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductContentTypeTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductContentTypeTest.java
index 8b5ac9842..14d8c0024 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductContentTypeTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductContentTypeTest.java
@@ -16,7 +16,7 @@ package org.eclipse.equinox.p2.tests.publisher.actions;
import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.errorStatus;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
import java.io.File;
import java.util.ArrayList;
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductFileAdviceTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductFileAdviceTest.java
index 3a93eb59a..91bc64d39 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductFileAdviceTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductFileAdviceTest.java
@@ -208,7 +208,7 @@ public class ProductFileAdviceTest extends AbstractProvisioningTest {
configProperties.put("osgi.bundles", "org.eclipse.equinox.simpleconfigurator@1:start");
writeProperties(new File(rootFolder, "config.ini"), configProperties);
- StringBuffer buffer = new StringBuffer();
+ StringBuilder buffer = new StringBuilder();
buffer.append("org.eclipse.equinox.common,3.5.100.v20090817,plugins/org.eclipse.equinox.common_3.5.100.v20090817.jar,2,true\n");
buffer.append("org.eclipse.equinox.simpleconfigurator,1.0.200.v20090729-1800,plugins/org.eclipse.equinox.simpleconfigurator_1.0.200.v20090729-1800.jar,1,true\n");
writeBuffer(new File(rootFolder, "org.eclipse.equinox.simpleconfigurator/bundles.info"), buffer);
@@ -229,7 +229,7 @@ public class ProductFileAdviceTest extends AbstractProvisioningTest {
File root = getTestFolder("configNullLauncher");
File testProduct = new File(root, "test.product");
- StringBuffer buffer = new StringBuffer();
+ StringBuilder buffer = new StringBuilder();
buffer.append("<product id=\"test.product\" version=\"1\" useFeatures=\"false\"> \n");
buffer.append(" <configIni use=\"default\"> \n");
buffer.append(" <win32>config.ini</win32> \n");
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductFileTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductFileTest.java
index 5ead0e223..c994a5f4c 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductFileTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductFileTest.java
@@ -17,11 +17,13 @@ package org.eclipse.equinox.p2.tests.publisher.actions;
import static org.eclipse.equinox.p2.tests.AdditionalCoreMatchers.hasSize;
import static org.hamcrest.CoreMatchers.hasItem;
import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import java.util.List;
import java.util.Map;
-import junit.framework.TestCase;
import org.eclipse.core.runtime.Platform;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.p2.publisher.eclipse.IProductDescriptor;
@@ -30,11 +32,13 @@ import org.eclipse.equinox.p2.metadata.IVersionedId;
import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.metadata.VersionedId;
import org.eclipse.equinox.p2.tests.TestData;
+import org.junit.Before;
+import org.junit.Test;
/**
* Tests the product file parser found in the publisher.
*/
-public class ProductFileTest extends TestCase {
+public class ProductFileTest {
String productFileLocation = null;
ProductFile productFile = null;
@@ -47,8 +51,8 @@ public class ProductFileTest extends TestCase {
private String uidProductFileLocation;
private ProductFile uidProductFile;
- @Override
- protected void setUp() throws Exception {
+ @Before
+ public void setUp() throws Exception {
productFileLocation = TestData.getFile("ProductActionTest/productWithConfig", "sample.product").toString();
noLauncherFlag = new ProductFile(TestData.getFile("ProductActionTest/launcherFlags", "noLauncherFlag.product").toString());
falseLauncherFlag = new ProductFile(TestData.getFile("ProductActionTest/launcherFlags", "falseLauncherFlag.product").toString());
@@ -62,6 +66,7 @@ public class ProductFileTest extends TestCase {
/**
* Test method for {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getLauncherName()}.
*/
+ @Test
public void testGetLauncherName() {
assertEquals("1.0", "sample", productFile.getLauncherName());
}
@@ -69,6 +74,7 @@ public class ProductFileTest extends TestCase {
/**
* Test method for {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getLocation()}.
*/
+ @Test
public void testGetLocation() {
assertEquals("1.0", productFileLocation, productFile.getLocation().toString());
}
@@ -76,6 +82,7 @@ public class ProductFileTest extends TestCase {
/**
* Test method for {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getProperties()}.
*/
+ @Test
public void testGetConfigurationProperties() {
Map<String, String> properties = productFile.getConfigurationProperties();
assertEquals("1.0", 4, properties.size());
@@ -86,8 +93,10 @@ public class ProductFileTest extends TestCase {
}
/**
- * Test method for {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getBundles(boolean)}.
+ * Test method for
+ * {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getBundles(boolean)}.
*/
+ @Test
public void testGetBundles() {
List<IVersionedId> bundles = productFile.getBundles(false);
assertEquals("1.0", 1, bundles.size());
@@ -98,8 +107,10 @@ public class ProductFileTest extends TestCase {
}
/**
- * Test method for {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getBundleInfos()}.
+ * Test method for
+ * {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getBundleInfos()}.
*/
+ @Test
public void testGetBundleInfos() {
List<BundleInfo> bundleInfos = productFile.getBundleInfos();
BundleInfo info = bundleInfos.iterator().next();
@@ -110,8 +121,10 @@ public class ProductFileTest extends TestCase {
}
/**
- * Test method for {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getFragments()}.
+ * Test method for
+ * {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getFragments()}.
*/
+ @Test
public void testGetFragments() {
List<IVersionedId> fragments = productFile.getFragments();
assertEquals("1.0", 1, fragments.size());
@@ -119,8 +132,10 @@ public class ProductFileTest extends TestCase {
}
/**
- * Test method for {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getFeatures()}.
+ * Test method for
+ * {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getFeatures()}.
*/
+ @Test
public void testGetFeatures() {
List<IVersionedId> features = productFile.getFeatures();
assertEquals("1.0", 1, features.size());
@@ -128,6 +143,7 @@ public class ProductFileTest extends TestCase {
assertEquals("1.2", Version.create("3.5.0.v20081110-9C9tEvNEla71LZ2jFz-RFB-t"), features.get(0).getVersion());
}
+ @Test
public void testGetRootFeatures() {
List<IVersionedId> features = rootFeaturesProduct.getFeatures(IProductDescriptor.ROOT_FEATURES);
assertThat(features, hasItem(new VersionedId("org.eclipse.help", "2.0.102.v20140128")));
@@ -135,6 +151,7 @@ public class ProductFileTest extends TestCase {
assertThat(features, hasSize(2));
}
+ @Test
public void testGetIncludedFeatures() {
List<IVersionedId> features = rootFeaturesProduct.getFeatures(IProductDescriptor.INCLUDED_FEATURES);
assertThat(features, hasItem(new VersionedId("org.eclipse.rcp", "4.4.0.v20140128")));
@@ -142,10 +159,12 @@ public class ProductFileTest extends TestCase {
assertThat(features, hasSize(2));
}
+ @Test
public void testGetFeaturesOnlyReturnsIncludedFeatures() {
assertThat(rootFeaturesProduct.getFeatures(), is(rootFeaturesProduct.getFeatures(IProductDescriptor.INCLUDED_FEATURES)));
}
+ @Test
public void testHasFeatures() throws Exception {
ProductFile featuresOnly = new ProductFile(TestData.getFile("ProductActionTest", "onlyFeatures.product").toString());
assertThat(featuresOnly.hasFeatures(), is(true));
@@ -153,6 +172,7 @@ public class ProductFileTest extends TestCase {
assertThat(featuresOnly.hasBundles(true), is(false));
}
+ @Test
public void testHasBundles() throws Exception {
ProductFile bundlesOnly = new ProductFile(TestData.getFile("ProductActionTest", "onlyBundles.product").toString());
assertThat(bundlesOnly.hasFeatures(), is(false));
@@ -160,6 +180,7 @@ public class ProductFileTest extends TestCase {
assertThat(bundlesOnly.hasBundles(true), is(true));
}
+ @Test
public void testHasFragments() throws Exception {
ProductFile bundlesOnly = new ProductFile(TestData.getFile("ProductActionTest", "onlyFragments.product").toString());
assertThat(bundlesOnly.hasFeatures(), is(false));
@@ -177,69 +198,86 @@ public class ProductFileTest extends TestCase {
// assertEquals("1.1", absolutePath, icons[0]);
// }
/**
- * Test method for {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getConfigIniPath()}.
+ * Test method for
+ * {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getConfigIniPath()}.
*/
+ @Test
public void testGetConfigIniPath() {
String configIni = productFile.getConfigIniPath("win32");
assertEquals("1.0", "config.ini", configIni);
}
/**
- * Test method for {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getId()}.
+ * Test method for
+ * {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getId()}.
*/
+ @Test
public void testGetId() {
String id = productFile.getId();
assertEquals("1.0", "test.product", id);
}
+ @Test
public void testGetUID() {
String id = uidProductFile.getId();
assertEquals("1.0", "UID.test.product", id);
}
/**
- * Test method for {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getSplashLocation()}.
+ * Test method for
+ * {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getSplashLocation()}.
*/
+ @Test
public void testGetSplashLocation() {
String splashLocation = productFile.getSplashLocation();
assertEquals("1.0", "org.eclipse.equinox.p2.tests", splashLocation);
}
/**
- * Test method for {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getProductName()}.
+ * Test method for
+ * {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getProductName()}.
*/
+ @Test
public void testGetProductName() {
String productName = productFile.getProductName();
assertEquals("1.0", "aaTestProduct", productName);
}
/**
- * Test method for {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getApplication()}.
+ * Test method for
+ * {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getApplication()}.
*/
+ @Test
public void testGetApplication() {
String application = productFile.getApplication();
assertEquals("1.0", "test.app", application);
}
/**
- * Test method for {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#useFeatures()}.
+ * Test method for
+ * {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#useFeatures()}.
*/
+ @Test
public void testUseFeatures() {
boolean useFeatures = productFile.useFeatures();
assertTrue("1.0", !useFeatures);
}
/**
- * Test method for {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getVersion()}.
+ * Test method for
+ * {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getVersion()}.
*/
+ @Test
public void testGetVersion() {
String version = productFile.getVersion();
assertEquals("1.0", Version.create("1"), Version.create(version));
}
/**
- * Test method for {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getVMArguments(java.lang.String)}.
+ * Test method for
+ * {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getVMArguments(java.lang.String)}.
*/
+ @Test
public void testGetVMArguments() {
String vmArguments = productFile.getVMArguments("");
assertEquals("1.0", "vmArg -Dfoo=\"b a r\"", vmArguments);
@@ -247,6 +285,7 @@ public class ProductFileTest extends TestCase {
assertEquals("1.1", "vmArg -Dfoo=\"b a r\"", vmArguments);
}
+ @Test
public void testIncludeLaunchers() {
assertEquals("1.0", true, noLauncherFlag.includeLaunchers());
assertEquals("1.1", false, falseLauncherFlag.includeLaunchers());
@@ -254,8 +293,10 @@ public class ProductFileTest extends TestCase {
}
/**
- * Test method for {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getProgramArguments(java.lang.String)}.
+ * Test method for
+ * {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getProgramArguments(java.lang.String)}.
*/
+ @Test
public void testGetProgramArguments() {
String programArguments = productFile.getProgramArguments("");
assertEquals("1.0", "programArg -name \"My Name\"", programArguments);
@@ -263,18 +304,21 @@ public class ProductFileTest extends TestCase {
assertEquals("1.1", "programArg -name \"My Name\"", programArguments);
}
+ @Test
public void testGetLicenseURL() throws Exception {
String productWithLicense = TestData.getFile("ProductActionTest", "productWithLicense.product").toString();
ProductFile product = new ProductFile(productWithLicense);
assertEquals("1.0", "http://www.example.com", product.getLicenseURL());
}
+ @Test
public void testGetLicenseText() throws Exception {
String productWithLicense = TestData.getFile("ProductActionTest", "productWithLicense.product").toString();
ProductFile product = new ProductFile(productWithLicense);
assertEquals("1.0", "This is the liCenSE.", product.getLicenseText().trim());
}
+ @Test
public void testGetVM() throws Exception {
String productWithVM = TestData.getFile("ProductActionTest", "productWithVM.product").toString();
ProductFile product = new ProductFile(productWithVM);
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/RootFilesActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/RootFilesActionTest.java
index 9fa2a5d65..030cd8b2a 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/RootFilesActionTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/RootFilesActionTest.java
@@ -15,19 +15,30 @@
******************************************************************************/
package org.eclipse.equinox.p2.tests.publisher.actions;
-import static org.easymock.EasyMock.expect;
-
-import java.io.*;
-import java.util.*;
+import static org.mockito.Mockito.when;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import java.util.zip.ZipInputStream;
-import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
import org.eclipse.equinox.internal.p2.core.helpers.FileUtils;
import org.eclipse.equinox.internal.p2.metadata.ArtifactKey;
import org.eclipse.equinox.p2.metadata.IArtifactKey;
import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.publisher.AbstractPublisherAction;
import org.eclipse.equinox.p2.publisher.IPublisherInfo;
-import org.eclipse.equinox.p2.publisher.actions.*;
+import org.eclipse.equinox.p2.publisher.actions.IRootFilesAdvice;
+import org.eclipse.equinox.p2.publisher.actions.ITouchpointAdvice;
+import org.eclipse.equinox.p2.publisher.actions.RootFilesAction;
+import org.eclipse.equinox.p2.publisher.actions.RootFilesAdvice;
import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
import org.eclipse.equinox.p2.tests.TestActivator;
import org.eclipse.equinox.p2.tests.TestData;
@@ -68,10 +79,13 @@ public class RootFilesActionTest extends ActionTest {
@Override
public void insertPublisherInfoBehavior() {
- expect(publisherInfo.getArtifactRepository()).andReturn(artifactRepository).anyTimes();
- expect(publisherInfo.getArtifactOptions()).andReturn(IPublisherInfo.A_INDEX | IPublisherInfo.A_OVERWRITE | IPublisherInfo.A_PUBLISH).anyTimes();
- expect(publisherInfo.getAdvice(configSpec, true, null, null, IRootFilesAdvice.class)).andReturn(adviceCollection).anyTimes();
- expect(publisherInfo.getAdvice(configSpec, false, flavorArg + topArg, versionArg, ITouchpointAdvice.class)).andReturn(null).anyTimes();
+ when(publisherInfo.getArtifactRepository()).thenReturn(artifactRepository);
+ when(publisherInfo.getArtifactOptions())
+ .thenReturn(IPublisherInfo.A_INDEX | IPublisherInfo.A_OVERWRITE | IPublisherInfo.A_PUBLISH);
+ when(publisherInfo.getAdvice(configSpec, true, null, null, IRootFilesAdvice.class))
+ .thenReturn(adviceCollection);
+ when(publisherInfo.getAdvice(configSpec, false, flavorArg + topArg, versionArg, ITouchpointAdvice.class))
+ .thenReturn(null);
}
private void setupTestCase(int testArg) throws Exception {
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/RootIUActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/RootIUActionTest.java
index f8196c566..637465c39 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/RootIUActionTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/RootIUActionTest.java
@@ -15,15 +15,28 @@
******************************************************************************/
package org.eclipse.equinox.p2.tests.publisher.actions;
-import static org.easymock.EasyMock.expect;
+import static org.mockito.Mockito.when;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Status;
import org.eclipse.equinox.internal.p2.metadata.IRequiredCapability;
-import org.eclipse.equinox.p2.metadata.*;
+import org.eclipse.equinox.p2.metadata.IInstallableUnit;
+import org.eclipse.equinox.p2.metadata.IRequirement;
+import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.publisher.IPublisherResult;
-import org.eclipse.equinox.p2.publisher.actions.*;
+import org.eclipse.equinox.p2.publisher.actions.IAdditionalInstallableUnitAdvice;
+import org.eclipse.equinox.p2.publisher.actions.ICapabilityAdvice;
+import org.eclipse.equinox.p2.publisher.actions.ILicenseAdvice;
+import org.eclipse.equinox.p2.publisher.actions.IPropertyAdvice;
+import org.eclipse.equinox.p2.publisher.actions.IRootIUAdvice;
+import org.eclipse.equinox.p2.publisher.actions.ITouchpointAdvice;
+import org.eclipse.equinox.p2.publisher.actions.IUpdateDescriptorAdvice;
+import org.eclipse.equinox.p2.publisher.actions.IVersionAdvice;
+import org.eclipse.equinox.p2.publisher.actions.RootIUAction;
+import org.eclipse.equinox.p2.publisher.actions.RootIUAdvice;
+import org.eclipse.equinox.p2.publisher.actions.RootIUResultFilterAdvice;
import org.eclipse.equinox.p2.query.IQuery;
import org.eclipse.equinox.p2.query.MatchQuery;
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
@@ -233,7 +246,7 @@ public class RootIUActionTest extends ActionTest {
IQuery<IInstallableUnit> query = null;
rootIUAdviceCollection = new ArrayList<>();
if ((testSpec & CONTAINS_A) > 0) {
- query = new MatchQuery<IInstallableUnit>() {
+ query = new MatchQuery<>() {
@Override
public boolean isMatch(IInstallableUnit candidate) {
if (candidate.getId().equals(iu_A))
@@ -244,7 +257,7 @@ public class RootIUActionTest extends ActionTest {
rootIUAdviceCollection.add(new RootIUResultFilterAdvice(query));
}
if ((testSpec & CONTAINS_B) > 0) {
- query = new MatchQuery<IInstallableUnit>() {
+ query = new MatchQuery<>() {
@Override
public boolean isMatch(IInstallableUnit candidate) {
if (candidate.getId().equals(iu_B))
@@ -255,7 +268,7 @@ public class RootIUActionTest extends ActionTest {
rootIUAdviceCollection.add(new RootIUResultFilterAdvice(query));
}
if ((testSpec & EMPTY) > 0) {
- query = new MatchQuery<IInstallableUnit>() {
+ query = new MatchQuery<>() {
@Override
public boolean isMatch(IInstallableUnit candidate) {
return false;
@@ -300,8 +313,8 @@ public class RootIUActionTest extends ActionTest {
}
private boolean contains(Collection<IRequirement> required, String iu) {
- for (Iterator<IRequirement> iterator = required.iterator(); iterator.hasNext();) {
- IRequiredCapability req = (IRequiredCapability) iterator.next();
+ for (IRequirement requirement : required) {
+ IRequiredCapability req = (IRequiredCapability) requirement;
if (req.getName().equalsIgnoreCase(iu))
return true;
}
@@ -345,16 +358,22 @@ public class RootIUActionTest extends ActionTest {
@Override
public void insertPublisherInfoBehavior() {
- expect(publisherInfo.getAdvice(null, false, rootIU, versionArg, ICapabilityAdvice.class)).andReturn(new ArrayList<>()).anyTimes();
- expect(publisherInfo.getAdvice(null, true, null, null, IRootIUAdvice.class)).andReturn(rootIUAdviceCollection).anyTimes();
- expect(publisherInfo.getAdvice(null, true, null, null, IVersionAdvice.class)).andReturn(null).anyTimes();
- expect(publisherInfo.getAdvice(null, false, rootIU, versionArg, ITouchpointAdvice.class)).andReturn(new ArrayList<>()).anyTimes();
- expect(publisherInfo.getAdvice(null, false, rootIU, versionArg, IUpdateDescriptorAdvice.class)).andReturn(new ArrayList<>()).anyTimes();
- expect(publisherInfo.getAdvice(null, false, rootIU, versionArg, IPropertyAdvice.class)).andReturn(new ArrayList<>()).anyTimes();
- expect(publisherInfo.getAdvice(null, false, rootIU, versionArg, IAdditionalInstallableUnitAdvice.class)).andReturn(new ArrayList<>()).anyTimes();
- expect(publisherInfo.getAdvice(null, true, rootIU, versionArg, ILicenseAdvice.class)).andReturn(new ArrayList<>()).anyTimes();
- expect(publisherInfo.getMetadataRepository()).andReturn(metadataRepository).anyTimes();
- expect(publisherInfo.getContextMetadataRepository()).andReturn(null).anyTimes();
+ when(publisherInfo.getAdvice(null, false, rootIU, versionArg, ICapabilityAdvice.class))
+ .thenReturn(new ArrayList<>());
+ when(publisherInfo.getAdvice(null, true, null, null, IRootIUAdvice.class)).thenReturn(rootIUAdviceCollection);
+ when(publisherInfo.getAdvice(null, true, null, null, IVersionAdvice.class)).thenReturn(null);
+ when(publisherInfo.getAdvice(null, false, rootIU, versionArg, ITouchpointAdvice.class))
+ .thenReturn(new ArrayList<>());
+ when(publisherInfo.getAdvice(null, false, rootIU, versionArg, IUpdateDescriptorAdvice.class))
+ .thenReturn(new ArrayList<>());
+ when(publisherInfo.getAdvice(null, false, rootIU, versionArg, IPropertyAdvice.class))
+ .thenReturn(new ArrayList<>());
+ when(publisherInfo.getAdvice(null, false, rootIU, versionArg, IAdditionalInstallableUnitAdvice.class))
+ .thenReturn(new ArrayList<>());
+ when(publisherInfo.getAdvice(null, true, rootIU, versionArg, ILicenseAdvice.class))
+ .thenReturn(new ArrayList<>());
+ when(publisherInfo.getMetadataRepository()).thenReturn(metadataRepository);
+ when(publisherInfo.getContextMetadataRepository()).thenReturn(null);
}
@Override
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/StatusMatchers.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/StatusMatchers.java
index e36613494..ba885edcb 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/StatusMatchers.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/StatusMatchers.java
@@ -14,12 +14,14 @@
package org.eclipse.equinox.p2.tests.publisher.actions;
import org.eclipse.core.runtime.IStatus;
-import org.hamcrest.*;
+import org.hamcrest.Description;
+import org.hamcrest.Matcher;
+import org.hamcrest.TypeSafeMatcher;
public class StatusMatchers {
public static Matcher<IStatus> errorStatus() {
- return new TypeSafeMatcher<IStatus>() {
+ return new TypeSafeMatcher<>() {
@Override
public void describeTo(Description description) {
@@ -34,7 +36,7 @@ public class StatusMatchers {
}
public static Matcher<IStatus> okStatus() {
- return new TypeSafeMatcher<IStatus>() {
+ return new TypeSafeMatcher<>() {
@Override
public void describeTo(Description description) {
@@ -49,7 +51,7 @@ public class StatusMatchers {
}
public static Matcher<IStatus> statusWithMessageWhich(final Matcher<String> messageMatcher) {
- return new TypeSafeMatcher<IStatus>() {
+ return new TypeSafeMatcher<>() {
@Override
public void describeTo(Description description) {
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/VersionAdviceTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/VersionAdviceTest.java
index 744d93338..9d8df9cec 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/VersionAdviceTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/VersionAdviceTest.java
@@ -1,4 +1,4 @@
-/*******************************************************************************
+/*******************************************************************************
* Copyright (c) 2009, 2010 EclipseSource and others.
*
* This
@@ -14,21 +14,24 @@
******************************************************************************/
package org.eclipse.equinox.p2.tests.publisher.actions;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+
import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.publisher.actions.VersionAdvice;
import org.eclipse.equinox.p2.tests.TestData;
+import org.junit.Test;
/**
* Test cases for VersionAdvice
*/
-public class VersionAdviceTest extends TestCase {
-
+public class VersionAdviceTest {
+ @Test
public void testBadVersionPropertyFile() {
VersionAdvice versionAdvice = new VersionAdvice();
versionAdvice.load(null, "some random string");
}
+ @Test
public void testLoadNullVersionAdvice() throws Exception {
String versionAdviceFoo = TestData.getFile("publisher", "versionadvicefoo.prop").toString();
VersionAdvice versionAdvice = new VersionAdvice();
@@ -38,6 +41,7 @@ public class VersionAdviceTest extends TestCase {
assertEquals("3.0", Version.create("1.4.0"), versionAdvice.getVersion(null, "org.eclipse.tptp"));
}
+ @Test
public void testLoadNullVersionAdvice2() throws Exception {
String versionAdviceFoo = TestData.getFile("publisher", "versionadvicefoo.prop").toString();
VersionAdvice versionAdvice = new VersionAdvice();
@@ -47,6 +51,7 @@ public class VersionAdviceTest extends TestCase {
assertEquals("3.0", Version.create("1.4.0"), versionAdvice.getVersion(null, "org.eclipse.tptp"));
}
+ @Test
public void testOverloadNull() throws Exception {
String versionAdviceFoo = TestData.getFile("publisher", "versionadvicefoo.prop").toString();
String versionAdviceBar = TestData.getFile("publisher", "versionadvicebar.prop").toString();
@@ -59,6 +64,7 @@ public class VersionAdviceTest extends TestCase {
assertEquals("3.0", Version.create("1.5.0"), versionAdvice.getVersion(null, "org.eclipse.tptp"));
}
+ @Test
public void testLoadVersionAdviceFoo() throws Exception {
String versionAdviceFoo = TestData.getFile("publisher", "versionadvicefoo.prop").toString();
VersionAdvice versionAdvice = new VersionAdvice();
@@ -69,6 +75,7 @@ public class VersionAdviceTest extends TestCase {
assertEquals("4.0", null, versionAdvice.getVersion(null, "org.eclipse.tptp"));
}
+ @Test
public void testLoadVersionAdviceBar() throws Exception {
String versionAdviceBar = TestData.getFile("publisher", "versionadvicebar.prop").toString();
VersionAdvice versionAdvice = new VersionAdvice();
@@ -79,6 +86,7 @@ public class VersionAdviceTest extends TestCase {
assertEquals("4.0", Version.create("1.5.0"), versionAdvice.getVersion("bar", "org.eclipse.tptp"));
}
+ @Test
public void testLoadVersionAdviceFooBar() throws Exception {
String versionAdviceFoo = TestData.getFile("publisher", "versionadvicefoo.prop").toString();
String versionAdviceBar = TestData.getFile("publisher", "versionadvicebar.prop").toString();
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/AllTests.java
index a5d3ec5d7..3976f2b21 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/AllTests.java
@@ -7,25 +7,20 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.ql;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all automated director tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(EvaluatorTest.class);
- suite.addTestSuite(PerformanceTest.class);
- suite.addTestSuite(TestQueryReimplementation.class);
- return suite;
- }
-
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ EvaluatorTest.class, PerformanceTest.class, TestQueryReimplementation.class })
+public class AllTests {
+// test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/PerformanceTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/PerformanceTest.java
index c98cdff73..e0fb19b41 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/PerformanceTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ql/PerformanceTest.java
@@ -58,7 +58,7 @@ public class PerformanceTest extends AbstractProvisioningTest {
IMetadataRepository repo = getMDR("/testData/galileoM7");
IQuery<IInstallableUnit> expressionQuery = QueryUtil.createMatchQuery("id ~= /com.ibm.*/");
- IQuery<IInstallableUnit> matchQuery = new MatchQuery<IInstallableUnit>() {
+ IQuery<IInstallableUnit> matchQuery = new MatchQuery<>() {
@Override
public boolean isMatch(IInstallableUnit candidate) {
return candidate.getId().startsWith("com.ibm.");
@@ -93,7 +93,7 @@ public class PerformanceTest extends AbstractProvisioningTest {
IMetadataRepository repo = getMDR("/testData/galileoM7");
IQuery<IInstallableUnit> expressionQuery = QueryUtil.createMatchQuery("id == 'org.eclipse.core.resources'");
- IQuery<IInstallableUnit> matchQuery = new MatchQuery<IInstallableUnit>() {
+ IQuery<IInstallableUnit> matchQuery = new MatchQuery<>() {
@Override
public boolean isMatch(IInstallableUnit candidate) {
return candidate.getId().equals("org.eclipse.core.resources");
@@ -128,7 +128,7 @@ public class PerformanceTest extends AbstractProvisioningTest {
IMetadataRepository repo = getMDR("/testData/galileoM7");
IQuery<IInstallableUnit> expressionQuery = QueryUtil.createMatchQuery("providedCapabilities.exists(x | x.namespace == 'org.eclipse.equinox.p2.iu' && x.name == 'org.eclipse.core.resources')");
- IQuery<IInstallableUnit> matchQuery = new MatchQuery<IInstallableUnit>() {
+ IQuery<IInstallableUnit> matchQuery = new MatchQuery<>() {
@Override
public boolean isMatch(IInstallableUnit candidate) {
for (IProvidedCapability capability : candidate.getProvidedCapabilities())
@@ -165,7 +165,7 @@ public class PerformanceTest extends AbstractProvisioningTest {
IMetadataRepository repo = getMDR("/testData/galileoM7");
- IQuery<IInstallableUnit> matchQuery = new MatchQuery<IInstallableUnit>() {
+ IQuery<IInstallableUnit> matchQuery = new MatchQuery<>() {
@Override
public boolean isMatch(IInstallableUnit candidate) {
return candidate.getId().startsWith("org.eclipse.");
@@ -180,7 +180,7 @@ public class PerformanceTest extends AbstractProvisioningTest {
long start = System.currentTimeMillis();
for (int idx = 0; idx < 80; ++idx) {
IQueryResult<IInstallableUnit> everything = repo.query(QueryUtil.createIUAnyQuery(), new NullProgressMonitor());
- Iterator<IInstallableUnit> matchIter = new MatchIteratorFilter<IInstallableUnit>(everything.iterator()) {
+ Iterator<IInstallableUnit> matchIter = new MatchIteratorFilter<>(everything.iterator()) {
@Override
protected boolean isMatch(IInstallableUnit candidate) {
return candidate.getId().startsWith("org.eclipse.");
@@ -198,8 +198,7 @@ public class PerformanceTest extends AbstractProvisioningTest {
start = System.currentTimeMillis();
for (int idx = 0; idx < 80; ++idx) {
int sz = 0;
- for (Iterator<IInstallableUnit> iter = repo.query(QueryUtil.createIUAnyQuery(), new NullProgressMonitor()).iterator(); iter.hasNext();) {
- IInstallableUnit candidate = iter.next();
+ for (IInstallableUnit candidate : repo.query(QueryUtil.createIUAnyQuery(), new NullProgressMonitor())) {
if (candidate.getId().startsWith("org.eclipse."))
sz++;
}
@@ -395,7 +394,7 @@ public class PerformanceTest extends AbstractProvisioningTest {
IInstallableUnit envIU = InstallableUnit.contextIU(env);
CompositeMetadataRepository compositeMetadataRepository = CompositeMetadataRepository.createMemoryComposite(getMetadataRepositoryManager().getAgent());
- compositeMetadataRepository.addChild(new URI("http://download.eclipse.org/releases/galileo"));
+ compositeMetadataRepository.addChild(new URI("https://download.eclipse.org/releases/galileo"));
IMetadataRepository repo = compositeMetadataRepository;
IQueryResult<IInstallableUnit> r = repo.query(QueryUtil.createIUQuery("org.eclipse.sdk.ide"), new NullProgressMonitor());
IInstallableUnit[] roots = r.toArray(IInstallableUnit.class);
@@ -445,8 +444,8 @@ public class PerformanceTest extends AbstractProvisioningTest {
private IInstallableUnit[] gatherAvailableInstallableUnits(IQueryable<IInstallableUnit> queryable) {
ArrayList<IInstallableUnit> list = new ArrayList<>();
IQueryResult<IInstallableUnit> matches = queryable.query(QueryUtil.createIUAnyQuery(), null);
- for (Iterator<IInstallableUnit> it = matches.iterator(); it.hasNext();)
- list.add(it.next());
+ for (IInstallableUnit iInstallableUnit : matches)
+ list.add(iInstallableUnit);
return list.toArray(new IInstallableUnit[list.size()]);
}
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/AbstractReconcilerTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/AbstractReconcilerTest.java
index 15a57843b..81d99b186 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/AbstractReconcilerTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/AbstractReconcilerTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2017 IBM Corporation and others.
+ * Copyright (c) 2008, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -15,16 +15,45 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.reconciler.dropins;
-import java.io.*;
-import java.net.*;
-import java.util.*;
-import org.eclipse.core.runtime.*;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileFilter;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Properties;
+import java.util.Set;
+import java.util.StringTokenizer;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
-import org.eclipse.equinox.internal.p2.core.helpers.*;
+import org.eclipse.equinox.internal.p2.core.helpers.FileUtils;
+import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
+import org.eclipse.equinox.internal.p2.core.helpers.URLUtil;
import org.eclipse.equinox.internal.p2.engine.SimpleProfileRegistry;
import org.eclipse.equinox.internal.p2.engine.SurrogateProfileHandler;
import org.eclipse.equinox.internal.p2.jarprocessor.StreamProcessor;
-import org.eclipse.equinox.internal.p2.update.*;
+import org.eclipse.equinox.internal.p2.update.Configuration;
+import org.eclipse.equinox.internal.p2.update.Feature;
+import org.eclipse.equinox.internal.p2.update.Site;
import org.eclipse.equinox.internal.p2.updatesite.Activator;
import org.eclipse.equinox.internal.simpleconfigurator.manipulator.SimpleConfiguratorManipulatorImpl;
import org.eclipse.equinox.p2.core.ProvisionException;
@@ -83,6 +112,8 @@ public class AbstractReconcilerTest extends AbstractProvisioningTest {
} catch (IOException e) {
fail("0.99", e);
}
+ } else if (file.getName().toLowerCase().endsWith(".dmg")) {
+ extractDmg("1.1", file);
} else {
untar("1.0", file);
}
@@ -91,6 +122,12 @@ public class AbstractReconcilerTest extends AbstractProvisioningTest {
exe = new File(output, getExeFolder() + "eclipse");
if (!exe.exists())
fail("Executable file: " + exe.getAbsolutePath() + "(or .exe) not found after extracting: " + file.getAbsolutePath() + " to: " + output);
+ if (!exe.canExecute()) {
+ // Try first to set --x--x--x, then --x------ if we can't do the former
+ if (!exe.setExecutable(true, false) || !exe.setExecutable(true, true)) {
+ fail("Executable file: " + exe.getAbsolutePath() + " is not executable");
+ }
+ }
}
initialized = true;
}
@@ -148,6 +185,17 @@ public class AbstractReconcilerTest extends AbstractProvisioningTest {
}
/*
+ * extract dmg given file in the output directory.
+ */
+ private void extractDmg(String message, File file) {
+ output.mkdirs();
+ run(message, new String[] { "hdiutil", "attach", file.getAbsolutePath() });
+ run(message, new String[] { "cp", "-r", "/Volumes/Eclipse/Eclipse.app", output.getAbsolutePath() + "/" });
+ run(message, new String[] { "hdiutil", "detach", "/Volumes/Eclipse" });
+ run(message, new String[] { "xattr", "-rc", output.getAbsolutePath() + "/Eclipse.app" });
+ }
+
+ /*
* Return a file object with a unique name in a temporary location.
*/
public static File getUniqueFolder() {
@@ -233,7 +281,7 @@ public class AbstractReconcilerTest extends AbstractProvisioningTest {
detailedMessage.append(" install location is ").append(getInstallLocation()).append('\n');
String message = "Need to set the \"org.eclipse.equinox.p2.reconciler.tests.platform.archive\" system property with a valid path to the platform binary drop or copy the archive to be a sibling of the install folder.";
assertNotNull(message + "\n" + detailedMessage, file);
- assertTrue(message, file.exists());
+ assertTrue(message + "\nThe file '" + file.getAbsolutePath() + "' does not exist", file.exists());
assertTrue("File is zero length: " + file.getAbsolutePath(), file.length() > 0);
return file;
}
@@ -447,7 +495,7 @@ public class AbstractReconcilerTest extends AbstractProvisioningTest {
public Configuration loadConfiguration(File configLocation, File installLocation) {
try {
- return Configuration.load(configLocation, installLocation.toURL());
+ return Configuration.load(configLocation, installLocation.toURI().toURL());
} catch (ProvisionException e) {
fail("Error while reading configuration from " + configLocation);
} catch (MalformedURLException e) {
@@ -465,7 +513,7 @@ public class AbstractReconcilerTest extends AbstractProvisioningTest {
File configLocation = new File(output, getRootFolder() + "configuration/org.eclipse.update/platform.xml");
File installLocation = new File(output, getRootFolder());
try {
- configuration.save(configLocation, installLocation.toURL());
+ configuration.save(configLocation, installLocation.toURI().toURL());
} catch (ProvisionException e) {
fail(message, e);
} catch (MalformedURLException e) {
@@ -479,9 +527,7 @@ public class AbstractReconcilerTest extends AbstractProvisioningTest {
*/
public boolean removeSite(Configuration configuration, String location) throws IOException, URISyntaxException {
File left = new File(new URI(location)).getCanonicalFile();
- List<Site> sites = configuration.getSites();
- for (Iterator<Site> iter = sites.iterator(); iter.hasNext();) {
- Site tempSite = iter.next();
+ for (Site tempSite : configuration.getSites()) {
String siteURL = tempSite.getUrl();
File right = new File(new URI(siteURL)).getCanonicalFile();
if (left.equals(right)) {
@@ -553,8 +599,7 @@ public class AbstractReconcilerTest extends AbstractProvisioningTest {
List<Site> sites = configuration.getSites();
assertNotNull(message, sites);
boolean found = false;
- for (Iterator<Site> iter = sites.iterator(); iter.hasNext();) {
- Site site = iter.next();
+ for (Site site : sites) {
Feature[] features = site.getFeatures();
for (int i = 0; features != null && i < features.length; i++) {
if (id.equals(features[i].getId())) {
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/AbstractSharedBundleProductTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/AbstractSharedBundleProductTest.java
index 2a220009d..47ff21be0 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/AbstractSharedBundleProductTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/AbstractSharedBundleProductTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010, 2017 IBM Corporation and others.
+ * Copyright (c) 2010, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,9 +13,21 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.reconciler.dropins;
-import java.io.*;
-import java.net.*;
-import java.util.*;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileFilter;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
@@ -57,7 +69,7 @@ public class AbstractSharedBundleProductTest extends AbstractReconcilerTest {
"org.eclipse.ecf.ssl", //
"org.eclipse.equinox.app", //
"org.eclipse.equinox.common", //
- "org.eclipse.equinox.ds", //
+ "org.apache.felix.scr", //
"org.eclipse.equinox.frameworkadmin", //
"org.eclipse.equinox.frameworkadmin.equinox", //
"org.eclipse.equinox.p2.artifact.repository", //
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/ConfigurationTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/ConfigurationTests.java
index e0564fece..e68e5d507 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/ConfigurationTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/ConfigurationTests.java
@@ -16,7 +16,6 @@ package org.eclipse.equinox.p2.tests.reconciler.dropins;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
-import java.util.Iterator;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.equinox.internal.p2.update.*;
@@ -387,8 +386,7 @@ public class ConfigurationTests extends AbstractReconcilerTest {
assertFalse("7.3", isInstalled("ccc", "1.0.0"));
assertFalse("7.4", isInstalled("bbb.feature.feature.group", "1.0.0"));
boolean found = false;
- for (Iterator<Site> iter = getConfiguration().getSites().iterator(); iter.hasNext();) {
- Site site = iter.next();
+ for (Site site : getConfiguration().getSites()) {
String link = site.getLinkFile();
if (link != null && link.contains("myLink"))
found = true;
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/AllTests.java
index 7ce9da580..69be7b1bc 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/AllTests.java
@@ -1,32 +1,27 @@
/*******************************************************************************
* Copyright (c) 2009, 2018 Cloudsmith Inc and others.
*
- * This program and the accompanying materials
+ * This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* Cloudsmith Inc - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.repository;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all automated repository bundle tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(CacheManagerTest.class);
- suite.addTestSuite(RepositoryHelperTest.class);
- suite.addTestSuite(RepositoryExtensionPointTest.class);
- suite.addTestSuite(FileReaderTest2.class);
- suite.addTest(new JUnit4TestAdapter(ChecksumHelperTest.class));
- return suite;
- }
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ CacheManagerTest.class, RepositoryHelperTest.class, RepositoryExtensionPointTest.class,
+ FileReaderTest2.class, ChecksumHelperTest.class })
+public class AllTests {
+ // test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/CacheManagerTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/CacheManagerTest.java
index 245ab1551..d0d15ad78 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/CacheManagerTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/CacheManagerTest.java
@@ -10,10 +10,12 @@
******************************************************************************/
package org.eclipse.equinox.p2.tests.repository;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import java.io.File;
import java.io.IOException;
import java.net.URI;
-import junit.framework.TestCase;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
@@ -24,19 +26,22 @@ import org.eclipse.equinox.p2.core.IAgentLocation;
import org.eclipse.equinox.p2.core.IProvisioningAgent;
import org.eclipse.equinox.p2.core.IProvisioningAgentProvider;
import org.eclipse.equinox.p2.core.ProvisionException;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
-public class CacheManagerTest extends TestCase {
+public class CacheManagerTest {
private static final int ONE_HOUR = 3600000;
- private URI repositoryLocation;
+ URI repositoryLocation;
private File contentXmlFile;
private CacheManager cacheManager;
private final String cachePrefix = "content"; //$NON-NLS-1$
- @Override
- protected void setUp() throws Exception {
+ @Before
+ public void setUp() throws Exception {
repositoryLocation = createRepistory();
BundleContext bundle = Platform.getBundle("org.eclipse.equinox.p2.repository").getBundleContext();
ServiceReference<IProvisioningAgentProvider> serviceReference = bundle.getServiceReference(IProvisioningAgentProvider.class);
@@ -46,12 +51,13 @@ public class CacheManagerTest extends TestCase {
cacheManager = new CacheManager(new AgentLocationMock(), transport);
}
- @Override
- protected void tearDown() throws Exception {
+ @After
+ public void tearDown() throws Exception {
Path repositoryLocationPath = new Path(repositoryLocation.getPath());
deleteFileOrDirectory(repositoryLocationPath.toFile());
}
+ @Test
public void testRepositoryDowngraded() throws ProvisionException, IOException {
File cache = cacheManager.createCache(repositoryLocation, cachePrefix, new NullProgressMonitor());
long lastModifiedInitial = cache.lastModified();
@@ -65,6 +71,7 @@ public class CacheManagerTest extends TestCase {
lastModifiedInitial == cache2.lastModified());
}
+ @Test
public void testClientDifferentTimeZone() throws ProvisionException, IOException {
File cache = cacheManager.createCache(repositoryLocation, cachePrefix, new NullProgressMonitor());
long lastModifiedInitial = cache.lastModified();
@@ -79,6 +86,7 @@ public class CacheManagerTest extends TestCase {
lastModifiedInitial + ONE_HOUR == cache2.lastModified());
}
+ @Test
public void testRepositoryUpdate() throws ProvisionException, IOException {
File cache = cacheManager.createCache(repositoryLocation, cachePrefix, new NullProgressMonitor());
long lastModifiedInitial = cache.lastModified();
@@ -103,7 +111,7 @@ public class CacheManagerTest extends TestCase {
return repository.toURI();
}
- private class AgentLocationMock implements IAgentLocation {
+ class AgentLocationMock implements IAgentLocation {
@Override
public URI getDataArea(final String namespace) {
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/FileReaderTest2.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/FileReaderTest2.java
index ea51e6291..a07f73ad8 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/FileReaderTest2.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/FileReaderTest2.java
@@ -201,7 +201,7 @@ public class FileReaderTest2 extends AbstractProvisioningTest {
}
private void doFileReaderTest(final PauseJob pauseJob, IProgressMonitor monitor) throws IOException, CoreException {
- final String testRemoteFileURL = "http://download.eclipse.org/releases/photon/201806271001/content.jar";
+ final String testRemoteFileURL = "https://download.eclipse.org/releases/2021-09/202109151000/content.jar";
File tmpFolder = getTempFolder();
File tmpFile = new File(tmpFolder, "testDownloadPauseResume.zip");
File tmpFile1 = new File(tmpFolder, "testDownloadWithoutPause.zip");
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/RepositoryExtensionPointTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/RepositoryExtensionPointTest.java
index 881b30e1a..fbd3b07e6 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/RepositoryExtensionPointTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/RepositoryExtensionPointTest.java
@@ -14,17 +14,22 @@
package org.eclipse.equinox.p2.tests.repository;
import static org.hamcrest.CoreMatchers.sameInstance;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
import java.net.URI;
import java.util.Map;
-import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
import org.eclipse.equinox.p2.core.ProvisionException;
import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
import org.eclipse.equinox.p2.repository.artifact.spi.ArtifactRepositoryFactory;
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
import org.eclipse.equinox.p2.repository.metadata.spi.MetadataRepositoryFactory;
-import org.eclipse.equinox.p2.tests.*;
+import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
+import org.eclipse.equinox.p2.tests.TestActivator;
+import org.eclipse.equinox.p2.tests.TestArtifactRepository;
+import org.eclipse.equinox.p2.tests.TestMetadataRepository;
public class RepositoryExtensionPointTest extends AbstractProvisioningTest {
/**
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/RepositoryHelperTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/RepositoryHelperTest.java
index 916a2f113..0da2613d7 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/RepositoryHelperTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/RepositoryHelperTest.java
@@ -1,30 +1,33 @@
/*******************************************************************************
* Copyright (c) 2009 Cloudsmith Inc and others.
*
- * This program and the accompanying materials
+ * This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* Cloudsmith Inc - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.repository;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import java.net.URI;
import java.net.URISyntaxException;
-import junit.framework.TestCase;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.equinox.internal.p2.repository.helpers.RepositoryHelper;
+import org.junit.Test;
/**
* Tests RepositoryHandler
*/
-public class RepositoryHelperTest extends TestCase {
-
+public class RepositoryHelperTest {
+ @Test
public void testURISyntaxChecker() throws URISyntaxException {
URI location = new URI("http://somwhere.com/path");
IStatus result = RepositoryHelper.checkRepositoryLocationSyntax(location);
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/sat4j/smoke/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/sat4j/smoke/AllTests.java
index 792408251..e10f3791b 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/sat4j/smoke/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/sat4j/smoke/AllTests.java
@@ -7,19 +7,17 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.sat4j.smoke;
-import junit.framework.*;
-
-public class AllTests extends TestCase {
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(SmokeTestSAT4J.class);
- return suite;
- }
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ SmokeTestSAT4J.class })
+public class AllTests {
+ // test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/sharedinstall/AbstractSharedInstallTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/sharedinstall/AbstractSharedInstallTest.java
index de8373cda..34897df6e 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/sharedinstall/AbstractSharedInstallTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/sharedinstall/AbstractSharedInstallTest.java
@@ -201,7 +201,7 @@ public abstract class AbstractSharedInstallTest extends AbstractReconcilerTest {
public static void reallyReadOnly(File folder, boolean recurse) {
reallyReadOnly(folder);
if (folder.exists() && recurse) {
- File[] dirs = folder.listFiles((FileFilter) pathname -> pathname.isDirectory());
+ File[] dirs = folder.listFiles((FileFilter) File::isDirectory);
for (File dir : dirs) {
reallyReadOnly(dir, true);
}
@@ -228,7 +228,7 @@ public abstract class AbstractSharedInstallTest extends AbstractReconcilerTest {
public static void removeReallyReadOnly(File folder, boolean recurse) {
removeReallyReadOnly(folder);
if (folder.exists() && recurse) {
- File[] dirs = folder.listFiles((FileFilter) pathname -> pathname.isDirectory());
+ File[] dirs = folder.listFiles((FileFilter) File::isDirectory);
for (File dir : dirs) {
removeReallyReadOnly(dir, true);
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/sharedinstall/Cancellation.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/sharedinstall/Cancellation.java
index fcd7b5735..db8867449 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/sharedinstall/Cancellation.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/sharedinstall/Cancellation.java
@@ -17,7 +17,6 @@ package org.eclipse.equinox.p2.tests.sharedinstall;
import java.util.Properties;
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.eclipse.core.runtime.Platform;
import org.eclipse.equinox.p2.tests.reconciler.dropins.ReconcilerTestSuite;
public class Cancellation extends AbstractSharedInstallTest {
@@ -34,8 +33,6 @@ public class Cancellation extends AbstractSharedInstallTest {
}
public void testCancellation() {
- if (!Platform.getOS().equals(Platform.OS_WIN32))
- return;
assertInitialized();
setupReadOnlyInstall();
System.out.println(readOnlyBase);
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/manipulator/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/manipulator/AllTests.java
index d8d1d24e7..5624df5f2 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/manipulator/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/simpleconfigurator/manipulator/AllTests.java
@@ -1,29 +1,26 @@
/*******************************************************************************
* Copyright (c) 2008 IBM Corporation and others.
*
- * This program and the accompanying materials
+ * This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.simpleconfigurator.manipulator;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all automated director tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(SimpleConfiguratorManipulatorUtilsTest.class);
- suite.addTestSuite(SimpleConfiguratorManipulatorTests.class);
- return suite;
- }
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ SimpleConfiguratorManipulatorUtilsTest.class, SimpleConfiguratorManipulatorTests.class })
+public class AllTests {
+// test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/testserver/helper/AbstractTestServerClientCase.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/testserver/helper/AbstractTestServerClientCase.java
index 1c3846cc1..1ccf1db02 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/testserver/helper/AbstractTestServerClientCase.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/testserver/helper/AbstractTestServerClientCase.java
@@ -15,7 +15,9 @@
package org.eclipse.equinox.p2.tests.testserver.helper;
import java.security.cert.Certificate;
-import junit.framework.*;
+import junit.framework.Protectable;
+import junit.framework.TestCase;
+import junit.framework.TestResult;
import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
import org.eclipse.equinox.p2.core.IProvisioningAgent;
import org.eclipse.equinox.p2.core.UIServices;
@@ -41,11 +43,11 @@ public class AbstractTestServerClientCase extends TestCase {
* Returns a URL string part consisting of http://localhost:<port>
* @return String with first part of URL
*/
- protected String getBaseURL() {
+ public String getBaseURL() {
return "http://localhost:" + System.getProperty(TestServerController.PROP_TESTSERVER_PORT, "8080");
}
- protected static IProvisioningAgent getAgent() {
+ public static IProvisioningAgent getAgent() {
//get the global agent for the currently running system
return ServiceHelper.getService(TestActivator.getContext(), IProvisioningAgent.class);
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/AllTests.java
index ba4e47a6b..48d9543de 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/AllTests.java
@@ -1,54 +1,37 @@
/*******************************************************************************
* Copyright (c) 2008, 2011 IBM Corporation and others.
*
- * This program and the accompanying materials
+ * This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.touchpoint.eclipse;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all automated touchpoint tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(EclipseTouchpointTest.class);
- suite.addTestSuite(AddJVMArgumentActionTest.class);
- suite.addTestSuite(AddProgramArgumentActionTest.class);
- suite.addTestSuite(AddProgramPropertyActionTest.class);
- suite.addTestSuite(AddRepositoryActionTest.class);
- suite.addTestSuite(AddSourceBundleActionTest.class);
- suite.addTestSuite(CheckTrustActionTest.class);
- suite.addTestSuite(ChmodActionTest.class);
- suite.addTestSuite(CollectActionTest.class);
- suite.addTestSuite(InstallBundleActionTest.class);
- suite.addTestSuite(InstallFeatureActionTest.class);
- suite.addTestSuite(JVMArgumentActionLogicTest.class);
- suite.addTestSuite(LinkActionTest.class);
- suite.addTestSuite(MarkStartedActionTest.class);
- suite.addTestSuite(PathUtilTest.class);
- suite.addTestSuite(RemoveJVMArgumentActionTest.class);
- suite.addTestSuite(RemoveProgramArgumentActionTest.class);
- suite.addTestSuite(RemoveProgramPropertyActionTest.class);
- suite.addTestSuite(RemoveRepositoryActionTest.class);
- suite.addTestSuite(RemoveSourceBundleActionTest.class);
- suite.addTestSuite(SetFrameworkDependentPropertyActionTest.class);
- suite.addTestSuite(SetFrameworkIndependentPropertyActionTest.class);
- suite.addTestSuite(SetLauncherNameActionTest.class);
- suite.addTestSuite(SetProgramPropertyActionTest.class);
- suite.addTestSuite(SetStartLevelActionTest.class);
- suite.addTestSuite(UninstallBundleActionTest.class);
- suite.addTestSuite(UninstallFeatureActionTest.class);
- return suite;
- }
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ EclipseTouchpointTest.class, AddJVMArgumentActionTest.class, AddProgramArgumentActionTest.class,
+ AddProgramPropertyActionTest.class, AddRepositoryActionTest.class, AddSourceBundleActionTest.class,
+ CheckTrustActionTest.class, ChmodActionTest.class, CollectActionTest.class, InstallBundleActionTest.class,
+ InstallFeatureActionTest.class, JVMArgumentActionLogicTest.class, LinkActionTest.class,
+ MarkStartedActionTest.class, PathUtilTest.class, RemoveJVMArgumentActionTest.class,
+ RemoveProgramArgumentActionTest.class, RemoveProgramPropertyActionTest.class, RemoveRepositoryActionTest.class,
+ RemoveSourceBundleActionTest.class, SetFrameworkDependentPropertyActionTest.class,
+ SetFrameworkIndependentPropertyActionTest.class, SetLauncherNameActionTest.class,
+ SetProgramPropertyActionTest.class, SetStartLevelActionTest.class, UninstallBundleActionTest.class,
+ UninstallFeatureActionTest.class
+})
+public class AllTests {
+ // test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/CheckTrustActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/CheckTrustActionTest.java
index fbc3fc5f4..b1cade2a0 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/CheckTrustActionTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/CheckTrustActionTest.java
@@ -14,7 +14,9 @@
package org.eclipse.equinox.p2.tests.touchpoint.eclipse;
import java.io.File;
-import java.util.*;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.equinox.internal.p2.engine.InstallableUnitOperand;
import org.eclipse.equinox.internal.p2.engine.phases.CheckTrust;
@@ -65,7 +67,7 @@ public class CheckTrustActionTest extends AbstractProvisioningTest {
Map<String, Object> parameters = new HashMap<>();
parameters.put(ActionConstants.PARM_AGENT, getAgent());
parameters.put(ActionConstants.PARM_PROFILE, profile);
- parameters.put(CheckTrust.PARM_ARTIFACT_FILES, new ArrayList<>());
+ parameters.put(CheckTrust.PARM_ARTIFACTS, new HashMap<>());
EclipseTouchpoint touchpoint = new EclipseTouchpoint();
touchpoint.initializePhase(null, profile, "test", parameters);
InstallableUnitOperand operand = new InstallableUnitOperand(null, iu);
@@ -73,13 +75,13 @@ public class CheckTrustActionTest extends AbstractProvisioningTest {
touchpoint.initializeOperand(profile, parameters);
parameters = Collections.unmodifiableMap(parameters);
- assertFalse(((List<?>) parameters.get(CheckTrust.PARM_ARTIFACT_FILES)).contains(osgiTarget));
+ assertFalse(((Map<?, File>) parameters.get(CheckTrust.PARM_ARTIFACTS)).values().contains(osgiTarget));
CheckTrustAction action = new CheckTrustAction();
action.execute(parameters);
- assertTrue(((List<?>) parameters.get(CheckTrust.PARM_ARTIFACT_FILES)).contains(osgiTarget));
+ assertTrue(((Map<?, File>) parameters.get(CheckTrust.PARM_ARTIFACTS)).values().contains(osgiTarget));
// does nothing so should not alter parameters
action.undo(parameters);
- assertTrue(((List<?>) parameters.get(CheckTrust.PARM_ARTIFACT_FILES)).contains(osgiTarget));
+ assertTrue(((Map<?, File>) parameters.get(CheckTrust.PARM_ARTIFACTS)).values().contains(osgiTarget));
}
} \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/SetLauncherNameActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/SetLauncherNameActionTest.java
index de6ddd662..f01f88db3 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/SetLauncherNameActionTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/SetLauncherNameActionTest.java
@@ -14,7 +14,9 @@
package org.eclipse.equinox.p2.tests.touchpoint.eclipse;
import java.io.File;
-import java.util.*;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
import org.eclipse.equinox.internal.p2.engine.InstallableUnitOperand;
import org.eclipse.equinox.internal.p2.touchpoint.eclipse.EclipseTouchpoint;
@@ -99,7 +101,7 @@ public class SetLauncherNameActionTest extends AbstractProvisioningTest {
//profile will start using "eclipse" by default, give it some content and see if it
//survives a name change.
File eclipseIni = new File(tempFolder, "eclipse.ini");
- StringBuffer ini = new StringBuffer();
+ StringBuilder ini = new StringBuilder();
ini.append("-startup\n");
ini.append("plugins/org.eclipse.equinox.launcher_1.2.4.v1234.jar\n");
writeBuffer(eclipseIni, ini);
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/natives/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/natives/AllTests.java
index 86710545a..27f0c1618 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/natives/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/natives/AllTests.java
@@ -7,33 +7,25 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.touchpoint.natives;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all automated director tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(ChmodActionTest.class);
- suite.addTestSuite(CleanupzipActionTest.class);
- suite.addTestSuite(CollectActionTest.class);
- suite.addTestSuite(LinkActionTest.class);
- suite.addTestSuite(MkdirActionTest.class);
- suite.addTestSuite(NativeTouchpointTest.class);
- suite.addTestSuite(RmdirActionTest.class);
- suite.addTestSuite(UnzipActionTest.class);
- suite.addTestSuite(CopyActionTest.class);
- suite.addTestSuite(RemoveActionTest.class);
- suite.addTestSuite(BackupStoreTest.class);
- suite.addTest(new JUnit4TestAdapter(CheckAndPromptNativePackageWindowsRegistryTest.class));
- return suite;
- }
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ ChmodActionTest.class, CleanupzipActionTest.class, CollectActionTest.class, LinkActionTest.class,
+ MkdirActionTest.class, NativeTouchpointTest.class, RmdirActionTest.class, UnzipActionTest.class,
+ CopyActionTest.class, RemoveActionTest.class, SimpleBackupStoreTest.class,
+ CheckAndPromptNativePackageWindowsRegistryTest.class
+})
+public class AllTests {
+// test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/natives/BackupStoreTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/natives/BackupStoreTest.java
deleted file mode 100644
index 9b88d9458..000000000
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/natives/BackupStoreTest.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2014, 2017 EclipseSource and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * EclipseSource - initial API and implementation
- *******************************************************************************/
-package org.eclipse.equinox.p2.tests.touchpoint.natives;
-
-import java.io.*;
-import org.eclipse.equinox.internal.p2.touchpoint.natives.BackupStore;
-import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
-
-public class BackupStoreTest extends AbstractProvisioningTest {
-
- private static final String BUPREFIX = "BackupTest";
- private File sourceDir;
- private File aDir;
- private File aaDir;
- private File aTxt;
- private File bDir;
- private File bTxt;
-
- /**
- * Sets up directories and files under user.home
- * <ul><li>P2BUTEST/</li>
- * <ul><li>A/</li>
- * <ul><li>AA/</li>
- * <ul><li>a.txt</li>
- * </ul>
- * </ul>
- * </ul>
- * </ul>
- */
- @Override
- public void setUp() {
- // create some test files under user.home
- // do not want them under /tmp as it may be on its own file system (and even
- // be an in-memory file system).
- //
- String userHome = System.getProperty("user.home");
- sourceDir = new File(new File(userHome), "P2BUTEST");
- fullyDelete(sourceDir);
- aDir = new File(sourceDir, "A");
- aDir.mkdirs();
- aaDir = new File(aDir, "AA");
- aaDir.mkdir();
- aTxt = new File(aaDir, "eclipse.exe");
- bDir = new File(sourceDir, "B");
- bTxt = new File(bDir, "b.txt");
- try {
- writeToFile(aTxt, "A\nA file with an A");
- } catch (IOException e) {
- fail();
- }
- }
-
- private void writeToFile(File file, String content) throws IOException {
- file.getParentFile().mkdirs();
- file.createNewFile();
-
- try (Writer writer = new BufferedWriter(new FileWriter(file))) {
- writer.write(content);
- }
- }
-
- @Override
- public void tearDown() {
- fullyDelete(sourceDir);
- }
-
- /**
- * Deletes a file, or a directory with all of it's children.
- * @param file the file or directory to fully delete
- * @return true if, and only if the file is deleted
- */
- private boolean fullyDelete(File file) {
- if (!file.exists())
- return true;
- if (file.isDirectory()) {
- File[] children = file.listFiles();
- for (File child : children) {
- if (!fullyDelete(new File(file, child.getName()))) {
- return false;
- }
- }
- }
- return file.delete();
- }
-
- public void testBackupByRenamingFile() {
- String filePath = aTxt.getAbsolutePath();
- new BackupStore(null, BUPREFIX) {
- @Override
- public void renameInPlace(File file) {
- super.renameInPlace(file);
- }
-
- @Override
- protected String getTimeStamp() {
- return "-123";
- }
- }.renameInPlace(aTxt);
-
- assertFalse(aTxt.exists());
- assertTrue(new File(filePath + "-123.p2bu").exists());
- }
-
- public void testRenameIfMoveToBackupFails() throws IOException {
- String filePath = aTxt.getAbsolutePath();
- new BackupStore(null, BUPREFIX) {
- @Override
- public void renameInPlace(File file) {
- super.renameInPlace(file);
- }
-
- @Override
- public boolean moveToBackupStore(File a, File b) {
- return false;
- }
-
- @Override
- public void moveToBackup(File a, File b) throws IOException {
- super.moveToBackup(a, b);
- }
-
- @Override
- protected String getTimeStamp() {
- return "-123";
- }
- }.moveToBackup(aTxt, bTxt);
-
- assertFalse(aTxt.exists());
- assertTrue(new File(filePath + "-123.p2bu").exists());
- assertFalse(bTxt.exists());
- }
-
- public void testDoNotRenameIfMoveToBackupWorks() throws IOException {
- String filePath = aTxt.getAbsolutePath();
- new BackupStore(null, BUPREFIX) {
- @Override
- public void renameInPlace(File file) {
- super.renameInPlace(file);
- }
-
- @Override
- public boolean moveToBackupStore(File a, File b) {
- return super.moveToBackupStore(a, b);
- }
-
- @Override
- public void moveToBackup(File a, File b) throws IOException {
- super.moveToBackup(a, b);
- }
- }.moveToBackup(aTxt, bTxt);
-
- assertFalse(aTxt.exists());
- assertFalse(new File(filePath + ".p2bu").exists());
- assertTrue(bTxt.exists());
- }
-}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/natives/ChmodActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/natives/ChmodActionTest.java
index 9444fd1f7..075bd0e19 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/natives/ChmodActionTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/natives/ChmodActionTest.java
@@ -15,8 +15,11 @@
package org.eclipse.equinox.p2.tests.touchpoint.natives;
import java.io.File;
-import java.util.*;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.equinox.internal.p2.touchpoint.natives.NativeTouchpoint;
import org.eclipse.equinox.internal.p2.touchpoint.natives.actions.ActionConstants;
import org.eclipse.equinox.internal.p2.touchpoint.natives.actions.ChmodAction;
@@ -92,7 +95,9 @@ public class ChmodActionTest extends AbstractProvisioningTest {
xparameters = Collections.unmodifiableMap(parameters);
IStatus result = action.execute(xparameters);
- assertFalse("Missing file should result in error", result.isOK());
+ assertFalse(
+ "Missing file should result in error, except on Windows where ChmodAction is a no-op",
+ !Platform.getOS().equals(Platform.OS_WIN32) && result.isOK());
action.undo(xparameters);
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/natives/SimpleBackupStoreTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/natives/SimpleBackupStoreTest.java
new file mode 100644
index 000000000..a6f270835
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/natives/SimpleBackupStoreTest.java
@@ -0,0 +1,166 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2021 EclipseSource and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * EclipseSource - initial API and implementation
+ * Todor Boev - refactor to the java 7 file api
+ *******************************************************************************/
+package org.eclipse.equinox.p2.tests.touchpoint.natives;
+
+import static java.nio.file.FileVisitResult.CONTINUE;
+
+import java.io.IOException;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.attribute.BasicFileAttributes;
+import org.eclipse.equinox.internal.p2.touchpoint.natives.SimpleBackupStore;
+import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
+
+public class SimpleBackupStoreTest extends AbstractProvisioningTest {
+ private static final String BACKUP_PREFIX = "backup-test";
+
+ private Path sourceDir;
+
+ private Path aDir;
+ private Path aaDir;
+ private Path aFile;
+
+ /**
+ * <pre>
+ * /p2-backup-test
+ * /a
+ * /aa
+ * /eclipse.exe
+ * </pre>
+ */
+ @Override
+ public void setUp() throws IOException {
+ String userHome = System.getProperty("user.home");
+
+ sourceDir = Path.of(userHome, "p2-backup-test");
+ deleteAll(sourceDir);
+
+ aDir = sourceDir.resolve("a");
+ Files.createDirectories(aDir);
+
+ aaDir = aDir.resolve("aa");
+ Files.createDirectories(aaDir);
+
+ // The eclipse.exe is the only one eligible for backup-in-place
+ aFile = aaDir.resolve("eclipse.exe");
+ Files.createFile(aFile);
+ }
+
+ @Override
+ public void tearDown() throws IOException {
+ deleteAll(sourceDir);
+ }
+
+ private static void deleteAll(Path path) throws IOException {
+ if (!Files.exists(path)) {
+ return;
+ }
+
+ Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
+ @Override
+ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
+ Files.delete(file);
+ return CONTINUE;
+ }
+
+ @Override
+ public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
+ if (exc != null) {
+ throw exc;
+ }
+ Files.delete(dir);
+ return CONTINUE;
+ }
+ });
+ }
+
+ public void testBackupInPlace() throws IOException {
+ class TestMoveInPlaceStore extends SimpleBackupStore {
+ public TestMoveInPlaceStore() {
+ super(null, BACKUP_PREFIX);
+ }
+
+ @Override
+ public Path toInPlaceBackupPath(Path path) {
+ return super.toInPlaceBackupPath(path);
+ }
+
+ @Override
+ protected void move(Path a, Path b) throws IOException {
+ // In place backup - allow
+ if (b.equals(toInPlaceBackupPath(a))) {
+ super.move(a, b);
+ }
+ // In place restore - allow
+ else if (a.equals(toInPlaceBackupPath(b))) {
+ super.move(a, b);
+ }
+ // Everything else - fail
+ else if (a.getFileName().endsWith("eclipse.exe")) {
+ // Simulate what happens on Windows when moving a running executable between
+ // drives. In this case the file will be copied to the target but will not be
+ // removed from the source.
+ Files.copy(a, b);
+ } else {
+ throw new IOException("Test fail move: " + a + " -> " + b);
+ }
+ }
+ }
+
+ TestMoveInPlaceStore buStore = new TestMoveInPlaceStore();
+
+ final Path path = aFile;
+ final Path inPlaceBuPath = buStore.toInPlaceBackupPath(aFile);
+
+ buStore.backup(path.toFile());
+
+ assertFalse(Files.exists(path));
+ assertTrue(Files.exists(inPlaceBuPath));
+
+ buStore.restore();
+
+ assertTrue(Files.exists(path));
+ assertFalse(Files.exists(inPlaceBuPath));
+ }
+
+ public void testNoBackupInPlace() throws IOException {
+ class TestNoBackupInPlaceStore extends SimpleBackupStore {
+ public TestNoBackupInPlaceStore() {
+ super(null, BACKUP_PREFIX);
+ }
+
+ @Override
+ public Path toInPlaceBackupPath(Path path) {
+ return super.toInPlaceBackupPath(path);
+ }
+ }
+
+ TestNoBackupInPlaceStore buStore = new TestNoBackupInPlaceStore();
+
+ final Path path = aFile;
+ final Path inPlaceBuPath = buStore.toInPlaceBackupPath(aFile);
+
+ buStore.backup(path.toFile());
+
+ assertFalse(Files.exists(path));
+ assertFalse(Files.exists(inPlaceBuPath));
+
+ buStore.restore();
+
+ assertTrue(Files.exists(path));
+ }
+}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatechecker/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatechecker/AllTests.java
index a43140d55..7f0607dc7 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatechecker/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatechecker/AllTests.java
@@ -7,21 +7,20 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.updatechecker;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* All automated tests for the org.eclipse.equinox.p2.updatechecker bundle
*/
-public class AllTests extends TestCase {
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(UpdateCheckerTest.class);
- return suite;
- }
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ UpdateCheckerTest.class })
+public class AllTests {
+ // test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatesite/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatesite/AllTests.java
index 0a20506e7..7327d7b4b 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatesite/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatesite/AllTests.java
@@ -7,28 +7,21 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.updatesite;
-import junit.framework.*;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
/**
* Performs all automated director tests.
*/
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite(AllTests.class.getName());
- suite.addTestSuite(CategoryXMLActionTest.class);
- suite.addTestSuite(CategoryIUXMLActionTest.class);
- suite.addTestSuite(DoesNotCacheStaleData.class);
- suite.addTestSuite(SiteXMLActionTest.class);
- suite.addTestSuite(UpdateSiteTest.class);
- suite.addTestSuite(LocalUpdatesiteTest.class);
- return suite;
- }
-
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ CategoryXMLActionTest.class, CategoryIUXMLActionTest.class, DoesNotCacheStaleData.class,
+ SiteXMLActionTest.class, UpdateSiteTest.class, LocalUpdatesiteTest.class, })
+public class AllTests {
+//test suite
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatesite/SiteXMLActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatesite/SiteXMLActionTest.java
index bbfa514b2..05cfb29a8 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatesite/SiteXMLActionTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatesite/SiteXMLActionTest.java
@@ -16,20 +16,31 @@ package org.eclipse.equinox.p2.tests.updatesite;
import java.io.File;
import java.io.PrintStream;
import java.net.URI;
-import java.util.*;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.internal.p2.updatesite.SiteXMLAction;
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.p2.metadata.IProvidedCapability;
-import org.eclipse.equinox.p2.publisher.*;
+import org.eclipse.equinox.p2.publisher.IPublisherAction;
+import org.eclipse.equinox.p2.publisher.IPublisherResult;
+import org.eclipse.equinox.p2.publisher.PublisherInfo;
+import org.eclipse.equinox.p2.publisher.PublisherResult;
import org.eclipse.equinox.p2.publisher.actions.MergeResultsAction;
import org.eclipse.equinox.p2.publisher.eclipse.BundlesAction;
import org.eclipse.equinox.p2.publisher.eclipse.FeaturesAction;
-import org.eclipse.equinox.p2.query.*;
+import org.eclipse.equinox.p2.query.IQuery;
+import org.eclipse.equinox.p2.query.IQueryResult;
+import org.eclipse.equinox.p2.query.QueryUtil;
import org.eclipse.equinox.p2.repository.IRepository;
import org.eclipse.equinox.p2.repository.IRepositoryReference;
-import org.eclipse.equinox.p2.tests.*;
+import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
+import org.eclipse.equinox.p2.tests.StringBufferStream;
+import org.eclipse.equinox.p2.tests.TestData;
+import org.eclipse.equinox.p2.tests.TestMetadataRepository;
/**
* Tests for {@link org.eclipse.equinox.internal.p2.updatesite.SiteXMLAction}.
@@ -87,9 +98,8 @@ public class SiteXMLActionTest extends AbstractProvisioningTest {
Collection<IRepositoryReference> references = metadataRepository.getReferences();
assertEquals("1.0", 2, references.size());
boolean metadataFound = false, artifactFound = false;
- for (Iterator<IRepositoryReference> it = references.iterator(); it.hasNext();) {
- IRepositoryReference ref = it.next();
- assertEquals("1.1", "http://download.eclipse.org/eclipse/updates/3.5", ref.getLocation().toString());
+ for (IRepositoryReference ref : references) {
+ assertEquals("1.1", "https://download.eclipse.org/eclipse/updates/4.21", ref.getLocation().toString());
assertEquals("1.2", IRepository.ENABLED, ref.getOptions());
assertEquals("1.3", "Eclipse Project Update Site", ref.getNickname());
@@ -104,7 +114,8 @@ public class SiteXMLActionTest extends AbstractProvisioningTest {
public void testMirrorsURL() {
String mirrorsURL = metadataRepository.getProperties().get(IRepository.PROP_MIRRORS_URL);
- assertEquals("1.0", "http://www.eclipse.org/downloads/download.php?file=/eclipse/updates/3.4&format=xml", mirrorsURL);
+ assertEquals("1.0", "https://www.eclipse.org/downloads/download.php?file=/eclipse/updates/4.21&format=xml",
+ mirrorsURL);
}
public void testBundleInCategory() {
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatesite/UpdateSiteTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatesite/UpdateSiteTest.java
index 368e46f9f..67dde3c36 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatesite/UpdateSiteTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatesite/UpdateSiteTest.java
@@ -23,7 +23,6 @@ import java.lang.reflect.Field;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Collection;
-import java.util.Iterator;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -654,9 +653,8 @@ public class UpdateSiteTest extends AbstractProvisioningTest {
IQueryResult<IInstallableUnit> result = metadataRepo.query(query, null);
assertEquals("1.0", 1, queryResultSize(result));
IInstallableUnit featureIU = result.iterator().next();
- Collection<IRequirement> required = featureIU.getRequirements();
- for (Iterator<IRequirement> iterator = required.iterator(); iterator.hasNext();) {
- IRequiredCapability req = (IRequiredCapability) iterator.next();
+ for (IRequirement requirement : featureIU.getRequirements()) {
+ IRequiredCapability req = (IRequiredCapability) requirement;
if (req.getName().equals("org.eclipse.ui.ide")) {
assertEquals("2.0", VersionRange.emptyRange, req.getRange());
}
@@ -713,8 +711,8 @@ public class UpdateSiteTest extends AbstractProvisioningTest {
public void _testFeatureSiteReferences() throws ProvisionException, URISyntaxException {
File site = getTestData("0.1", "/testData/updatesite/siteFeatureReferences");
URI siteURI = site.toURI();
- URI testUpdateSite = new URI("http://download.eclipse.org/test/updatesite/");
- URI testDiscoverySite = new URI("http://download.eclipse.org/test/discoverysite");
+ URI testUpdateSite = new URI("https://download.eclipse.org/test/updatesite/");
+ URI testDiscoverySite = new URI("https://download.eclipse.org/test/discoverysite");
IMetadataRepositoryManager manager = getAgent().getService(IMetadataRepositoryManager.class);
assertNotNull(manager);
@@ -802,6 +800,7 @@ public class UpdateSiteTest extends AbstractProvisioningTest {
// Should have a packed & canonical version
assertEquals(2, descriptors.length);
+ @SuppressWarnings("removal")
IArtifactDescriptor desc = IArtifactDescriptor.FORMAT_PACKED.equals(descriptors[0].getProperty(IArtifactDescriptor.FORMAT)) ? descriptors[0] : descriptors[1];
try (OutputStream out = new FileOutputStream(output)) {
@@ -817,6 +816,7 @@ public class UpdateSiteTest extends AbstractProvisioningTest {
}
}
+ @SuppressWarnings("removal")
public void testMirrors() {
String testDataLocation = "/testData/updatesite/packedSiteWithMirror";
File targetLocation = null;
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/CertificateChecker/selfsigned/artifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/CertificateChecker/selfsigned/artifacts.xml
new file mode 100644
index 000000000..68b911bfa
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/CertificateChecker/selfsigned/artifacts.xml
@@ -0,0 +1,16 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<?artifactRepository version='1.1.0'?>
+<repository name='file:/home/mistria/sandbox/repo/ - artifacts' type='org.eclipse.equinox.p2.artifact.repository.simpleRepository' version='1'>
+ <properties size='2'>
+ <property name='p2.timestamp' value='1618433231272'/>
+ <property name='p2.compressed' value='false'/>
+ </properties>
+ <mappings size='3'>
+ <rule filter='(&amp; (classifier=osgi.bundle))' output='${repoUrl}/plugins/${id}_${version}.jar'/>
+ <rule filter='(&amp; (classifier=binary))' output='${repoUrl}/binary/${id}_${version}'/>
+ <rule filter='(&amp; (classifier=org.eclipse.update.feature))' output='${repoUrl}/features/${id}_${version}.jar'/>
+ </mappings>
+ <artifacts size='1'>
+ <artifact classifier='osgi.bundle' id='blah' version='1.0.0.123456'/>
+ </artifacts>
+</repository>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/CertificateChecker/selfsigned/content.xml b/bundles/org.eclipse.equinox.p2.tests/testData/CertificateChecker/selfsigned/content.xml
new file mode 100644
index 000000000..db8f67ba2
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/CertificateChecker/selfsigned/content.xml
@@ -0,0 +1,49 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<?metadataRepository version='1.2.0'?>
+<repository name='file:/home/mistria/sandbox/repo/ - metadata' type='org.eclipse.equinox.internal.p2.metadata.repository.LocalMetadataRepository' version='1'>
+ <properties size='2'>
+ <property name='p2.timestamp' value='1618433231272'/>
+ <property name='p2.compressed' value='false'/>
+ </properties>
+ <units size='2'>
+ <unit id='blah' version='1.0.0.123456' singleton='false'>
+ <update id='blah' range='[0.0.0,1.0.0.123456)' severity='0'/>
+ <provides size='4'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='blah' version='1.0.0.123456'/>
+ <provided namespace='osgi.bundle' name='blah' version='1.0.0.123456'/>
+ <provided namespace='osgi.identity' name='blah' version='1.0.0.123456'>
+ <properties size='1'>
+ <property name='type' value='osgi.bundle'/>
+ </properties>
+ </provided>
+ <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
+ </provides>
+ <artifacts size='1'>
+ <artifact classifier='osgi.bundle' id='blah' version='1.0.0.123456'/>
+ </artifacts>
+ <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
+ <touchpointData size='1'>
+ <instructions size='2'>
+ <instruction key='zipped'>
+ true
+ </instruction>
+ <instruction key='manifest'>
+ Bundle-SymbolicName: blah&#xA;Bundle-Version: 1.0.0.qualifier&#xA;
+ </instruction>
+ </instructions>
+ </touchpointData>
+ </unit>
+ <unit id='Category' version='0.0.0'>
+ <properties size='3'>
+ <property name='org.eclipse.equinox.p2.type.category' value='true'/>
+ </properties>
+ <provides size='1'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='Category' version='0.0.0'/>
+ </provides>
+ <requires size='1'>
+ <required namespace='org.eclipse.equinox.p2.iu' name='blah' range='[1.0.0.123456,1.0.0.123456]'/>
+ </requires>
+ <touchpoint id='null' version='0.0.0'/>
+ </unit>
+ </units>
+</repository>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/CertificateChecker/selfsigned/plugins/blah_1.0.0.123456.jar b/bundles/org.eclipse.equinox.p2.tests/testData/CertificateChecker/selfsigned/plugins/blah_1.0.0.123456.jar
new file mode 100644
index 000000000..81573b2aa
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/CertificateChecker/selfsigned/plugins/blah_1.0.0.123456.jar
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/corruptedJarRepo/artifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/corruptedJarRepo/artifacts.xml
index 3093c3db4..126d69b9d 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/corruptedJarRepo/artifacts.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/corruptedJarRepo/artifacts.xml
@@ -13,7 +13,7 @@
<rule filter='(&amp; (classifier=org.eclipse.update.feature))' output='${repoUrl}/features/${id}_${version}.jar'/>
</mappings>
<artifacts size='1'>
- <artifact classifier='osgi.bundle' id='org.eclipse.equinox.common' version='3.5.0.corrupted'>
+ <artifact classifier='osgi.bundle' id='org.eclipse.equinox.common' version='3.15.0.v20210428-1632'>
<properties size='4'>
<property name='download.contentType' value='application/zip'/>
</properties>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/corruptedJarRepo/content.xml b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/corruptedJarRepo/content.xml
index 0606c14e5..dd28b8da8 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/corruptedJarRepo/content.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/corruptedJarRepo/content.xml
@@ -7,18 +7,18 @@
<property name='site.checksum' value='2404093275'/>
</properties>
<units size='1'>
- <unit id='testBundle' version='3.5.0.corrupted'>
+ <unit id='testBundle' version='3.15.0.v20210428-1632'>
<properties size='3'>
<property name='org.eclipse.equinox.p2.name' value='Uncategorized'/>
<property name='org.eclipse.equinox.p2.description' value='Default category for otherwise uncategorized features'/>
<property name='org.eclipse.equinox.p2.type.category' value='true'/>
</properties>
<provides size='1'>
- <provided namespace='org.eclipse.equinox.p2.iu' name='testBundle' version='3.5.0.corrupted'/>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='testBundle' version='3.15.0.v20210428-1632'/>
</provides>
<touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
<artifacts size='1'>
- <artifact classifier='osgi.bundle' id='org.eclipse.equinox.common' version='3.5.0.corrupted'/>
+ <artifact classifier='osgi.bundle' id='org.eclipse.equinox.common' version='3.15.0.v20210428-1632'/>
</artifacts>
</unit>
</units>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/corruptedJarRepo/plugins/org.eclipse.equinox.common_3.15.0.v20210428-1632.jar b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/corruptedJarRepo/plugins/org.eclipse.equinox.common_3.15.0.v20210428-1632.jar
new file mode 100644
index 000000000..ba48f48f9
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/corruptedJarRepo/plugins/org.eclipse.equinox.common_3.15.0.v20210428-1632.jar
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/corruptedJarRepo/plugins/org.eclipse.equinox.common_3.5.0.corrupted.jar b/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/corruptedJarRepo/plugins/org.eclipse.equinox.common_3.5.0.corrupted.jar
deleted file mode 100644
index 7fdbb530d..000000000
--- a/bundles/org.eclipse.equinox.p2.tests/testData/artifactRepo/corruptedJarRepo/plugins/org.eclipse.equinox.common_3.5.0.corrupted.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/bug271067/profileRegistry/bootProfile.profile/1239159926745.profile b/bundles/org.eclipse.equinox.p2.tests/testData/bug271067/profileRegistry/bootProfile.profile/1239159926745.profile
index 1a449b02a..86c2b7e93 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/bug271067/profileRegistry/bootProfile.profile/1239159926745.profile
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/bug271067/profileRegistry/bootProfile.profile/1239159926745.profile
@@ -1119,7 +1119,6 @@
</provides>
<requires size='5'>
<required namespace='osgi.bundle' name='org.eclipse.core.runtime' range='[3.2.0,4.0.0)'/>
- <required namespace='osgi.bundle' name='org.eclipse.update.configurator' range='[3.1.100,4.0.0)'/>
<required namespace='java.package' name='javax.xml.parsers' range='0.0.0'/>
<required namespace='java.package' name='org.xml.sax' range='0.0.0'/>
<required namespace='java.package' name='org.xml.sax.helpers' range='0.0.0'/>
@@ -1131,7 +1130,7 @@
<touchpointData size='1'>
<instructions size='1'>
<instruction key='manifest'>
- Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Name: %pluginName&#xA;Bundle-Activator: org.eclipse.core.internal.plugins.CompatibilityActivator&#xA;Manifest-Version: 1.0&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.core.runtime.compatibility; singleton:=true&#xA;Import-Package: javax.xml.parsers,org.xml.sax,org.xml.sax.helpers&#xA;Bundle-ManifestVersion: 2&#xA;Eclipse-LazyStart: true&#xA;Bundle-Version: 3.2.0.v20071008&#xA;Bundle-Localization: plugin&#xA;Export-Package: org.eclipse.core.boot,org.eclipse.core.internal.boot;x-internal:=true,org.eclipse.core.internal.compatibility;x-internal:=true,org.eclipse.core.internal.model;x-internal:=true,org.eclipse.core.internal.plugins;x-internal:=true,org.eclipse.core.runtime.model&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.2.0,4.0.0)&quot;;visibility:=reexport,org.eclipse.update.configurator;bundle-version=&quot;[3.1.100,4.0.0)&quot;;visibility:=reexport&#xA;
+ Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Name: %pluginName&#xA;Bundle-Activator: org.eclipse.core.internal.plugins.CompatibilityActivator&#xA;Manifest-Version: 1.0&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.core.runtime.compatibility; singleton:=true&#xA;Import-Package: javax.xml.parsers,org.xml.sax,org.xml.sax.helpers&#xA;Bundle-ManifestVersion: 2&#xA;Eclipse-LazyStart: true&#xA;Bundle-Version: 3.2.0.v20071008&#xA;Bundle-Localization: plugin&#xA;Export-Package: org.eclipse.core.boot,org.eclipse.core.internal.boot;x-internal:=true,org.eclipse.core.internal.compatibility;x-internal:=true,org.eclipse.core.internal.model;x-internal:=true,org.eclipse.core.internal.plugins;x-internal:=true,org.eclipse.core.runtime.model&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.2.0,4.0.0)&quot;;visibility:=reexport&#xA;
</instruction>
</instructions>
</touchpointData>
@@ -2445,7 +2444,6 @@
<required namespace='osgi.bundle' name='org.eclipse.core.runtime' range='[3.1.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.ui' range='[3.2.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.update.core' range='[3.1.0,4.0.0)'/>
- <required namespace='osgi.bundle' name='org.eclipse.update.configurator' range='[3.1.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.ui.forms' range='[3.2.0,4.0.0)'/>
<required namespace='java.package' name='javax.xml.parsers' range='0.0.0'/>
<required namespace='java.package' name='org.w3c.dom' range='0.0.0'/>
@@ -2458,7 +2456,7 @@
<touchpointData size='1'>
<instructions size='1'>
<instruction key='manifest'>
- Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Name: %pluginName&#xA;Bundle-Activator: org.eclipse.update.internal.ui.UpdateUI&#xA;Manifest-Version: 1.0&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.update.ui; singleton:=true&#xA;Import-Package: javax.xml.parsers,org.w3c.dom,org.xml.sax&#xA;Bundle-ManifestVersion: 2&#xA;Eclipse-LazyStart: true&#xA;Bundle-Version: 3.2.101.R34x_v20081128&#xA;Bundle-Localization: plugin&#xA;Export-Package: org.eclipse.update.internal.ui;x-friends:=&quot;org.eclipse.update.scheduler&quot;,org.eclipse.update.internal.ui.model;x-internal:=true,org.eclipse.update.internal.ui.parts;x-internal:=true,org.eclipse.update.internal.ui.preferences;x-internal:=true,org.eclipse.update.internal.ui.properties;x-internal:=true,org.eclipse.update.internal.ui.security;x-internal:=true,org.eclipse.update.internal.ui.views;x-internal:=true,org.eclipse.update.internal.ui.wizards;x-friends:=&quot;org.eclipse.update.scheduler&quot;,org.eclipse.update.ui&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.update.core;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.update.configurator;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui.forms;bundle-version=&quot;[3.2.0,4.0.0)&quot;&#xA;
+ Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Name: %pluginName&#xA;Bundle-Activator: org.eclipse.update.internal.ui.UpdateUI&#xA;Manifest-Version: 1.0&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.update.ui; singleton:=true&#xA;Import-Package: javax.xml.parsers,org.w3c.dom,org.xml.sax&#xA;Bundle-ManifestVersion: 2&#xA;Eclipse-LazyStart: true&#xA;Bundle-Version: 3.2.101.R34x_v20081128&#xA;Bundle-Localization: plugin&#xA;Export-Package: org.eclipse.update.internal.ui;x-friends:=&quot;org.eclipse.update.scheduler&quot;,org.eclipse.update.internal.ui.model;x-internal:=true,org.eclipse.update.internal.ui.parts;x-internal:=true,org.eclipse.update.internal.ui.preferences;x-internal:=true,org.eclipse.update.internal.ui.properties;x-internal:=true,org.eclipse.update.internal.ui.security;x-internal:=true,org.eclipse.update.internal.ui.views;x-internal:=true,org.eclipse.update.internal.ui.wizards;x-friends:=&quot;org.eclipse.update.scheduler&quot;,org.eclipse.update.ui&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.update.core;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui.forms;bundle-version=&quot;[3.2.0,4.0.0)&quot;&#xA;
</instruction>
</instructions>
</touchpointData>
@@ -2539,7 +2537,6 @@
(&amp;(osgi.os=macosx)(osgi.ws=carbon))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.update.configurator' range='[3.2.201.R34x_v20080819,3.2.201.R34x_v20080819]'/>
<required namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.equinox.simpleconfigurator' range='[1.0.0.v20080604,1.0.0.v20080604]'/>
<required namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.swt.win32.win32.x86' range='[3.4.1.v3452b,3.4.1.v3452b]'>
<filter>
@@ -3687,7 +3684,6 @@
<required namespace='osgi.bundle' name='org.eclipse.update.core' range='[3.1.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.update.ui' range='[3.1.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.ui' range='[3.2.0,4.0.0)'/>
- <required namespace='osgi.bundle' name='org.eclipse.update.configurator' range='[3.1.100,4.0.0)'/>
</requires>
<artifacts size='1'>
<artifact classifier='osgi.bundle' id='org.eclipse.update.scheduler' version='3.2.100.v20080404'/>
@@ -3696,7 +3692,7 @@
<touchpointData size='1'>
<instructions size='1'>
<instruction key='manifest'>
- Bundle-ManifestVersion: 2&#xA;Export-Package: org.eclipse.update.internal.scheduler;x-internal:=true,org.eclipse.update.internal.scheduler.preferences;x-internal:=true&#xA;Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Localization: plugin&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.update.core;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.update.ui;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.update.configurator;bundle-version=&quot;[3.1.100,4.0.0)&quot;&#xA;Bundle-Activator: org.eclipse.update.internal.scheduler.UpdateSchedulerPlugin&#xA;Bundle-Name: %pluginName&#xA;Bundle-Version: 3.2.100.v20080404&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.update.scheduler; singleton:=true&#xA;Manifest-Version: 1.0&#xA;Eclipse-LazyStart: true&#xA;
+ Bundle-ManifestVersion: 2&#xA;Export-Package: org.eclipse.update.internal.scheduler;x-internal:=true,org.eclipse.update.internal.scheduler.preferences;x-internal:=true&#xA;Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Localization: plugin&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.update.core;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.update.ui;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;&#xA;Bundle-Activator: org.eclipse.update.internal.scheduler.UpdateSchedulerPlugin&#xA;Bundle-Name: %pluginName&#xA;Bundle-Version: 3.2.100.v20080404&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.update.scheduler; singleton:=true&#xA;Manifest-Version: 1.0&#xA;Eclipse-LazyStart: true&#xA;
</instruction>
</instructions>
</touchpointData>
@@ -3837,7 +3833,6 @@
</provides>
<requires size='7'>
<required namespace='osgi.bundle' name='org.eclipse.core.runtime' range='[3.1.0,4.0.0)'/>
- <required namespace='osgi.bundle' name='org.eclipse.update.configurator' range='[3.1.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.core.net' range='[1.0.0,2.0.0)'/>
<required namespace='java.package' name='javax.xml.parsers' range='0.0.0'/>
<required namespace='java.package' name='org.w3c.dom' range='0.0.0'/>
@@ -3851,7 +3846,7 @@
<touchpointData size='1'>
<instructions size='1'>
<instruction key='manifest'>
- Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Name: %pluginName&#xA;Bundle-Activator: org.eclipse.update.internal.core.UpdateCore&#xA;Manifest-Version: 1.0&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.update.core; singleton:=true&#xA;Import-Package: javax.xml.parsers,org.w3c.dom,org.xml.sax,org.xml.sax.helpers&#xA;Bundle-ManifestVersion: 2&#xA;Eclipse-LazyStart: true&#xA;Bundle-Version: 3.2.202.R34x_v20081128&#xA;Bundle-Localization: plugin&#xA;Export-Package: org.eclipse.update.configuration,org.eclipse.update.core,org.eclipse.update.core.model,org.eclipse.update.internal.core;x-friends:=&quot;org.eclipse.update.ui,org.eclipse.update.scheduler,org.eclipse.pde.build&quot;,org.eclipse.update.internal.core.connection;x-internal:=true,org.eclipse.update.internal.jarprocessor;x-friends:=&quot;org.eclipse.pde.build&quot;,org.eclipse.update.internal.mirror;x-internal:=true,org.eclipse.update.internal.model;x-friends:=&quot;org.eclipse.update.ui&quot;,org.eclipse.update.internal.operations;x-friends:=&quot;org.eclipse.update.ui,org.eclipse.update.scheduler&quot;,org.eclipse.update.internal.provisional;x-internal:=true,org.eclipse.update.internal.search;x-friends:=&quot;org.eclipse.update.ui&quot;,org.eclipse.update.internal.security;x-internal:=true,org.eclipse.update.internal.verifier;x-internal:=true,org.eclipse.update.operations,org.eclipse.update.search,org.eclipse.update.standalone&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.update.configurator;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.core.net;bundle-version=&quot;[1.0.0,2.0.0)&quot;&#xA;
+ Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Name: %pluginName&#xA;Bundle-Activator: org.eclipse.update.internal.core.UpdateCore&#xA;Manifest-Version: 1.0&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.update.core; singleton:=true&#xA;Import-Package: javax.xml.parsers,org.w3c.dom,org.xml.sax,org.xml.sax.helpers&#xA;Bundle-ManifestVersion: 2&#xA;Eclipse-LazyStart: true&#xA;Bundle-Version: 3.2.202.R34x_v20081128&#xA;Bundle-Localization: plugin&#xA;Export-Package: org.eclipse.update.configuration,org.eclipse.update.core,org.eclipse.update.core.model,org.eclipse.update.internal.core;x-friends:=&quot;org.eclipse.update.ui,org.eclipse.update.scheduler,org.eclipse.pde.build&quot;,org.eclipse.update.internal.core.connection;x-internal:=true,org.eclipse.update.internal.jarprocessor;x-friends:=&quot;org.eclipse.pde.build&quot;,org.eclipse.update.internal.mirror;x-internal:=true,org.eclipse.update.internal.model;x-friends:=&quot;org.eclipse.update.ui&quot;,org.eclipse.update.internal.operations;x-friends:=&quot;org.eclipse.update.ui,org.eclipse.update.scheduler&quot;,org.eclipse.update.internal.provisional;x-internal:=true,org.eclipse.update.internal.search;x-friends:=&quot;org.eclipse.update.ui&quot;,org.eclipse.update.internal.security;x-internal:=true,org.eclipse.update.internal.verifier;x-internal:=true,org.eclipse.update.operations,org.eclipse.update.search,org.eclipse.update.standalone&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.core.net;bundle-version=&quot;[1.0.0,2.0.0)&quot;&#xA;
</instruction>
</instructions>
</touchpointData>
@@ -4150,7 +4145,6 @@
<required namespace='osgi.bundle' name='org.eclipse.help' range='[3.2.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.ui' range='[3.4.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.ui.views' range='[3.2.0,4.0.0)' optional='true'/>
- <required namespace='osgi.bundle' name='org.eclipse.update.configurator' range='[3.1.100,4.0.0)' optional='true'/>
<required namespace='osgi.bundle' name='org.eclipse.update.core' range='[3.1.100,4.0.0)' optional='true'/>
<required namespace='osgi.bundle' name='org.eclipse.update.ui' range='[3.1.100,4.0.0)' optional='true'/>
<required namespace='osgi.bundle' name='org.eclipse.jface.text' range='[3.2.0,4.0.0)'/>
@@ -4164,7 +4158,7 @@
<touchpointData size='1'>
<instructions size='1'>
<instruction key='manifest'>
- Bundle-Name: %Plugin.name&#xA;Bundle-ClassPath: .&#xA;Bundle-Version: 3.4.2.M20090127-1700&#xA;Import-Package: com.ibm.icu.text&#xA;Bundle-Activator: org.eclipse.ui.internal.ide.IDEWorkbenchPlugin&#xA;Bundle-Vendor: %Plugin.providerName&#xA;Require-Bundle: org.eclipse.core.resources;bundle-version=&quot;[3.2.0,4.0.0)&quot;;resolution:=optional,org.eclipse.core.runtime;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.filesystem;bundle-version=&quot;[1.0.0,2.0.0)&quot;,org.eclipse.help;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui;bundle-version=&quot;[3.4.0,4.0.0)&quot;,org.eclipse.ui.views;bundle-version=&quot;[3.2.0,4.0.0)&quot;;resolution:=optional,org.eclipse.update.configurator;bundle-version=&quot;[3.1.100,4.0.0)&quot;;resolution:=optional,org.eclipse.update.core;bundle-version=&quot;[3.1.100,4.0.0)&quot;;resolution:=optional,org.eclipse.update.ui;bundle-version=&quot;[3.1.100,4.0.0)&quot;;resolution:=optional,org.eclipse.jface.text;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui.forms;bundle-version=&quot;[3.3.0,4.0.0)&quot;;resolution:=optional&#xA;Export-Package: org.eclipse.ui,org.eclipse.ui.actions,org.eclipse.ui.dialogs,org.eclipse.ui.ide,org.eclipse.ui.ide.dialogs,org.eclipse.ui.ide.fileSystem,org.eclipse.ui.ide.undo,org.eclipse.ui.internal.ide;x-friends:=&quot;org.eclipse.ui.ide.application&quot;,org.eclipse.ui.internal.ide.actions;x-internal:=true,org.eclipse.ui.internal.ide.commands;x-internal:=true,org.eclipse.ui.internal.ide.dialogs;x-friends:=&quot;org.eclipse.ui.ide.application&quot;,org.eclipse.ui.internal.ide.filesystem;x-internal:=true,org.eclipse.ui.internal.ide.handlers;x-internal:=true,org.eclipse.ui.internal.ide.misc;x-internal:=true,org.eclipse.ui.internal.ide.model;x-friends:=&quot;org.eclipse.ui.ide.application&quot;,org.eclipse.ui.internal.ide.registry;x-internal:=true,org.eclipse.ui.internal.ide.undo;x-friends:=&quot;org.eclipse.ui.ide.application&quot;,org.eclipse.ui.internal.ide.update;x-internal:=true,org.eclipse.ui.internal.views.bookmarkexplorer;x-internal:=true,org.eclipse.ui.internal.views.framelist;x-internal:=true,org.eclipse.ui.internal.views.markers;x-internal:=true,org.eclipse.ui.internal.views.navigator;x-internal:=true,org.eclipse.ui.internal.views.properties;x-internal:=true,org.eclipse.ui.internal.views.tasklist;x-internal:=true,org.eclipse.ui.internal.wizards.datatransfer;x-internal:=true,org.eclipse.ui.internal.wizards.newresource;x-internal:=true,org.eclipse.ui.model,org.eclipse.ui.part,org.eclipse.ui.views.bookmarkexplorer,org.eclipse.ui.views.framelist,org.eclipse.ui.views.markers,org.eclipse.ui.views.markers.internal;x-internal:=true,org.eclipse.ui.views.navigator,org.eclipse.ui.views.properties,org.eclipse.ui.views.tasklist,org.eclipse.ui.wizards.datatransfer,org.eclipse.ui.wizards.newresource&#xA;Bundle-SymbolicName: org.eclipse.ui.ide; singleton:=true&#xA;Manifest-Version: 1.0&#xA;Bundle-ActivationPolicy: lazy&#xA;Bundle-ManifestVersion: 2&#xA;Bundle-RequiredExecutionEnvironment: J2SE-1.4&#xA;Bundle-Localization: plugin&#xA;
+ Bundle-Name: %Plugin.name&#xA;Bundle-ClassPath: .&#xA;Bundle-Version: 3.4.2.M20090127-1700&#xA;Import-Package: com.ibm.icu.text&#xA;Bundle-Activator: org.eclipse.ui.internal.ide.IDEWorkbenchPlugin&#xA;Bundle-Vendor: %Plugin.providerName&#xA;Require-Bundle: org.eclipse.core.resources;bundle-version=&quot;[3.2.0,4.0.0)&quot;;resolution:=optional,org.eclipse.core.runtime;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.filesystem;bundle-version=&quot;[1.0.0,2.0.0)&quot;,org.eclipse.help;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui;bundle-version=&quot;[3.4.0,4.0.0)&quot;,org.eclipse.ui.views;bundle-version=&quot;[3.2.0,4.0.0)&quot;;resolution:=optional,org.eclipse.update.core;bundle-version=&quot;[3.1.100,4.0.0)&quot;;resolution:=optional,org.eclipse.update.ui;bundle-version=&quot;[3.1.100,4.0.0)&quot;;resolution:=optional,org.eclipse.jface.text;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui.forms;bundle-version=&quot;[3.3.0,4.0.0)&quot;;resolution:=optional&#xA;Export-Package: org.eclipse.ui,org.eclipse.ui.actions,org.eclipse.ui.dialogs,org.eclipse.ui.ide,org.eclipse.ui.ide.dialogs,org.eclipse.ui.ide.fileSystem,org.eclipse.ui.ide.undo,org.eclipse.ui.internal.ide;x-friends:=&quot;org.eclipse.ui.ide.application&quot;,org.eclipse.ui.internal.ide.actions;x-internal:=true,org.eclipse.ui.internal.ide.commands;x-internal:=true,org.eclipse.ui.internal.ide.dialogs;x-friends:=&quot;org.eclipse.ui.ide.application&quot;,org.eclipse.ui.internal.ide.filesystem;x-internal:=true,org.eclipse.ui.internal.ide.handlers;x-internal:=true,org.eclipse.ui.internal.ide.misc;x-internal:=true,org.eclipse.ui.internal.ide.model;x-friends:=&quot;org.eclipse.ui.ide.application&quot;,org.eclipse.ui.internal.ide.registry;x-internal:=true,org.eclipse.ui.internal.ide.undo;x-friends:=&quot;org.eclipse.ui.ide.application&quot;,org.eclipse.ui.internal.ide.update;x-internal:=true,org.eclipse.ui.internal.views.bookmarkexplorer;x-internal:=true,org.eclipse.ui.internal.views.framelist;x-internal:=true,org.eclipse.ui.internal.views.markers;x-internal:=true,org.eclipse.ui.internal.views.navigator;x-internal:=true,org.eclipse.ui.internal.views.properties;x-internal:=true,org.eclipse.ui.internal.views.tasklist;x-internal:=true,org.eclipse.ui.internal.wizards.datatransfer;x-internal:=true,org.eclipse.ui.internal.wizards.newresource;x-internal:=true,org.eclipse.ui.model,org.eclipse.ui.part,org.eclipse.ui.views.bookmarkexplorer,org.eclipse.ui.views.framelist,org.eclipse.ui.views.markers,org.eclipse.ui.views.markers.internal;x-internal:=true,org.eclipse.ui.views.navigator,org.eclipse.ui.views.properties,org.eclipse.ui.views.tasklist,org.eclipse.ui.wizards.datatransfer,org.eclipse.ui.wizards.newresource&#xA;Bundle-SymbolicName: org.eclipse.ui.ide; singleton:=true&#xA;Manifest-Version: 1.0&#xA;Bundle-ActivationPolicy: lazy&#xA;Bundle-ManifestVersion: 2&#xA;Bundle-RequiredExecutionEnvironment: J2SE-1.4&#xA;Bundle-Localization: plugin&#xA;
</instruction>
</instructions>
</touchpointData>
@@ -4289,45 +4283,6 @@
</instructions>
</touchpointData>
</unit>
- <unit id='org.eclipse.update.configurator' version='3.2.201.R34x_v20080819'>
- <update id='org.eclipse.update.configurator' range='[0.0.0,3.2.201.R34x_v20080819)' severity='0'/>
- <properties size='6'>
- <property name='df_LT.providerName' value='Eclipse.org'/>
- <property name='df_LT.pluginName' value='Install/Update Configurator'/>
- <property name='org.eclipse.equinox.p2.name' value='%pluginName'/>
- <property name='org.eclipse.equinox.p2.provider' value='%providerName'/>
- <property name='file.name' value='C:\Program Files\IBM\SDP70Shared\plugins\org.eclipse.update.configurator_3.2.201.R34x_v20080819.jar'/>
- <property name='file.lastModified' value='1239159904980'/>
- </properties>
- <provides size='7'>
- <provided namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.update.configurator' version='3.2.201.R34x_v20080819'/>
- <provided namespace='osgi.bundle' name='org.eclipse.update.configurator' version='3.2.201.R34x_v20080819'/>
- <provided namespace='java.package' name='org.eclipse.update.configurator' version='0.0.0'/>
- <provided namespace='java.package' name='org.eclipse.update.internal.configurator' version='0.0.0'/>
- <provided namespace='java.package' name='org.eclipse.update.internal.configurator.branding' version='0.0.0'/>
- <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
- <provided namespace='org.eclipse.equinox.p2.localization' name='df_LT' version='1.0.0'/>
- </provides>
- <requires size='6'>
- <required namespace='osgi.bundle' name='org.eclipse.equinox.common' range='[3.2.0,4.0.0)'/>
- <required namespace='osgi.bundle' name='org.eclipse.osgi' range='[3.2.0,4.0.0)'/>
- <required namespace='java.package' name='javax.xml.parsers' range='0.0.0'/>
- <required namespace='java.package' name='org.w3c.dom' range='0.0.0'/>
- <required namespace='java.package' name='org.xml.sax' range='0.0.0'/>
- <required namespace='java.package' name='org.xml.sax.helpers' range='0.0.0'/>
- </requires>
- <artifacts size='1'>
- <artifact classifier='osgi.bundle' id='org.eclipse.update.configurator' version='3.2.201.R34x_v20080819'/>
- </artifacts>
- <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
- <touchpointData size='1'>
- <instructions size='1'>
- <instruction key='manifest'>
- Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Name: %pluginName&#xA;Bundle-Activator: org.eclipse.update.internal.configurator.ConfigurationActivator&#xA;Manifest-Version: 1.0&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.update.configurator; singleton:=true&#xA;Import-Package: javax.xml.parsers,org.w3c.dom,org.xml.sax,org.xml.sax.helpers&#xA;Bundle-ManifestVersion: 2&#xA;Eclipse-LazyStart: true&#xA;Bundle-Version: 3.2.201.R34x_v20080819&#xA;Bundle-Localization: plugin&#xA;Export-Package: org.eclipse.update.configurator,org.eclipse.update.internal.configurator;x-friends:=&quot;org.eclipse.update.core&quot;,org.eclipse.update.internal.configurator.branding;x-friends:=&quot;org.eclipse.update.core&quot;&#xA;Require-Bundle: org.eclipse.equinox.common;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.osgi;bundle-version=&quot;[3.2.0,4.0.0)&quot;&#xA;
- </instruction>
- </instructions>
- </touchpointData>
- </unit>
<unit id='org.eclipse.ui.browser' version='3.2.201.v20080708_34x'>
<update id='org.eclipse.ui.browser' range='[0.0.0,3.2.201.v20080708_34x)' severity='0'/>
<properties size='6'>
@@ -5110,7 +5065,6 @@
<required namespace='osgi.bundle' name='org.eclipse.ui.ide' range='[3.4.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.core.runtime' range='[3.2.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.core.resources' range='[3.2.0,4.0.0)'/>
- <required namespace='osgi.bundle' name='org.eclipse.update.configurator' range='[3.1.100,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.ui' range='[3.3.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.ui.navigator.resources' range='[3.2.100,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.core.net' range='[1.0.0,2.0.0)'/>
@@ -5124,7 +5078,7 @@
<touchpointData size='1'>
<instructions size='1'>
<instruction key='manifest'>
- Bundle-ManifestVersion: 2&#xA;Bundle-RequiredExecutionEnvironment: J2SE-1.4&#xA;Require-Bundle: org.eclipse.ui.ide;bundle-version=&quot;[3.4.0,4.0.0)&quot;,org.eclipse.core.runtime;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.resources;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.update.configurator;bundle-version=&quot;[3.1.100,4.0.0)&quot;,org.eclipse.ui;bundle-version=&quot;[3.3.0,4.0.0)&quot;,org.eclipse.ui.navigator.resources;bundle-version=&quot;[3.2.100,4.0.0)&quot;,org.eclipse.core.net;bundle-version=&quot;[1.0.0,2.0.0)&quot;,org.eclipse.update.core;bundle-version=&quot;[3.1.100,4.0.0)&quot;,com.ibm.icu;bundle-version=&quot;3.8.1&quot;&#xA;Manifest-Version: 1.0&#xA;Bundle-Version: 1.0.1.M20090204-0800&#xA;Export-Package: org.eclipse.ui.internal.ide.application;x-internal:=true,org.eclipse.ui.internal.ide.application.dialogs;x-internal:=true&#xA;Bundle-SymbolicName: org.eclipse.ui.ide.application;singleton:=true&#xA;Bundle-Localization: plugin&#xA;Bundle-Name: %Plugin.name&#xA;Bundle-Vendor: %Plugin.providerName&#xA;
+ Bundle-ManifestVersion: 2&#xA;Bundle-RequiredExecutionEnvironment: J2SE-1.4&#xA;Require-Bundle: org.eclipse.ui.ide;bundle-version=&quot;[3.4.0,4.0.0)&quot;,org.eclipse.core.runtime;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.resources;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui;bundle-version=&quot;[3.3.0,4.0.0)&quot;,org.eclipse.ui.navigator.resources;bundle-version=&quot;[3.2.100,4.0.0)&quot;,org.eclipse.core.net;bundle-version=&quot;[1.0.0,2.0.0)&quot;,org.eclipse.update.core;bundle-version=&quot;[3.1.100,4.0.0)&quot;,com.ibm.icu;bundle-version=&quot;3.8.1&quot;&#xA;Manifest-Version: 1.0&#xA;Bundle-Version: 1.0.1.M20090204-0800&#xA;Export-Package: org.eclipse.ui.internal.ide.application;x-internal:=true,org.eclipse.ui.internal.ide.application.dialogs;x-internal:=true&#xA;Bundle-SymbolicName: org.eclipse.ui.ide.application;singleton:=true&#xA;Bundle-Localization: plugin&#xA;Bundle-Name: %Plugin.name&#xA;Bundle-Vendor: %Plugin.providerName&#xA;
</instruction>
</instructions>
</touchpointData>
@@ -7829,13 +7783,6 @@
<property name='org.eclipse.equinox.p2.reconciler.dropins' value='true'/>
</properties>
</iuProperties>
- <iuProperties id='org.eclipse.update.configurator' version='3.2.201.R34x_v20080819'>
- <properties size='3'>
- <property name='org.eclipse.equinox.p2.type.lock' value='1'/>
- <property name='org.eclipse.equinox.p2.internal.inclusion.rules' value='OPTIONAL'/>
- <property name='org.eclipse.equinox.p2.reconciler.dropins' value='true'/>
- </properties>
- </iuProperties>
<iuProperties id='org.eclipse.ui.browser' version='3.2.201.v20080708_34x'>
<properties size='3'>
<property name='org.eclipse.equinox.p2.type.lock' value='1'/>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/bug300104/p2/org.eclipse.equinox.p2.engine/profileRegistry/SDKProfile.profile/1263582400033.profile b/bundles/org.eclipse.equinox.p2.tests/testData/bug300104/p2/org.eclipse.equinox.p2.engine/profileRegistry/SDKProfile.profile/1263582400033.profile
index c49fe7f52..b054b9dee 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/bug300104/p2/org.eclipse.equinox.p2.engine/profileRegistry/SDKProfile.profile/1263582400033.profile
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/bug300104/p2/org.eclipse.equinox.p2.engine/profileRegistry/SDKProfile.profile/1263582400033.profile
@@ -2504,7 +2504,6 @@
</provides>
<requires size='5'>
<required namespace='osgi.bundle' name='org.eclipse.core.runtime' range='[3.2.0,4.0.0)'/>
- <required namespace='osgi.bundle' name='org.eclipse.update.configurator' range='[3.1.100,4.0.0)'/>
<required namespace='java.package' name='javax.xml.parsers' range='0.0.0'/>
<required namespace='java.package' name='org.xml.sax' range='0.0.0'/>
<required namespace='java.package' name='org.xml.sax.helpers' range='0.0.0'/>
@@ -2516,7 +2515,7 @@
<touchpointData size='1'>
<instructions size='1'>
<instruction key='manifest'>
- Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Name: %pluginName&#xA;Bundle-Activator: org.eclipse.core.internal.plugins.CompatibilityActivator&#xA;Manifest-Version: 1.0&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.core.runtime.compatibility; singleton:=true&#xA;Import-Package: javax.xml.parsers,org.xml.sax,org.xml.sax.helpers&#xA;Bundle-ManifestVersion: 2&#xA;Eclipse-LazyStart: true&#xA;Bundle-Version: 3.2.0.v20090413&#xA;Bundle-Localization: plugin&#xA;Export-Package: org.eclipse.core.boot,org.eclipse.core.internal.boot;x-internal:=true,org.eclipse.core.internal.compatibility;x-internal:=true,org.eclipse.core.internal.model;x-internal:=true,org.eclipse.core.internal.plugins;x-internal:=true,org.eclipse.core.runtime.model&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.2.0,4.0.0)&quot;;visibility:=reexport,org.eclipse.update.configurator;bundle-version=&quot;[3.1.100,4.0.0)&quot;;visibility:=reexport
+ Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Name: %pluginName&#xA;Bundle-Activator: org.eclipse.core.internal.plugins.CompatibilityActivator&#xA;Manifest-Version: 1.0&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.core.runtime.compatibility; singleton:=true&#xA;Import-Package: javax.xml.parsers,org.xml.sax,org.xml.sax.helpers&#xA;Bundle-ManifestVersion: 2&#xA;Eclipse-LazyStart: true&#xA;Bundle-Version: 3.2.0.v20090413&#xA;Bundle-Localization: plugin&#xA;Export-Package: org.eclipse.core.boot,org.eclipse.core.internal.boot;x-internal:=true,org.eclipse.core.internal.compatibility;x-internal:=true,org.eclipse.core.internal.model;x-internal:=true,org.eclipse.core.internal.plugins;x-internal:=true,org.eclipse.core.runtime.model&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.2.0,4.0.0)&quot;;visibility:=reexport
</instruction>
</instructions>
</touchpointData>
@@ -10840,7 +10839,6 @@
<required namespace='osgi.bundle' name='org.eclipse.core.resources' range='[3.2.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.jdt.core' range='[3.2.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.team.core' range='[3.2.0,4.0.0)'/>
- <required namespace='osgi.bundle' name='org.eclipse.update.configurator' range='[3.1.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.text' range='[3.1.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.jdt.launching' range='[3.2.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.core.filebuffers' range='[3.2.0,4.0.0)'/>
@@ -10868,7 +10866,7 @@
<touchpointData size='1'>
<instructions size='1'>
<instruction key='manifest'>
- Bundle-Name: %name&#xA;Bundle-Version: 3.6.0.v20100115&#xA;Eclipse-LazyStart: true&#xA;Import-Package: com.ibm.icu.util&#xA;Bundle-Activator: org.eclipse.pde.internal.core.PDECore&#xA;Bundle-Vendor: %provider-name&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.core.resources;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jdt.core;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.team.core;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.update.configurator;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.text;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.jdt.launching;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.filebuffers;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.variables;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.pde.build;bundle-version=&quot;[3.2.0,4.1.0)&quot;,org.eclipse.ant.core;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.equinox.simpleconfigurator.manipulator;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.frameworkadmin;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.debug.core;bundle-version=&quot;[3.5.0,4.0.0)&quot;,org.eclipse.equinox.p2.engine;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.core;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.metadata;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.director;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.artifact.repository;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.repository;bundle-version=&quot;[2.0.0,3.0.0]&quot;,org.eclipse.equinox.p2.metadata.repository;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.garbagecollector;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.touchpoint.eclipse&#xA;Export-Package: org.eclipse.pde.core,org.eclipse.pde.core.build,org.eclipse.pde.core.plugin,org.eclipse.pde.core.project,org.eclipse.pde.internal.core;x-friends:=&quot;org.eclipse.pde.ui,org.eclipse.pde.runtime,org.eclipse.pde.launching&quot;,org.eclipse.pde.internal.core.build;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.builders;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.bundle;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.content;x-internal:=true,org.eclipse.pde.internal.core.converter;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.exports;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.feature;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.ibundle;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.ifeature;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.iproduct;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.ischema;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.isite;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.natures;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.plugin;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.product;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.project;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.schema;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.search;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.site;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.target;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.target.provisional;x-friends:=&quot;org.eclipse.pde.ui,org.eclipse.pde.api.tools.ui&quot;,org.eclipse.pde.internal.core.text; x-friends:=&quot;org.eclipse.pde.ui, org.eclipse.pde.ds.core, org.eclipse.pde.ua.core, org.eclipse.pde.ds.ui, org.eclipse.pde.ua.ui&quot;,org.eclipse.pde.internal.core.text.build;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.text.bundle;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.text.plugin;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.util;x-friends:=&quot;org.eclipse.pde.ui,org.eclipse.pde.ua.ui,org.eclipse.pde.launching&quot;,org.eclipse.pde.internal.core.variables;x-internal:=true&#xA;Bundle-SymbolicName: org.eclipse.pde.core; singleton:=true&#xA;Manifest-Version: 1.0&#xA;Bundle-ActivationPolicy: lazy&#xA;Bundle-ManifestVersion: 2&#xA;Bundle-RequiredExecutionEnvironment: J2SE-1.4&#xA;Bundle-Localization: plugin
+ Bundle-Name: %name&#xA;Bundle-Version: 3.6.0.v20100115&#xA;Eclipse-LazyStart: true&#xA;Import-Package: com.ibm.icu.util&#xA;Bundle-Activator: org.eclipse.pde.internal.core.PDECore&#xA;Bundle-Vendor: %provider-name&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.core.resources;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jdt.core;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.team.core;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.text;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.jdt.launching;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.filebuffers;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.variables;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.pde.build;bundle-version=&quot;[3.2.0,4.1.0)&quot;,org.eclipse.ant.core;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.equinox.simpleconfigurator.manipulator;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.frameworkadmin;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.debug.core;bundle-version=&quot;[3.5.0,4.0.0)&quot;,org.eclipse.equinox.p2.engine;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.core;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.metadata;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.director;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.artifact.repository;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.repository;bundle-version=&quot;[2.0.0,3.0.0]&quot;,org.eclipse.equinox.p2.metadata.repository;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.garbagecollector;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.touchpoint.eclipse&#xA;Export-Package: org.eclipse.pde.core,org.eclipse.pde.core.build,org.eclipse.pde.core.plugin,org.eclipse.pde.core.project,org.eclipse.pde.internal.core;x-friends:=&quot;org.eclipse.pde.ui,org.eclipse.pde.runtime,org.eclipse.pde.launching&quot;,org.eclipse.pde.internal.core.build;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.builders;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.bundle;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.content;x-internal:=true,org.eclipse.pde.internal.core.converter;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.exports;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.feature;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.ibundle;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.ifeature;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.iproduct;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.ischema;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.isite;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.natures;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.plugin;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.product;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.project;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.schema;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.search;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.site;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.target;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.target.provisional;x-friends:=&quot;org.eclipse.pde.ui,org.eclipse.pde.api.tools.ui&quot;,org.eclipse.pde.internal.core.text; x-friends:=&quot;org.eclipse.pde.ui, org.eclipse.pde.ds.core, org.eclipse.pde.ua.core, org.eclipse.pde.ds.ui, org.eclipse.pde.ua.ui&quot;,org.eclipse.pde.internal.core.text.build;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.text.bundle;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.text.plugin;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.util;x-friends:=&quot;org.eclipse.pde.ui,org.eclipse.pde.ua.ui,org.eclipse.pde.launching&quot;,org.eclipse.pde.internal.core.variables;x-internal:=true&#xA;Bundle-SymbolicName: org.eclipse.pde.core; singleton:=true&#xA;Manifest-Version: 1.0&#xA;Bundle-ActivationPolicy: lazy&#xA;Bundle-ManifestVersion: 2&#xA;Bundle-RequiredExecutionEnvironment: J2SE-1.4&#xA;Bundle-Localization: plugin
</instruction>
</instructions>
</touchpointData>
@@ -11729,7 +11727,6 @@
<required namespace='osgi.bundle' name='org.eclipse.jdt.junit' range='[3.2.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.ui.intro' range='[3.2.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.ui.cheatsheets' range='[3.2.0,4.0.0)'/>
- <required namespace='osgi.bundle' name='org.eclipse.update.configurator' range='[3.1.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.ui.views.log' range='[1.0.0,2.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.ltk.core.refactoring' range='[3.2.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.core.variables' range='[3.1.0,4.0.0)'/>
@@ -11760,7 +11757,7 @@
<touchpointData size='1'>
<instructions size='1'>
<instruction key='manifest'>
- Bundle-Name: %name&#xA;Bundle-Version: 3.6.0.v20100115&#xA;Eclipse-LazyStart: true&#xA;Import-Package: com.ibm.icu.text,org.eclipse.jdt.debug.core&#xA;Bundle-Activator: org.eclipse.pde.internal.ui.PDEPlugin&#xA;Bundle-Vendor: %provider-name&#xA;Require-Bundle: org.eclipse.pde.core;bundle-version=&quot;[3.6.0,4.0.0)&quot;;visibility:=reexport,org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui.ide;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui.views;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jface.text;bundle-version=&quot;[3.5.0,4.0.0)&quot;,org.eclipse.ui.workbench.texteditor;bundle-version=&quot;[3.5.0,4.0.0)&quot;,org.eclipse.ui.editors;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.debug.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jdt.core;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jdt.debug.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jdt.launching;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jdt.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.pde.build;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.search;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.team.core;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui;bundle-version=&quot;[3.5.0,4.0.0)&quot;,org.eclipse.update.core;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui.forms;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ant.ui;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.jdt.junit;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui.intro;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui.cheatsheets;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.update.configurator;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui.views.log;bundle-version=&quot;[1.0.0,2.0.0)&quot;,org.eclipse.ltk.core.refactoring;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.variables;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.compare;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.filesystem;bundle-version=&quot;[1.0.0,2.0.0)&quot;,org.eclipse.ltk.ui.refactoring;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.expressions;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui.navigator.resources;bundle-version=&quot;[3.3.100,4.0.0)&quot;,org.eclipse.equinox.p2.ui;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.metadata;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.engine;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.core;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.director;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.artifact.repository;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.metadata.repository;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.operations;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.repository;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.frameworkadmin;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.frameworkadmin.equinox;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.pde.launching;bundle-version=&quot;[3.6.0,4.0.0)&quot;;visibility:=reexport&#xA;Export-Package: org.eclipse.pde.internal.ui;x-internal:=true,org.eclipse.pde.internal.ui.build;x-internal:=true,org.eclipse.pde.internal.ui.commands;x-internal:=true,org.eclipse.pde.internal.ui.compare;x-internal:=true,org.eclipse.pde.internal.ui.correction;x-internal:=true,org.eclipse.pde.internal.ui.correction.java;x-internal:=true,org.eclipse.pde.internal.ui.dialogs;x-internal:=true,org.eclipse.pde.internal.ui.editor;x-friends:=&quot;org.eclipse.pde.ds.ui,org.eclipse.pde.ua.ui&quot;,org.eclipse.pde.internal.ui.editor.actions;x-internal:=true,org.eclipse.pde.internal.ui.editor.build;x-internal:=true,org.eclipse.pde.internal.ui.editor.category;x-internal:=true,org.eclipse.pde.internal.ui.editor.contentassist;x-internal:=true,org.eclipse.pde.internal.ui.editor.contentassist.display;x-internal:=true,org.eclipse.pde.internal.ui.editor.context;x-internal:=true,org.eclipse.pde.internal.ui.editor.feature;x-internal:=true,org.eclipse.pde.internal.ui.editor.outline;x-internal:=true,org.eclipse.pde.internal.ui.editor.plugin;x-friends:=&quot;org.eclipse.pde.runtime&quot;,org.eclipse.pde.internal.ui.editor.plugin.rows;x-internal:=true,org.eclipse.pde.internal.ui.editor.product;x-internal:=true,org.eclipse.pde.internal.ui.editor.schema;x-internal:=true,org.eclipse.pde.internal.ui.editor.site;x-internal:=true,org.eclipse.pde.internal.ui.editor.targetdefinition;x-internal:=true,org.eclipse.pde.internal.ui.editor.text;x-internal:=true,org.eclipse.pde.internal.ui.editor.validation;x-internal:=true,org.eclipse.pde.internal.ui.elements;x-internal:=true,org.eclipse.pde.internal.ui.launcher;x-internal:=true,org.eclipse.pde.internal.ui.nls;x-internal:=true,org.eclipse.pde.internal.ui.parts;x-internal:=true,org.eclipse.pde.internal.ui.preferences;x-internal:=true,org.eclipse.pde.internal.ui.properties;x-internal:=true,org.eclipse.pde.internal.ui.refactoring;x-internal:=true,org.eclipse.pde.internal.ui.samples;x-internal:=true,org.eclipse.pde.internal.ui.search;x-internal:=true,org.eclipse.pde.internal.ui.search.dependencies;x-internal:=true,org.eclipse.pde.internal.ui.search.dialogs;x-internal:=true,org.eclipse.pde.internal.ui.shared.target;x-internal:=true,org.eclipse.pde.internal.ui.util;x-internal:=true,org.eclipse.pde.internal.ui.views.dependencies;x-internal:=true,org.eclipse.pde.internal.ui.views.plugins;x-internal:=true,org.eclipse.pde.internal.ui.views.target;x-internal:=true,org.eclipse.pde.internal.ui.wizards;x-internal:=true,org.eclipse.pde.internal.ui.wizards.category;x-internal:=true,org.eclipse.pde.internal.ui.wizards.exports;x-internal:=true,org.eclipse.pde.internal.ui.wizards.extension;x-internal:=true,org.eclipse.pde.internal.ui.wizards.feature;x-internal:=true,org.eclipse.pde.internal.ui.wizards.imports;x-internal:=true,org.eclipse.pde.internal.ui.wizards.plugin;x-internal:=true,org.eclipse.pde.internal.ui.wizards.product;x-friends:=&quot;org.eclipse.pde.ui.templates&quot;,org.eclipse.pde.internal.ui.wizards.site;x-internal:=true,org.eclipse.pde.internal.ui.wizards.target;x-internal:=true,org.eclipse.pde.internal.ui.wizards.templates;x-internal:=true,org.eclipse.pde.internal.ui.wizards.tools;x-internal:=true,org.eclipse.pde.ui,org.eclipse.pde.ui.launcher,org.eclipse.pde.ui.templates&#xA;Bundle-SymbolicName: org.eclipse.pde.ui; singleton:=true&#xA;Manifest-Version: 1.0&#xA;Bundle-ActivationPolicy: lazy&#xA;Bundle-ManifestVersion: 2&#xA;Bundle-RequiredExecutionEnvironment: J2SE-1.4&#xA;Bundle-Localization: plugin
+ Bundle-Name: %name&#xA;Bundle-Version: 3.6.0.v20100115&#xA;Eclipse-LazyStart: true&#xA;Import-Package: com.ibm.icu.text,org.eclipse.jdt.debug.core&#xA;Bundle-Activator: org.eclipse.pde.internal.ui.PDEPlugin&#xA;Bundle-Vendor: %provider-name&#xA;Require-Bundle: org.eclipse.pde.core;bundle-version=&quot;[3.6.0,4.0.0)&quot;;visibility:=reexport,org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui.ide;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui.views;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jface.text;bundle-version=&quot;[3.5.0,4.0.0)&quot;,org.eclipse.ui.workbench.texteditor;bundle-version=&quot;[3.5.0,4.0.0)&quot;,org.eclipse.ui.editors;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.debug.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jdt.core;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jdt.debug.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jdt.launching;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jdt.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.pde.build;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.search;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.team.core;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui;bundle-version=&quot;[3.5.0,4.0.0)&quot;,org.eclipse.update.core;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui.forms;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ant.ui;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.jdt.junit;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui.intro;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui.cheatsheets;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui.views.log;bundle-version=&quot;[1.0.0,2.0.0)&quot;,org.eclipse.ltk.core.refactoring;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.variables;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.compare;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.filesystem;bundle-version=&quot;[1.0.0,2.0.0)&quot;,org.eclipse.ltk.ui.refactoring;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.expressions;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui.navigator.resources;bundle-version=&quot;[3.3.100,4.0.0)&quot;,org.eclipse.equinox.p2.ui;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.metadata;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.engine;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.core;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.director;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.artifact.repository;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.metadata.repository;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.operations;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.repository;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.frameworkadmin;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.frameworkadmin.equinox;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.pde.launching;bundle-version=&quot;[3.6.0,4.0.0)&quot;;visibility:=reexport&#xA;Export-Package: org.eclipse.pde.internal.ui;x-internal:=true,org.eclipse.pde.internal.ui.build;x-internal:=true,org.eclipse.pde.internal.ui.commands;x-internal:=true,org.eclipse.pde.internal.ui.compare;x-internal:=true,org.eclipse.pde.internal.ui.correction;x-internal:=true,org.eclipse.pde.internal.ui.correction.java;x-internal:=true,org.eclipse.pde.internal.ui.dialogs;x-internal:=true,org.eclipse.pde.internal.ui.editor;x-friends:=&quot;org.eclipse.pde.ds.ui,org.eclipse.pde.ua.ui&quot;,org.eclipse.pde.internal.ui.editor.actions;x-internal:=true,org.eclipse.pde.internal.ui.editor.build;x-internal:=true,org.eclipse.pde.internal.ui.editor.category;x-internal:=true,org.eclipse.pde.internal.ui.editor.contentassist;x-internal:=true,org.eclipse.pde.internal.ui.editor.contentassist.display;x-internal:=true,org.eclipse.pde.internal.ui.editor.context;x-internal:=true,org.eclipse.pde.internal.ui.editor.feature;x-internal:=true,org.eclipse.pde.internal.ui.editor.outline;x-internal:=true,org.eclipse.pde.internal.ui.editor.plugin;x-friends:=&quot;org.eclipse.pde.runtime&quot;,org.eclipse.pde.internal.ui.editor.plugin.rows;x-internal:=true,org.eclipse.pde.internal.ui.editor.product;x-internal:=true,org.eclipse.pde.internal.ui.editor.schema;x-internal:=true,org.eclipse.pde.internal.ui.editor.site;x-internal:=true,org.eclipse.pde.internal.ui.editor.targetdefinition;x-internal:=true,org.eclipse.pde.internal.ui.editor.text;x-internal:=true,org.eclipse.pde.internal.ui.editor.validation;x-internal:=true,org.eclipse.pde.internal.ui.elements;x-internal:=true,org.eclipse.pde.internal.ui.launcher;x-internal:=true,org.eclipse.pde.internal.ui.nls;x-internal:=true,org.eclipse.pde.internal.ui.parts;x-internal:=true,org.eclipse.pde.internal.ui.preferences;x-internal:=true,org.eclipse.pde.internal.ui.properties;x-internal:=true,org.eclipse.pde.internal.ui.refactoring;x-internal:=true,org.eclipse.pde.internal.ui.samples;x-internal:=true,org.eclipse.pde.internal.ui.search;x-internal:=true,org.eclipse.pde.internal.ui.search.dependencies;x-internal:=true,org.eclipse.pde.internal.ui.search.dialogs;x-internal:=true,org.eclipse.pde.internal.ui.shared.target;x-internal:=true,org.eclipse.pde.internal.ui.util;x-internal:=true,org.eclipse.pde.internal.ui.views.dependencies;x-internal:=true,org.eclipse.pde.internal.ui.views.plugins;x-internal:=true,org.eclipse.pde.internal.ui.views.target;x-internal:=true,org.eclipse.pde.internal.ui.wizards;x-internal:=true,org.eclipse.pde.internal.ui.wizards.category;x-internal:=true,org.eclipse.pde.internal.ui.wizards.exports;x-internal:=true,org.eclipse.pde.internal.ui.wizards.extension;x-internal:=true,org.eclipse.pde.internal.ui.wizards.feature;x-internal:=true,org.eclipse.pde.internal.ui.wizards.imports;x-internal:=true,org.eclipse.pde.internal.ui.wizards.plugin;x-internal:=true,org.eclipse.pde.internal.ui.wizards.product;x-friends:=&quot;org.eclipse.pde.ui.templates&quot;,org.eclipse.pde.internal.ui.wizards.site;x-internal:=true,org.eclipse.pde.internal.ui.wizards.target;x-internal:=true,org.eclipse.pde.internal.ui.wizards.templates;x-internal:=true,org.eclipse.pde.internal.ui.wizards.tools;x-internal:=true,org.eclipse.pde.ui,org.eclipse.pde.ui.launcher,org.eclipse.pde.ui.templates&#xA;Bundle-SymbolicName: org.eclipse.pde.ui; singleton:=true&#xA;Manifest-Version: 1.0&#xA;Bundle-ActivationPolicy: lazy&#xA;Bundle-ManifestVersion: 2&#xA;Bundle-RequiredExecutionEnvironment: J2SE-1.4&#xA;Bundle-Localization: plugin
</instruction>
</instructions>
</touchpointData>
@@ -12772,7 +12769,6 @@
(&amp;(osgi.os=macosx)(osgi.ws=cocoa))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.update.configurator' range='[3.3.100.v20090813,3.3.100.v20090813]'/>
<required namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.equinox.simpleconfigurator' range='[1.0.200.v20101015-0947,1.0.200.v20101015-0947]'/>
<required namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.swt.win32.win32.x86' range='[3.6.0.v3627,3.6.0.v3627]'>
<filter>
@@ -13092,7 +13088,6 @@
(&amp;(osgi.os=macosx)(osgi.ws=cocoa))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.update.configurator.source' range='[3.3.100.v20090813,3.3.100.v20090813]'/>
<required namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.equinox.simpleconfigurator.source' range='[1.0.200.v20101015-0947,1.0.200.v20101015-0947]'/>
<required namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.swt.win32.win32.x86.source' range='[3.6.0.v3627,3.6.0.v3627]'>
<filter>
@@ -15674,71 +15669,6 @@
</instructions>
</touchpointData>
</unit>
- <unit id='org.eclipse.update.configurator' version='3.3.100.v20090813'>
- <update id='org.eclipse.update.configurator' range='[0.0.0,3.3.100.v20090813)' severity='0'/>
- <properties size='5'>
- <property name='df_LT.providerName' value='Eclipse.org'/>
- <property name='df_LT.pluginName' value='Install/Update Configurator'/>
- <property name='org.eclipse.equinox.p2.name' value='%pluginName'/>
- <property name='org.eclipse.equinox.p2.provider' value='%providerName'/>
- <property name='org.eclipse.equinox.p2.bundle.localization' value='plugin'/>
- </properties>
- <provides size='7'>
- <provided namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.update.configurator' version='3.3.100.v20090813'/>
- <provided namespace='osgi.bundle' name='org.eclipse.update.configurator' version='3.3.100.v20090813'/>
- <provided namespace='java.package' name='org.eclipse.update.configurator' version='0.0.0'/>
- <provided namespace='java.package' name='org.eclipse.update.internal.configurator' version='0.0.0'/>
- <provided namespace='java.package' name='org.eclipse.update.internal.configurator.branding' version='0.0.0'/>
- <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
- <provided namespace='org.eclipse.equinox.p2.localization' name='df_LT' version='1.0.0'/>
- </provides>
- <requires size='6'>
- <required namespace='osgi.bundle' name='org.eclipse.equinox.common' range='[3.2.0,4.0.0)'/>
- <required namespace='osgi.bundle' name='org.eclipse.osgi' range='[3.2.0,4.0.0)'/>
- <required namespace='java.package' name='javax.xml.parsers' range='0.0.0'/>
- <required namespace='java.package' name='org.w3c.dom' range='0.0.0'/>
- <required namespace='java.package' name='org.xml.sax' range='0.0.0'/>
- <required namespace='java.package' name='org.xml.sax.helpers' range='0.0.0'/>
- </requires>
- <artifacts size='1'>
- <artifact classifier='osgi.bundle' id='org.eclipse.update.configurator' version='3.3.100.v20090813'/>
- </artifacts>
- <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
- <touchpointData size='1'>
- <instructions size='1'>
- <instruction key='manifest'>
- Bundle-Name: %pluginName&#xA;Bundle-Version: 3.3.100.v20090813&#xA;Eclipse-LazyStart: true&#xA;Import-Package: javax.xml.parsers,org.w3c.dom,org.xml.sax,org.xml.sax.helpers&#xA;Bundle-Activator: org.eclipse.update.internal.configurator.ConfigurationActivator&#xA;Bundle-Vendor: %providerName&#xA;Require-Bundle: org.eclipse.equinox.common;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.osgi;bundle-version=&quot;[3.2.0,4.0.0)&quot;&#xA;Export-Package: org.eclipse.update.configurator,org.eclipse.update.internal.configurator;x-friends:=&quot;org.eclipse.update.core&quot;,org.eclipse.update.internal.configurator.branding;x-friends:=&quot;org.eclipse.update.core&quot;&#xA;Bundle-SymbolicName: org.eclipse.update.configurator; singleton:=true&#xA;Manifest-Version: 1.0&#xA;Service-Component: OSGI-INF/bundleGroup.xml&#xA;Bundle-ManifestVersion: 2&#xA;Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Localization: plugin
- </instruction>
- </instructions>
- </touchpointData>
- </unit>
- <unit id='org.eclipse.update.configurator.source' version='3.3.100.v20090813' singleton='false'>
- <update id='org.eclipse.update.configurator.source' range='[0.0.0,3.3.100.v20090813)' severity='0'/>
- <properties size='5'>
- <property name='df_LT.providerName' value='Eclipse.org'/>
- <property name='df_LT.pluginName' value='Install/Update Configurator Source'/>
- <property name='org.eclipse.equinox.p2.name' value='%pluginName'/>
- <property name='org.eclipse.equinox.p2.provider' value='%providerName'/>
- <property name='org.eclipse.equinox.p2.bundle.localization' value='plugin'/>
- </properties>
- <provides size='4'>
- <provided namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.update.configurator.source' version='3.3.100.v20090813'/>
- <provided namespace='osgi.bundle' name='org.eclipse.update.configurator.source' version='3.3.100.v20090813'/>
- <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='source' version='1.0.0'/>
- <provided namespace='org.eclipse.equinox.p2.localization' name='df_LT' version='1.0.0'/>
- </provides>
- <artifacts size='1'>
- <artifact classifier='osgi.bundle' id='org.eclipse.update.configurator.source' version='3.3.100.v20090813'/>
- </artifacts>
- <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
- <touchpointData size='1'>
- <instructions size='1'>
- <instruction key='manifest'>
- Bundle-ManifestVersion: 2&#xA;Bundle-Version: 3.3.100.v20090813&#xA;Manifest-Version: 1.0&#xA;Bundle-SymbolicName: org.eclipse.update.configurator.source&#xA;Bundle-Name: %pluginName&#xA;Bundle-Localization: plugin&#xA;Eclipse-SourceBundle: org.eclipse.update.configurator;version=&quot;3.3.100.v20090813&quot;;roots:=&quot;.&quot;&#xA;Bundle-Vendor: %providerName
- </instruction>
- </instructions>
- </touchpointData>
- </unit>
<unit id='org.eclipse.update.core' version='3.2.300.v20090525'>
<update id='org.eclipse.update.core' range='[0.0.0,3.2.300.v20090525)' severity='0'/>
<properties size='5'>
@@ -15901,7 +15831,6 @@
<required namespace='osgi.bundle' name='org.eclipse.update.core' range='[3.1.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.update.ui' range='[3.1.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.ui' range='[3.2.0,4.0.0)'/>
- <required namespace='osgi.bundle' name='org.eclipse.update.configurator' range='[3.1.100,4.0.0)'/>
</requires>
<artifacts size='1'>
<artifact classifier='osgi.bundle' id='org.eclipse.update.scheduler' version='3.2.200.v20081127'/>
@@ -15910,7 +15839,7 @@
<touchpointData size='1'>
<instructions size='1'>
<instruction key='manifest'>
- Bundle-ManifestVersion: 2&#xA;Export-Package: org.eclipse.update.internal.scheduler;x-internal:=true,org.eclipse.update.internal.scheduler.preferences;x-internal:=true&#xA;Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Localization: plugin&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.update.core;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.update.ui;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.update.configurator;bundle-version=&quot;[3.1.100,4.0.0)&quot;&#xA;Bundle-Activator: org.eclipse.update.internal.scheduler.UpdateSchedulerPlugin&#xA;Bundle-Name: %pluginName&#xA;Bundle-Version: 3.2.200.v20081127&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.update.scheduler; singleton:=true&#xA;Manifest-Version: 1.0&#xA;Eclipse-LazyStart: true
+ Bundle-ManifestVersion: 2&#xA;Export-Package: org.eclipse.update.internal.scheduler;x-internal:=true,org.eclipse.update.internal.scheduler.preferences;x-internal:=true&#xA;Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Localization: plugin&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.update.core;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.update.ui;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;&#xA;Bundle-Activator: org.eclipse.update.internal.scheduler.UpdateSchedulerPlugin&#xA;Bundle-Name: %pluginName&#xA;Bundle-Version: 3.2.200.v20081127&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.update.scheduler; singleton:=true&#xA;Manifest-Version: 1.0&#xA;Eclipse-LazyStart: true
</instruction>
</instructions>
</touchpointData>
@@ -15970,7 +15899,6 @@
<required namespace='osgi.bundle' name='org.eclipse.core.runtime' range='[3.1.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.ui' range='[3.2.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.update.core' range='[3.1.0,4.0.0)'/>
- <required namespace='osgi.bundle' name='org.eclipse.update.configurator' range='[3.1.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.ui.forms' range='[3.2.0,4.0.0)'/>
<required namespace='java.package' name='javax.xml.parsers' range='0.0.0'/>
<required namespace='java.package' name='org.w3c.dom' range='0.0.0'/>
@@ -15983,7 +15911,7 @@
<touchpointData size='1'>
<instructions size='1'>
<instruction key='manifest'>
- Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Name: %pluginName&#xA;Bundle-Activator: org.eclipse.update.internal.ui.UpdateUI&#xA;Manifest-Version: 1.0&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.update.ui; singleton:=true&#xA;Import-Package: javax.xml.parsers,org.w3c.dom,org.xml.sax&#xA;Bundle-ManifestVersion: 2&#xA;Eclipse-LazyStart: true&#xA;Bundle-Version: 3.2.300.v20090813&#xA;Bundle-Localization: plugin&#xA;Export-Package: org.eclipse.update.internal.ui;x-friends:=&quot;org.eclipse.update.scheduler&quot;,org.eclipse.update.internal.ui.model;x-internal:=true,org.eclipse.update.internal.ui.parts;x-internal:=true,org.eclipse.update.internal.ui.preferences;x-internal:=true,org.eclipse.update.internal.ui.properties;x-internal:=true,org.eclipse.update.internal.ui.security;x-internal:=true,org.eclipse.update.internal.ui.views;x-internal:=true,org.eclipse.update.internal.ui.wizards;x-friends:=&quot;org.eclipse.update.scheduler&quot;,org.eclipse.update.ui&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.update.core;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.update.configurator;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui.forms;bundle-version=&quot;[3.2.0,4.0.0)&quot;
+ Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Name: %pluginName&#xA;Bundle-Activator: org.eclipse.update.internal.ui.UpdateUI&#xA;Manifest-Version: 1.0&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.update.ui; singleton:=true&#xA;Import-Package: javax.xml.parsers,org.w3c.dom,org.xml.sax&#xA;Bundle-ManifestVersion: 2&#xA;Eclipse-LazyStart: true&#xA;Bundle-Version: 3.2.300.v20090813&#xA;Bundle-Localization: plugin&#xA;Export-Package: org.eclipse.update.internal.ui;x-friends:=&quot;org.eclipse.update.scheduler&quot;,org.eclipse.update.internal.ui.model;x-internal:=true,org.eclipse.update.internal.ui.parts;x-internal:=true,org.eclipse.update.internal.ui.preferences;x-internal:=true,org.eclipse.update.internal.ui.properties;x-internal:=true,org.eclipse.update.internal.ui.security;x-internal:=true,org.eclipse.update.internal.ui.views;x-internal:=true,org.eclipse.update.internal.ui.wizards;x-friends:=&quot;org.eclipse.update.scheduler&quot;,org.eclipse.update.ui&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.update.core;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui.forms;bundle-version=&quot;[3.2.0,4.0.0)&quot;
</instruction>
</instructions>
</touchpointData>
@@ -16757,11 +16685,6 @@
(&amp; (osgi.ws=gtk)(osgi.os=linux)(osgi.arch=x86_64))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.linux.ppcorg.eclipse.update.configurator' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
- <filter>
- (&amp; (osgi.ws=gtk)(osgi.os=linux)(osgi.arch=ppc))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolingmotif.hpux.ia64_32org.eclipse.core.runtime' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
<filter>
(&amp; (osgi.ws=motif)(osgi.os=hpux)(osgi.arch=ia64_32))
@@ -16812,11 +16735,6 @@
(&amp; (osgi.ws=gtk)(osgi.os=solaris)(osgi.arch=x86))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolingmotif.hpux.ia64_32org.eclipse.update.configurator' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
- <filter>
- (&amp; (osgi.ws=motif)(osgi.os=hpux)(osgi.arch=ia64_32))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolingorg.eclipse.sdk.ide.ini.carbon.macosx.ppc' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
<filter>
(&amp; (osgi.ws=carbon)(osgi.os=macosx)(osgi.arch=ppc))
@@ -16837,11 +16755,6 @@
(&amp; (osgi.ws=gtk)(osgi.os=solaris)(osgi.arch=sparc))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.solaris.sparcorg.eclipse.update.configurator' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
- <filter>
- (&amp; (osgi.ws=gtk)(osgi.os=solaris)(osgi.arch=sparc))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolingorg.eclipse.sdk.ide.ini.wpf.win32.x86' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
<filter>
(&amp; (osgi.ws=wpf)(osgi.os=win32)(osgi.arch=x86))
@@ -16887,11 +16800,6 @@
(&amp; (osgi.ws=gtk)(osgi.os=linux)(osgi.arch=x86))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolingcocoa.macosx.x86_64org.eclipse.update.configurator' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
- <filter>
- (&amp; (osgi.ws=cocoa)(osgi.os=macosx)(osgi.arch=x86_64))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.linux.ppc64org.eclipse.equinox.ds' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
<filter>
(&amp; (osgi.ws=gtk)(osgi.os=linux)(osgi.arch=ppc64))
@@ -16902,11 +16810,6 @@
(&amp; (osgi.ws=gtk)(osgi.os=linux)(osgi.arch=ppc64))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolingwin32.win32.x86_64org.eclipse.update.configurator' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
- <filter>
- (&amp; (osgi.ws=win32)(osgi.os=win32)(osgi.arch=x86_64))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolingmotif.linux.x86org.eclipse.equinox.p2.reconciler.dropins' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
<filter>
(&amp; (osgi.ws=motif)(osgi.os=linux)(osgi.arch=x86))
@@ -16962,11 +16865,6 @@
(&amp; (osgi.ws=gtk)(osgi.os=solaris)(osgi.arch=sparc))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.solaris.x86org.eclipse.update.configurator' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
- <filter>
- (&amp; (osgi.ws=gtk)(osgi.os=solaris)(osgi.arch=x86))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolingwpf.win32.x86org.eclipse.equinox.p2.reconciler.dropins' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
<filter>
(&amp; (osgi.ws=wpf)(osgi.os=win32)(osgi.arch=x86))
@@ -17002,11 +16900,6 @@
(&amp; (osgi.ws=cocoa)(osgi.os=macosx)(osgi.arch=x86))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.linux.x86_64org.eclipse.update.configurator' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
- <filter>
- (&amp; (osgi.ws=gtk)(osgi.os=linux)(osgi.arch=x86_64))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolingcocoa.macosx.x86org.eclipse.equinox.p2.reconciler.dropins' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
<filter>
(&amp; (osgi.ws=cocoa)(osgi.os=macosx)(osgi.arch=x86))
@@ -17047,11 +16940,6 @@
(&amp; (osgi.ws=cocoa)(osgi.os=macosx)(osgi.arch=x86))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolingcarbon.macosx.x86org.eclipse.update.configurator' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
- <filter>
- (&amp; (osgi.ws=carbon)(osgi.os=macosx)(osgi.arch=x86))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolingorg.eclipse.sdk.ide.ini.motif.linux.x86' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
<filter>
(&amp; (osgi.ws=motif)(osgi.os=linux)(osgi.arch=x86))
@@ -17162,11 +17050,6 @@
(&amp; (osgi.ws=motif)(osgi.os=linux)(osgi.arch=x86))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolingmotif.aix.ppcorg.eclipse.update.configurator' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
- <filter>
- (&amp; (osgi.ws=motif)(osgi.os=aix)(osgi.arch=ppc))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.linux.x86org.eclipse.equinox.p2.reconciler.dropins' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
<filter>
(&amp; (osgi.ws=gtk)(osgi.os=linux)(osgi.arch=x86))
@@ -17182,11 +17065,6 @@
(&amp; (osgi.ws=gtk)(osgi.os=solaris)(osgi.arch=x86))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.linux.x86org.eclipse.update.configurator' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
- <filter>
- (&amp; (osgi.ws=gtk)(osgi.os=linux)(osgi.arch=x86))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolingwin32.win32.x86org.eclipse.equinox.common' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
<filter>
(&amp; (osgi.ws=win32)(osgi.os=win32)(osgi.arch=x86))
@@ -17202,11 +17080,6 @@
(&amp; (osgi.ws=win32)(osgi.os=win32)(osgi.arch=x86))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolingwpf.win32.x86org.eclipse.update.configurator' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
- <filter>
- (&amp; (osgi.ws=wpf)(osgi.os=win32)(osgi.arch=x86))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolingorg.eclipse.sdk.ide.ini.gtk.linux.x86_64' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
<filter>
(&amp; (osgi.ws=gtk)(osgi.os=linux)(osgi.arch=x86_64))
@@ -17237,11 +17110,6 @@
(&amp; (osgi.ws=gtk)(osgi.os=solaris)(osgi.arch=x86))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolingcarbon.macosx.ppcorg.eclipse.update.configurator' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
- <filter>
- (&amp; (osgi.ws=carbon)(osgi.os=macosx)(osgi.arch=ppc))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolingorg.eclipse.sdk.ide.config.carbon.macosx.ppc' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
<filter>
(&amp; (osgi.ws=carbon)(osgi.os=macosx)(osgi.arch=ppc))
@@ -17317,11 +17185,6 @@
(&amp; (osgi.ws=wpf)(osgi.os=win32)(osgi.arch=x86))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolingwin32.win32.x86org.eclipse.update.configurator' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
- <filter>
- (&amp; (osgi.ws=win32)(osgi.os=win32)(osgi.arch=x86))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.solaris.x86org.eclipse.equinox.event' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
<filter>
(&amp; (osgi.ws=gtk)(osgi.os=solaris)(osgi.arch=x86))
@@ -17362,11 +17225,6 @@
(&amp; (osgi.ws=gtk)(osgi.os=solaris)(osgi.arch=sparc))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolingmotif.linux.x86org.eclipse.update.configurator' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
- <filter>
- (&amp; (osgi.ws=motif)(osgi.os=linux)(osgi.arch=x86))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.linux.x86org.eclipse.equinox.ds' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
<filter>
(&amp; (osgi.ws=gtk)(osgi.os=linux)(osgi.arch=x86))
@@ -17442,11 +17300,6 @@
(&amp; (osgi.ws=cocoa)(osgi.os=macosx)(osgi.arch=x86))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.linux.ppc64org.eclipse.update.configurator' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
- <filter>
- (&amp; (osgi.ws=gtk)(osgi.os=linux)(osgi.arch=ppc64))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.linux.x86_64org.eclipse.equinox.common' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
<filter>
(&amp; (osgi.ws=gtk)(osgi.os=linux)(osgi.arch=x86_64))
@@ -17467,11 +17320,6 @@
(&amp; (osgi.ws=gtk)(osgi.os=solaris)(osgi.arch=sparc))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolingcocoa.macosx.x86org.eclipse.update.configurator' range='[3.6.0.I20100115-1100,3.6.0.I20100115-1100]'>
- <filter>
- (&amp; (osgi.ws=cocoa)(osgi.os=macosx)(osgi.arch=x86))
- </filter>
- </required>
</requires>
<touchpoint id='null' version='0.0.0'/>
</unit>
@@ -17720,43 +17568,6 @@
</instructions>
</touchpointData>
</unit>
- <unit id='toolingwin32.win32.x86org.eclipse.update.configurator' version='3.6.0.I20100115-1100' singleton='false'>
- <hostRequirements size='2'>
- <required namespace='osgi.bundle' name='org.eclipse.update.configurator' range='3.3.100.v20090813'/>
- <required namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' range='[1.0.0,2.0.0)' greedy='false'/>
- </hostRequirements>
- <properties size='1'>
- <property name='org.eclipse.equinox.p2.type.fragment' value='true'/>
- </properties>
- <provides size='2'>
- <provided namespace='org.eclipse.equinox.p2.iu' name='toolingwin32.win32.x86org.eclipse.update.configurator' version='3.6.0.I20100115-1100'/>
- <provided namespace='org.eclipse.equinox.p2.flavor' name='toolingwin32.win32.x86' version='1.0.0'/>
- </provides>
- <requires size='2'>
- <required namespace='osgi.bundle' name='org.eclipse.update.configurator' range='3.3.100.v20090813'/>
- <required namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' range='[1.0.0,2.0.0)' greedy='false'/>
- </requires>
- <filter>
- (&amp; (osgi.ws=win32)(osgi.os=win32)(osgi.arch=x86))
- </filter>
- <touchpoint id='null' version='0.0.0'/>
- <touchpointData size='1'>
- <instructions size='4'>
- <instruction key='install'>
- installBundle(bundle:${artifact})
- </instruction>
- <instruction key='uninstall'>
- uninstallBundle(bundle:${artifact})
- </instruction>
- <instruction key='unconfigure'>
- setProgramProperty(propName:org.eclipse.update.reconcile, propValue:);
- </instruction>
- <instruction key='configure'>
- setProgramProperty(propName:org.eclipse.update.reconcile, propValue:false);
- </instruction>
- </instructions>
- </touchpointData>
- </unit>
</units>
<iusProperties size='434'>
<iuProperties id='org.eclipse.cvs_root' version='1.2.0.v20090814-7B77FEc8sF79P8FBQ5AN75'>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/bug309717/p2/org.eclipse.equinox.p2.engine/profileRegistry/PlatformProfile.profile/1271699173550.profile b/bundles/org.eclipse.equinox.p2.tests/testData/bug309717/p2/org.eclipse.equinox.p2.engine/profileRegistry/PlatformProfile.profile/1271699173550.profile
index 16ba6b419..59bec9cd0 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/bug309717/p2/org.eclipse.equinox.p2.engine/profileRegistry/PlatformProfile.profile/1271699173550.profile
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/bug309717/p2/org.eclipse.equinox.p2.engine/profileRegistry/PlatformProfile.profile/1271699173550.profile
@@ -48386,7 +48386,6 @@
</provides>
<requires size='5'>
<required namespace='osgi.bundle' name='org.eclipse.core.runtime' range='[3.2.0,4.0.0)'/>
- <required namespace='osgi.bundle' name='org.eclipse.update.configurator' range='[3.1.100,4.0.0)'/>
<required namespace='java.package' name='javax.xml.parsers' range='0.0.0'/>
<required namespace='java.package' name='org.xml.sax' range='0.0.0'/>
<required namespace='java.package' name='org.xml.sax.helpers' range='0.0.0'/>
@@ -48398,7 +48397,7 @@
<touchpointData size='1'>
<instructions size='1'>
<instruction key='manifest'>
- Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Name: %pluginName&#xA;Bundle-Activator: org.eclipse.core.internal.plugins.CompatibilityActivator&#xA;Manifest-Version: 1.0&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.core.runtime.compatibility; singleton:=true&#xA;Import-Package: javax.xml.parsers,org.xml.sax,org.xml.sax.helpers&#xA;Bundle-ManifestVersion: 2&#xA;Eclipse-LazyStart: true&#xA;Bundle-Version: 3.2.0.v20090413&#xA;Bundle-Localization: plugin&#xA;Export-Package: org.eclipse.core.boot,org.eclipse.core.internal.boot;x-internal:=true,org.eclipse.core.internal.compatibility;x-internal:=true,org.eclipse.core.internal.model;x-internal:=true,org.eclipse.core.internal.plugins;x-internal:=true,org.eclipse.core.runtime.model&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.2.0,4.0.0)&quot;;visibility:=reexport,org.eclipse.update.configurator;bundle-version=&quot;[3.1.100,4.0.0)&quot;;visibility:=reexport
+ Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Name: %pluginName&#xA;Bundle-Activator: org.eclipse.core.internal.plugins.CompatibilityActivator&#xA;Manifest-Version: 1.0&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.core.runtime.compatibility; singleton:=true&#xA;Import-Package: javax.xml.parsers,org.xml.sax,org.xml.sax.helpers&#xA;Bundle-ManifestVersion: 2&#xA;Eclipse-LazyStart: true&#xA;Bundle-Version: 3.2.0.v20090413&#xA;Bundle-Localization: plugin&#xA;Export-Package: org.eclipse.core.boot,org.eclipse.core.internal.boot;x-internal:=true,org.eclipse.core.internal.compatibility;x-internal:=true,org.eclipse.core.internal.model;x-internal:=true,org.eclipse.core.internal.plugins;x-internal:=true,org.eclipse.core.runtime.model&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.2.0,4.0.0)&quot;;visibility:=reexport
</instruction>
</instructions>
</touchpointData>
@@ -64347,7 +64346,6 @@
<required namespace='osgi.bundle' name='org.eclipse.core.resources' range='[3.2.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.jdt.core' range='[3.2.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.team.core' range='[3.2.0,4.0.0)'/>
- <required namespace='osgi.bundle' name='org.eclipse.update.configurator' range='[3.1.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.text' range='[3.1.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.jdt.launching' range='[3.2.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.core.filebuffers' range='[3.2.0,4.0.0)'/>
@@ -64375,7 +64373,7 @@
<touchpointData size='1'>
<instructions size='1'>
<instruction key='manifest'>
- Bundle-Name: %name&#xA;Bundle-Version: 3.6.0.v20100312&#xA;Eclipse-LazyStart: true&#xA;Import-Package: com.ibm.icu.util&#xA;Bundle-Activator: org.eclipse.pde.internal.core.PDECore&#xA;Bundle-Vendor: %provider-name&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.core.resources;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jdt.core;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.team.core;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.update.configurator;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.text;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.jdt.launching;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.filebuffers;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.variables;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.pde.build;bundle-version=&quot;[3.2.0,4.1.0)&quot;,org.eclipse.ant.core;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.equinox.simpleconfigurator.manipulator;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.frameworkadmin;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.debug.core;bundle-version=&quot;[3.5.0,4.0.0)&quot;,org.eclipse.equinox.p2.engine;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.core;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.metadata;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.director;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.artifact.repository;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.repository;bundle-version=&quot;[2.0.0,3.0.0]&quot;,org.eclipse.equinox.p2.metadata.repository;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.garbagecollector;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.touchpoint.eclipse;bundle-version=&quot;[2.0.0,3.0.0)&quot;&#xA;Export-Package: org.eclipse.pde.core,org.eclipse.pde.core.build,org.eclipse.pde.core.plugin,org.eclipse.pde.core.project,org.eclipse.pde.internal.core;x-friends:=&quot;org.eclipse.pde.ui,org.eclipse.pde.runtime,org.eclipse.pde.launching&quot;,org.eclipse.pde.internal.core.build;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.builders;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.bundle;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.content;x-internal:=true,org.eclipse.pde.internal.core.converter;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.exports;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.feature;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.ibundle;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.ifeature;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.importing;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.importing.provisional;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.iproduct;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.ischema;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.isite;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.natures;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.plugin;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.product;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.project;x-friends:=&quot;org.eclipse.pde.ui,org.eclipse.pde.launching&quot;,org.eclipse.pde.internal.core.schema;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.search;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.site;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.target;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.target.provisional;x-friends:=&quot;org.eclipse.pde.ui,org.eclipse.pde.api.tools.ui&quot;,org.eclipse.pde.internal.core.text; x-friends:=&quot;org.eclipse.pde.ui, org.eclipse.pde.ds.core, org.eclipse.pde.ua.core, org.eclipse.pde.ds.ui, org.eclipse.pde.ua.ui&quot;,org.eclipse.pde.internal.core.text.build;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.text.bundle;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.text.plugin;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.util;x-friends:=&quot;org.eclipse.pde.ui,org.eclipse.pde.ua.ui,org.eclipse.pde.launching&quot;,org.eclipse.pde.internal.core.variables;x-internal:=true&#xA;Bundle-SymbolicName: org.eclipse.pde.core; singleton:=true&#xA;Manifest-Version: 1.0&#xA;Bundle-ActivationPolicy: lazy&#xA;Bundle-ManifestVersion: 2&#xA;Bundle-RequiredExecutionEnvironment: J2SE-1.4&#xA;Bundle-Localization: plugin
+ Bundle-Name: %name&#xA;Bundle-Version: 3.6.0.v20100312&#xA;Eclipse-LazyStart: true&#xA;Import-Package: com.ibm.icu.util&#xA;Bundle-Activator: org.eclipse.pde.internal.core.PDECore&#xA;Bundle-Vendor: %provider-name&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.core.resources;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jdt.core;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.team.core;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.text;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.jdt.launching;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.filebuffers;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.variables;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.pde.build;bundle-version=&quot;[3.2.0,4.1.0)&quot;,org.eclipse.ant.core;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.equinox.simpleconfigurator.manipulator;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.frameworkadmin;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.debug.core;bundle-version=&quot;[3.5.0,4.0.0)&quot;,org.eclipse.equinox.p2.engine;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.core;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.metadata;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.director;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.artifact.repository;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.repository;bundle-version=&quot;[2.0.0,3.0.0]&quot;,org.eclipse.equinox.p2.metadata.repository;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.garbagecollector;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.touchpoint.eclipse;bundle-version=&quot;[2.0.0,3.0.0)&quot;&#xA;Export-Package: org.eclipse.pde.core,org.eclipse.pde.core.build,org.eclipse.pde.core.plugin,org.eclipse.pde.core.project,org.eclipse.pde.internal.core;x-friends:=&quot;org.eclipse.pde.ui,org.eclipse.pde.runtime,org.eclipse.pde.launching&quot;,org.eclipse.pde.internal.core.build;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.builders;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.bundle;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.content;x-internal:=true,org.eclipse.pde.internal.core.converter;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.exports;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.feature;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.ibundle;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.ifeature;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.importing;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.importing.provisional;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.iproduct;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.ischema;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.isite;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.natures;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.plugin;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.product;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.project;x-friends:=&quot;org.eclipse.pde.ui,org.eclipse.pde.launching&quot;,org.eclipse.pde.internal.core.schema;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.search;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.site;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.target;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.target.provisional;x-friends:=&quot;org.eclipse.pde.ui,org.eclipse.pde.api.tools.ui&quot;,org.eclipse.pde.internal.core.text; x-friends:=&quot;org.eclipse.pde.ui, org.eclipse.pde.ds.core, org.eclipse.pde.ua.core, org.eclipse.pde.ds.ui, org.eclipse.pde.ua.ui&quot;,org.eclipse.pde.internal.core.text.build;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.text.bundle;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.text.plugin;x-friends:=&quot;org.eclipse.pde.ui&quot;,org.eclipse.pde.internal.core.util;x-friends:=&quot;org.eclipse.pde.ui,org.eclipse.pde.ua.ui,org.eclipse.pde.launching&quot;,org.eclipse.pde.internal.core.variables;x-internal:=true&#xA;Bundle-SymbolicName: org.eclipse.pde.core; singleton:=true&#xA;Manifest-Version: 1.0&#xA;Bundle-ActivationPolicy: lazy&#xA;Bundle-ManifestVersion: 2&#xA;Bundle-RequiredExecutionEnvironment: J2SE-1.4&#xA;Bundle-Localization: plugin
</instruction>
</instructions>
</touchpointData>
@@ -65278,7 +65276,6 @@
<required namespace='osgi.bundle' name='org.eclipse.jdt.junit' range='[3.2.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.ui.intro' range='[3.2.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.ui.cheatsheets' range='[3.2.0,4.0.0)'/>
- <required namespace='osgi.bundle' name='org.eclipse.update.configurator' range='[3.1.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.ui.views.log' range='[1.0.0,2.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.ltk.core.refactoring' range='[3.2.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.core.variables' range='[3.1.0,4.0.0)'/>
@@ -65309,7 +65306,7 @@
<touchpointData size='1'>
<instructions size='1'>
<instruction key='manifest'>
- Bundle-Name: %name&#xA;Bundle-Version: 3.6.0.v20100312&#xA;Eclipse-LazyStart: true&#xA;Import-Package: com.ibm.icu.text,org.eclipse.jdt.debug.core&#xA;Bundle-Activator: org.eclipse.pde.internal.ui.PDEPlugin&#xA;Bundle-Vendor: %provider-name&#xA;Require-Bundle: org.eclipse.pde.core;bundle-version=&quot;[3.6.0,4.0.0)&quot;;visibility:=reexport,org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui.ide;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui.views;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jface.text;bundle-version=&quot;[3.5.0,4.0.0)&quot;,org.eclipse.ui.workbench.texteditor;bundle-version=&quot;[3.5.0,4.0.0)&quot;,org.eclipse.ui.editors;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.debug.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jdt.core;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jdt.debug.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jdt.launching;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jdt.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.pde.build;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.search;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.team.core;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui;bundle-version=&quot;[3.5.0,4.0.0)&quot;,org.eclipse.update.core;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui.forms;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ant.ui;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.jdt.junit;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui.intro;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui.cheatsheets;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.update.configurator;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui.views.log;bundle-version=&quot;[1.0.0,2.0.0)&quot;,org.eclipse.ltk.core.refactoring;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.variables;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.compare;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.filesystem;bundle-version=&quot;[1.0.0,2.0.0)&quot;,org.eclipse.ltk.ui.refactoring;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.expressions;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui.navigator.resources;bundle-version=&quot;[3.3.100,4.0.0)&quot;,org.eclipse.equinox.p2.ui;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.metadata;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.engine;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.core;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.director;bundle-version=&quot;[2.0.0, 3.0.0)&quot;,org.eclipse.equinox.p2.artifact.repository;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.metadata.repository;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.operations;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.repository;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.frameworkadmin;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.frameworkadmin.equinox;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.pde.launching;bundle-version=&quot;[3.6.0,4.0.0)&quot;;visibility:=reexport&#xA;Export-Package: org.eclipse.pde.internal.ui;x-internal:=true,org.eclipse.pde.internal.ui.build;x-internal:=true,org.eclipse.pde.internal.ui.commands;x-internal:=true,org.eclipse.pde.internal.ui.compare;x-internal:=true,org.eclipse.pde.internal.ui.correction;x-internal:=true,org.eclipse.pde.internal.ui.correction.java;x-internal:=true,org.eclipse.pde.internal.ui.dialogs;x-internal:=true,org.eclipse.pde.internal.ui.editor;x-friends:=&quot;org.eclipse.pde.ds.ui,org.eclipse.pde.ua.ui&quot;,org.eclipse.pde.internal.ui.editor.actions;x-internal:=true,org.eclipse.pde.internal.ui.editor.build;x-internal:=true,org.eclipse.pde.internal.ui.editor.category;x-internal:=true,org.eclipse.pde.internal.ui.editor.contentassist;x-internal:=true,org.eclipse.pde.internal.ui.editor.contentassist.display;x-internal:=true,org.eclipse.pde.internal.ui.editor.context;x-internal:=true,org.eclipse.pde.internal.ui.editor.feature;x-internal:=true,org.eclipse.pde.internal.ui.editor.outline;x-internal:=true,org.eclipse.pde.internal.ui.editor.plugin;x-friends:=&quot;org.eclipse.pde.runtime&quot;,org.eclipse.pde.internal.ui.editor.plugin.rows;x-internal:=true,org.eclipse.pde.internal.ui.editor.product;x-internal:=true,org.eclipse.pde.internal.ui.editor.schema;x-internal:=true,org.eclipse.pde.internal.ui.editor.site;x-internal:=true,org.eclipse.pde.internal.ui.editor.targetdefinition;x-internal:=true,org.eclipse.pde.internal.ui.editor.text;x-internal:=true,org.eclipse.pde.internal.ui.editor.validation;x-internal:=true,org.eclipse.pde.internal.ui.elements;x-internal:=true,org.eclipse.pde.internal.ui.launcher;x-internal:=true,org.eclipse.pde.internal.ui.nls;x-internal:=true,org.eclipse.pde.internal.ui.parts;x-internal:=true,org.eclipse.pde.internal.ui.preferences;x-internal:=true,org.eclipse.pde.internal.ui.properties;x-internal:=true,org.eclipse.pde.internal.ui.refactoring;x-internal:=true,org.eclipse.pde.internal.ui.samples;x-internal:=true,org.eclipse.pde.internal.ui.search;x-internal:=true,org.eclipse.pde.internal.ui.search.dependencies;x-internal:=true,org.eclipse.pde.internal.ui.search.dialogs;x-internal:=true,org.eclipse.pde.internal.ui.shared;x-internal:=true,org.eclipse.pde.internal.ui.shared.target;x-internal:=true,org.eclipse.pde.internal.ui.util;x-internal:=true,org.eclipse.pde.internal.ui.views.dependencies;x-internal:=true,org.eclipse.pde.internal.ui.views.plugins;x-internal:=true,org.eclipse.pde.internal.ui.views.target;x-internal:=true,org.eclipse.pde.internal.ui.wizards;x-internal:=true,org.eclipse.pde.internal.ui.wizards.category;x-internal:=true,org.eclipse.pde.internal.ui.wizards.exports;x-internal:=true,org.eclipse.pde.internal.ui.wizards.extension;x-internal:=true,org.eclipse.pde.internal.ui.wizards.feature;x-internal:=true,org.eclipse.pde.internal.ui.wizards.imports;x-internal:=true,org.eclipse.pde.internal.ui.wizards.plugin;x-internal:=true,org.eclipse.pde.internal.ui.wizards.product;x-friends:=&quot;org.eclipse.pde.ui.templates&quot;,org.eclipse.pde.internal.ui.wizards.site;x-internal:=true,org.eclipse.pde.internal.ui.wizards.target;x-internal:=true,org.eclipse.pde.internal.ui.wizards.templates;x-internal:=true,org.eclipse.pde.internal.ui.wizards.tools;x-internal:=true,org.eclipse.pde.ui,org.eclipse.pde.ui.launcher,org.eclipse.pde.ui.templates&#xA;Bundle-SymbolicName: org.eclipse.pde.ui; singleton:=true&#xA;Manifest-Version: 1.0&#xA;Bundle-ActivationPolicy: lazy&#xA;Bundle-ManifestVersion: 2&#xA;Bundle-RequiredExecutionEnvironment: J2SE-1.4&#xA;Bundle-Localization: plugin
+ Bundle-Name: %name&#xA;Bundle-Version: 3.6.0.v20100312&#xA;Eclipse-LazyStart: true&#xA;Import-Package: com.ibm.icu.text,org.eclipse.jdt.debug.core&#xA;Bundle-Activator: org.eclipse.pde.internal.ui.PDEPlugin&#xA;Bundle-Vendor: %provider-name&#xA;Require-Bundle: org.eclipse.pde.core;bundle-version=&quot;[3.6.0,4.0.0)&quot;;visibility:=reexport,org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui.ide;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui.views;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jface.text;bundle-version=&quot;[3.5.0,4.0.0)&quot;,org.eclipse.ui.workbench.texteditor;bundle-version=&quot;[3.5.0,4.0.0)&quot;,org.eclipse.ui.editors;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.debug.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jdt.core;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jdt.debug.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jdt.launching;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.jdt.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.pde.build;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.search;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.team.core;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui;bundle-version=&quot;[3.5.0,4.0.0)&quot;,org.eclipse.update.core;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui.forms;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ant.ui;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.jdt.junit;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui.intro;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui.cheatsheets;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui.views.log;bundle-version=&quot;[1.0.0,2.0.0)&quot;,org.eclipse.ltk.core.refactoring;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.variables;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.compare;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.filesystem;bundle-version=&quot;[1.0.0,2.0.0)&quot;,org.eclipse.ltk.ui.refactoring;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.core.expressions;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.ui.navigator.resources;bundle-version=&quot;[3.3.100,4.0.0)&quot;,org.eclipse.equinox.p2.ui;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.metadata;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.engine;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.core;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.director;bundle-version=&quot;[2.0.0, 3.0.0)&quot;,org.eclipse.equinox.p2.artifact.repository;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.metadata.repository;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.equinox.p2.operations;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.p2.repository;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.frameworkadmin;bundle-version=&quot;[2.0.0,3.0.0)&quot;,org.eclipse.equinox.frameworkadmin.equinox;bundle-version=&quot;[1.0.100,2.0.0)&quot;,org.eclipse.pde.launching;bundle-version=&quot;[3.6.0,4.0.0)&quot;;visibility:=reexport&#xA;Export-Package: org.eclipse.pde.internal.ui;x-internal:=true,org.eclipse.pde.internal.ui.build;x-internal:=true,org.eclipse.pde.internal.ui.commands;x-internal:=true,org.eclipse.pde.internal.ui.compare;x-internal:=true,org.eclipse.pde.internal.ui.correction;x-internal:=true,org.eclipse.pde.internal.ui.correction.java;x-internal:=true,org.eclipse.pde.internal.ui.dialogs;x-internal:=true,org.eclipse.pde.internal.ui.editor;x-friends:=&quot;org.eclipse.pde.ds.ui,org.eclipse.pde.ua.ui&quot;,org.eclipse.pde.internal.ui.editor.actions;x-internal:=true,org.eclipse.pde.internal.ui.editor.build;x-internal:=true,org.eclipse.pde.internal.ui.editor.category;x-internal:=true,org.eclipse.pde.internal.ui.editor.contentassist;x-internal:=true,org.eclipse.pde.internal.ui.editor.contentassist.display;x-internal:=true,org.eclipse.pde.internal.ui.editor.context;x-internal:=true,org.eclipse.pde.internal.ui.editor.feature;x-internal:=true,org.eclipse.pde.internal.ui.editor.outline;x-internal:=true,org.eclipse.pde.internal.ui.editor.plugin;x-friends:=&quot;org.eclipse.pde.runtime&quot;,org.eclipse.pde.internal.ui.editor.plugin.rows;x-internal:=true,org.eclipse.pde.internal.ui.editor.product;x-internal:=true,org.eclipse.pde.internal.ui.editor.schema;x-internal:=true,org.eclipse.pde.internal.ui.editor.site;x-internal:=true,org.eclipse.pde.internal.ui.editor.targetdefinition;x-internal:=true,org.eclipse.pde.internal.ui.editor.text;x-internal:=true,org.eclipse.pde.internal.ui.editor.validation;x-internal:=true,org.eclipse.pde.internal.ui.elements;x-internal:=true,org.eclipse.pde.internal.ui.launcher;x-internal:=true,org.eclipse.pde.internal.ui.nls;x-internal:=true,org.eclipse.pde.internal.ui.parts;x-internal:=true,org.eclipse.pde.internal.ui.preferences;x-internal:=true,org.eclipse.pde.internal.ui.properties;x-internal:=true,org.eclipse.pde.internal.ui.refactoring;x-internal:=true,org.eclipse.pde.internal.ui.samples;x-internal:=true,org.eclipse.pde.internal.ui.search;x-internal:=true,org.eclipse.pde.internal.ui.search.dependencies;x-internal:=true,org.eclipse.pde.internal.ui.search.dialogs;x-internal:=true,org.eclipse.pde.internal.ui.shared;x-internal:=true,org.eclipse.pde.internal.ui.shared.target;x-internal:=true,org.eclipse.pde.internal.ui.util;x-internal:=true,org.eclipse.pde.internal.ui.views.dependencies;x-internal:=true,org.eclipse.pde.internal.ui.views.plugins;x-internal:=true,org.eclipse.pde.internal.ui.views.target;x-internal:=true,org.eclipse.pde.internal.ui.wizards;x-internal:=true,org.eclipse.pde.internal.ui.wizards.category;x-internal:=true,org.eclipse.pde.internal.ui.wizards.exports;x-internal:=true,org.eclipse.pde.internal.ui.wizards.extension;x-internal:=true,org.eclipse.pde.internal.ui.wizards.feature;x-internal:=true,org.eclipse.pde.internal.ui.wizards.imports;x-internal:=true,org.eclipse.pde.internal.ui.wizards.plugin;x-internal:=true,org.eclipse.pde.internal.ui.wizards.product;x-friends:=&quot;org.eclipse.pde.ui.templates&quot;,org.eclipse.pde.internal.ui.wizards.site;x-internal:=true,org.eclipse.pde.internal.ui.wizards.target;x-internal:=true,org.eclipse.pde.internal.ui.wizards.templates;x-internal:=true,org.eclipse.pde.internal.ui.wizards.tools;x-internal:=true,org.eclipse.pde.ui,org.eclipse.pde.ui.launcher,org.eclipse.pde.ui.templates&#xA;Bundle-SymbolicName: org.eclipse.pde.ui; singleton:=true&#xA;Manifest-Version: 1.0&#xA;Bundle-ActivationPolicy: lazy&#xA;Bundle-ManifestVersion: 2&#xA;Bundle-RequiredExecutionEnvironment: J2SE-1.4&#xA;Bundle-Localization: plugin
</instruction>
</instructions>
</touchpointData>
@@ -66316,7 +66313,6 @@
(&amp;(osgi.os=macosx)(osgi.ws=cocoa))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.update.configurator' range='[3.3.100.v20100307,3.3.100.v20100307]'/>
<required namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.equinox.simpleconfigurator' range='[1.0.200.v20100304,1.0.200.v20100304]'/>
<required namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.swt.win32.win32.x86' range='[3.6.0.v3637e,3.6.0.v3637e]'>
<filter>
@@ -66626,7 +66622,6 @@
(&amp;(osgi.os=macosx)(osgi.ws=cocoa))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.update.configurator.source' range='[3.3.100.v20100307,3.3.100.v20100307]'/>
<required namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.equinox.simpleconfigurator.source' range='[1.0.200.v20100304,1.0.200.v20100304]'/>
<required namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.swt.win32.win32.x86.source' range='[3.6.0.v3637e,3.6.0.v3637e]'>
<filter>
@@ -69536,71 +69531,6 @@
</instructions>
</touchpointData>
</unit>
- <unit id='org.eclipse.update.configurator' version='3.3.100.v20100307'>
- <update id='org.eclipse.update.configurator' range='[0.0.0,3.3.100.v20100307)' severity='0'/>
- <properties size='5'>
- <property name='df_LT.providerName' value='Eclipse.org'/>
- <property name='df_LT.pluginName' value='Install/Update Configurator'/>
- <property name='org.eclipse.equinox.p2.name' value='%pluginName'/>
- <property name='org.eclipse.equinox.p2.provider' value='%providerName'/>
- <property name='org.eclipse.equinox.p2.bundle.localization' value='plugin'/>
- </properties>
- <provides size='7'>
- <provided namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.update.configurator' version='3.3.100.v20100307'/>
- <provided namespace='osgi.bundle' name='org.eclipse.update.configurator' version='3.3.100.v20100307'/>
- <provided namespace='java.package' name='org.eclipse.update.configurator' version='0.0.0'/>
- <provided namespace='java.package' name='org.eclipse.update.internal.configurator' version='0.0.0'/>
- <provided namespace='java.package' name='org.eclipse.update.internal.configurator.branding' version='0.0.0'/>
- <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
- <provided namespace='org.eclipse.equinox.p2.localization' name='df_LT' version='1.0.0'/>
- </provides>
- <requires size='6'>
- <required namespace='osgi.bundle' name='org.eclipse.equinox.common' range='[3.2.0,4.0.0)'/>
- <required namespace='osgi.bundle' name='org.eclipse.osgi' range='[3.2.0,4.0.0)'/>
- <required namespace='java.package' name='javax.xml.parsers' range='0.0.0'/>
- <required namespace='java.package' name='org.w3c.dom' range='0.0.0'/>
- <required namespace='java.package' name='org.xml.sax' range='0.0.0'/>
- <required namespace='java.package' name='org.xml.sax.helpers' range='0.0.0'/>
- </requires>
- <artifacts size='1'>
- <artifact classifier='osgi.bundle' id='org.eclipse.update.configurator' version='3.3.100.v20100307'/>
- </artifacts>
- <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
- <touchpointData size='1'>
- <instructions size='1'>
- <instruction key='manifest'>
- Bundle-Name: %pluginName&#xA;Bundle-Version: 3.3.100.v20100307&#xA;Eclipse-LazyStart: true&#xA;Import-Package: javax.xml.parsers,org.w3c.dom,org.xml.sax,org.xml.sax.helpers&#xA;Bundle-Activator: org.eclipse.update.internal.configurator.ConfigurationActivator&#xA;Bundle-Vendor: %providerName&#xA;Require-Bundle: org.eclipse.equinox.common;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.osgi;bundle-version=&quot;[3.2.0,4.0.0)&quot;&#xA;Export-Package: org.eclipse.update.configurator,org.eclipse.update.internal.configurator;x-friends:=&quot;org.eclipse.update.core&quot;,org.eclipse.update.internal.configurator.branding;x-friends:=&quot;org.eclipse.update.core&quot;&#xA;Bundle-SymbolicName: org.eclipse.update.configurator; singleton:=true&#xA;Manifest-Version: 1.0&#xA;Service-Component: OSGI-INF/bundleGroup.xml&#xA;Bundle-ManifestVersion: 2&#xA;Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Localization: plugin
- </instruction>
- </instructions>
- </touchpointData>
- </unit>
- <unit id='org.eclipse.update.configurator.source' version='3.3.100.v20100307' singleton='false'>
- <update id='org.eclipse.update.configurator.source' range='[0.0.0,3.3.100.v20100307)' severity='0'/>
- <properties size='5'>
- <property name='df_LT.providerName' value='Eclipse.org'/>
- <property name='df_LT.pluginName' value='Install/Update Configurator Source'/>
- <property name='org.eclipse.equinox.p2.name' value='%pluginName'/>
- <property name='org.eclipse.equinox.p2.provider' value='%providerName'/>
- <property name='org.eclipse.equinox.p2.bundle.localization' value='plugin'/>
- </properties>
- <provides size='4'>
- <provided namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.update.configurator.source' version='3.3.100.v20100307'/>
- <provided namespace='osgi.bundle' name='org.eclipse.update.configurator.source' version='3.3.100.v20100307'/>
- <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='source' version='1.0.0'/>
- <provided namespace='org.eclipse.equinox.p2.localization' name='df_LT' version='1.0.0'/>
- </provides>
- <artifacts size='1'>
- <artifact classifier='osgi.bundle' id='org.eclipse.update.configurator.source' version='3.3.100.v20100307'/>
- </artifacts>
- <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
- <touchpointData size='1'>
- <instructions size='1'>
- <instruction key='manifest'>
- Bundle-ManifestVersion: 2&#xA;Bundle-Version: 3.3.100.v20100307&#xA;Manifest-Version: 1.0&#xA;Bundle-SymbolicName: org.eclipse.update.configurator.source&#xA;Bundle-Name: %pluginName&#xA;Bundle-Localization: plugin&#xA;Eclipse-SourceBundle: org.eclipse.update.configurator;version=&quot;3.3.100.v20100307&quot;;roots:=&quot;.&quot;&#xA;Bundle-Vendor: %providerName
- </instruction>
- </instructions>
- </touchpointData>
- </unit>
<unit id='org.eclipse.update.core' version='3.2.400.v20100303'>
<update id='org.eclipse.update.core' range='[0.0.0,3.2.400.v20100303)' severity='0'/>
<properties size='5'>
@@ -69634,7 +69564,6 @@
</provides>
<requires size='7'>
<required namespace='osgi.bundle' name='org.eclipse.core.runtime' range='[3.4.0,4.0.0)'/>
- <required namespace='osgi.bundle' name='org.eclipse.update.configurator' range='[3.1.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.core.net' range='[1.0.0,2.0.0)'/>
<required namespace='java.package' name='javax.xml.parsers' range='0.0.0'/>
<required namespace='java.package' name='org.w3c.dom' range='0.0.0'/>
@@ -69648,7 +69577,7 @@
<touchpointData size='1'>
<instructions size='1'>
<instruction key='manifest'>
- Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Name: %pluginName&#xA;Bundle-Activator: org.eclipse.update.internal.core.UpdateCore&#xA;Manifest-Version: 1.0&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.update.core; singleton:=true&#xA;Import-Package: javax.xml.parsers,org.w3c.dom,org.xml.sax,org.xml.sax.helpers&#xA;Bundle-ManifestVersion: 2&#xA;Eclipse-LazyStart: true&#xA;Bundle-Version: 3.2.400.v20100303&#xA;Bundle-Localization: plugin&#xA;Export-Package: org.eclipse.update.configuration,org.eclipse.update.core,org.eclipse.update.core.model,org.eclipse.update.internal.core;x-friends:=&quot;org.eclipse.update.ui,org.eclipse.update.scheduler,org.eclipse.pde.build&quot;,org.eclipse.update.internal.core.connection;x-internal:=true,org.eclipse.update.internal.jarprocessor;x-friends:=&quot;org.eclipse.pde.build&quot;,org.eclipse.update.internal.mirror;x-internal:=true,org.eclipse.update.internal.model;x-friends:=&quot;org.eclipse.update.ui&quot;,org.eclipse.update.internal.operations;x-friends:=&quot;org.eclipse.update.ui,org.eclipse.update.scheduler&quot;,org.eclipse.update.internal.provisional;x-internal:=true,org.eclipse.update.internal.search;x-friends:=&quot;org.eclipse.update.ui&quot;,org.eclipse.update.internal.security;x-internal:=true,org.eclipse.update.internal.verifier;x-internal:=true,org.eclipse.update.operations,org.eclipse.update.search,org.eclipse.update.standalone&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.4.0,4.0.0)&quot;,org.eclipse.update.configurator;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.core.net;bundle-version=&quot;[1.0.0,2.0.0)&quot;
+ Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Name: %pluginName&#xA;Bundle-Activator: org.eclipse.update.internal.core.UpdateCore&#xA;Manifest-Version: 1.0&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.update.core; singleton:=true&#xA;Import-Package: javax.xml.parsers,org.w3c.dom,org.xml.sax,org.xml.sax.helpers&#xA;Bundle-ManifestVersion: 2&#xA;Eclipse-LazyStart: true&#xA;Bundle-Version: 3.2.400.v20100303&#xA;Bundle-Localization: plugin&#xA;Export-Package: org.eclipse.update.configuration,org.eclipse.update.core,org.eclipse.update.core.model,org.eclipse.update.internal.core;x-friends:=&quot;org.eclipse.update.ui,org.eclipse.update.scheduler,org.eclipse.pde.build&quot;,org.eclipse.update.internal.core.connection;x-internal:=true,org.eclipse.update.internal.jarprocessor;x-friends:=&quot;org.eclipse.pde.build&quot;,org.eclipse.update.internal.mirror;x-internal:=true,org.eclipse.update.internal.model;x-friends:=&quot;org.eclipse.update.ui&quot;,org.eclipse.update.internal.operations;x-friends:=&quot;org.eclipse.update.ui,org.eclipse.update.scheduler&quot;,org.eclipse.update.internal.provisional;x-internal:=true,org.eclipse.update.internal.search;x-friends:=&quot;org.eclipse.update.ui&quot;,org.eclipse.update.internal.security;x-internal:=true,org.eclipse.update.internal.verifier;x-internal:=true,org.eclipse.update.operations,org.eclipse.update.search,org.eclipse.update.standalone&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.4.0,4.0.0)&quot;,org.eclipse.core.net;bundle-version=&quot;[1.0.0,2.0.0)&quot;
</instruction>
</instructions>
</touchpointData>
@@ -69702,7 +69631,6 @@
<required namespace='osgi.bundle' name='org.eclipse.update.core' range='[3.1.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.update.ui' range='[3.1.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.ui' range='[3.2.0,4.0.0)'/>
- <required namespace='osgi.bundle' name='org.eclipse.update.configurator' range='[3.1.100,4.0.0)'/>
</requires>
<artifacts size='1'>
<artifact classifier='osgi.bundle' id='org.eclipse.update.scheduler' version='3.2.200.v20081127'/>
@@ -69711,7 +69639,7 @@
<touchpointData size='1'>
<instructions size='1'>
<instruction key='manifest'>
- Bundle-ManifestVersion: 2&#xA;Export-Package: org.eclipse.update.internal.scheduler;x-internal:=true,org.eclipse.update.internal.scheduler.preferences;x-internal:=true&#xA;Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Localization: plugin&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.update.core;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.update.ui;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.update.configurator;bundle-version=&quot;[3.1.100,4.0.0)&quot;&#xA;Bundle-Activator: org.eclipse.update.internal.scheduler.UpdateSchedulerPlugin&#xA;Bundle-Name: %pluginName&#xA;Bundle-Version: 3.2.200.v20081127&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.update.scheduler; singleton:=true&#xA;Manifest-Version: 1.0&#xA;Eclipse-LazyStart: true
+ Bundle-ManifestVersion: 2&#xA;Export-Package: org.eclipse.update.internal.scheduler;x-internal:=true,org.eclipse.update.internal.scheduler.preferences;x-internal:=true&#xA;Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Localization: plugin&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.update.core;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.update.ui;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;&#xA;Bundle-Activator: org.eclipse.update.internal.scheduler.UpdateSchedulerPlugin&#xA;Bundle-Name: %pluginName&#xA;Bundle-Version: 3.2.200.v20081127&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.update.scheduler; singleton:=true&#xA;Manifest-Version: 1.0&#xA;Eclipse-LazyStart: true
</instruction>
</instructions>
</touchpointData>
@@ -69771,7 +69699,6 @@
<required namespace='osgi.bundle' name='org.eclipse.core.runtime' range='[3.1.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.ui' range='[3.2.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.update.core' range='[3.1.0,4.0.0)'/>
- <required namespace='osgi.bundle' name='org.eclipse.update.configurator' range='[3.1.0,4.0.0)'/>
<required namespace='osgi.bundle' name='org.eclipse.ui.forms' range='[3.2.0,4.0.0)'/>
<required namespace='java.package' name='javax.xml.parsers' range='0.0.0'/>
<required namespace='java.package' name='org.w3c.dom' range='0.0.0'/>
@@ -69784,7 +69711,7 @@
<touchpointData size='1'>
<instructions size='1'>
<instruction key='manifest'>
- Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Name: %pluginName&#xA;Bundle-Activator: org.eclipse.update.internal.ui.UpdateUI&#xA;Manifest-Version: 1.0&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.update.ui; singleton:=true&#xA;Import-Package: javax.xml.parsers,org.w3c.dom,org.xml.sax&#xA;Bundle-ManifestVersion: 2&#xA;Eclipse-LazyStart: true&#xA;Bundle-Version: 3.2.300.v20090813&#xA;Bundle-Localization: plugin&#xA;Export-Package: org.eclipse.update.internal.ui;x-friends:=&quot;org.eclipse.update.scheduler&quot;,org.eclipse.update.internal.ui.model;x-internal:=true,org.eclipse.update.internal.ui.parts;x-internal:=true,org.eclipse.update.internal.ui.preferences;x-internal:=true,org.eclipse.update.internal.ui.properties;x-internal:=true,org.eclipse.update.internal.ui.security;x-internal:=true,org.eclipse.update.internal.ui.views;x-internal:=true,org.eclipse.update.internal.ui.wizards;x-friends:=&quot;org.eclipse.update.scheduler&quot;,org.eclipse.update.ui&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.update.core;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.update.configurator;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui.forms;bundle-version=&quot;[3.2.0,4.0.0)&quot;
+ Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J2SE-1.3&#xA;Bundle-Name: %pluginName&#xA;Bundle-Activator: org.eclipse.update.internal.ui.UpdateUI&#xA;Manifest-Version: 1.0&#xA;Bundle-Vendor: %providerName&#xA;Bundle-SymbolicName: org.eclipse.update.ui; singleton:=true&#xA;Import-Package: javax.xml.parsers,org.w3c.dom,org.xml.sax&#xA;Bundle-ManifestVersion: 2&#xA;Eclipse-LazyStart: true&#xA;Bundle-Version: 3.2.300.v20090813&#xA;Bundle-Localization: plugin&#xA;Export-Package: org.eclipse.update.internal.ui;x-friends:=&quot;org.eclipse.update.scheduler&quot;,org.eclipse.update.internal.ui.model;x-internal:=true,org.eclipse.update.internal.ui.parts;x-internal:=true,org.eclipse.update.internal.ui.preferences;x-internal:=true,org.eclipse.update.internal.ui.properties;x-internal:=true,org.eclipse.update.internal.ui.security;x-internal:=true,org.eclipse.update.internal.ui.views;x-internal:=true,org.eclipse.update.internal.ui.wizards;x-friends:=&quot;org.eclipse.update.scheduler&quot;,org.eclipse.update.ui&#xA;Require-Bundle: org.eclipse.core.runtime;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui;bundle-version=&quot;[3.2.0,4.0.0)&quot;,org.eclipse.update.core;bundle-version=&quot;[3.1.0,4.0.0)&quot;,org.eclipse.ui.forms;bundle-version=&quot;[3.2.0,4.0.0)&quot;
</instruction>
</instructions>
</touchpointData>
@@ -72167,43 +72094,6 @@
</instructions>
</touchpointData>
</unit>
- <unit id='toolingcocoa.macosx.x86org.eclipse.update.configurator' version='3.6.0.I20100312-1448' singleton='false'>
- <hostRequirements size='2'>
- <required namespace='osgi.bundle' name='org.eclipse.update.configurator' range='3.3.100.v20100307' multiple='true'/>
- <required namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' range='[1.0.0,2.0.0)' multiple='true' greedy='false'/>
- </hostRequirements>
- <properties size='1'>
- <property name='org.eclipse.equinox.p2.type.fragment' value='true'/>
- </properties>
- <provides size='2'>
- <provided namespace='org.eclipse.equinox.p2.iu' name='toolingcocoa.macosx.x86org.eclipse.update.configurator' version='3.6.0.I20100312-1448'/>
- <provided namespace='org.eclipse.equinox.p2.flavor' name='toolingcocoa.macosx.x86' version='1.0.0'/>
- </provides>
- <requires size='2'>
- <required namespace='osgi.bundle' name='org.eclipse.update.configurator' range='3.3.100.v20100307' multiple='true'/>
- <required namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' range='[1.0.0,2.0.0)' multiple='true' greedy='false'/>
- </requires>
- <filter>
- (&amp;(osgi.arch=x86)(osgi.os=macosx)(osgi.ws=cocoa))
- </filter>
- <touchpoint id='null' version='0.0.0'/>
- <touchpointData size='1'>
- <instructions size='4'>
- <instruction key='install'>
- installBundle(bundle:${artifact})
- </instruction>
- <instruction key='uninstall'>
- uninstallBundle(bundle:${artifact})
- </instruction>
- <instruction key='unconfigure'>
- setProgramProperty(propName:org.eclipse.update.reconcile, propValue:);
- </instruction>
- <instruction key='configure'>
- setProgramProperty(propName:org.eclipse.update.reconcile, propValue:false);
- </instruction>
- </instructions>
- </touchpointData>
- </unit>
<unit id='toolingorg.eclipse.configuration.macosx' version='1.0.0' singleton='false'>
<provides size='1'>
<provided namespace='org.eclipse.equinox.p2.iu' name='toolingorg.eclipse.configuration.macosx' version='1.0.0'/>
@@ -72321,11 +72211,6 @@
<provided namespace='org.eclipse.equinox.p2.iu' name='toolingorg.eclipse.sdk.ide.configuration' version='3.6.0.I20100312-1448'/>
</provides>
<requires size='135'>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.linux.ppcorg.eclipse.update.configurator' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
- <filter>
- (&amp;(osgi.arch=ppc)(osgi.os=linux)(osgi.ws=gtk))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolingcocoa.macosx.x86_64org.eclipse.equinox.p2.reconciler.dropins' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
<filter>
(&amp;(osgi.arch=x86_64)(osgi.os=macosx)(osgi.ws=cocoa))
@@ -72411,11 +72296,6 @@
(&amp;(osgi.arch=x86_64)(osgi.os=win32)(osgi.ws=win32))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolingcarbon.macosx.ppcorg.eclipse.update.configurator' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
- <filter>
- (&amp;(osgi.arch=ppc)(osgi.os=macosx)(osgi.ws=carbon))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolingcocoa.macosx.x86org.eclipse.equinox.event' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
<filter>
(&amp;(osgi.arch=x86)(osgi.os=macosx)(osgi.ws=cocoa))
@@ -72441,11 +72321,6 @@
(&amp;(osgi.arch=x86_64)(osgi.os=linux)(osgi.ws=gtk))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolingwin32.win32.x86_64org.eclipse.update.configurator' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
- <filter>
- (&amp;(osgi.arch=x86_64)(osgi.os=win32)(osgi.ws=win32))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.linux.x86_64org.eclipse.equinox.simpleconfigurator' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
<filter>
(&amp;(osgi.arch=x86_64)(osgi.os=linux)(osgi.ws=gtk))
@@ -72461,11 +72336,6 @@
(&amp;(osgi.arch=ia64_32)(osgi.os=hpux)(osgi.ws=motif))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolingmotif.linux.x86org.eclipse.update.configurator' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
- <filter>
- (&amp;(osgi.arch=x86)(osgi.os=linux)(osgi.ws=motif))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.linux.ppc64org.eclipse.core.runtime' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
<filter>
(&amp;(osgi.arch=ppc64)(osgi.os=linux)(osgi.ws=gtk))
@@ -72511,11 +72381,6 @@
(&amp;(osgi.arch=ppc)(osgi.os=linux)(osgi.ws=gtk))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolingwin32.win32.x86org.eclipse.update.configurator' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
- <filter>
- (&amp;(osgi.arch=x86)(osgi.os=win32)(osgi.ws=win32))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolingcocoa.macosx.x86org.eclipse.equinox.common' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
<filter>
(&amp;(osgi.arch=x86)(osgi.os=macosx)(osgi.ws=cocoa))
@@ -72641,21 +72506,11 @@
(&amp;(osgi.arch=x86_64)(osgi.os=win32)(osgi.ws=win32))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolingcocoa.macosx.x86_64org.eclipse.update.configurator' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
- <filter>
- (&amp;(osgi.arch=x86_64)(osgi.os=macosx)(osgi.ws=cocoa))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.solaris.sparcorg.eclipse.equinox.p2.reconciler.dropins' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
<filter>
(&amp;(osgi.arch=sparc)(osgi.os=solaris)(osgi.ws=gtk))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolingmotif.aix.ppcorg.eclipse.update.configurator' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
- <filter>
- (&amp;(osgi.arch=ppc)(osgi.os=aix)(osgi.ws=motif))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.linux.ppc64org.eclipse.equinox.p2.reconciler.dropins' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
<filter>
(&amp;(osgi.arch=ppc64)(osgi.os=linux)(osgi.ws=gtk))
@@ -72716,11 +72571,6 @@
(&amp;(osgi.arch=x86)(osgi.os=linux)(osgi.ws=gtk))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.linux.x86_64org.eclipse.update.configurator' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
- <filter>
- (&amp;(osgi.arch=x86_64)(osgi.os=linux)(osgi.ws=gtk))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolingmotif.aix.ppcorg.eclipse.equinox.common' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
<filter>
(&amp;(osgi.arch=ppc)(osgi.os=aix)(osgi.ws=motif))
@@ -72731,21 +72581,11 @@
(&amp;(osgi.arch=ppc)(osgi.os=aix)(osgi.ws=motif))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.solaris.x86org.eclipse.update.configurator' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
- <filter>
- (&amp;(osgi.arch=x86)(osgi.os=solaris)(osgi.ws=gtk))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolingmotif.linux.x86org.eclipse.equinox.p2.reconciler.dropins' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
<filter>
(&amp;(osgi.arch=x86)(osgi.os=linux)(osgi.ws=motif))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolingcocoa.macosx.x86org.eclipse.update.configurator' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
- <filter>
- (&amp;(osgi.arch=x86)(osgi.os=macosx)(osgi.ws=cocoa))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolingcarbon.macosx.x86org.eclipse.equinox.ds' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
<filter>
(&amp;(osgi.arch=x86)(osgi.os=macosx)(osgi.ws=carbon))
@@ -72776,21 +72616,11 @@
(&amp;(osgi.arch=ppc)(osgi.os=macosx)(osgi.ws=carbon))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolingcarbon.macosx.x86org.eclipse.update.configurator' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
- <filter>
- (&amp;(osgi.arch=x86)(osgi.os=macosx)(osgi.ws=carbon))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolingwin32.win32.x86_64org.eclipse.equinox.p2.reconciler.dropins' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
<filter>
(&amp;(osgi.arch=x86_64)(osgi.os=win32)(osgi.ws=win32))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.solaris.sparcorg.eclipse.update.configurator' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
- <filter>
- (&amp;(osgi.arch=sparc)(osgi.os=solaris)(osgi.ws=gtk))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolingorg.eclipse.sdk.ide.ini.win32.win32.x86' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
<filter>
(&amp;(osgi.arch=x86)(osgi.os=win32)(osgi.ws=win32))
@@ -72846,11 +72676,6 @@
(&amp;(osgi.arch=x86_64)(osgi.os=macosx)(osgi.ws=cocoa))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.linux.x86org.eclipse.update.configurator' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
- <filter>
- (&amp;(osgi.arch=x86)(osgi.os=linux)(osgi.ws=gtk))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.linux.ppcorg.eclipse.equinox.p2.reconciler.dropins' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
<filter>
(&amp;(osgi.arch=ppc)(osgi.os=linux)(osgi.ws=gtk))
@@ -72901,11 +72726,6 @@
(&amp;(osgi.arch=x86)(osgi.os=win32)(osgi.ws=win32))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolingmotif.hpux.ia64_32org.eclipse.update.configurator' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
- <filter>
- (&amp;(osgi.arch=ia64_32)(osgi.os=hpux)(osgi.ws=motif))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolingorg.eclipse.sdk.ide.ini.motif.hpux.ia64_32' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
<filter>
(&amp;(osgi.arch=ia64_32)(osgi.os=hpux)(osgi.ws=motif))
@@ -72946,11 +72766,6 @@
(&amp;(osgi.arch=ppc)(osgi.os=aix)(osgi.ws=motif))
</filter>
</required>
- <required namespace='org.eclipse.equinox.p2.iu' name='toolinggtk.linux.ppc64org.eclipse.update.configurator' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
- <filter>
- (&amp;(osgi.arch=ppc64)(osgi.os=linux)(osgi.ws=gtk))
- </filter>
- </required>
<required namespace='org.eclipse.equinox.p2.iu' name='toolingwin32.win32.x86_64org.eclipse.equinox.simpleconfigurator' range='[3.6.0.I20100312-1448,3.6.0.I20100312-1448]'>
<filter>
(&amp;(osgi.arch=x86_64)(osgi.os=win32)(osgi.ws=win32))
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/bug362692/shared/artifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/bug362692/shared/artifacts.xml
index 014c87768..dfa4eb51c 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/bug362692/shared/artifacts.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/bug362692/shared/artifacts.xml
@@ -3,7 +3,7 @@
<repository name='C:\Program Files (x86)\IBM\SDPShared\.eclipseextension' type='org.eclipse.equinox.p2.artifact.repository.simpleRepository' version='1.0.0'>
<properties size='3'>
<property name='p2.timestamp' value='1320939974885'/>
- <property name='org.eclipse.update.site.list' value='features/com.ibm.xtools.viz.cpp.cshelp.feature_7.0.3.v20110408_2147/,features/com.ibm.ccl.preferenceharvester.feature.uid.feature_1.0.2.v20110217_1732/,features/com.ibm.ccl.linkability.provider.uml.ide.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.cic.licensing.feature_7.0.302.v20110513_1648/,features/org.eclipse.datatools.enablement.oda.feature_1.8.2.v201010181125-7A7T78DZRDKDFbGwFjNK/,features/org.eclipse.gef_3.6.2.v20110128-0100-777B381A4Bz06565376E32322/,features/com.ibm.cic.licensing.flexlm.win32.feature_1.0.1.v20110515_2041/,features/com.ibm.support.ui.feature_1.1.2.v20110330_1815/,features/org.eclipse.jst.enterprise_sdk.feature_3.2.4.v201103101400-7737784gALLieKVO9_NxbvLL8AXf1UZMokTIC1qU/,features/com.ibm.xtools.model.execution.cshelp.feature_1.0.0.v20110408_2147/,features/org.eclipse.epf.richtext.feature_1.5.0.v20080820-1636-37D-9oA55S5M9H28O9O/,features/org.eclipse.datatools.enablement.sqlite.feature_1.8.2.v201010181125-541AkF79P7N8NAQ77/,features/org.eclipse.equinox.server.core_1.0.1.R36x_v20101007-7K7QEtDVci4YrnH_88QAH/,features/com.ibm.ccl.soa.sketcher.cshelp.feature_1.0.0.v20110408_2147/,features/org.eclipse.jst.web_core.feature_3.2.4.v201103231838-7Q7BG7OFE9LeABBX5jb4Ltojqz-7oEpj5963/,features/org.eclipse.emf.query.sdk_1.4.0.v20100428-2315-67J-95GFz01DOIuNNRTWK_NPj507/,features/org.eclipse.wst.jsdt_sdk.feature_1.2.4.v201103240300-47A7990LCFLLkMQOsQaRWPjPf76vAKhMXQNBaFOq/,features/com.ibm.cic.licensing.itlm.feature_7.0.1.v20110105_1929/,features/com.ibm.xtools.comparemerge.core.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.patterns.examples_feature_7.60.0.v20100929_0755/,features/com.ibm.ccl.ua.wizards.feature.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.datatools.enablement.sap.feature_1.8.2.v201010181125-540AkF77g7V9N9e77/,features/com.ibm.xtools.vizclient.uid.feature_1.0.2.v20101020_0109/,features/com.ibm.xtools.visualization.modeler.required.feature_7.0.200.v20101021_2044/,features/com.ibm.xtools.publish.ui.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.patterns.core.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.rcp.source.R362patch_1.0.0/,features/com.ibm.xtools.ras.repository.client.xde.ui.feature_7.0.1.v20100805_2013/,features/com.ibm.ccl.erf.core.birt.feature.uid.feature_1.0.2.v20110127_0205/,features/org.eclipse.emf_2.6.1.v20100914-1218/,features/org.eclipse.emf.common_2.6.0.v20100914-1218/,features/com.ibm.xtools.rose.feature_7.0.0.v20110517_1415/,features/com.ibm.xtools.ras.export.tasks.feature.uid.feature_1.0.2.v20101019_0105/,features/org.eclipse.gmf.runtime.notation_1.4.1.v20100909-1000-37708s73533F5C1479I/,features/com.ibm.xtools.ras.repository.client.workgroup.ui.feature_7.0.1.v20100805_2013/,features/com.ibm.xtools.uml.profile.tooling.cshelp.feature_1.0.0.v20090306_1924/,features/com.ibm.ccl.help.feedback.feature.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.ras.documentation.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.pluglets.feature.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.emf.source_2.6.1.v20100914-1218/,features/com.ibm.xtools.jet.feature.uid.feature_1.0.2.v20110510_2201/,features/com.ibm.ccl.mapping.feature_1.0.300.v20110513_0101/,features/com.ibm.xtools.ras.common.core.feature_7.0.300.v20100805_2013/,features/com.ibm.xtools.transform.jet.ui.cshelp.feature_7.2.0.v20100618_1742/,features/com.ibm.xtools.analysis.uml_feature.uid.feature_1.0.2.v20110125_0206/,features/com.ibm.xtools.vizumlv1client.uid.feature_1.0.2.v20101020_0109/,features/com.ibm.xtools.transform.uml2.sm.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.cic.licensing.flexlm.feature_7.0.403.v20110509_2210/,features/com.ibm.xtools.transforms.xsd.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.xtools.uml.rt.feature.uid.feature_1.0.2.v20110515_0735/,features/com.ibm.xtools.publish.ui.feature_7.60.0.v20100715_2051/,features/org.eclipse.tptp.platform.report_4.4.1.v201009092123-7D7A09oB5855O5Q9I78/,features/org.eclipse.datatools.sqldevtools.ddlgen.feature_1.8.2.v201010181125-7A-3F7RZHLz-Hz-OlPz0Qf/,features/org.eclipse.equinox.server.p2_1.0.1.R36x_v20101007-7x7IFI3FOf7yk63X6z0kz-Z2T158/,features/org.eclipse.jet.sdk_1.1.1.v201101271243-42186A5NsKEQPHRQeFaJS4A35/,features/com.ibm.ccl.welcome.roles.feature.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.tptp.platform.report.birt_4.4.1.v201101261720-797908s7354395A5983/,features/com.ibm.xtools.publish.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.umldt.rt.c.resources.feature_1.0.0.v20110325_2100/,features/org.eclipse.tptp.platform.batik_4.5.0.v201005032111-7H8H-FE-z0VXWZcyEYyUI/,features/org.eclipse.gef.sdk_3.6.2.v20110128-0100-7G7R77A5WNcHQDbhX8JWOYLOSeRJ/,features/org.eclipse.emf.transaction_1.4.0.v20100428-2315-377-8s734C3E7D15D6B/,features/org.eclipse.tptp.test.doc.user_4.5.0.v201005032111-54-7w312116383211/,features/org.eclipse.help_1.2.1.r362_v20101111-7e7jEVFDr6xg-LSlC_z0w1D/,features/com.ibm.xtools.codeview.uml.feature.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.xsd.mapping.editor_2.6.0.v20100914-1218/,features/com.ibm.xtools.uml.rt.feature_1.50.0.v20110525_0749/,features/com.ibm.xtools.uml.transform.rename.java_7.0.412.v20101104_0014/,features/org.eclipse.emf.query.ocl.source_1.4.0.v20100428-2315-3--7w311A232602735/,features/com.ibm.xtools.traceability.cshelp.feature_7.0.0.v20060924-77--7w31171_35/,features/com.ibm.ccl.feedreader.feature_1.0.5.v20101006_0104/,features/org.eclipse.tptp.platform.profile.server_4.5.3.v201104210930-7H7F5AkF7B97QBOBNHA/,features/com.ibm.xtools.umldt.rt.j2se.feature.uid.feature_1.0.2.v20110330_0744/,features/com.ibm.ccl.common.splash.feature.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.jst.enterprise_core.feature.source_3.2.3.v201102071500-52FMUAkF7B87PAT8SA8/,features/com.ibm.support.feature_1.1.3.v20110330_1815/,features/com.ibm.xtools.ras.export.tasks.feature_7.0.1.v20100805_2013/,features/com.ibm.ccl.welcome.roles.feature_7.0.0.v20100715_2051/,features/com.ibm.xtools.transform.uml2.mapping.uid.feature_1.0.2.v20101020_0109/,features/com.ibm.xtools.ocleditor.sample.ocl.feature_1.2.2.v20110408_2147/,features/com.ibm.xtools.comparemerge.cshelp.feature_7.0.1.v20090708_1529/,features/com.ibm.process.rsase.feature.uid.feature_1.0.2.v20101006_0655/,features/org.eclipse.ocl.all_3.0.2.R30x_v201101181635-77-37EB3HoFvCkw5HyIBJDNGHCCG/,features/com.ibm.xtools.transform.ui.uid.feature_1.0.2.v20110510_2201/,features/org.eclipse.wst.web_core.feature.source_3.2.4.v201103170600-7E7AFIAAJrn5WMH1wVGEpTILWIDTYd/,features/com.ibm.xtools.ras.documentation.feature_7.0.100.v20100805_2013/,features/com.ibm.xtools.umlmodel.sample.feature_7.1.5.v20100201_0328/,features/org.eclipse.wst.server_userdoc.feature_3.1.120.v201104182004-20DF7w312215222664/,features/com.ibm.xtools.comparemerge.emf_7.60.300.v20110510_2201/,features/com.ibm.etools.ftp.feature.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.codeview.uml.feature_1.0.0.v20110515_0735/,features/com.ibm.ccl.oda.emf.feature.uid.feature_1.0.2.v20110127_0205/,features/com.ibm.xtools.traceability_feature_7.60.0.v20101006_0655/,features/com.ibm.help.common.feature_7.6.0.v20110531_2151/,features/org.eclipse.emf.ecore_2.6.1.v20100914-1218/,features/org.eclipse.tptp.trace.arm_4.3.0.v201005032111-793-8s73533E3H5F5C/,features/com.ibm.xtools.transform.core.cshelp.feature_7.0.8.v20090803_1558/,features/org.eclipse.datatools.enablement.oda.designer.feature_1.8.2.v201010181125-3328s735357795A78/,features/org.eclipse.emf.transaction.sdk_1.4.0.v20100428-2315-777N-9AZP-D1aQtjUklrYl0eU20D/,features/com.ibm.cic.licensing.common.ui.feature_7.1.302.v20101007_1238/,features/com.ibm.xtools.umldt.rt.c.feature_1.0.0.v20110515_0735/,features/com.ibm.xtools.transform.uml2.sm.feature_1.0.100.v20110117_1549/,features/org.eclipse.emf.edit_2.6.0.v20100914-1218/,features/com.ibm.xtools.umldt.rt.j2se.resources.feature_1.0.0.v20110325_2100/,features/com.ibm.xtools.ras.export.ui.ide.feature_7.0.1.v20100805_2013/,features/com.ibm.rcp.dombrowser.feature_6.2.1.20090925-1604/,features/org.eclipse.birt_2.6.2.r262_v20101008-9iF7A9JGHMBCRz-R8tbxRel8kQrI/,features/com.ibm.process.rsx.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.xtools.transform.fuse.uid.feature_1.0.2.v20101020_0109/,features/com.ibm.rsaz.analysis.architecture_feature_7.0.0.v20101215_2153/,features/com.ibm.rcp.rte.feature_6.2.1.20090925-1604/,features/org.eclipse.xsd.doc_2.6.0.v20100914-1218/,features/com.ibm.xtools.uml.profile.tooling.feature_7.60.0.v20110208_0023/,features/com.ibm.process.rsx.feature_7.0.1.v20100929_0755/,features/org.eclipse.draw2d.sdk_3.6.2.v20110128-0100-7A7G38yE6F08CAO499J539958x42/,features/com.ibm.xtools.traceability.reqpro_feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.cic.licensing.flexlm.feature.uid.feature_1.0.2.v20110228_1402/,features/com.ibm.xtools.transform.uml.viz.cshelp.feature_7.0.1.v20090306_1924/,features/org.eclipse.birt.chart.osgi.runtime_2.6.2.r262_v20101025-7pA07UFXyNCqK4YeHKOHG4/,features/com.ibm.xtools.ras.common.ui.ide.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.ccl.mapping.feature.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.datatools.enablement.msft.feature_1.8.2.v201010181125-542AkF79P7QCP9SDB/,features/com.ibm.xtools.ras.impord.core.feature_7.0.200.v20100805_2013/,features/com.ibm.cic.licensing.common.ui.feature.uid.feature_1.0.2.v20101007_1238/,features/com.ibm.xtools.comparemerge.help.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.wst.ws_userdoc.feature_3.1.200.v201007151546-44FO-9oB5855O8M9JHH/,features/com.ibm.rsar.compatibility_feature_7.0.100.v20090930_2207/,features/com.ibm.xtools.dodaf_7.0.801.v20100929_0755/,features/com.ibm.xtools.modelerclient.uid.feature_1.0.2.v20110203_0202/,features/com.ibm.xtools.ruml.base.feature.uid.feature_1.0.2.v20110510_2201/,features/com.ibm.ccl.linkability.provider.resource.ide.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.transform.uml2.mapping_7.6.10.v20110525_0547/,features/com.ibm.xtools.ras.impord.ui.ide.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.transform.java.uml_7.5.800.v20110527_0030/,features/com.ibm.cic.install.launcher.feature_1.0.400.v20100222_2233/,features/com.ibm.xtools.umlal.execution.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.xtools.publish.ui.birt.feature.uid.feature_1.0.2.v20101019_0105/,features/org.eclipse.pde.R362patch_1.0.2/,features/com.ibm.xtools.ras.impord.tasks.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.tdi.reqpro.resource.ide_7.0.400.v20100715_2051/,features/com.ibm.ccl.oda.emf.feature_1.60.200.v20101224_0201/,features/org.eclipse.gmf.runtime.thirdparty.source_1.1.0.v20100511-1424-7I850FCnk296ZOs5Y2KHaw311A16/,features/com.ibm.xtools.ruml.base.feature_7.70.300.v20110518_0102/,features/com.ibm.ccl.erf.core.birt.feature_1.60.300.v20110510_2201/,features/com.ibm.xtools.ras.common.ui.ide.feature_7.1.100.v20100805_2013/,features/com.ibm.xtools.comparemerge.clearcasedirectory_7.60.0.v20100715_2051/,features/com.ibm.xtools.uml.rt.resources.feature_1.0.0.v20110515_0735/,features/com.ibm.xtools.uml2.bom.integration.feature_7.0.350.v20101006_0655/,features/com.ibm.xtools.mep.feature.uid.feature_1.0.2.v20110517_0745/,features/com.ibm.xtools.umlal.feature_1.0.100.v20110515_0735/,features/org.eclipse.cdt.gnu.build.source_7.0.0.201102110609/,features/com.ibm.cic.licensing.lum.win32.feature_7.0.3.v20110330_2243/,features/com.ibm.xtools.transform.fuse_7.0.400.v20100715_2051/,features/com.ibm.ccl.welcome.bits.feature.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.cdt.gnu.dsf_2.1.0.201102110609/,features/com.ibm.xtools.ras.export.tasks.ide.feature.uid.feature_1.0.2.v20101019_0105/,features/org.eclipse.emf.validation.ocl.source_1.4.0.v20100428-2315-23-7w3121133502768/,features/org.eclipse.emf.ecore.sdo.edit_2.4.0.v200801221930/,features/com.ibm.ccl.erf.emf.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.comparemerge.core_7.60.300.v20110510_2201/,features/org.eclipse.tptp.platform.instrumentation.ui_4.3.2.v201101261720-797918s735435695C83/,features/com.ibm.xtools.transform.soa.util.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.ccl.tdi.reqpro.uml.traceability.ide.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.xtools.tdi.reqpro.uml.ide.uid.feature_1.0.2.v20101020_0109/,features/com.ibm.xtools.umldt.rt.umlal.feature_1.0.0.v20110518_0733/,features/com.ibm.xtools.uml2.bom.integration.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.ccl.help.state.feature_1.0.1.v20100715_2051/,features/org.eclipse.tptp.test_4.5.102.v201104210930-7L7N8aBgJ9DJ9YGPISM_/,features/com.ibm.xtools.reqpro.ide.win32.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.tdi.reqpro.ide_7.1.402.v20100715_2051/,features/com.ibm.xtools.rmp.base_7.80.310.v20110525_2117/,features/com.ibm.xtools.comparemerge.team_7.60.100.v20100916_0104/,features/org.mortbay.jetty.jasper.feature_1.0.150.v20101020_0109/,features/org.eclipse.ocl.uml.source_3.0.2.R30x_v201101181635-4-17S41yaw312212292746/,features/org.eclipse.equinox.server.p2.R362patch_1.0.0/,features/com.ibm.ccl.linkability.provider.j2se.ide.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.platform.R362patch_1.0.6/,features/org.eclipse.platform.source.R362patch_1.0.6/,features/com.ibm.xtools.umldt.rt.cpp.resources.feature_1.0.0.v20110325_2100/,features/com.ibm.xtools.ras.export.core.feature_7.0.300.v20100805_2013/,features/com.ibm.xtools.me2.feature_1.0.0.v20110515_0735/,features/com.ibm.xtools.vizclient_7.60.0.v20100715_2051/,features/com.ibm.xtools.uml.transform.rename.java.uid.feature_1.0.2.v20101020_0109/,features/com.ibm.rsx.prodover.doc.feature_7.1.2.v20110408_2147/,features/org.eclipse.birt.example_2.6.2.r262_v20101008-7F7e7CDBRmTc_XEMHBHMm/,features/org.eclipse.jst.server_ui.feature_3.2.4.v20110323-7A5FEn9xFc7TCFKWBBINHK43A/,features/org.eclipse.wst.jsdt.feature.patch_3.2.4.v201105242202-317B8s73553D6D755B/,features/com.ibm.ccl.linkability.provider.uml.ide_7.0.403.v20110224_1852/,features/org.eclipse.emf.converter.source_2.6.0.v20100914-1218/,features/org.eclipse.wst.ws_ui.feature_3.2.4.v201103170600-7I78FZLEtEoO4cC9yKz-eSNz0B07ngOrgut6FPKH/,features/com.ibm.xtools.traceability.viz_feature_7.60.0.v20100929_0755/,features/org.eclipse.pde_3.6.2.r362_v20110203-7b7mFL2FET3dhHalh1iNZtL/,features/com.ibm.xtools.reqpro.ide.win32_7.2.102.v20101113_0204/,features/org.eclipse.wst.web_userdoc.feature_3.2.0.v201005241510-31Eo8s734B3E4H7799/,features/com.ibm.xtools.mep.feature_1.0.0.v20110518_0733/,features/com.ibm.etools.performance_1.2.300.v20110502_0026/,features/com.ibm.rational.rsart_80.product.feature_8.0.0.v20110412/,features/org.eclipse.jst.enterprise_ui.feature.source_3.2.4.v201104201417-7b7HHfYFSK2WDvSHB0pTyNZ7TpYo/,features/org.eclipse.ocl.core.sdk_3.0.2.R30x_v201101181635-7A-582I6-L5K8OvL0K41MTBLRWIg/,features/com.ibm.xtools.transform.cpp.profile.feature.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.gmf.tooling.source_2.3.0.v20100421-2359-7c7MFO2FLWUl0im8BjQMa9f/,features/org.eclipse.wst.web_ui.feature.source_3.2.4.v201103170600-7O7CFbbEMf84sL-GEz-v6KOf-MfOa4C140IylMHO/,features/com.ibm.xtools.transform.uml2.java.sm.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.xtools.vizumlv1client_7.0.1200.v20100715_2051/,features/org.eclipse.xsd.editor_2.6.0.v20100914-1218/,features/org.eclipse.tptp.platform.integration.pde_4.5.2.v201101261720-5417w312212322161/,features/com.ibm.etools.ftp.feature_1.0.100.v20100715_2051/,features/org.eclipse.m2m.qvt.oml.common_2.1.0.v20100606-1530-7908_AkF7AG8KEM3CMFA/,features/com.ibm.ccl.erf.emf.examples.feature_1.60.0.v20100715_2051/,features/com.ibm.xtools.ras.export.ui.ide.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.ccl.erf.core.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.rmp_7.60.300.v20110510_2201/,features/com.ibm.xtools.comparemerge.gmf.uid.feature_1.0.2.v20110520_2214/,features/com.ibm.xtools.transform.ide.cshelp.feature_7.0.2.v20090306_1924/,features/com.ibm.xtools.transform.uml2.viz.uid.feature_1.0.2.v20101020_0109/,features/com.ibm.xtools.patterns.sample.feature_7.2.1.v20100201_0328/,features/com.ibm.xtools.ras.impord.core.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.petal.profile.feature_7.0.0.v20100929_0755/,features/com.ibm.xtools.patterns.ui.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.cdt.gnu.build_7.0.0.201102110609/,features/com.ibm.xtools.comparemerge.clearcaseversioncheck.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.emf.query.ocl_1.4.0.v20100428-2315-3--7w311A232602735/,features/com.ibm.xtools.traceability_feature.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.datatools.enablement.mysql.feature_1.8.2.v201010181125-546AkF78Y7R9PAX77/,features/com.ibm.xtools.transform.authoring.cshelp.feature_7.1.3.v20090306_1924/,features/com.ibm.xtools.mdx.profiles.feature.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.emf.mapping.ecore.source_2.6.0.v20100914-1218/,features/org.eclipse.datatools.enablement.hsqldb.feature_1.8.2.v201010181125-67C2AqGBJVKbHlH1GU7QBR/,features/org.eclipse.emf.codegen.ui.source_2.6.0.v20100914-1218/,features/com.ibm.xtools.transform.uml.java.cshelp.feature_7.1.7.v20110408_2147/,features/org.eclipse.tptp.test.recorders.url_4.7.0.v201005032111-797D-8s73533D75799J/,features/org.eclipse.gmf.sdk_2.3.0.v20100508-1742-7779-95sDcLbMSsdu7Xz-xO-z0oe/,features/com.ibm.ccl.erf.core.feature_1.60.0.v20100715_2051/,features/com.ibm.xtools.ras.repository.client.workgroup.ui.feature.uid.feature_1.0.2.v20101019_0105/,features/org.eclipse.datatools.connectivity.oda.designer.core.feature_1.8.2.v201010181125-7B7C7ACcNBGLEOIeD_SO/,features/com.ibm.xtools.rasset.cshelp.feature_7.0.2.v20110408_2147/,features/com.rational.clearcase_7.6.0.v201105111445/,features/org.eclipse.emf.common.ui.source_2.6.0.v20100914-1218/,features/org.eclipse.emf.query.doc_1.4.0.v20100428-2315-33-8s733L466A3AE72/,features/com.ibm.xtools.reqpro.modelupgrade.feature.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.emf.mapping.ui_2.6.0.v20100914-1218/,features/com.ibm.process.feature_7.1.0.v20100715_2051/,features/com.ibm.xtools.analysis.model_feature_7.1.0.v20100715_2051/,features/com.ibm.rcp.textanalyzer.feature_6.2.1.200909031836/,features/org.eclipse.pde.source_3.6.2.r362_v20110203-7b7mFL2FET3dhHalh1iNZtL/,features/com.ibm.xtools.dodaf.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.ccl.oda.diagram.feature_1.60.0.v20100715_2051/,features/com.ibm.ccl.feedreader.feature.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.m2m.qvt.oml.editor_2.1.0.v20100606-1530-30-7w3121171702641/,features/org.eclipse.wst.xml_ui.feature.source_3.2.4.v201103170600-7H7AFUaDxumQJOs8hggQZ6_jl1EOJGNlUsOsTM/,features/com.ibm.xtools.csguides.feature_7.0.200.v20100929_0755/,features/org.eclipse.datatools.connectivity.feature_1.8.2.v201010181125-7C7b8mEt1Zwkn9kfkUHHsoP_3to/,features/org.eclipse.draw2d.source_3.6.2.v20110128-0100-4517w3122123901211/,features/com.ibm.xtools.transform.uml2.cpp.feature_7.5.10.v20110525_1447/,features/com.ibm.xtools.pluglets.doc.isv.feature_7.0.3.v20110106_1550/,features/com.ibm.ccl.oda.uml.feature_1.60.200.v20110115_0201/,features/com.ibm.xtools.modviz.common.feature_7.60.0.v20100715_2051/,features/ilog.views.eclipse.graphlayout.gmf.features_8.7.6.v20101108/,features/com.ibm.xtools.analysis.codereview.java.globalization_feature_7.0.300.v20100909_1452/,features/com.ibm.ccl.linkability.ide.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.transform.ui_7.100.300.v20110510_2201/,features/com.ibm.xtools.tdi.reqpro.uml.ide_7.0.402.v20100715_2051/,features/com.ibm.xtools.transform.authoring.doc.isv_7.2.0.v20110102_0201/,features/org.eclipse.emf.transaction.source_1.4.0.v20100428-2315-377-8s734C3E7D15D6B/,features/org.eclipse.emf.ecore.sdo.editor_2.4.0.v200801221930/,features/org.eclipse.wst.server_core.feature.source_3.2.4.v20110323-30F8Z8s73553A3Da2622/,features/org.eclipse.tptp.platform.runtime_4.7.3.v201104210930-7u847H8kkkG2m4bQGLU1GUOv3hUD/,features/com.ibm.xtools.umldt.rt.j2se.feature_1.50.0.v20110429_1455/,features/com.ibm.ccl.erf.emf.feature_1.60.0.v20100715_2051/,features/org.eclipse.gmf.source_1.4.2.v20110201-1000-7d9A7FFYnmMD7_nYQqNhbc2tsgXc/,features/org.eclipse.wst.xml_core.feature.source_3.2.4.v201103231834-7C7OFXfF7RZHQLInN2MhWd/,features/org.eclipse.jdt_3.6.2.r362_v20101117-0800-7z8XFW6FLFlmjJcvz03jyeFBLS_F/,features/com.ibm.xtools.codeview.feature_1.0.0.v20110503_2037/,features/com.ibm.cic.licensing.itlm.feature.uid.feature_1.0.2.v20100813_2252/,features/com.ibm.xtools.ras.repository.ui.feature_7.0.200.v20100805_2013/,features/org.eclipse.rcp_3.6.2.r362_v20101104-9SAxFMKFkSAqi8axkv1ZjegmiBLY/,features/com.ibm.xtools.tdi.reqpro.j2ee.ide.uid.feature_1.0.2.v20101020_0109/,features/com.ibm.ccl.linkability.provider.j2ee.ide_7.0.300.v20100715_2051/,features/com.ibm.xtools.viz.core.cshelp.feature_7.0.6.v20110408_2147/,features/org.eclipse.datatools.enablement.feature_1.8.2.v201010181125-7J8x7UBWwUN6z02z-fiI_w4x4uLf/,features/com.ibm.xtools.transform.uml.cpp.cshelp.feature_7.1.6.v20110408_2147/,features/org.eclipse.jst.web_core.feature.patch_3.2.4.v201105162026-21Bm7w312216273137/,features/com.ibm.support.errorreport.ui.feature_1.0.3.v20110502_0026/,features/com.ibm.ccl.soa.deploy.sketcher.feature_1.0.501.v20110525_0749/,features/com.ibm.xtools.umldt.rt.c.feature.uid.feature_1.0.2.v20110315_0754/,features/com.ibm.cic.licensing.feature.uid.feature_1.0.2.v20101007_1238/,features/org.eclipse.emf.ecore.edit.source_2.6.0.v20100914-1218/,features/org.eclipse.emf.workspace.source_1.4.0.v20100428-2315-36-8s734C367E3CBC7/,features/com.ibm.xtools.modviz.common.base.feature_7.60.200.v20110210_0202/,features/com.ibm.rational.clearcase.ccrefresh_7.6.0.v201105111445/,features/com.ibm.xtools.traceability.reqpro_feature_7.60.0.v20110527_1732/,features/com.ibm.ccl.soa.deploy.sketcher.ide.feature_1.0.501.v20110524_0741/,features/com.ibm.xtools.umldt.rt.umlal.feature.uid.feature_1.0.2.v20110405_2005/,features/org.eclipse.wst.server_sdk.feature_3.2.4.v20110323-7838g90K9LSlN-Vem6LbeU19l-yDz0YdrvGQNKJk/,features/org.eclipse.jst.enterprise_ui.feature.patch_3.2.4.v201105171500-30FA38s73553D5G5G48/,features/org.eclipse.gmf.examples.runtime.ui.pde_1.4.0.v20100511-1355-2307w3121183101141/,features/com.ibm.xtools.umldt.rt.transform.java.cshelp.feature_1.0.0.v20110411_1749/,features/org.eclipse.datatools.enablement.sybase.feature_1.8.2.v201010181125-7E45F9NiNZVR6a1PMVn/,features/org.eclipse.tptp.test.runtime_4.5.102.v201104210930-7H7I8b7VtKB4xQUp2oyKHy19w8-Q/,features/org.eclipse.wst.common_core.feature.source_3.2.4.v201103101400-7B7DFEuF7RZHOaLjSqMqRK/,features/org.eclipse.cdt.p2_1.0.0.201102110609/,features/org.eclipse.datatools.enablement.apache.derby.feature_1.8.2.v201010181125-77778fBmKDNOMgJvJ8Of7QBR/,features/com.ibm.ccl.tdi.reqpro.uml.traceability.ide_7.0.401.v20101014_2159/,features/com.ibm.xtools.analysis.codereview.java.security_feature_7.0.300.v20100517_1740/,features/org.eclipse.wst.web_ui.feature_3.2.4.v201103170600-7O7CFbbEMf84sL-GEz-v6KOf-MfOa4C140IylMHO/,features/org.eclipse.pde.source.R362patch_1.0.2/,features/org.eclipse.ocl_3.0.2.R30x_v201101181635-79-7K8qD6z-DtD7E8BB753F53/,features/org.eclipse.gmf.runtime.thirdparty_1.4.0.v20100521-1113-7P8W5FHV2CNOiy0niXURaw311A16/,features/com.ibm.xtools.comparemerge.team.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.comparemerge.help_7.0.200.v20100715_2051/,features/org.eclipse.jst.enterprise_userdoc.feature_3.3.10.v201104200444-62FSgBgJ9EA9YGdILLd/,features/org.eclipse.datatools.enablement.ingres.feature_1.8.2.v201010181125-540AkF78Y7VCOCQDB/,features/com.ibm.xtools.ras.repository.client.xde.ui.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.comparemerge.clearcaseversioncheck_7.60.0.v20100715_2051/,features/org.eclipse.tptp.platform.trace_4.5.3.v201104210930-7L7O8iBgJ9EC9YBcESFJ/,features/org.eclipse.tptp.platform.jvmti_4.5.3.v201104210930-797A68s73553D5F559D/,features/com.ibm.xtools.richtext.uid.feature_1.0.2.v20110516_2128/,features/org.eclipse.datatools.sqldevtools.feature_1.8.2.v201010181125-7N7y7JFDrhqbGIFUNhcFodMMD2J0/,features/com.ibm.xtools.visualization.common.feature_7.5.100.v20110510_2201/,features/org.apache.fop_0.20.5.1/,features/com.ibm.xtools.visualization.common.feature.uid.feature_1.0.2.v20101020_0109/,features/org.eclipse.emf.ecore.edit_2.6.0.v20100914-1218/,features/com.ibm.xtools.analysis.uml_feature_7.1.0.v20110125_0206/,features/org.eclipse.emf.validation.sdk_1.4.0.v20100428-2315-67J-96SGR35WNqZRZfmQnghI6uFA/,features/org.eclipse.datatools.connectivity.doc.user_1.8.2.v201010181125-37D-7733L3D753L7BBF/,features/org.eclipse.equinox.p2.user.ui.source_2.0.1.r361_v20100903-897HFa-FX0z-z-ntoaavz0JPX628/,features/com.ibm.xtools.me2.feature.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.jet.doc_1.1.0.v201006011447-20-7w312114362635/,features/org.eclipse.tptp.platform.commons.logging_4.5.0.v201005032111-2-37w312116191612/,features/com.ibm.xtools.umldt.rt.cpp.feature_1.50.0.v20110518_0733/,features/com.ibm.xtools.transform.uml2.java.sm.feature_1.0.100.v20110420_0731/,features/com.ibm.xtools.visualization.cdt.feature_7.5.0.v20110412_0735/,features/com.ibm.xtools.transform.cpp.profile.feature_7.5.10.v20110127_0855/,features/org.eclipse.jst.common.fproj.enablement.jdt_3.2.2.v201008170019-377AB8s73533J5J759F/,features/org.eclipse.wst.common_sdk.feature_3.2.4.v201103101400-795AG9xPEHVX5Pz0qmk0ZhtEvs5Zt1TuTDQ105la/,features/com.ibm.xtools.transforms.java.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.eclipse.sdk.plugin.only_3.6.2.v201102260852/,features/com.ibm.xtools.modeler.feature_7.70.300.v20110516_2128/,features/com.ibm.xtools.modeler.base.feature.uid.feature_1.0.2.v20110516_2128/,features/com.ibm.xtools.analysis.model_feature.uid.feature_1.0.2.v20101019_0105/,features/org.eclipse.emf.doc_2.6.0.v20100914-1218/,features/org.eclipse.emf.codegen.ecore_2.6.1.v20100914-1218/,features/com.ibm.xtools.ras.export.core.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.modeler.feature.uid.feature_1.0.2.v20110513_0101/,features/org.eclipse.datatools.enablement.ibm.feature_1.8.2.v201010181125-7F47SFC7sRbrSZope9vW/,features/com.ibm.xtools.patterns.core_7.60.100.v20100929_0755/,features/com.ibm.help.common.rational.remote.feature_7.6.0.v20110527_2039/,features/org.eclipse.uml2.doc_3.1.0.v201005281015/,features/com.ibm.cic.licensing.lum.feature.uid.feature_1.0.2.v20100813_2252/,features/org.eclipse.xsd.ecore.converter_2.6.0.v20100914-1218/,features/com.ibm.xtools.modeler.cshelp.feature_7.0.2.v20090306_1924/,features/org.eclipse.wst.server_ui.feature.source_3.2.4.v20110323-7B4FDgAtJcbuEKOlpFPMJIjBD33/,features/com.ibm.ccl.linkability.provider.resource.ide_7.0.400.v20100715_2051/,features/com.ibm.rsaz.analysis.commandline.core_feature_7.0.0.v20091003_0917/,features/com.ibm.xtools.uml.rt.helper.feature_1.0.0.v20110525_0749/,features/com.ibm.xtools.transform.soa.util.feature_8.0.200.v20110416_0731/,features/org.eclipse.birt.chart_2.6.2.r262_v20101008-7f9T7OFPWowQ1naKt1Wwu4/,features/com.ibm.xtools.dodaf.ui.cshelp.feature_7.0.1.v20110408_2147/,features/org.eclipse.birt.doc_2.6.2.r262_v20101008-3507w31211924/,features/com.ibm.xtools.patterns.core.doc.isv_7.60.0.v20110112_2333/,features/com.ibm.xtools.dptk.help.feature_1.1.1.v20110211_1741/,features/com.ibm.xtools.csguides.win32.feature_7.0.300.v20100929_0755/,features/com.ibm.xtools.mdx.profiles.feature_7.0.200.v20110407_2222/,features/org.eclipse.emf.mapping_2.6.0.v20100914-1218/,features/com.ibm.xtools.comparemerge.emf.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.rsar.analysis.reporting.oda.base.compatability_feature_7.0.100.v20091130_2021/,features/org.eclipse.wst.jsdt.feature.source_1.2.4.v201103240300-7C78FGYF9JgLWPMA_ENpYd/,features/org.eclipse.wst.common.fproj_3.2.3.v201101121727-377AC8s73543C6H4A5H/,features/com.ibm.xtools.codeview.j2se.feature_1.0.0.v20110503_2037/,features/com.ibm.xtools.dodaf.report_7.0.300.v20100929_0755/,features/org.eclipse.emf.mapping.ui.source_2.6.0.v20100914-1218/,features/com.ibm.xtools.ras.repository.ui.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.pluglets.feature_7.0.100.v20100715_2051/,features/org.eclipse.wst.ws_wsdl15.feature_1.5.300.v201005241450-2407w312116191741/,features/com.ibm.etools.performance.uid.feature_1.0.2.v20110414_0031/,features/com.ibm.xtools.transforms.xsd.profile.feature_1.0.0.v20110504_2111/,features/com.ibm.ccl.f1.mapping.ui.feature_1.0.1.v20090306_1011/,features/org.eclipse.m2m.qvt.oml_3.0.1.v20100818-1530-7B11AkF7AG8VAT3BRLA/,features/com.ibm.xtools.ras.repository.core.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.ccl.da.dw.feature.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.umlal.profiles.feature.uid.feature_1.0.2.v20110415_0734/,features/com.ibm.xtools.visualization.cdt.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.ccl.linkability.provider.j2se.ide_7.0.401.v20100715_2051/,features/org.eclipse.tptp.trace.arm.ui_4.4.1.v201009092123-797708s73533H3I6A56/,features/com.ibm.xtools.patterns.cshelp.feature_7.0.1.v20090306_1924/,features/com.ibm.rup.cshelp.doc.feature_7.0.1.v20090306_1011/,features/com.ibm.rsaz.analysis.codereview_feature_7.0.0.v20100914_1840/,features/com.ibm.rsaz.analysis_feature_7.0.0.v20101215_2153/,features/org.eclipse.jst.web_ui.feature_3.2.4.v201103231838-7F77FJcC25Tkfz-8pggwPyqQj55b71NDjuB2IcyF/,features/com.ibm.xtools.modelerclient_7.60.300.v20110512_0102/,features/org.eclipse.platform_3.6.2.r362_v20110210-9gF78Gs1FrIGnHDHWkEcopoN8AmxeZflGDGKQi/,features/com.ibm.cic.planverifier.feature_1.1.1.v20110510_2201/,features/org.eclipse.emf.edit.ui_2.6.0.v20100914-1218/,features/org.eclipse.xsd_2.6.0.v20100914-1218/,features/com.ibm.xtools.visualization.j2se.feature_7.6.0.v20110514_0146/,features/com.ibm.xtools.rjcb.core.feature_7.0.2.v20100715_2051/,features/org.eclipse.emf.edit.source_2.6.0.v20100914-1218/,features/org.eclipse.uml2.source_3.1.2.v201010261927/,features/com.ibm.xtools.umldt.rt.transform.cpp.cshelp.feature_1.2.2.v20110411_1749/,features/com.ibm.xtools.ras.repository.core.feature_7.0.400.v20100805_2013/,features/org.eclipse.jst.web_userdoc.feature_3.2.2.v201010211813-2107w31211938/,features/com.ibm.xtools.transform.core_7.100.20.v20110525_0547/,features/org.eclipse.wst.web_sdk.feature_3.2.4.v201103170600-7E797J8SxYiO9-YCmj-iVV1WnlVz-1JfMdhhvEh_/,features/com.ibm.ccl.common.splash.feature_1.0.150.v20110510_2201/,features/com.ibm.xtools.modeler.base.feature_7.60.300.v20110518_0102/,features/com.ibm.xtools.updm.uid.feature_1.0.2.v20110517_0745/,features/com.ibm.xtools.tdi.reqpro.j2ee.ide_7.0.400.v20100715_2051/,features/com.ibm.xtools.analysis.codereview.java.j2se_feature_7.0.300.v20100517_1740/,features/org.eclipse.wst.common_core.feature_3.2.4.v201103101400-7B7DFEuF7RZHOaLjSqMqRK/,features/com.ibm.xtools.umldt.rt.cpp.feature.uid.feature_1.0.2.v20110315_0754/,features/com.ibm.cic.ide.int.feature.uid.feature_1.0.2.v20100813_2252/,features/com.ibm.xtools.analysis.modelanalysis.cshelp.feature_1.0.0.v20100201_0328/,features/com.ibm.xtools.publish.ui.birt.feature_7.60.0.v20100715_2051/,features/org.eclipse.equinox.p2.user.ui_2.0.1.r361_v20100903-897HFa-FX0z-z-ntoaavz0JPX628/,features/org.eclipse.wst.xml_core.feature_3.2.4.v201103231834-7C7OFXfF7RZHQLInN2MhWd/,features/com.ibm.xtools.sample.model.publishing.feature_7.1.201.v20100201_0328/,features/com.ibm.help.common.rational.feature_7.6.1.v20110517_1103/,features/org.eclipse.ocl.uml_3.0.2.R30x_v201101181635-4-17S41yaw312212292746/,features/org.eclipse.emf.mapping.source_2.6.0.v20100914-1218/,features/org.eclipse.wst.server_core.feature_3.2.4.v20110323-30F8Z8s73553A3Da2622/,features/com.ibm.xtools.comparemerge.gmf_7.60.300.v20110514_0146/,features/org.eclipse.emf.codegen.ecore.ui.source_2.6.0.v20100914-1218/,features/org.eclipse.emf.mapping.ecore_2.6.0.v20100914-1218/,features/org.eclipse.wst.web_core.feature_3.2.4.v201103170600-7E7AFIAAJrn5WMH1wVGEpTILWIDTYd/,features/com.ibm.xtools.rose.sample.feature_7.2.0.v20100203_0307/,features/com.ibm.xtools.rsarte.legal.doc.feature_7.1.8.v20110412_2230/,features/com.ibm.xtools.jet.feature_7.0.510.v20110513_0101/,features/com.ibm.xtools.pluglets.cshelp.feature_7.0.1.v20090306_1924/,features/com.ibm.xtools.ras.impord.ui.ide.feature_7.0.1.v20100805_2013/,features/com.ibm.xtools.mde.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.tptp.platform.core.doc.user_4.4.1.v201009092123-79518s73533L3L7579/,features/com.ibm.xtools.transforms.java.profile.feature_7.5.0.v20100929_0755/,features/org.eclipse.emf.validation.source_1.4.0.v20100428-2315-479-9oB56N5BBR6LCA6/,features/org.eclipse.datatools.modelbase.feature_1.8.2.v201010181125-77078CcNBGKBZI_FcRd/,features/org.eclipse.cdt.gdb_7.0.0.201102110609/,features/org.eclipse.tptp.trace_4.3.3.v201104210930-794F9z8s73543D4F5A68/,features/org.eclipse.emf.ecore.editor_2.6.0.v20100914-1218/,features/org.eclipse.cdt_7.0.2.201102110609/,features/org.eclipse.tptp.test.samples_4.4.0.v201005032111-53-7w312116323449/,features/com.ibm.xtools.umlclient.uid.feature_1.0.2.v20110520_2214/,features/com.ibm.xtools.transform.uml2.viz_7.0.400.v20100715_2051/,features/org.eclipse.emf.databinding_1.2.0.v20100914-1218/,features/org.eclipse.equinox.p2.sdk.R362patch_1.0.0/,features/org.eclipse.cdt.platform.source_7.0.2.201102110609/,features/com.ibm.xtools.transform.uml2.viz.reqpro_7.0.300.v20100715_2051/,features/org.eclipse.emf.databinding.edit_1.2.0.v20100914-1218/,features/com.ibm.xtools.umldt.rt.feature.uid.feature_1.0.2.v20110510_0738/,features/com.ibm.tomcat.plugin.only_4.1.230.v20070531/,features/org.eclipse.draw2d_3.6.2.v20110128-0100-4517w3122123901211/,features/org.eclipse.jst.server_userdoc.feature_3.3.0.v201005241530-2-Eo7w3121162A3329/,features/org.eclipse.jdt.source_3.6.2.r362_v20101117-0800-7z8XFW6FLFlmjJcvz03jyeFBLS_F/,features/org.eclipse.emf.transaction.doc_1.4.0.v20100428-2315-358Z8s733L466F3C6D4/,features/org.eclipse.gmf.tooling_2.3.0.v20100421-2359-7c7MFO2FLWUl0im8BjQMa9f/,features/com.ibm.xtools.umldt.rt.feature_1.50.0.v20110521_0931/,features/com.ibm.xtools.transform.samples_7.0.500.v20110216_2129/,features/com.ibm.rational.common.welcome.doc.feature_7.6.0.v20110527_2039/,features/com.ibm.xtools.patterns.ui_7.60.0.v20110502_2018/,features/org.eclipse.emf.mapping.ecore.editor_2.6.0.v20100914-1218/,features/org.eclipse.rcp.R362patch_1.0.0/,features/com.ibm.xtools.transforms.java.feature_7.5.800.v20110420_0731/,features/com.ibm.xtools.analysis.codereview.java.j2ee_feature_7.0.300.v20100517_1740/,features/com.ibm.xtools.modviz.common.base.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.codeview.feature.uid.feature_1.0.2.v20110503_2037/,features/org.eclipse.tptp.trace.runtime_4.4.3.v201104210930-7H7C67XbN_K6E9OJOUaf_kXWF9/,features/org.eclipse.datatools.enablement.oracle.feature_1.8.2.v201010181125-548dAkF79Q7RAN9UEE/,features/org.eclipse.tptp.platform.probekit.doc.user_4.4.1.v201009092123-5207w31211A1A3234/,features/org.eclipse.gmf_1.4.2.v20110201-1000-7d9A7FFYnmMD7_nYQqNhbc2tsgXc/,features/com.ibm.xtools.viz.j2se.cshelp.feature_7.0.4.v20110408_2147/,features/com.ibm.xtools.publish.feature_7.60.300.v20110510_2201/,features/com.ibm.xtools.umldt.rt.petal.ui.cshelp.feature_7.0.1.v20110411_1749/,features/com.ibm.ccl.soa.infra.ui.utils.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.comparemerge.clearcasedirectory.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.petal.cshelp.feature_7.0.1.v20090306_1924/,features/com.ibm.xtools.umlclient_7.60.300.v20110514_0146/,features/com.ibm.rsar.analysis.reporting.oda_feature_7.0.400.v20100517_2203/,features/org.eclipse.equinox.p2.sdk_3.6.2.R36x_v20110120-9I7VGEAG438GhnfSLuLz0FXP9NYJ/,features/org.eclipse.m2m.qvt.oml.runtime_2.1.0.v20100606-1530-7A2-AkF7AG8PBU3BRLA/,features/org.eclipse.jet.source_1.1.1.v201101271243/,features/org.eclipse.tptp.trace.jvmti_4.3.3.v201104210930-5427w312216272246/,features/org.eclipse.jst.server_sdk.feature_3.2.4.v20110323-7737784F8JIqG0LeHfKXbKO9a0RpJLXXCCJOIL54/,features/org.eclipse.cdt.gnu.debug_7.0.1.201102110609/,features/org.eclipse.tptp.platform.doc.user_4.4.1.v201009092123-797717FE8C5yB897GPGRCBEA/,features/com.ibm.rational.rsa.welcome.doc.feature_1.0.3.v20110413_0047/,features/com.ibm.xtools.transform.java.jet2.feature.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.cdt.sdk_7.0.2.201102110609/,features/org.eclipse.gmf.runtime.sdk_1.4.2.v20110201-1000-67G49E9QYBfkXgwmVt5ksk7w9Vqi/,features/org.eclipse.tptp.platform.samples_4.5.0.v201005032111-7D7A-9oB5855K5N8N55/,features/com.ibm.ccl.da.dw.feature_7.0.0.v20100715_2051/,features/org.eclipse.emf.validation.ocl_1.4.0.v20100428-2315-23-7w3121133502768/,features/com.ibm.support.uid.feature_1.0.1.v20110510_2201/,features/org.eclipse.tptp.test.tools.junit_4.7.1.v201101261720-7H7P1AkF7B97JFHCJKF/,features/org.eclipse.datatools.sqldevtools.ddl.feature_1.8.2.v201010181125-277178B04G8S_IMz00Iz00PmQz01/,features/com.ibm.xtools.transform.uml2.viz.reqpro.uid.feature_1.0.2.v20101020_0109/,features/com.ibm.xtools.updm.base.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.xtools.rose.win32.feature_7.0.0.v20100929_0755/,features/com.ibm.ccl.oda.diagram.feature.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.ras.repository.client.xde.feature.uid.feature_1.0.2.v20101019_0105/,features/org.eclipse.cdt.gnu.debug.source_7.0.1.201102110609/,features/org.eclipse.emf.validation_1.4.0.v20100428-2315-479-9oB56N5BBR6LCA6/,features/com.ibm.xtools.reqpro.modelupgrade.feature_7.0.400.v20110407_2222/,features/org.eclipse.jst.enterprise_ui.feature_3.2.4.v201104201417-7b7HHfYFSK2WDvSHB0pTyNZ7TpYo/,features/com.ibm.xtools.sample.transform.authoring.feature_1.0.1.v20100201_0328/,features/org.eclipse.tptp.platform.jakarta.log4j_4.5.0.v201005032111-217E7w312116191611/,features/com.ibm.xtools.tdi.reqpro.resource.ide.uid.feature_1.0.2.v20101020_0109/,features/org.eclipse.datatools.sqldevtools.data.feature_1.8.2.v201010181125-641BgJ9DJ9VGTCaHL/,features/org.eclipse.equinox.core.sdk_3.6.1.r36x_v20110210-7sF99FsNFS-Ci4TSP4RDFHLIA5B3/,features/com.ibm.xtools.transforms.xsd.feature_7.6.10.v20110413_2148/,features/com.ibm.xtools.visualization.j2se.feature.uid.feature_1.0.2.v20110510_2201/,features/com.ibm.xtools.ras.repository.client.workgroup.feature_7.0.100.v20100805_2013/,features/org.eclipse.emf.edit.ui.source_2.6.0.v20100914-1218/,features/com.ibm.xtools.transform.sourcemodelassoc.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.rsart.nav.doc.feature_1.0.4.v20110513_1123/,features/org.eclipse.jdt.R362patch_1.0.2/,features/com.ibm.xtools.tdi.reqpro.ide.uid.feature_1.0.2.v20101020_0109/,features/org.eclipse.emf.common.ui_2.6.0.v20100914-1218/,features/org.eclipse.tptp.platform.batik.pdf_4.5.0.v201005032111-25-7w311917142611/,features/com.ibm.support.feature.uid.feature_1.0.2.v20110520_0029/,features/com.ibm.xtools.codeview.j2se.feature.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.birt.report.designer.editor.xml.wtp_2.6.2.r262_v20101008-7m9f7bFS5-OfHSjPqH_1t2/,features/org.eclipse.wst.server_ui.feature_3.2.4.v20110323-7B4FDgAtJcbuEKOlpFPMJIjBD33/,features/org.eclipse.emf.query.source_1.4.0.v20100428-2315-218Z7w311A142A1142/,features/org.eclipse.emf.validation.doc_1.4.0.v20100428-2315-35-8s733L466F3B769/,features/com.ibm.xtools.tdi.reqpro.j2se.ide_7.0.400.v20100715_2051/,features/org.eclipse.wst.xml_sdk.feature_3.2.4.v201103231834-7A57B8DXHQaidiMFR-Ts-Vigiz-l5SwVMhP5VbOg/,features/org.eclipse.wst.common_ui.feature.source_3.2.4.v201103101400-7C78FPmEdhO_oXYe4k_elbMkTrNrSL/,features/org.eclipse.emf.ecore.source_2.6.1.v20100914-1218/,features/com.ibm.xtools.petal.profile.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.xtools.transform.sourcemodelassoc.feature_7.5.4.v20110210_0845/,features/com.ibm.rsaz.analysis.codereview.java_feature_7.0.100.v20101215_2153/,features/com.ibm.support.errorreport.core.feature_1.0.1.v20110329_0031/,features/com.ibm.xtools.analysis.reporting_feature_7.0.400.v20100924_1819/,features/com.ibm.xtools.ras.export.tasks.ide.feature_7.0.1.v20100805_2013/,features/org.eclipse.emf.databinding.edit.source_1.2.0.v20100914-1218/,features/com.ibm.xtools.uml.transform.core.uid.feature_1.0.2.v20101020_0109/,features/com.ibm.xtools.umldt.feature.uid.feature_1.0.2.v20110217_0818/,features/com.ibm.ccl.soa.infra.ui.utils_1.0.0.v20100715_2051/,features/com.ibm.process.feature.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.xsd.mapping_2.6.0.v20100914-1218/,features/org.eclipse.emf.ecore.sdo_2.4.0.v200801221930/,features/com.ibm.cds.feature_2.1.0.201009130929/,features/org.eclipse.gmf.doc_1.4.0.v20100518-2359-35-8s733L3H7L17395/,features/com.ibm.xtools.ras.repository.client.xde.feature_7.0.100.v20100805_2013/,features/org.eclipse.emf.converter_2.6.0.v20100914-1218/,features/com.ibm.xtools.patterns.content_7.6.0.v20101006_0655/,features/com.ibm.xtools.transforms.java.profile.feature.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.rcp.source_3.6.2.r362_v20101104-9SAxFMKFkSAqi8axkv1ZjegmiBLY/,features/com.ibm.xtools.ras.repository.client.workgroup.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.tdi.reqpro.j2se.ide.uid.feature_1.0.2.v20101020_0109/,features/org.eclipse.cvs_1.2.1.r362_v20101111-7B77FKv99HL0GvIAF99I8H14B7E/,features/org.eclipse.tptp.test.tools_4.5.1.v201101261720-7L7U1A5eNmJSvZVScRkPPMVWa/,features/com.ibm.xtools.csguides.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.ccl.welcome.bits.feature_7.0.7.v20101006_0104/,features/org.eclipse.emf.workspace_1.4.0.v20100428-2315-36-8s734C367E3CBC7/,features/org.eclipse.uml2_3.1.2.v201010261927/,features/com.ibm.xtools.pluglets.ui.help.feature_7.4.0.v20100201_0328/,features/com.ibm.xtools.reqpro.cshelp.feature_7.0.3.v20090311_1011/,features/org.eclipse.datatools.sqldevtools.schemaobjecteditor.feature_1.8.2.v201010181125-4208375LG5BJ93413/,features/org.eclipse.datatools.sqldevtools.sqlbuilder.feature_1.8.2.v201010181125-79-4EVVFJoFwKcN-L_/,features/com.ibm.ccl.linkability.provider.j2ee.ide.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.xsd.edit_2.6.0.v20100914-1218/,features/com.ibm.xtools.umlal.profiles.feature_1.0.100.v20110401_0743/,features/org.eclipse.birt.source_2.6.2.r262_v20101008-9iF7A9JGHMBCRz-R8tbxRel8kQrI/,features/com.ibm.ccl.ua.wizards.feature_1.0.150.v20101020_0109/,features/com.ibm.xtools.transform.ide_7.0.400.v20100715_2051/,features/org.eclipse.emf.codegen.source_2.6.0.v20100914-1218/,features/org.eclipse.datatools.sqldevtools.results.feature_1.8.2.v201010181125-4219oB57E6G9F7KDB/,features/org.eclipse.wst.xml_ui.feature_3.2.4.v201103170600-7H7AFUaDxumQJOs8hggQZ6_jl1EOJGNlUsOsTM/,features/org.eclipse.jdt.source.R362patch_1.0.2/,features/com.ibm.xtools.umlal.execution.feature_1.0.100.v20110331_1459/,features/com.ibm.xtools.updm_7.4.0.v20110507_0844/,features/com.ibm.xtools.transform.authoring.uid.feature_1.0.2.v20110127_0205/,features/org.eclipse.cdt.platform_7.0.2.201102110609/,features/com.ibm.xtools.reqpro_ed.cshelp.feature_7.0.0.v20090319_1011/,features/com.ibm.rational.rsart.welcome.doc.feature_1.0.6.v20110412_2230/,features/com.ibm.xtools.rjcb.core.feature.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.equinox.p2.user.ui.source.R362patch_1.0.0/,features/com.ibm.xtools.uml.transform.core_7.0.400.v20100715_2051/,features/org.eclipse.emf.query_1.4.0.v20100428-2315-218Z7w311A142A1142/,features/com.ibm.process.rsase.feature_7.0.0.v20100929_0755/,features/com.ibm.xtools.umldt.rt.umlal.resources.feature_1.0.0.v20101203_1715/,features/com.ibm.xtools.richtext_7.70.300.v20110516_2128/,features/org.eclipse.jet_1.1.1.v201101271243-5319sC7HCAGERASDK3924/,features/org.eclipse.emf.codegen.ecore.ui_2.6.0.v20100914-1218/,features/com.ibm.xtools.transform.uml.xsd.cshelp.feature_1.0.5.v20110408_2147/,features/com.ibm.xtools.updm.base_7.4.0.v20110412_0735/,features/org.eclipse.emf.mapping.ecore.editor.source_2.6.0.v20100914-1218/,features/org.eclipse.jst.server_core.feature_3.2.4.v20110323-31FA38s73543B4E/,features/com.ibm.xtools.visualization.modeler.required.feature.uid.feature_1.0.2.v20101021_2044/,features/org.eclipse.datatools.doc.user_1.8.2.v201010181125-47C08w95ENAK6AFDFK7/,features/com.ibm.xtools.ras.impord.tasks.feature_7.0.100.v20100805_2013/,features/com.ibm.ccl.soa.deploy.sketcher.uml.feature_1.0.100.v20110524_0741/,features/org.eclipse.equinox.p2.discovery.feature_1.0.1.R36x_v20110210-4-09oB5865H6L02434/,features/com.ibm.xtools.transform.ide.uid.feature_1.0.2.v20101020_0109/,features/org.eclipse.platform.source_3.6.2.r362_v20110210-9gF78Gs1FrIGnHDHWkEcopoN8AmxeZflGDGKQi/,features/com.ibm.xtools.traceability.viz_feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.xtools.rose.feature.uid.feature_1.0.2.v20110517_1415/,features/ilog.views.eclipse.graphlayout.features_8.7.6.v20101108/,features/com.ibm.xtools.ruml.feature_7.60.0.v20100715_2051/,features/org.eclipse.emf.common.source_2.6.0.v20100914-1218/,features/com.ibm.xtools.transform.core.doc.isv_7.0.400.v20110525_0547/,features/com.ibm.xtools.transform.authoring_7.3.0.v20101207_0201/,features/org.eclipse.emf.codegen_2.6.0.v20100914-1218/,features/com.ibm.dojo.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.ccl.linkability.ide_7.1.401.v20100715_2051/,features/com.ibm.xtools.transform.java.jet2.feature_1.0.100.v20110117_1549/,features/com.ibm.xtools.publish.cshelp.feature_7.0.1.v20090306_1924/,features/org.eclipse.jst.enterprise_core.feature_3.2.3.v201102071500-52FMUAkF7B87PAT8SA8/,features/com.ibm.xtools.transform.java.uml.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.cic.planverifier.feature.uid.feature_1.0.2.v20101101_1901/,features/org.eclipse.datatools.enablement.jdbc.feature_1.8.2.v201010181125-4-29oB56N5N7L6PAQ/,features/org.eclipse.tptp.platform.probekit_4.5.3.v201104210930-7H7BF8SAkF7B97UAYCIHM/,features/com.ibm.xtools.rmp.base.uid.feature_1.0.2.v20110510_2201/,features/com.ibm.xtools.pluglets.sample.feature_7.2.0.v20100201_0328/,features/org.eclipse.datatools.enablement.postgresql.feature_1.8.2.v201010181125-542AkF77g7V9N9e77/,features/org.eclipse.emf.ecore.editor.source_2.6.0.v20100914-1218/,features/org.eclipse.emf.databinding.source_1.2.0.v20100914-1218/,features/com.ibm.ccl.help.feedback.feature_7.0.1.v20100715_2051/,features/com.ibm.ccl.preferenceharvester.feature_1.0.150.v20110510_2201/,features/com.ibm.xtools.umldt.feature_1.50.0.v20110503_2037/,features/com.ibm.rational.clearcase.ccimport.feature_7.1.0.v201001271035--08422A2_242663/,features/com.ibm.xtools.mde_1.0.1.v20100928_2018/,features/org.eclipse.cdt.gnu.dsf.source_2.1.0.201102110609/,features/org.eclipse.equinox.p2.user.ui.R362patch_1.0.0/,features/org.eclipse.gef.source_3.6.2.v20110128-0100-777B381A4Bz06565376E32322/,features/com.ibm.xtools.transform.uml2.cpp.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.xtools.ras.common.core.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.cic.licensing.lum.feature_7.0.200.v20110105_1929/,features/org.eclipse.wst.ws_core.feature_3.2.3.v201102160541-7L7RFf0FGtGd-nipy6nDoi4852/,features/org.eclipse.tptp.platform.core_4.7.3.v201104132345-8P8RFOWFJdMh0riOwc7uJT/,features/com.ibm.dojo.feature_1.1.10.v20100715_2051/,features/org.eclipse.datatools.connectivity.oda.designer.feature_1.8.2.v201010181125-4107w3121151A1A53/,features/com.ibm.xtools.umlal.feature.uid.feature_1.0.2.v20110513_0725/,features/com.ibm.ccl.erf.cshelp.feature_1.1.0.v20090306_1924/,features/org.eclipse.cdt.gdb.source_7.0.0.201102110609/,features/org.eclipse.emf.workspace.doc_1.4.0.v20100428-2315-22-7w311A1238292A/,features/org.eclipse.wst.common_ui.feature_3.2.4.v201103101400-7C78FPmEdhO_oXYe4k_elbMkTrNrSL/,features/org.eclipse.datatools.enablement.jdt.feature_1.8.2.v201010181125-2-07w31211518181A/,features/com.ibm.xtools.patterns.content.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.ccl.oda.uml.feature.uid.feature_1.0.2.v20110216_2129/,features/com.ibm.cic.ide.int.feature_1.0.1.v20100222_2233/,features/org.eclipse.wst.xml_userdoc.feature_3.2.101.v201102161624-50FXNAkF7B77RBgFFBF/,features/org.eclipse.jet.uml2_1.1.0.v201006011447-2-07w311A1A152813/,features/com.ibm.xtools.transform.core.uid.feature_1.0.2.v20101020_0109/,features/org.eclipse.datatools.sqldevtools.parsers.feature_1.8.2.v201010181125-622BgJ9CR9XFcEWLP/,features/com.ibm.xtools.modviz.common.feature.uid.feature_1.0.2.v20101019_0105/,features/org.eclipse.jst.server_core.feature.source_3.2.4.v20110323-31FA38s73543B4E/,features/com.ibm.etools.performance.win32_1.2.300.v20110315_1851/,features/org.eclipse.emf.codegen.ui_2.6.0.v20100914-1218/,features/com.ibm.xtools.uml.profile.tooling.feature.uid.feature_1.0.2.v20101020_0109/,features/org.eclipse.jst.server_ui.feature.source_3.2.4.v20110323-7A5FEn9xFc7TCFKWBBINHK43A/,features/org.eclipse.tptp.platform.xerces_4.6.0.v201005032111-777K4AkF7B77R7c7N77/,features/org.eclipse.emf.codegen.ecore.source_2.6.1.v20100914-1218/,features/org.eclipse.ocl.source_3.0.2.R30x_v201101181635-79-7K8qD6z-DtD7E8BB753F53/,features/org.eclipse.xsd.source_2.6.0.v20100914-1218/,features/org.eclipse.datatools.connectivity.oda.feature_1.8.2.v201010181125-7H7C7CCcNBHEDPHcETPO/,features/org.eclipse.wst.jsdt.feature_1.2.4.v201103240300-7C78FGYF9JgLWPMA_ENpYd/,features/com.ibm.xtools.rmp.uid.feature_1.0.2.v20101016_0104/,plugins/org.eclipse.gmf.templates.legacy_1.0.1.v20100831-1541/,plugins/com.ibm.xtools.uml.rt.core_1.50.0.v20110515_0735.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.properties_1.4.2.v20101130-0030.jar,plugins/com.ibm.xtools.pluglets.ui.doc_7.4.0.v20100201_0328.jar,plugins/org.eclipse.birt.chart.reportitem.source_2.6.2.r262_v20110120.jar,plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl.source_1.0.0.v20100906-1425.jar,plugins/org.eclipse.emf.query.ocl_2.0.0.v20091215-1624.jar,plugins/org.eclipse.jem_2.0.401.v201104271300.jar,plugins/org.eclipse.gmf.xpand.editor_2.1.0.v20100428-2359.jar,plugins/org.eclipse.uml2.uml_3.1.2.v201010261927.jar,plugins/org.eclipse.wst.wsdl.validation_1.1.501.v201004201506.jar,plugins/org.eclipse.jst.servlet.ui.source_1.1.405.v201104141500.jar,plugins/org.eclipse.datatools.enablement.oda.ws.ui_1.2.2.v201012301630.jar,plugins/com.ibm.xtools.pluglets.doc.isv_7.0.3.v20110106_1550.jar,plugins/com.ibm.ccl.erf.ui_1.60.0.v20100715_2051.jar,plugins/org.eclipse.jst.j2ee.jca.source_1.1.400.v201005270700.jar,plugins/org.eclipse.equinox.common_3.6.0.v20100503.jar,plugins/com.ibm.xtools.transform.uml2.java.morph_7.0.300.v20100929_0755.jar,plugins/com.ibm.xtools.uml.cacheadapter_7.60.0.v20100715_2051.jar,plugins/org.apache.batik.parser_1.6.0.v200805290154.jar,plugins/com.ibm.xtools.transform.ui.doc_7.0.300.v20100715_2051.jar,plugins/com.ibm.xtools.modeler.ui.ocl_7.60.200.v20101106_0006.jar,plugins/org.eclipse.emf.ant.source_2.6.1.v20100905-1631.jar,plugins/com.ibm.xtools.jet.feature.uid_1.0.2.v20110510_2201.jar,plugins/org.eclipse.jst.ws.uddiregistry_1.0.500.v201004211805.jar,plugins/org.eclipse.osgi.services_3.2.100.v20100503.jar,plugins/org.eclipse.equinox.app_1.3.1.R36x_v20100803.jar,plugins/com.ibm.xtools.updm.base.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.emf.converter.source_2.5.0.v20100914-1218.jar,plugins/com.ibm.xtools.patterns.core.doc.isv_7.60.0.v20110112_2333.jar,plugins/org.eclipse.equinox.security.ui.source_1.0.200.v20100503.jar,plugins/org.eclipse.wst.jsdt.doc_1.0.301.v201007150153.jar,plugins/org.eclipse.cdt.managedbuilder.gnu.ui_7.0.0.201102110609.jar,plugins/org.eclipse.birt.core.ui.source_2.6.2.r262_v20101014.jar,plugins/com.ibm.xtools.ras.repository.client.workgroup.ui_7.0.0.v20100805_2013.jar,plugins/org.apache.batik.xml.source_1.6.0.v200805290154.jar,plugins/org.eclipse.datatools.sqltools.ddlgen.ui_1.0.1.v201002270530.jar,plugins/com.ibm.xtools.patterns.examples_7.60.0.v20100929_0755.jar,plugins/com.ibm.xtools.analysis.codereview.java.j2se_7.0.300.v20100517_1740.jar,plugins/org.eclipse.pde.junit.runtime_3.4.100.v20100601.jar,plugins/com.ibm.ccl.help.feedback_7.0.1.v20100715_2051.jar,plugins/org.eclipse.ui.intro.source_3.4.0.v20100427.jar,plugins/org.eclipse.jdt.junit4.runtime_1.1.100.v20100526-0800.jar,plugins/org.eclipse.equinox.concurrent.source_1.0.100.v20100503.jar,plugins/org.eclipse.gmf.runtime.common.ui.services.action_1.4.0.v20100430-1518.jar,plugins/org.eclipse.jst.ws_1.0.507.v201004211805.jar,plugins/org.eclipse.jem.beaninfo_2.0.300.v200905030615.jar,plugins/org.eclipse.jsch.core_1.1.200.I20100505-1245.jar,plugins/com.ibm.xtools.publish.ui.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.actions.source_1.4.0.v20100223-2359.jar,plugins/com.ibm.cic.licensing.flexlm.win32_1.0.1.v20110515_2041/,plugins/org.eclipse.equinox.preferences.source_3.3.0.v20100503.jar,plugins/com.ibm.xtools.ras.repository.client.local_7.0.0.v20100805_2013.jar,plugins/org.eclipse.pde.core.source_3.6.3.v20110407_r363.jar,plugins/org.eclipse.gmf.runtime.common.ui.printing.win32_1.4.0.v20100223-2359.jar,plugins/org.eclipse.gmf.graphdef.codegen.source_2.0.101.v20100831-1541.jar,plugins/org.eclipse.core.runtime.compatibility.auth.source_3.2.200.v20100517.jar,plugins/org.eclipse.debug.core_3.6.0.v20100519.jar,plugins/org.eclipse.datatools.sqltools.editor.core_1.0.0.v201001150815.jar,plugins/org.eclipse.equinox.p2.ui.source_2.0.0.v20100518.jar,plugins/org.eclipse.tptp.platform.models.hierarchy_4.7.3.v201104132345.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.resources.editor.source_1.4.1.v20100729-0030.jar,plugins/com.ibm.xtools.viz.umlv1_7.0.100.v20100715_2051.jar,plugins/org.eclipse.wst.common.frameworks_1.2.0.v201003040800.jar,plugins/org.eclipse.birt.report.designer.ui.lib.explorer.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.richtext.emf_7.60.300.v20110516_2128.jar,plugins/org.eclipse.emf.validation.ui_1.3.0.v200901271722.jar,plugins/org.eclipse.emf.validation_1.4.0.v20100428-2315.jar,plugins/org.eclipse.ecf.provider.filetransfer.source_3.1.0.v20100906-1425.jar,plugins/com.ibm.ccl.erf.emf.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.equinox.frameworkadmin.source_2.0.0.v20100503.jar,plugins/org.eclipse.wst.web.source_1.1.403.v201103081400.jar,plugins/org.eclipse.datatools.connectivity.oda_3.3.1.v201102051100.jar,plugins/org.eclipse.uml2.codegen.ecore.ui.source_1.6.0.v201005031530.jar,plugins/lpg.runtime.java_2.0.17.v201004271640.jar,plugins/org.eclipse.birt.report.data.oda.jdbc_2.6.2.r262_v20110127/,plugins/org.eclipse.uml2.common.source_1.5.0.v201005031530.jar,plugins/org.eclipse.jst.ws.axis.creation.ui_1.0.600.v201008171516.jar,plugins/com.ibm.xtools.traceability.java_7.60.0.v20100929_0755.jar,plugins/com.ibm.xtools.modeler.rt.ui_1.50.0.v20110515_0735.jar,plugins/org.eclipse.ui.workbench.texteditor.source_3.6.2.r362_v20110316.jar,plugins/org.eclipse.equinox.p2.artifact.repository_1.1.1.R36x_v20100901.jar,plugins/org.eclipse.jem.proxy_2.0.301.v201101101700.jar,plugins/org.eclipse.birt.report.designer.ui.lib.explorer_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.modeler.rt.ui.diagrams_1.50.0.v20110429_1455.jar,plugins/org.eclipse.ui.ide.source_3.6.3.M20110511-1135.jar,plugins/com.ibm.xtools.ras.repository.datastore.core_7.0.100.v20100805_2013.jar,plugins/org.eclipse.core.externaltools.source_1.0.2.v20110315_r362.jar,plugins/org.eclipse.datatools.sqltools.sqleditor_1.0.2.v201009230800.jar,plugins/com.ibm.xtools.transform.uml2.xsd_7.2.420.v20110413_2148.jar,plugins/org.eclipse.birt.report.engine.emitter.pdf.config_2.6.2.r262_v20110127.jar,plugins/org.eclipse.wst.common.infopop_1.0.300.v201004280700.jar,plugins/com.ibm.process.rsase.feature.uid_1.0.2.v20101006_0655.jar,plugins/org.eclipse.tptp.platform.probekit.launch_4.5.0.v201005061600.jar,plugins/org.apache.commons.logging.source_1.0.4.v201005080501.jar,plugins/com.ibm.xtools.ras.export.tasks.ide.feature.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.viz.j2se.ui.vizmenu_7.1.500.v20110510_2201.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.dnd_1.2.0.v20090403-1720.jar,plugins/org.eclipse.equinox.p2.core_2.0.3.R36x_v20110111.jar,plugins/com.ibm.rsaz.analysis.compatibility_7.0.100.v20100909_1452.jar,plugins/org.eclipse.gmf.runtime.draw2d.ui.render_1.4.2.v20101111-1500.jar,plugins/org.eclipse.jdt.apt.core_3.3.402.R36_v20110120-1000.jar,plugins/com.ibm.xtools.transform.fuse_7.0.300.v20100715_2051.jar,plugins/com.ibm.rsaz.analysis.birt.compatibility_7.0.100.v20100518_1916.jar,plugins/org.eclipse.gmf.runtime.gef.ui.source_1.4.0.v20100430-1518.jar,plugins/com.ibm.xtools.patterns.notation.edit_7.60.0.v20100929_0755.jar,plugins/org.eclipse.datatools.sqltools.sqlscrapbook_1.0.1.v201005250945.jar,plugins/org.eclipse.platform.source_3.6.2.v201102101200.jar,plugins/com.ibm.xtools.reqpro.ui_7.1.303.v20100908_0104.jar,plugins/org.eclipse.birt.report.viewer.source_2.6.2.r262_v20110214.jar,plugins/com.ibm.ccl.help.feedback.feature.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.xtools.umldt.rt.petal.ui.cshelp_7.0.1.v20110411_1749.jar,plugins/com.ibm.ccl.erf.birt_1.60.300.v20110510_2201.jar,plugins/com.ibm.cic.licensing.lum.win32_8.1.1006.v20110330_2243/,plugins/org.eclipse.emf.importer.rose_2.6.0.v20100521-1846.jar,plugins/org.apache.batik.dom.svg_1.6.0.v200805290154.jar,plugins/org.eclipse.m2m.qvt.oml.cst.parser_2.1.1.v20100818-1530.jar,plugins/org.eclipse.jface.databinding_1.4.0.I20100601-0800.jar,plugins/com.ibm.xtools.transform.ide.uid_1.0.2.v20101020_0109.jar,plugins/org.eclipse.gmf.runtime.common.ui.services_1.3.0.v20100423-2359.jar,plugins/org.eclipse.jst.server.ui.doc.user_1.0.500.v201005192218.jar,plugins/com.ibm.xtools.uml.redefinition_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.transform.uml2.mapping_7.5.400.v20100715_2051.jar,plugins/org.w3c.dom.events.source_3.0.0.draft20060413_v200905140418.jar,plugins/org.eclipse.wst.jsdt.core_1.1.6.v201105242202.jar,plugins/org.eclipse.wst.ws.service.policy.ui_1.0.202.v201004211732.jar,plugins/org.eclipse.jst.ws.consumption_1.0.508.v201103082026.jar,plugins/org.eclipse.birt.report.debug.core_2.6.2.r262_v20110127.jar,plugins/com.ibm.rcp.rte.ie_6.2.1.20090925-1604.jar,plugins/com.ibm.support.uid_1.0.1.v20110510_2201.jar,plugins/com.ibm.ccl.feedreader.feature.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.wst.xsd.core.source_1.1.503.v201011121919.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.resources.editor_1.4.1.v20100729-0030.jar,plugins/org.eclipse.datatools.enablement.sybase.asa_1.0.1.v200906020900.jar,plugins/com.ibm.ccl.tdi.reqpro.ui_7.1.400.v20100715_2051.jar,plugins/org.eclipse.update.ui.source_3.2.300.v20100512.jar,plugins/org.apache.batik.bridge.source_1.6.0.v200912221622.jar,plugins/org.eclipse.jst.j2ee.navigator.ui_1.1.403.v201012020600.jar,plugins/com.ibm.xtools.umldt.rt.debug.launch.core_1.0.0.v20110326_0744.jar,plugins/com.ibm.help.common.nav.doc_7.6.0.v20110527_2039.jar,plugins/org.eclipse.pde.ui.templates.source_3.4.200.v20100601.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.printing.render.source_1.4.0.v20100423-2359.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.usecase_7.60.0.v20100715_2051.jar,plugins/org.eclipse.hyades.execution_4.5.1.v201101211900/,plugins/org.eclipse.wst.sse.doc.user_1.1.100.v201005192212.jar,plugins/org.eclipse.tptp.trace.arm_4.4.0.v201005061600/,plugins/org.eclipse.wst.ws.explorer_1.0.508.v201103082027.jar,plugins/org.eclipse.birt.report.designer.ui.data.source_2.6.2.r262_v20110209.jar,plugins/org.eclipse.equinox.p2.director.source_2.0.3.R36x_v20101117-1018.jar,plugins/org.eclipse.wst.web_1.1.403.v201103081400.jar,plugins/org.eclipse.birt.chart.device.svg.source_2.6.2.r262_v20101230.jar,plugins/org.eclipse.wst.internet.cache.source_1.0.400.v201004280700.jar,plugins/org.eclipse.jst.j2ee.webservice_1.1.400.v201004110600.jar,plugins/org.eclipse.swt_3.6.3.v3659d.jar,plugins/org.eclipse.hyades.probekit.ui_4.1.601.v201105161135.jar,plugins/org.eclipse.emf.mapping.ecore2ecore.editor.source_2.4.0.v20100521-1847.jar,plugins/org.eclipse.team.cvs.core_3.3.301.R36x_v20110119-0815.jar,plugins/org.eclipse.equinox.p2.metadata_2.0.1.R36x_v20101202.jar,plugins/org.eclipse.datatools.enablement.oda.xml.ui_1.2.1.v201012161115.jar,plugins/org.eclipse.core.databinding.property_1.3.0.I20100601-0800.jar,plugins/com.ibm.xtools.sample.model.publishing.doc_7.1.200.v20100201_0328.jar,plugins/org.eclipse.tptp.platform.common.ui_4.4.302.v201104132345.jar,plugins/org.eclipse.ecf_3.1.0.v20100906-1425.jar,plugins/com.ibm.rational.rsart.core.welcome.doc_1.0.6.v20110412_2230.jar,plugins/org.eclipse.birt.chart.device.swt.source_2.6.2.r262_v20101209.jar,plugins/com.ibm.xtools.mmi.core_7.60.200.v20101217_0201.jar,plugins/org.eclipse.datatools.modelbase.derby_1.0.0.v201002161452.jar,plugins/org.eclipse.birt.chart.reportitem_2.6.2.r262_v20110120.jar,plugins/com.ibm.xtools.mde.solution.core.gen_1.0.0.v20100715_2051.jar,plugins/com.ibm.xtools.httpserver_1.0.0.v20110308_1632.jar,plugins/org.eclipse.gmf.bridge.ui.source_1.2.100.v20090709-1925.jar,plugins/org.eclipse.xsd.ecore.importer_2.6.0.v20100521-1855.jar,plugins/com.ibm.xtools.umldt.rt.feature.uid_1.0.2.v20110510_0738.jar,plugins/com.ibm.xtools.patterns.ui.apply_7.60.0.v20100929_0755.jar,plugins/com.ibm.xtools.mde.solution.core_8.0.0.v20100715_2051.jar,plugins/org.eclipse.xsd_2.6.0.v20100914-1218.jar,plugins/com.ibm.xtools.modeler.cshelp_7.0.2.v20090306_1924.jar,plugins/com.ibm.xtools.uml.type_7.60.300.v20110510_2201.jar,plugins/org.eclipse.wst.ws_1.1.203.v201004211805.jar,plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.report.designer.ui.preview.web.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.ecf.source_3.1.0.v20100906-1425.jar,plugins/org.eclipse.equinox.http.registry_1.1.1.R36x_v20101103.jar,plugins/org.eclipse.wst.jsdt.web.core.source_1.0.305.v201103170144.jar,plugins/org.eclipse.ui.externaltools_3.2.0.v20100427.jar,plugins/com.ibm.xtools.comparemerge.ui_7.60.300.v20110510_2201.jar,plugins/com.ibm.xtools.comparemerge.ccdirectory_7.0.1240.v20100715_2051.jar,plugins/org.eclipse.core.databinding.beans_1.2.100.I20100601-0800.jar,plugins/org.eclipse.datatools.enablement.sybase_1.0.1.v200906020900.jar,plugins/org.apache.batik.swing_1.6.0.v200805290154.jar,plugins/com.ibm.xtools.umldt.rt.j2se.debug.ui_1.0.0.v20110420_0731.jar,plugins/org.eclipse.pde.core_3.6.3.v20110407_r363.jar,plugins/com.ibm.xtools.transform.core.authoring.common_7.0.300.v20100715_2051.jar,plugins/com.ibm.ccl.mapping.feature.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.xtools.gs_eclipse_wb.doc_1.0.2.v20110408_2147.jar,plugins/com.ibm.cic.licensing.common.ui.feature.uid_1.0.2.v20101007_1238.jar,plugins/org.eclipse.birt.report.designer.ui.editors.schematic.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.core.jobs_3.5.1.R36x_v20100824.jar,plugins/org.eclipse.birt.report.engine.emitter.prototype.excel_2.6.2.r262_v20110215.jar,plugins/com.ibm.xtools.mde_1.0.0.v20100715_2051.jar,plugins/org.eclipse.uml2.uml.source_3.1.2.v201010261927.jar,plugins/com.ibm.xtools.transform.uml2.xsd.extension.gelement_1.0.0.v20110112_2333.jar,plugins/org.eclipse.equinox.p2.ui.discovery_1.0.0.v20100519.jar,plugins/org.eclipse.emf.importer.java.source_2.6.0.v20100521-1846.jar,plugins/org.eclipse.birt.report.data.oda.jdbc.ui.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.report.engine.emitter.config_2.6.2.r262_v20110127.jar,plugins/org.eclipse.jst.server.generic.core_1.0.606.v20100512.jar,plugins/org.eclipse.core.boot_3.1.200.v20100505.jar,plugins/com.ibm.xtools.transform.xsd.profile_1.0.10.v20110504_2111.jar,plugins/org.opengroup.arm_4.0.0.v201006081629/,plugins/com.ibm.xtools.umldt.rt.transform.cpp.viz.core_1.50.0.v20110326_0744.jar,plugins/org.eclipse.update.core.win32.source_3.2.200.v20100512.jar,plugins/org.eclipse.core.resources_3.6.1.R36x_v20110131-1630.jar,plugins/com.ibm.xtools.ras.export.ui.ide.feature.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.umldt.rt.transform.java.cshelp_1.0.0.v20110411_1749.jar,plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition_1.0.2.v200906161815.jar,plugins/com.ibm.xtools.umlviz.ui_7.5.310.v20110518_0102.jar,plugins/com.ibm.xtools.umldt.rt.j2se.core_1.50.0.v20110429_1455.jar,plugins/com.ibm.xtools.transform.authoring.mapping.ide_7.2.0.v20100715_2051.jar,plugins/org.eclipse.birt.report.model.adapter.oda.source_2.6.2.r262_v20110209.jar,plugins/com.ibm.xtools.updm.core_7.3.801.v20100929_0755.jar,plugins/com.ibm.xtools.umldt.rt.transform.c.ui_1.0.0.v20110331_1459.jar,plugins/org.eclipse.datatools.connectivity_1.2.2.v201010220354.jar,plugins/org.eclipse.birt.chart.engine.extension_2.6.2.r262_v20110113.jar,plugins/com.ibm.ccl.common.splash.feature.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.xtools.ras.export.tasks_7.0.0.v20100805_2013.jar,plugins/org.eclipse.jdt.compiler.apt.source_1.0.300.v20100513-0845.jar,plugins/org.eclipse.equinox.transforms.xslt_1.0.200.v20100503.jar,plugins/org.eclipse.jst.server.core.source_1.2.102.v20110309.jar,plugins/com.ibm.xtools.tdi.reqpro.ide.uid_1.0.2.v20101020_0109.jar,plugins/com.ibm.xtools.rmp.ui.search_1.10.200.v20110105_0203.jar,plugins/org.eclipse.ui.workbench.compatibility.source_3.2.100.I20100511-0800.jar,plugins/org.eclipse.wst.wsi.ui.doc.user_1.0.600.v201007141654.jar,plugins/com.ibm.dojo.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.tptp.platform.integration.pde_4.5.2.v201101211050.jar,plugins/org.eclipse.wst.wsdl_1.2.104.v201012082239.jar,plugins/com.ibm.xtools.sample.javaTransform.extension_1.0.1.v20100929_0755.jar,plugins/com.ibm.xtools.reqpro.activities_7.0.100.v20100715_2051.jar,plugins/org.eclipse.birt.report.designer.ui.lib_2.6.2.r262_v20110127.jar,plugins/org.eclipse.emf.codegen.ecore_2.6.1.v20100914-1218.jar,plugins/com.ibm.ccl.mapping.ui_1.0.400.v20110513_0101.jar,plugins/org.eclipse.datatools.sqltools.common.ui_1.0.0.v200906022302.jar,plugins/org.eclipse.jst.ws.creation.ui_1.0.511.v201103082026.jar,plugins/org.eclipse.emf.query.source_1.2.100.v200903190031.jar,plugins/com.ibm.xtools.modeler.rt.ui.properties_1.50.0.v20110518_0733.jar,plugins/com.ibm.xtools.transform.uml2.soa.util_7.1.210.v20110416_0731.jar,plugins/org.eclipse.cdt.gdb.ui.source_7.0.0.201102110609.jar,plugins/org.eclipse.birt.report.designer.ui.editor.script.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.draw2d.source_3.6.2.v20110128-0100.jar,plugins/org.eclipse.datatools.enablement.oracle.ui_1.0.2.v201005051303.jar,plugins/com.ibm.xtools.sample.mobilephone_7.1.3.v20100201_0328.jar,plugins/org.eclipse.datatools.connectivity.oda.template.ui_3.2.1.v201004090942.jar,plugins/org.eclipse.equinox.p2.metadata.generator_1.0.202.R36x_v20101208-1400.jar,plugins/com.ibm.rational.common.licensing.ibmratl.client_8.1.1006.v20110509_2210/,plugins/com.ibm.xtools.codeview.j2se_1.0.0.v20110503_2037.jar,plugins/com.ibm.xtools.transform.java.uml.cshelp_7.0.8.v20110408_2147.jar,plugins/com.ibm.xtools.updm.ui.project_7.3.801.v20100929_0755.jar,plugins/org.eclipse.equinox.http.jetty_2.0.0.v20100503.jar,plugins/org.eclipse.ant.ui.source_3.5.0.v20100427.jar,plugins/org.eclipse.osgi_3.6.2.R36x_v20110210.jar,plugins/org.eclipse.core.externaltools_1.0.2.v20110315_r362.jar,plugins/org.eclipse.cdt.dsf.gdb.source_3.0.0.201102110609.jar,plugins/com.ibm.xtools.uml.profile.tooling.migration_7.5.300.v20100715_2051.jar,plugins/com.ibm.xtools.transform.authoring.mapping.cshelp_7.0.5.v20090306_1924.jar,plugins/org.eclipse.emf.mapping.ecore2ecore.source_2.5.0.v20100521-1847.jar,plugins/com.ibm.xtools.ras.profile.defauld_7.0.100.v20100805_2013.jar,plugins/org.eclipse.wst.common.core.source_1.2.0.v200908252030.jar,plugins/com.ibm.xtools.rumv.ui_7.60.200.v20110210_0202.jar,plugins/org.eclipse.wst.common.project.facet.core_1.4.102.v201008170019.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.render.source_1.4.1.v20100909-1300.jar,plugins/org.eclipse.equinox.p2.artifact.repository.source_1.1.1.R36x_v20100901.jar,plugins/org.eclipse.jem.util_2.1.3.v201012070000.jar,plugins/org.eclipse.platform.doc.user_3.6.2.r362_v20101117-0800.jar,plugins/org.eclipse.jet.doc_1.1.0.v201003251524.jar,plugins/com.ibm.xtools.umldt.feature.uid_1.0.2.v20110217_0818.jar,plugins/org.eclipse.xsd.edit_2.6.0.v20100914-1218.jar,plugins/org.eclipse.jst.j2ee.ui_1.1.405.v201104141600.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.structure_7.60.200.v20110130_0206.jar,plugins/org.eclipse.emf.workspace.source_1.4.0.v20100224-1706.jar,plugins/org.eclipse.birt.report.item.crosstab.ui_2.6.2.r262_v20110127.jar,plugins/org.eclipse.tptp.platform.agentcontroller_4.3.4.v201105161135/,plugins/org.eclipse.epf.common_1.5.0.v20080709-1606/,plugins/com.ibm.xtools.umldt.rt.transform_1.50.0.v20110510_0738.jar,plugins/com.ibm.xtools.transform.uml2.viz.uid_1.0.2.v20101020_0109.jar,plugins/org.eclipse.equinox.registry_3.5.0.v20100503.jar,plugins/com.ibm.xtools.umldt.rt.j2se.core.resources_1.0.0.v20110325_2100.jar,plugins/com.ibm.xtools.updm.ui.standard_7.0.801.v20100929_0755.jar,plugins/org.eclipse.emf.importer.rose.source_2.6.0.v20100521-1846.jar,plugins/com.ibm.xtools.transform.uml2.java.cshelp_7.1.7.v20110408_2147.jar,plugins/com.ibm.xtools.traceability_feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.jdt.junit.core.source_3.6.1.r361_v20100825-0800.jar,plugins/com.ibm.xtools.updm.ui.enterprise_7.3.801.v20100929_0755.jar,plugins/org.eclipse.gmf.tooldef.edit.source_2.0.100.v20090114-0940.jar,plugins/org.eclipse.birt.report.data.bidi.utils_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.report.engine.emitter.wpml.config.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.ecf.provider.filetransfer_3.1.0.v20100906-1425.jar,plugins/org.eclipse.birt.report.engine.dataextraction.csv_2.6.2.r262_v20110127.jar,plugins/org.eclipse.ui.externaltools.source_3.2.0.v20100427.jar,plugins/com.ibm.xtools.bizmodeler_7.0.200.v20101006_0655/,plugins/org.eclipse.jet_1.1.1.v201101311015.jar,plugins/com.ibm.cic.licensing.common.core_7.0.202.v20110429_1203.jar,plugins/com.ibm.xtools.comparemerge.gmf.uid_1.0.2.v20110520_2214.jar,plugins/org.eclipse.birt.report.designer.ui.lib.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.sample.pluglet.modelenum_7.3.0.v20100201_0328.jar,plugins/org.eclipse.birt.report.engine.emitter.postscript.config_2.6.2.r262_v20110127.jar,plugins/org.eclipse.pde_3.6.1.v201102101200.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide_1.2.0.v20100423-2359.jar,plugins/org.eclipse.wst.sse.core_1.1.505.v201104070043.jar,plugins/org.eclipse.core.databinding.beans.source_1.2.100.I20100601-0800.jar,plugins/org.eclipse.cdt.gdb.ui_7.0.0.201102110609.jar,plugins/org.eclipse.wst.common.snippets.source_1.2.2.v201101130441.jar,plugins/org.eclipse.uml2.source_3.0.0.v201005031530.jar,plugins/org.apache.wsil4j_1.0.0.v200901211807.jar,plugins/org.eclipse.gmf.codegen_2.2.100.v20100518-2359.jar,plugins/org.eclipse.osgi.source_3.6.2.R36x_v20110210.jar,plugins/org.eclipse.birt.report.item.crosstab.core.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.traceability.reqpro_feature.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.xtools.transform.uml2.viz.reqpro_7.0.300.v20100715_2051.jar,plugins/org.eclipse.tptp.trace.arm.doc.user_4.4.1.v201009092123.jar,plugins/com.ibm.xtools.vizumlv1client.uid_1.0.2.v20101020_0109.jar,plugins/com.ibm.xtools.msword.bridge_7.0.200.v20100929_0755.jar,plugins/org.eclipse.datatools.modelbase.sql.edit_1.0.1.v201002161452.jar,plugins/org.eclipse.pde.runtime_3.4.200.v20100601.jar,plugins/org.eclipse.jst.server.ui.infopop_1.0.400.v200805140145.jar,plugins/com.ibm.xtools.modeler.ui_7.60.300.v20110510_2201.jar,plugins/org.eclipse.hyades.test.tools.core_4.6.0.v201005271900/,plugins/org.eclipse.equinox.security.win32.x86.source_1.0.200.v20100503.jar,plugins/org.eclipse.wst.jsdt.web.support.jsp_1.0.303.v201012160047.jar,plugins/org.apache.batik.svggen_1.6.0.v200805290154.jar,plugins/org.eclipse.wst.common.modulecore_1.2.6.v201103310300.jar,plugins/org.eclipse.jst.server.generic.core.source_1.0.606.v20100512.jar,plugins/com.ibm.xtools.comparemerge.emf.ccdirectory.edit_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.modeler.validation_7.60.0.v20100715_2051.jar,plugins/org.eclipse.equinox.p2.ui.admin.rcp_1.0.101.R36x_v20100823.jar,plugins/org.eclipse.wst.common.emfworkbench.integration_1.2.3.v201012020600.jar,plugins/org.eclipse.ui_3.6.2.M20110203-1100.jar,plugins/org.eclipse.uml2.uml.edit_3.1.0.v201005031530.jar,plugins/org.eclipse.xsd.mapping.editor_2.6.0.v20100914-1218.jar,plugins/com.ibm.xtools.ras.impord.tasks.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.jst.j2ee.xdoclet.runtime.source_1.1.300.v201004280700.jar,plugins/com.ibm.xtools.traceability_7.60.0.v20101006_0655/,plugins/org.eclipse.emf.query.examples_1.2.0.v200901271643.jar,plugins/org.eclipse.jst.ws.consumption.infopop_1.0.300.v200805140230.jar,plugins/org.eclipse.core.filebuffers.source_3.5.100.v20100520-0800.jar,plugins/org.eclipse.equinox.util.source_1.0.200.v20100503.jar,plugins/org.eclipse.cdt.debug.mi.core.source_7.0.1.201102110609.jar,plugins/com.ibm.xtools.traceability.viz_feature.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.xtools.mmi.ui_7.60.300.v20110510_2201.jar,plugins/org.eclipse.compare.core_3.5.101.R36x_v20100929-0800.jar,plugins/com.ibm.xtools.transforms.java.feature.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.rsar.analysis.reporting.oda_7.0.100.v20100517_2203.jar,plugins/com.ibm.icu_4.2.1.v20100412.jar,plugins/com.ibm.ccl.oda.diagram.feature.uid_1.0.2.v20101016_0104.jar,plugins/org.w3c.dom.svg.source_1.1.0.v200806040011.jar,plugins/org.w3c.sac_1.3.0.v20100915/,plugins/org.eclipse.gmf.bridge.ui_1.2.100.v20090709-1925.jar,plugins/org.eclipse.wst.common.ui.source_1.1.500.v200911190730.jar,plugins/org.eclipse.emf.mapping.ecore2xml.source_2.5.0.v20100521-1847.jar,plugins/org.eclipse.birt.report.model_2.6.2.r262_v20110209.jar,plugins/com.ibm.ccl.linkability.provider.core_7.1.100.v20100715_2051.jar,plugins/org.eclipse.emf.importer.ecore_2.6.0.v20100521-1846.jar,plugins/com.ibm.ccl.soa.sketcher.cshelp_1.0.0.v20110408_2147.jar,plugins/com.ibm.xtools.ras.core_7.0.0.v20100805_2013/,plugins/com.ibm.ccl.soa.sketcher.compare_1.0.300.v20110524_0741.jar,plugins/org.w3c.dom.smil_1.0.0.v200806040011.jar,plugins/org.eclipse.birt_2.6.1.v20100813.jar,plugins/org.eclipse.jst.servlet.ui_1.1.406.v201105171500.jar,plugins/com.ibm.rsaz.analysis.java.core_7.0.0.v20090930_2207.jar,plugins/com.ibm.xtools.uml.ui.diagrams.usecase_7.60.300.v20110510_2201.jar,plugins/org.eclipse.emf.mapping.ecore2xml_2.5.0.v20100521-1847.jar,plugins/com.ibm.xtools.comparemerge.msl_7.60.0.v20100715_2051.jar,plugins/org.eclipse.cdt.doc.user_5.1.0.201102110609.jar,plugins/org.eclipse.datatools.sqltools.editor.core.ui_1.0.0.v201001150815.jar,plugins/com.ibm.xtools.updm.ui.organizational_7.3.801.v20100929_0755.jar,plugins/org.eclipse.datatools.connectivity.console.profile_1.0.0.v200906020553.jar,plugins/org.eclipse.ocl_3.0.2.R30x_v201101110610.jar,plugins/com.ibm.xtools.comparemerge.cshelp_7.0.4.v20090708_1529.jar,plugins/org.eclipse.birt.report.engine.emitter.html.config.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.equinox.p2.console_1.0.200.v20100601.jar,plugins/org.eclipse.jdt.ui.source_3.6.2.r362_v20110203.jar,plugins/org.eclipse.jst.j2ee.ejb.annotations.ui.source_1.1.200.v201004290730.jar,plugins/org.eclipse.jst.jee.web_1.0.301.v201007070907.jar,plugins/org.eclipse.emf.ecore.sdo.edit_2.3.0.v200801221930.jar,plugins/org.eclipse.datatools.enablement.hsqldb.dbdefinition_1.0.0.v200906161800.jar,plugins/org.eclipse.jdt.compiler.tool_1.0.100.v_A76_R36x.jar,plugins/org.eclipse.wst.jsdt.manipulation_1.0.200.v201004150600.jar,plugins/org.eclipse.pde.source_3.6.1.v201102101200.jar,plugins/com.ibm.xtools.presentation_7.60.0.v20100715_2051.jar,plugins/org.eclipse.jsch.core.source_1.1.200.I20100505-1245.jar,plugins/com.ibm.xtools.rmp.base.uid_1.0.2.v20110510_2201.jar,plugins/com.ibm.xtools.umldt.rt.cpp.umlal.cpp2.jet2_1.0.0.v20110405_2005.jar,plugins/org.apache.batik.util.gui_1.6.0.v200805290154.jar,plugins/org.eclipse.gmf.runtime.common.ui.services.properties_1.3.0.v20101129-1213.jar,plugins/org.eclipse.wst.common.modulecore.source_1.2.6.v201103310300.jar,plugins/org.mozilla.javascript_1.7.2.v201005080400.jar,plugins/org.eclipse.equinox.registry.source_3.5.0.v20100503.jar,plugins/com.ibm.rational.clearcase.rtc.UCMActivity_7.6.0.v201105111445.jar,plugins/org.apache.batik.dom_1.6.0.v200912221622.jar,plugins/com.ibm.xtools.viz.common_7.5.100.v20110510_2201.jar,plugins/org.w3c.css.sac.source_1.3.0.v200805290154.jar,plugins/org.eclipse.jst.ws.jaxrs.core_1.0.201.v201011231540.jar,plugins/org.eclipse.equinox.transforms.hook_1.0.200.v20100503.jar,plugins/org.eclipse.team.cvs.ui_3.3.302.R36x_v20110203-1036.jar,plugins/org.mortbay.jetty.server_6.1.23.v201004211559.jar,plugins/org.apache.batik.dom.source_1.6.0.v200912221622.jar,plugins/org.eclipse.cdt.ui.source_5.2.2.201102110609.jar,plugins/com.ibm.xtools.uml2.bom.integration.ui_7.0.310.v20100929_0755.jar,plugins/org.eclipse.update.core.source_3.2.402.R36x_v20100629.jar,plugins/com.ibm.xtools.comparemerge.team_7.60.100.v20100916_0104/,plugins/com.ibm.xtools.petal.core_7.0.0.v20110517_1415.jar,plugins/com.ibm.ccl.erf.rsa.report.uml2_1.60.0.v20100715_2051.jar,plugins/org.eclipse.birt.report.data.adapter.source_2.6.2.r262_v20110215.jar,plugins/com.ibm.cic.licensing.common_7.0.14.v20110513_1648.jar,plugins/ilog.views.eclipse.graphlayout.properties_8.7.6.v20101108.jar,plugins/org.eclipse.uml2.codegen.ecore.source_1.6.0.v201005031530.jar,plugins/org.eclipse.emf.mapping.ecore2xml.ui.source_2.5.0.v20100521-1847.jar,plugins/com.ibm.xtools.sample.pluglet.fan_7.2.0.v20100201_0328.jar,plugins/com.ibm.help.common.rational.remote.doc_7.6.0.v20110527_2039.jar,plugins/org.eclipse.wst.xsdeditor.doc.user_1.0.800.v201005192212.jar,plugins/org.eclipse.gmf.runtime.notation.edit_1.4.0.v20100512-1416.jar,plugins/org.eclipse.emf.ant_2.6.1.v20100905-1631.jar,plugins/org.eclipse.equinox.p2.metadata.repository_1.1.1.R36x_v20110302.jar,plugins/org.eclipse.gmf.runtime.common.core_1.4.0.v20100423-2359.jar,plugins/org.eclipse.wst.jsdt.debug.ui.source_1.0.4.v201103310001.jar,plugins/com.ibm.xtools.viz.artifact_7.0.0.v20100715_2051.jar,plugins/com.ibm.process.context_7.0.0.v20100715_2051.jar,plugins/org.eclipse.uml2.common_1.5.0.v201005031530.jar,plugins/com.ibm.xtools.comparemerge.core_7.60.0.v20100715_2051.jar,plugins/org.eclipse.cvs_1.0.500.v201102101200.jar,plugins/org.apache.commons.httpclient.source_3.1.0.v201005080502.jar,plugins/org.eclipse.emf.importer_2.6.0.v20100521-1846.jar,plugins/org.eclipse.datatools.sqltools.sqlbuilder_1.0.3.v201009131745.jar,plugins/org.eclipse.update.configurator_3.3.100.v20100512.jar,plugins/com.ibm.xtools.umlnotation_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.reqpro.core_7.0.402.v20101113_0204.jar,plugins/org.eclipse.tptp.platform.profile.server.wst_4.4.2.v201101211050.jar,plugins/org.eclipse.jdt.source_3.6.1.v201102101200.jar,plugins/com.ibm.xtools.uml.profile.tooling_7.60.0.v20110208_0023.jar,plugins/org.eclipse.wst.dtdeditor.doc.user_1.0.600.v201005192212.jar,plugins/com.ibm.xtools.jet.dptk_1.0.0.v20100715_2051.jar,plugins/org.eclipse.jst.common.ui_1.0.3.v201101101700.jar,plugins/org.eclipse.jst.j2ee.xdoclet.runtime_1.1.300.v201004280700.jar,plugins/org.eclipse.pde.api.tools.source_1.0.202.v20100820_r361.jar,plugins/org.eclipse.update.core.win32_3.2.200.v20100512.jar,plugins/com.ibm.xtools.ras.repository.client.plugin_7.0.1.v20100805_2013.jar,plugins/org.eclipse.rcp.source_3.6.0.v201102101200.jar,plugins/com.ibm.rsar.analysis.core.reporting_7.1.0.v20100517_1740.jar,plugins/com.ibm.help.common.doc_7.6.0.v20110304_1609.jar,plugins/org.apache.log4j_1.2.15.v201005080500.jar,plugins/org.eclipse.jst.standard.schemas_1.1.0.v201003031644.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.geoshapes.source_1.4.0.v20100419-2359.jar,plugins/org.eclipse.cdt.dsf.gdb_3.0.0.201102110609.jar,plugins/com.ibm.etools.performance.uid_1.0.2.v20110414_0031.jar,plugins/org.eclipse.jsch.ui_1.1.300.I20100505-1245.jar,plugins/org.eclipse.emf.common_2.6.0.v20100914-1218.jar,plugins/com.ibm.xtools.transform.authoring.mapping_7.3.0.v20101207_0201.jar,plugins/com.ibm.xtools.ras.repository.search.core_7.0.0.v20100805_2013.jar,plugins/org.eclipse.core.runtime.compatibility.source_3.2.100.v20100505.jar,plugins/org.eclipse.equinox.p2.touchpoint.natives_1.0.201.R36x_v20110111.jar,plugins/org.eclipse.birt.chart.device.pdf_2.6.2.r262_v20101230.jar,plugins/org.eclipse.core.jobs.source_3.5.1.R36x_v20100824.jar,plugins/org.eclipse.pde.runtime.source_3.4.200.v20100601.jar,plugins/org.eclipse.wst.jsdt.web.ui_1.0.304.v201012160349.jar,plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.tptp.platform.report.birt_4.5.1.v201101211050.jar,plugins/org.eclipse.wst.jsdt.debug.rhino.source_1.0.1.v201008170101.jar,plugins/org.eclipse.gmf.xpand.source_2.1.0.v20100315-2101.jar,plugins/com.ibm.xtools.updm.ui.service_7.3.801.v20100929_0755.jar,plugins/org.eclipse.wst.wsi_1.0.400.v201004220210.jar,plugins/com.ibm.ccl.da.dw.feature.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.xtools.transform.java.common_7.5.800.v20100929_0755.jar,plugins/com.ibm.xtools.umldt.rt.j2se.umlal.ui_1.0.0.v20110326_0744.jar,plugins/com.ibm.xtools.umldt.rt.transform.c_1.0.0.v20110515_0735.jar,plugins/org.eclipse.equinox.p2.metadata.repository.source_1.1.1.R36x_v20110302.jar,plugins/com.ibm.xtools.comparemerge.emf_7.60.300.v20110510_2201.jar,plugins/org.eclipse.pde.ds.ui_1.0.100.v20100601.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.geoshapes_1.4.0.v20100419-2359.jar,plugins/com.ibm.cic.ide.int_1.0.1.v20100222_2233.jar,plugins/com.ibm.xtools.transform.merge_7.0.0.v20100929_0755.jar,plugins/org.eclipse.datatools.enablement.ibm.db2.luw.ui_1.0.2.v201005211230.jar,plugins/org.eclipse.jdt.ui_3.6.2.r362_v20110203.jar,plugins/org.eclipse.gmf.runtime.emf.commands.core_1.4.0.v20100423-2359.jar,plugins/com.ibm.ccl.welcome.roles_7.0.0.v20100715_2051.jar,plugins/com.ibm.xtools.common.ui.navigator_7.70.300.v20110510_2201.jar,plugins/com.ibm.xtools.upia.pes.model_7.0.801.v20100929_0755.jar,plugins/com.ibm.xtools.dodaf.ui_7.0.801.v20100929_0755.jar,plugins/org.eclipse.datatools.enablement.ibm.db2.zseries.ui_1.0.1.v201005211230.jar,plugins/org.eclipse.tomcat_4.1.230.v20070531/,plugins/org.eclipse.equinox.common.source_3.6.0.v20100503.jar,plugins/com.ibm.xtools.mep.execution.ui_1.1.0.v20110422_0737.jar,plugins/com.ibm.xtools.umldt.rt.c.ui_1.0.0.v20110503_2037.jar,plugins/com.ibm.xtools.umldt.rt.cpp.debug.ui_1.50.0.v20110326_0744.jar,plugins/com.ibm.xtools.traceability.cpp_7.60.0.v20100929_0755.jar,plugins/org.eclipse.jdt.apt.pluggable.core_1.0.301.R36_v20100727-0110.jar,plugins/org.eclipse.jdt.doc.user_3.6.1.r361_v20100721-0800.jar,plugins/com.ibm.xtools.umldt.rt.core_1.50.0.v20110429_1455.jar,plugins/org.eclipse.emf.validation.doc_1.3.0.v20091215-1218.jar,plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile.ui_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.resources.source_2.6.2.r262_v20101014.jar,plugins/org.eclipse.birt.chart.device.extension.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.ccl.erf.birt.ui_1.60.300.v20110510_2201.jar,plugins/org.eclipse.gmf.runtime.common.ui.services.dnd.source_1.4.0.v20100423-2359.jar,plugins/com.ibm.xtools.ras.documentation.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.source_1.2.0.v20100423-2359.jar,plugins/com.ibm.xtools.transforms.xsd.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.birt.report.engine.emitter.html_2.6.2.r262_v20110209.jar,plugins/com.ibm.cic.licensing.flexlm.feature.uid_1.0.2.v20110228_1402.jar,plugins/org.eclipse.ui.forms_3.5.2.r36_v20100702.jar,plugins/org.eclipse.equinox.p2.installer_1.0.200.v20100503a.jar,plugins/com.ibm.ccl.erf.emf.examples_1.60.0.v20100715_2051.jar,plugins/org.eclipse.emf_2.6.0.v20100914-1218.jar,plugins/com.ibm.xtools.uml2.bom.integration_7.0.330.v20100929_0755.jar,plugins/com.ibm.xtools.publish.cshelp_7.0.1.v20090306_1924.jar,plugins/org.eclipse.hyades.execution.trace_4.2.0.v201005061600.jar,plugins/org.eclipse.datatools.connectivity.db.generic_1.0.1.v200908130547.jar,plugins/org.eclipse.birt.report.data.oda.xml_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.chart.reportitem.ui_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.ras.profile.core_7.0.0.v20100805_2013.jar,plugins/org.eclipse.datatools.enablement.ingres_1.0.0.v200906111150.jar,plugins/org.eclipse.gmf.runtime.common.core.source_1.4.0.v20100423-2359.jar,plugins/com.ibm.xtools.umlal.debug.ui_1.0.100.v20110331_1459.jar,plugins/com.ibm.xtools.modeler.rt.ui.diagrams.editor_1.0.0.v20110325_2100.jar,plugins/org.eclipse.emf.ecore.sdo.editor_2.3.0.v200801221930.jar,plugins/com.ibm.xtools.viz.j2se.cshelp_7.0.9.v20110408_2147.jar,plugins/org.eclipse.birt.report.designer.ui.editor.xml.wtp_2.6.2.r262_v20110127.jar,plugins/org.eclipse.gmf.runtime.common.ui.action.ide.source_1.4.0.v20100223-2359.jar,plugins/org.eclipse.cdt_7.0.2.201102110609.jar,plugins/org.eclipse.tptp.platform.common_4.4.4.v201104142332.jar,plugins/com.ibm.xtools.visualization.j2se.feature.uid_1.0.2.v20110510_2201.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.sequence_7.60.200.v20101109_0104.jar,plugins/org.eclipse.hyades.test.doc.user_4.5.0.v201005272100.jar,plugins/org.eclipse.wst.html.ui.infopop_1.0.200.v201004150328.jar,plugins/org.eclipse.jst.ws.creation.ui.source_1.0.511.v201103082026.jar,plugins/org.eclipse.core.net.win32.x86_1.0.100.I20100511-0800.jar,plugins/org.eclipse.wst.internet.cache_1.0.400.v201004280700.jar,plugins/com.ibm.xtools.ras.profile.defauld.component_7.0.1.v20100805_2013.jar,plugins/org.eclipse.gmf.bridge.source_1.1.100.v20100309-2359.jar,plugins/com.ibm.rcp.textanalyzer_6.2.1.200909031836.jar,plugins/org.eclipse.ui.cheatsheets_3.4.0.v20100427.jar,plugins/org.eclipse.birt.report.debug.core.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.report.engine.emitter.postscript_2.6.2.r262_v20110127.jar,plugins/com.ibm.cic.licensing.lum.feature.uid_1.0.2.v20100813_2252.jar,plugins/org.eclipse.wst.common.frameworks.source_1.2.0.v201003040800.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.printing.source_1.4.0.v20100430-1518.jar,plugins/org.eclipse.birt.chart.examples_2.6.2.r262_v20110113.jar,plugins/com.ibm.xtools.modeler.ui.editors_7.70.300.v20110516_2128.jar,plugins/org.eclipse.cdt.debug.mi.ui_6.1.0.201102110609.jar,plugins/org.eclipse.gmf.runtime.common.ui.printing.source_1.4.0.v20100223-2359.jar,plugins/com.ibm.xtools.umldt.rt.ui.examples_1.50.0.v20110326_0744.jar,plugins/org.apache.batik.util_1.6.0.v200805290154.jar,plugins/org.eclipse.gmf.templates.legacy.source_1.0.1.v20100831-1541.jar,plugins/com.ibm.xtools.mep.animation.core_1.0.0.v20110325_2100.jar,plugins/com.ibm.xtools.modeler.ui.viz_7.0.200.v20101021_2044.jar,plugins/org.eclipse.jst.common.project.facet.ui_1.4.102.v201008182136.jar,plugins/com.ibm.xtools.transform.java.profile_1.0.0.v20100929_0755.jar,plugins/com.ibm.xtools.ras.documentation_7.0.100.v20100805_2013.jar,plugins/com.ibm.xtools.vizclient.uid_1.0.2.v20101020_0109.jar,plugins/org.eclipse.jst.j2ee.ui.source_1.1.405.v201104141600.jar,plugins/com.ibm.xtools.updm.ui_7.3.801.v20100929_0755.jar,plugins/com.ibm.xtools.uml.validation.ocl_7.60.0.v20100715_2051.jar,plugins/org.eclipse.birt.report.engine.emitter.ppt_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.viz.cdt.common_7.5.0.v20100929_0755.jar,plugins/com.ibm.xtools.uml.ui.properties_7.60.300.v20110510_2201.jar,plugins/com.ibm.xtools.umldt.rt.transform.ui_1.50.0.v20110518_0733.jar,plugins/com.ibm.xtools.rmp.ui.diagram.notation.edit_1.0.100.v20101118_1550.jar,plugins/org.eclipse.wst.common.project.facet.ui_1.4.103.v201101271715.jar,plugins/org.eclipse.compare.core.source_3.5.101.R36x_v20100929-0800.jar,plugins/org.eclipse.wst.wsi.ui_1.0.501.v201004201506.jar,plugins/org.apache.lucene_1.9.1.v20100518-1140.jar,plugins/org.eclipse.equinox.p2.ql.source_2.0.0.v20100503a.jar,plugins/com.ibm.xtools.viz.cdt_7.5.0.v20110412_0735.jar,plugins/org.eclipse.wst.common.uriresolver_1.1.401.v201004280700.jar,plugins/org.eclipse.wst.html.ui.source_1.0.504.v201101122108.jar,plugins/org.eclipse.datatools.enablement.ibm.db2.luw.dbdefinition_1.0.4.v201005211215.jar,plugins/org.eclipse.datatools.sqltools.debugger.core.ui_1.0.0.v201003161000.jar,plugins/org.eclipse.gmf.graphdef.edit.source_2.0.200.v20090216-1925.jar,plugins/org.eclipse.wst.jsdt.support.firefox.source_1.0.300.v201004150600.jar,plugins/org.eclipse.gmf.tooldef.source_2.0.0.v20090114-0940.jar,plugins/org.eclipse.gmf.validate.source_1.2.0.v20100302-2359.jar,plugins/com.ibm.rsaz.analysis.codereview_7.1.0.v20091008_1446.jar,plugins/org.eclipse.equinox.p2.metadata.source_2.0.1.R36x_v20101202.jar,plugins/com.ibm.ccl.soa.sketcher.integration.uml_1.0.100.v20110524_0741.jar,plugins/org.eclipse.m2m.qvt.oml.emf.util.ui_2.0.1.v20100524-1530.jar,plugins/com.ibm.xtools.topic.msl_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.rmp.core_7.70.300.v20110510_2201.jar,plugins/org.eclipse.emf.commonj.sdo_2.3.0.v200801221930.jar,plugins/org.eclipse.birt.report.designer.ui.source_2.6.2.r262_v20110209.jar,plugins/org.eclipse.birt.report.debug.ui.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.transform.uml2.java.sm_1.0.100.v20110420_0731.jar,plugins/org.eclipse.birt.report.data.oda.sampledb_2.6.2.r262_v20110127/,plugins/com.ibm.xtools.umldt.rt.j2se.umlal.core_1.0.0.v20110401_0743.jar,plugins/com.ibm.xtools.pluglets.feature.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.xtools.codeview.uml_1.0.0.v20110515_0735.jar,plugins/org.eclipse.emf.workspace.ui.source_1.3.0.v200901271819.jar,plugins/org.eclipse.emf.mapping.source_2.6.0.v20100914-1218.jar,plugins/org.eclipse.equinox.preferences_3.3.0.v20100503.jar,plugins/com.ibm.xtools.transform.authoring_7.3.0.v20101207_0201.jar,plugins/org.eclipse.tptp.platform.execution_4.5.1.v201101211050/,plugins/org.eclipse.gmf.runtime.common.ui.services.source_1.3.0.v20100423-2359.jar,plugins/org.eclipse.datatools.enablement.mysql.ui_1.0.0.v200906020900.jar,plugins/com.ibm.xtools.mep.animation.ui_1.1.0.v20110518_0733.jar,plugins/org.eclipse.ui.ide.application_1.0.201.M20100707-0800.jar,plugins/org.eclipse.equinox.p2.director_2.0.3.R36x_v20101117-1018.jar,plugins/com.ibm.xtools.jet.nextsteps.wizard.cshelp_1.0.0.v20090306_1011.jar,plugins/org.eclipse.ant.core.source_3.2.201.v20110203_r362.jar,plugins/com.ibm.xtools.umldt.rt.cpp.debug.core_1.50.0.v20110326_0744.jar,plugins/org.eclipse.m2m.qvt.oml.common.ui_2.0.0.v20091215-2112.jar,plugins/org.eclipse.birt.report.engine.emitter.wpml.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.cdt.core.win32.source_5.2.0.201102110609.jar,plugins/com.ibm.xtools.uml.ui.diagrams.structure_7.60.300.v20110510_2201.jar,plugins/org.eclipse.gmf.runtime.emf.core.compatibility_1.60.200.v20110226_0201.jar,plugins/org.eclipse.emf.importer.source_2.6.0.v20100521-1846.jar,plugins/com.ibm.xtools.umldt.rt.c.core_1.50.0.v20110325_2100.jar,plugins/com.ibm.xtools.ras.export.tasks.ide_7.0.1.v20100805_2013.jar,plugins/org.junit.source_4.8.1.v4_8_1_v20100427-1100.jar,plugins/org.junit.source_3.8.2.v3_8_2_v20100427-1100.jar,plugins/org.eclipse.tptp.test.recorders.url.doc.user_4.7.0.v201005212338.jar,plugins/org.eclipse.jst.j2ee.webservice.ui.source_1.1.400.v201004110600.jar,plugins/org.eclipse.jst.j2ee.ejb.annotation.model.source_1.1.300.v201003112036.jar,plugins/com.ibm.ccl.soa.infrastructure.ui.utils_6.0.0.v20100715_2051.jar,plugins/com.ibm.xtools.umldt.rt.transform.j2se_1.50.0.v20110420_0731.jar,plugins/com.ibm.xtools.dodaf.type_7.0.801.v20100929_0755.jar,plugins/org.eclipse.uml2.uml.ecore.importer.source_2.4.0.v201005031530.jar,plugins/com.ibm.xtools.richtext.uid_1.0.2.v20110516_2128.jar,plugins/com.ibm.support.feedback.core_1.0.3.v20110330_1815.jar,plugins/org.eclipse.gmf.runtime.emf.clipboard.core_1.4.2.v20101111-1500.jar,plugins/org.eclipse.gmf.graphdef.edit_2.0.200.v20090216-1925.jar,plugins/org.apache.commons.el_1.0.0.v201004212143.jar,plugins/com.ibm.xtools.transform.uml2.cpp.cshelp_7.0.7.v20110408_2147.jar,plugins/org.eclipse.jst.ws.axis.ui.doc.user_1.1.100.v201005192217.jar,plugins/com.ibm.xtools.traceability.reqpro_7.60.0.v20110527_1732.jar,plugins/org.mortbay.jetty.jasper_1.0.150.v20101020_0109/,plugins/com.ibm.xtools.viz.artifact.ui_7.0.200.v20110510_2201.jar,plugins/org.eclipse.core.commands.source_3.6.0.I20100512-1500.jar,plugins/org.eclipse.birt.report.engine.fonts_2.6.2.r262_v20110127/,plugins/org.eclipse.ui.browser.source_3.3.1.r36_20101216.jar,plugins/com.ibm.xtools.comparemerge.emf.delta_7.60.300.v20110510_2201.jar,plugins/org.eclipse.team.core.source_3.5.101.R36x_v20110203-1036.jar,plugins/com.ibm.xtools.ras.common.ui_7.0.100.v20100805_2013.jar,plugins/org.eclipse.datatools.enablement.ibm.db2.iseries_1.0.2.v201005211230.jar,plugins/org.eclipse.pde.doc.user_3.6.2.v20101118_r362.jar,plugins/com.ibm.xtools.updm.ui.system_7.3.800.v20100929_0755.jar,plugins/org.eclipse.equinox.p2.directorywatcher_1.0.203.R36x_v20101220.jar,plugins/com.ibm.etools.rup.cshelp_7.0.1.v20090306_1011.jar,plugins/com.ibm.xtools.updm.type_7.4.0.v20110412_0735.jar,plugins/com.ibm.xtools.comparemerge.infopop_7.0.200.v20100715_2051/,plugins/ilog.views.eclipse.graphlayout.gmf_8.7.6.v20101108.jar,plugins/org.eclipse.datatools.sqltools.schemaobjecteditor.ui.pages_1.1.0.200810071.jar,plugins/com.ibm.rsaz.analysis.codereview.java_7.0.300.v20101215_2153.jar,plugins/org.eclipse.emf.transaction.source_1.4.0.v20100331-1738.jar,plugins/com.ibm.xtools.mep.execution.core_1.0.0.v20110515_0735.jar,plugins/com.ibm.ccl.common.splash_1.0.151.v20110510_2201.jar,plugins/com.ibm.ccl.linkability.ide.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.uml2.codegen.ecore_1.6.0.v201005031530.jar,plugins/org.eclipse.gmf.runtime.draw2d.ui_1.4.2.v20101217-0030.jar,plugins/org.eclipse.datatools.enablement.msft.sqlserver.ui_1.0.1.v200908130512.jar,plugins/com.ibm.xtools.viz.cdt.ui.policies_7.0.0.v20100929_0755.jar,plugins/org.eclipse.jdt.apt.core.source_3.3.402.R36_v20110120-1000.jar,plugins/org.eclipse.emf.mapping.xsd2ecore_2.5.0.v20100521-1855.jar,plugins/com.ibm.xtools.transform.cpp.uml2.cshelp_1.1.4.v20110408_2147.jar,plugins/org.eclipse.jdt.core.manipulation.source_1.3.0.v20100520-0800.jar,plugins/com.ibm.rsaz.analysis.core_7.1.200.v20101215_2153.jar,plugins/com.ibm.xtools.umlal.translation.cpp_1.0.100.v20110401_0743.jar,plugins/org.eclipse.datatools.sqltools.db.generic.ui_1.0.0.v200906020900.jar,plugins/org.eclipse.jst.ws.axis.infopop_1.0.300.v200805140230.jar,plugins/com.ibm.xtools.ras.impord.ui.ide.feature.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.umldt.rt.transform.viz.ui_1.50.0.v20110326_0744.jar,plugins/org.eclipse.equinox.p2.ui_2.0.0.v20100518.jar,plugins/org.eclipse.wst.jsdt.debug.ui_1.0.4.v201103310001.jar,plugins/org.eclipse.tptp.test.samples_4.4.0.v201005212338.jar,plugins/org.eclipse.birt.chart.device.pdf.source_2.6.2.r262_v20101230.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.printing_1.4.0.v20100430-1518.jar,plugins/org.eclipse.equinox.p2.core.source_2.0.3.R36x_v20110111.jar,plugins/com.ibm.xtools.transform.authoring.doc.isv_7.2.0.v20110102_0201.jar,plugins/org.eclipse.wst.xml.ui.infopop_1.0.400.v201004292007.jar,plugins/com.ibm.ccl.welcome.bits_7.0.7.vv20101006_0104.jar,plugins/com.ibm.xtools.comparemerge.help.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.m2m.qvt.oml.ecore.imperativeocl_3.0.0.v20091209-1553.jar,plugins/com.ibm.xtools.updm.migration_7.3.810.v20110114_1619.jar,plugins/com.ibm.xtools.ras.profile.defauld.patterns_7.60.0.v20100929_0755.jar,plugins/com.ibm.ccl.feedreader_1.0.5.v20101006_0104.jar,plugins/com.ibm.xtools.upia.pes.ui_7.0.801.v20101019_2201.jar,plugins/com.ibm.xtools.jet.transform.nextsteps_1.0.400.v20100715_2051.jar,plugins/org.eclipse.update.ui_3.2.300.v20100512.jar,plugins/org.eclipse.jface.text.source_3.6.1.r361_v20100825-0800.jar,plugins/org.eclipse.jst.ws.uddiregistry.source_1.0.500.v201004211805.jar,plugins/com.ibm.xtools.patterns.ui.apply.transformprovider_7.60.0.v20100929_0755.jar,plugins/org.eclipse.gmf.runtime.emf.ui.properties.source_1.4.0.v20100304-2359.jar,plugins/org.eclipse.datatools.enablement.sybase.asa.models_1.0.0.v201010140307.jar,plugins/org.eclipse.wst.standard.schemas_1.0.301.v201103302013.jar,plugins/org.eclipse.datatools.enablement.oracle.dbdefinition_1.0.102.v201101120730.jar,plugins/com.ibm.xtools.transform.samples_7.0.500.v20110216_2129/,plugins/com.ibm.xtools.jet.solution_1.0.0.v20100715_2051.jar,plugins/org.eclipse.gef_3.6.2.v20110110-2020.jar,plugins/org.eclipse.birt.chart.ui.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.cdt.make.core_7.0.1.201102110609.jar,plugins/org.eclipse.emf.importer.ecore.source_2.6.0.v20100521-1846.jar,plugins/com.ibm.xtools.transform.java.enumext_7.5.0.v20100929_0755.jar,plugins/com.ibm.xtools.ras.impord_7.0.200.v20100805_2013/,plugins/org.eclipse.tptp.trace.jvmti.client_4.5.3.v201105161135.jar,plugins/com.ibm.xtools.modeling.csguides_7.0.200.v20100929_0755.jar,plugins/org.eclipse.core.filesystem.source_1.3.1.R36x_v20100727-0745.jar,plugins/org.eclipse.birt.core.script.function_2.6.2.r262_v20110209.jar,plugins/org.eclipse.hyades.test.core_4.6.0.v201005212338/,plugins/com.ibm.help.common.rational.getstart.doc_1.0.0.v20110517_1103.jar,plugins/com.ibm.xtools.patterns.ui_7.60.0.v20100929_0755.jar,plugins/org.eclipse.datatools.connectivity.doc.user_1.7.0.20090521092446.jar,plugins/org.eclipse.emf.mapping.ui.source_2.6.0.v20100914-1218.jar,plugins/org.eclipse.emf.ecore.edit.source_2.6.0.v20100914-1218.jar,plugins/org.eclipse.jdt.core.source_3.6.3.v_A77_R36x.jar,plugins/org.eclipse.datatools.enablement.oda.xml_1.2.1.v201010211755.jar,plugins/org.eclipse.emf.databinding.edit_1.2.0.v20100914-1218.jar,plugins/org.eclipse.birt.report.data.oda.xml.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.chart.reportitem.ui.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.jdt.junit.runtime.source_3.4.200.v20100526-0800.jar,plugins/org.eclipse.emf.query_1.2.100.v200903190031.jar,plugins/org.eclipse.emf.mapping.ecore.editor_2.6.0.v20100914-1218.jar,plugins/org.eclipse.update.core_3.2.402.R36x_v20100629.jar,plugins/org.eclipse.birt.report.designer.ui.views.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.datatools.enablement.finfo_1.5.1.v200906161800.jar,plugins/com.ibm.xtools.emf.reminders.core_7.60.0.v20100715_2051.jar,plugins/org.eclipse.cdt.dsf.gdb.ui_2.1.0.201102110609.jar,plugins/org.eclipse.gmf.graphdef.source_2.0.100.v20090420-1925.jar,plugins/org.eclipse.gef.source_3.6.2.v20110110-2020.jar,plugins/com.ibm.xtools.transform.java.uml.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.m2m.qvt.oml.project_2.1.0.v20100524-1530.jar,plugins/com.ibm.xtools.pluglets.core_7.0.100.v20100715_2051.jar,plugins/org.eclipse.gmf.codegen.edit.source_2.2.100.v20100309-2359.jar,plugins/com.ibm.xtools.transforms.java.profile.feature.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.xtools.umldt.rt.j2se.umlal.debug.core_1.0.0.v20110420_0731.jar,plugins/com.ibm.xtools.uml.rt.ui_1.50.0.v20110525_0749.jar,plugins/com.ibm.xtools.jet.ui.resource_7.0.400.v20100715_2051.jar,plugins/com.ibm.xtools.jet.solution.gen_1.0.0.v20100715_2051.jar,plugins/org.eclipse.gmf.map.edit_2.2.100.v20100309-2359.jar,plugins/org.eclipse.birt.report.engine.emitter.ppt.config.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.data.aggregation.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.jdt.debug.ui_3.5.2.v20100928a_r362.jar,plugins/org.eclipse.datatools.enablement.jdt.classpath_1.0.1.v201004070709.jar,plugins/org.eclipse.wst.common.uriresolver.source_1.1.401.v201004280700.jar,plugins/org.eclipse.gmf.runtime.notation_1.4.1.v20100717-0059.jar,plugins/org.eclipse.gmf.runtime.emf.type.core_1.4.0.v20100423-2359.jar,plugins/org.eclipse.gmf.runtime.emf.core.source_1.4.1.v20100909-1300.jar,plugins/org.eclipse.cdt.debug.ui_7.0.0.201102110609.jar,plugins/org.eclipse.wst.jsdt.web.ui.source_1.0.304.v201012160349.jar,plugins/com.ibm.xtools.mep.communication.ui_1.0.0.v20110323_1619.jar,plugins/org.eclipse.emf.ecore.change_2.5.1.v20100907-1643.jar,plugins/org.eclipse.jst.ejb.ui.source_1.1.502.v201101121843.jar,plugins/org.eclipse.equinox.p2.director.app_1.0.201.R36x_v20100823.jar,plugins/com.ibm.xtools.jet.ui_7.1.510.v20110512_1353.jar,plugins/org.eclipse.birt.report.data.oda.sampledb.ui_2.6.2.r262_v20110127.jar,plugins/org.eclipse.datatools.connectivity.oda.design_3.3.2.v201012150951.jar,plugins/org.eclipse.ui.cheatsheets.source_3.4.0.v20100427.jar,plugins/org.eclipse.wst.validation.ui_1.2.204.v201004150700.jar,plugins/com.ibm.ccl.oda.emf_1.60.200.v20101122_2134.jar,plugins/com.ibm.xtools.sample.model.publishing_7.1.200.v20100201_0328.jar,plugins/com.ibm.xtools.uml.transform.core_7.0.400.v20100715_2051.jar,plugins/com.ibm.support.feedback.errorreports.ui_1.0.3.v20110502_0026.jar,plugins/com.ibm.xtools.patterns.ui.authoring_7.60.0.v20110502_2018.jar,plugins/org.eclipse.birt.report.engine.emitter.excel.config_2.6.2.r262_v20110127.jar,plugins/org.eclipse.gmf.xpand.migration.source_1.0.100.v20100309-2359.jar,plugins/org.eclipse.update.scheduler.source_3.2.300.v20100512.jar,plugins/org.eclipse.datatools.help_1.5.0.v200906020553.jar,plugins/org.eclipse.wst.validation.source_1.2.202.v201103212041.jar,plugins/org.eclipse.jdt.launching_3.5.200.v20110105_r362.jar,plugins/com.ibm.xtools.cdt.providers.transfer_7.5.0.v20100929_0755.jar,plugins/com.ibm.xtools.ras.documentation.ui_7.0.1.v20100805_2013.jar,plugins/com.ibm.xtools.cpp.model_7.1.0.v20100929_0755.jar,plugins/com.ibm.xtools.tdi.reqpro.uml.ide.uid_1.0.2.v20101020_0109.jar,plugins/com.ibm.xtools.reqpro.ui.editor_7.1.2.v20100715_2051.jar,plugins/com.ibm.xtools.transform.core.debug_7.0.400.v20100715_2051.jar,plugins/org.eclipse.jst.j2ee.ejb.annotations.xdoclet.source_1.2.100.v201003112036.jar,plugins/com.ibm.xtools.updm.ui.performance_7.0.801.v20100929_0755.jar,plugins/org.eclipse.jst.ws.axis.consumption.core.source_1.0.406.v201004211805.jar,plugins/com.ibm.xtools.umldt.ui_1.50.0.v20110405_2005.jar,plugins/org.eclipse.gmf.bridge_1.1.100.v20100309-2359.jar,plugins/com.ibm.process.feature.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.ccl.linkability.provider.j2ee.ide.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.cdt.launch.source_6.1.0.201102110609.jar,plugins/com.ibm.rcp.rte.nl_6.2.1.20090925-1604.jar,plugins/org.eclipse.datatools.enablement.sybase.asa.ui_1.0.1.v200906111150.jar,plugins/com.ibm.xtools.modeler.ui.properties_7.60.300.v20110516_2128.jar,plugins/org.eclipse.core.net.source_1.2.100.I20100511-0800.jar,plugins/org.eclipse.wst.server.ui.infopop_1.1.100.v201005192130.jar,plugins/com.ibm.xtools.modviz.common.feature.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.viz.cdt.ui_7.5.0.v20110412_0735.jar,plugins/com.ibm.xtools.codeview.uml.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.wst.jsdt.debug.rhino.debugger_1.0.1.v201008170101.jar,plugins/com.ibm.xtools.umldt.rt.umlal.core_1.0.0.v20110518_0733.jar,plugins/com.ibm.xtools.modeler.ui.wizards_7.60.0.v20110510_2201.jar,plugins/org.eclipse.wst.jsdt.core.source_1.1.5.v201104272136.jar,plugins/com.ibm.process.common_7.0.0.v20100715_2051.jar,plugins/org.eclipse.debug.core.source_3.6.0.v20100519.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.deployment_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.umldt.ui.diagrams_1.50.0.v20110405_2005.jar,plugins/org.eclipse.wst.common.api.doc_1.0.1.v200807181737.jar,plugins/org.eclipse.wst.jsdt.debug.core.source_1.0.4.v201103310001.jar,plugins/org.eclipse.ui.presentations.r21.source_3.2.200.I20100517-1500.jar,plugins/com.ibm.xtools.uml.rt.ui.diagrams_1.50.0.v20110518_0733.jar,plugins/com.ibm.cic.licensing.itlm.feature.uid_1.0.2.v20100813_2252.jar,plugins/com.ibm.xtools.me2.core_1.1.0.v20110405_2005.jar,plugins/org.eclipse.gmf.runtime.common.ui.source_1.4.0.v20100518-2230.jar,plugins/org.eclipse.m2m.qvt.oml.ocl_2.1.0.v20100524-1530.jar,plugins/org.eclipse.m2m.qvt.oml.trace.edit_3.0.0.v20091209-1553.jar,plugins/org.eclipse.jst.j2ee.webservice.ui_1.1.400.v201004110600.jar,plugins/org.eclipse.wst.doc.user_1.2.0.v200806052254.jar,plugins/org.eclipse.ant.ui_3.5.0.v20100427.jar,plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl_1.0.0.v20100906-1425.jar,plugins/org.eclipse.equinox.p2.ui.admin.source_1.0.0.v20100503.jar,plugins/org.eclipse.tptp.trace_4.4.0.v201005061600.jar,plugins/org.eclipse.birt.report.engine.dataextraction.csv.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.report.data.bidi.utils.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.umldt.rt.to.core_1.0.0.v20110315_1940.jar,plugins/com.ibm.xtools.petal.profile_7.0.0.v20100929_0755.jar,plugins/javax.servlet_2.5.0.v200910301333.jar,plugins/org.eclipse.equinox.p2.garbagecollector.source_1.0.100.v20100503.jar,plugins/org.eclipse.uml2.uml.resources.source_3.1.1.v201008191505.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.providers.ide_1.2.0.v20090403-1720.jar,plugins/org.eclipse.uml2.uml.ecore.exporter.source_2.4.0.v201005031530.jar,plugins/ilog.views.eclipse.crossing_8.7.6.v20101108.jar,plugins/com.ibm.xtools.modeler.ui.marking_7.60.300.v20110518_0102.jar,plugins/org.eclipse.core.filebuffers_3.5.100.v20100520-0800.jar,plugins/org.eclipse.search_3.6.0.v20100520-0800.jar,plugins/org.eclipse.datatools.enablement.ibm.informix_1.0.1.v201005211230.jar,plugins/com.ibm.xtools.modeler.rt.ui.diagrams.structure_1.50.0.v20110515_0735.jar,plugins/org.eclipse.wst.dtd.ui_1.0.500.v201004290328.jar,plugins/org.eclipse.datatools.enablement.msft.sqlserver.dbdefinition_1.0.0.v201004211630.jar,plugins/com.ibm.xtools.patterns.notation_7.60.0.v20100929_0755.jar,plugins/org.eclipse.datatools.enablement.sybase.ase.models_1.0.1.v201010140307.jar,plugins/org.eclipse.equinox.supplement_1.3.1.R36x_v20101021.jar,plugins/org.eclipse.emf.codegen.source_2.6.0.v20100914-1218.jar,plugins/org.eclipse.birt.report.designer.core.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.patterns.cshelp_7.0.1.v20090306_1924.jar,plugins/org.eclipse.gmf.bridge.ui.dashboard_2.0.100.v20100226-2359.jar,plugins/com.ibm.ccl.erf.core.feature.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.transform.uml2.cpp_7.5.10.v20110315_1940.jar,plugins/org.eclipse.datatools.enablement.sybase.ase.dbdefinition_1.0.0.v200906161800.jar,plugins/com.ibm.xtools.sample.create.report.doc_1.0.0.v20100201_0328.jar,plugins/org.eclipse.wst.jsdt.ui.source_1.1.5.v201104070556.jar,plugins/org.eclipse.birt.report.viewer_2.6.2.r262_v20110214/,plugins/org.eclipse.equinox.p2.operations.source_2.0.0.v20100510.jar,plugins/org.eclipse.core.databinding.observable.source_1.3.0.I20100601-0800.jar,plugins/org.eclipse.emf.edit.source_2.6.0.v20100914-1218.jar,plugins/com.ibm.ccl.da.dw_7.0.0.v20100715_2051/,plugins/org.eclipse.birt.report.designer.core_2.6.2.r262_v20110127.jar,plugins/com.ibm.cic.licensing.itlm_7.0.1.v20110105_1929/,plugins/com.ibm.xtools.reqpro.dataaccess.model_7.0.300.v20100715_2051.jar,plugins/org.eclipse.ecf.ssl.source_1.0.100.v20100906-1425.jar,plugins/org.eclipse.gmf.doc_1.3.0.v20090729-2031.jar,plugins/com.ibm.ccl.erf.tools_1.60.200.v20110205_0201.jar,plugins/org.eclipse.pde.launching.source_3.6.0.v20100601.jar,plugins/org.eclipse.equinox.p2.ui.sdk.scheduler_1.0.0.v20100507-1815.jar,plugins/org.eclipse.text_3.5.0.v20100601-1300.jar,plugins/com.ibm.xtools.modeler.ui.jazz_7.60.0.v20100715_2051.jar,plugins/org.eclipse.datatools.connectivity.ui.dse_1.1.4.v201004270430.jar,plugins/org.eclipse.wst.html.core.source_1.1.405.v201104191549.jar,plugins/org.eclipse.jdt.debug.source_3.6.2.v20110406_r362.jar,plugins/org.eclipse.pde.api.tools.ui.source_1.0.201.v20100820_r361.jar,plugins/org.eclipse.birt.report.designer.ui.editor.script_2.6.2.r262_v20110127.jar,plugins/org.eclipse.text.source_3.5.0.v20100601-1300.jar,plugins/org.eclipse.datatools.enablement.mysql_1.0.2.v201002041100.jar,plugins/com.ibm.xtools.umldt.rt.j2se.ui_1.50.0.v20110326_0744.jar,plugins/com.ibm.rsaz.eclipse.ui.compatibility_7.0.100.v20090930_2207.jar,plugins/org.eclipse.gmf.runtime.common.ui.action.source_1.2.0.v20090403-1720.jar,plugins/com.ibm.xtools.rjcb.core_7.0.1.v20100715_2051/,plugins/org.eclipse.jst.j2ee.ejb.source_1.1.402.v201102071010.jar,plugins/org.eclipse.tptp.test.recorders.url_4.7.0.v201005212338/,plugins/com.ibm.xtools.richtext.gef_7.60.300.v20110516_2128.jar,plugins/org.eclipse.datatools.sqltools.routineeditor_1.0.0.v201003161000.jar,plugins/com.ibm.xtools.topic.edit_7.60.0.v20100715_2051.jar,plugins/org.eclipse.ui.win32_3.2.200.I20100509-0800.jar,plugins/org.eclipse.datatools.enablement.ibm.ui_1.0.0.v200906020900.jar,plugins/com.ibm.xtools.rsarte.legal.doc_7.1.8.v20110412_2230.jar,plugins/com.ibm.xtools.ras.repository.core.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.team.core_3.5.101.R36x_v20110203-1036.jar,plugins/org.eclipse.tptp.test.tools.junit.plugin.doc.user_4.7.0.v201005212338.jar,plugins/org.w3c.dom.events_3.0.0.draft20060413_v200905140418.jar,plugins/org.eclipse.datatools.sqltools.result.ui_1.1.1.v201101140400.jar,plugins/com.ibm.xtools.patterns.ui.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.uml2.common.edit_1.5.0.v201005031530.jar,plugins/org.eclipse.jst.server.generic.ui.source_1.0.505.v20100428.jar,plugins/com.ibm.xtools.patterns.core.framework_7.60.100.v20100929_0755.jar,plugins/org.eclipse.gmf.codegen.edit_2.2.100.v20100309-2359.jar,plugins/org.eclipse.help.webapp_3.5.3.r36_20101130.jar,plugins/org.eclipse.ecf.provider.filetransfer.httpclient_4.0.0.v20100906-1425.jar,plugins/com.rational.clearcase.help_7.6.0.v201105111445.jar,plugins/com.ibm.ccl.preferenceharvester.feature.uid_1.0.2.v20110217_1732.jar,plugins/org.eclipse.gmf.runtime.draw2d.ui.source_1.4.2.v20101217-0030.jar,plugins/org.eclipse.jdt.apt.ui.source_3.3.300.v20100513-0845.jar,plugins/com.ibm.xtools.publish.ui.birt.feature.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.viz.core.bootstrap_7.0.0.v20110510_2201.jar,plugins/org.eclipse.equinox.http.servlet_1.1.0.v20100503.jar,plugins/org.eclipse.jst.common.frameworks_1.1.404.v201103311600.jar,plugins/org.eclipse.emf.codegen.ecore.ui.source_2.6.0.v20100914-1218.jar,plugins/org.eclipse.pde.ua.ui_1.0.100.v20100504.jar,plugins/org.eclipse.equinox.ds.source_1.2.1.R36x_v20100803.jar,plugins/com.ibm.xtools.umldt.rt.debug.core_1.0.0.v20110425_2320.jar,plugins/org.eclipse.datatools.connectivity.oda.design.ui_3.2.4.v201012150951.jar,plugins/org.eclipse.gmf.runtime.common.ui.services.dnd.ide.source_1.2.0.v20090403-1720.jar,plugins/com.ibm.xtools.umlal.profiles_1.0.100.v20110401_0743.jar,plugins/org.eclipse.ant.launching.source_1.0.1.v20110404_r362.jar,plugins/org.eclipse.equinox.p2.repository.tools.source_2.0.1.R36x_v20100823.jar,plugins/org.eclipse.ui.console.source_3.5.0.v20100526.jar,plugins/org.eclipse.hyades.trace.views_4.1.703.v201105161135.jar,plugins/com.ibm.help.common.resources.doc_7.6.0.v20110531_2151.jar,plugins/org.eclipse.swt.win32.win32.x86.source_3.6.3.v3659d.jar,plugins/org.eclipse.datatools.connectivity.oda.flatfile_3.1.1.v201101261130.jar,plugins/org.eclipse.wst.xml.ui.source_1.1.104.v201103021532.jar,plugins/ilog.views.eclipse.jlm_8.7.6.v20101108/,plugins/org.eclipse.ui.browser_3.3.1.r36_20101216.jar,plugins/com.ibm.xtools.transform.core.authoring.ide_7.0.400.v20100715_2051.jar,plugins/org.eclipse.birt.report.engine.emitter.postscript.config.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.m2m.qvt.oml.runtime_2.1.0.v20100606-1530.jar,plugins/com.ibm.xtools.umlal.translation.java_1.0.100.v20110117_1549.jar,plugins/org.eclipse.ui.net.source_1.2.100.I20100505-1245.jar,plugins/org.eclipse.equinox.p2.directorywatcher.source_1.0.203.R36x_v20101220.jar,plugins/org.eclipse.equinox.ds_1.2.1.R36x_v20100803.jar,plugins/com.ibm.xtools.uml.ui.diagram_7.60.300.v20110510_2201.jar,plugins/com.ibm.xtools.ras.profile.io.bundled_7.0.100.v20100805_2013.jar,plugins/org.apache.axis_1.4.0.v201005080400/,plugins/com.ibm.xtools.transform.core.uid_1.0.2.v20101020_0109.jar,plugins/org.eclipse.jet.ui_1.0.0.v200906120900.jar,plugins/org.eclipse.ui.views.log.source_1.0.100.v20110210_r362.jar,plugins/com.ibm.xtools.rjcb.core.feature.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.datatools.enablement.sap.maxdb_1.0.0.v200906020900.jar,plugins/com.ibm.xtools.ras.repository.client.xde.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.jst.j2ee.jca.ui.source_1.1.400.v201004150700.jar,plugins/org.eclipse.jst.ws.axis.consumption.ui_1.0.505.v201004211805.jar,plugins/com.ibm.xtools.emf.query.ui_7.60.300.v20110510_2201.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.printing.render_1.4.0.v20100423-2359.jar,plugins/org.eclipse.jdt.junit.runtime_3.4.200.v20100526-0800.jar,plugins/com.ibm.xtools.traceability.cshelp_7.0.0.v20060924.jar,plugins/org.eclipse.jst.j2ee.infopop_1.0.300.v200805140415.jar,plugins/org.eclipse.pde.junit.runtime.source_3.4.100.v20100601.jar,plugins/org.eclipse.birt.report.designer.ui.samplesview_2.6.2.r262_v20110127.jar,plugins/org.eclipse.ecf.filetransfer.source_4.0.0.v20100906-1425.jar,plugins/org.eclipse.birt.report.designer.ui.preview.web_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.report.engine.source_2.6.2.r262_v20110214.jar,plugins/com.ibm.xtools.analysis.uml_feature.uid_1.0.2.v20110125_0206.jar,plugins/org.eclipse.equinox.p2.updatesite_1.0.201.R36x_v20100823.jar,plugins/org.eclipse.core.variables_3.2.400.v20100505.jar,plugins/com.ibm.xtools.transform.cpp.sourcemodelassoc_8.0.0.v20100929_0755.jar,plugins/com.ibm.xtools.comparemerge.emf.uid_1.0.2.v20101016_0104.jar,plugins/ilog.views.eclipse.graphlayout.gmf.properties_8.7.6.v20101108.jar,plugins/com.ibm.xtools.ras.repository.client.xde.ui_7.0.0.v20100805_2013.jar,plugins/org.eclipse.tptp.platform.profile.server.doc.user_4.4.1.v201009092123.jar,plugins/com.ibm.xtools.patterns.core.jetprovider_7.60.0.v20100929_0755.jar,plugins/org.eclipse.wst.xsd.core_1.1.503.v201011121919.jar,plugins/org.eclipse.jet.uml2_1.0.1.v200909041702.jar,plugins/org.eclipse.wst.validation_1.2.202.v201103212041.jar,plugins/com.ibm.xtools.transform.xsd.uml_1.0.110.v20110112_2333.jar,plugins/com.ibm.rsaz.analysis.commandline.core_7.0.0.v20091003_0917.jar,plugins/com.ibm.ccl.linkability.provider.ui_7.1.0.v20100715_2051.jar,plugins/org.eclipse.emf.databinding_1.2.0.v20100914-1218.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.statechart_7.60.200.v20110217_2306.jar,plugins/org.eclipse.equinox.p2.touchpoint.natives.source_1.0.201.R36x_v20110111.jar,plugins/org.eclipse.ocl.ecore_3.0.2.R30x_v201101110610.jar,plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb.ui_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.transform.java.jet2.feature.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.xtools.uml.compatibility_7.60.200.v20110224_1533.jar,plugins/org.eclipse.pde.ui.templates_3.4.200.v20100601.jar,plugins/com.ibm.xtools.analysis.modelanalysis.cshelp_1.0.0.v20100201_0328.jar,plugins/com.ibm.xtools.petal.cshelp_7.0.1.v20090306_1924.jar,plugins/org.eclipse.gmf.tooldef.edit_2.0.100.v20090114-0940.jar,plugins/org.eclipse.equinox.p2.reconciler.dropins_1.1.2.R36x_v20110114.jar,plugins/org.eclipse.datatools.enablement.sqlite.ui_1.0.0.v200906020900.jar,plugins/org.eclipse.wst.command.env.ui_1.1.3.v201004211805.jar,plugins/org.eclipse.tptp.platform.jvmti.client_4.5.3.v201105161135.jar,plugins/org.eclipse.cdt.make.core.source_7.0.1.201102110609.jar,plugins/com.ibm.xtools.umldt.rt.j2se.umlal.core.resources_1.0.0.v20101203_1715.jar,plugins/com.ibm.xtools.rmp.ui.diagram_1.20.310.v20110525_2117.jar,plugins/org.w3c.dom.smil.source_1.0.1.v200903091627.jar,plugins/org.eclipse.jst.ejb.ui_1.1.502.v201101121843.jar,plugins/org.eclipse.gmf.tooling_2.1.0.v20090615-0700.jar,plugins/org.eclipse.ui.ide.application.source_1.0.201.M20100707-0800.jar,plugins/org.eclipse.jdt.core_3.6.3.v_A77_R36x.jar,plugins/com.ibm.xtools.ras.profile.management_7.0.0.v20100805_2013.jar,plugins/org.eclipse.datatools.sqltools.tabledataeditor_1.0.1.v201005250945.jar,plugins/org.eclipse.hyades.ui_4.3.0.v201005181900.jar,plugins/org.eclipse.equinox.p2.installer.source_1.0.200.v20100503a.jar,plugins/com.ibm.xtools.ras.repository.client.xde_7.0.100.v20100805_2013.jar,plugins/org.apache.xml.resolver_1.2.0.v201005080400.jar,plugins/org.eclipse.equinox.simpleconfigurator.source_1.0.200.v20100503.jar,plugins/com.ibm.xtools.umldt.rt.petal.ui_1.50.0.v20110521_0931.jar,plugins/com.ibm.xtools.richtext.control_7.70.300.v20110510_2201.jar,plugins/com.ibm.xtools.rmp.animation_1.0.200.v20110118_0201.jar,plugins/org.eclipse.birt.chart.ui_2.6.2.r262_v20110127.jar,plugins/org.eclipse.datatools.sqltools.data.ui_1.2.0.v201005250945.jar,plugins/com.ibm.xtools.comparemerge.clearcaseversioncheck.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.datatools.enablement.mysql.dbdefinition_1.0.4.v200906161800.jar,plugins/org.eclipse.tptp.platform.ac.win_ia32_4.4.303.v201105161135/,plugins/org.eclipse.tptp.platform.jvmti.runtime_4.6.4.v201105161135/,plugins/com.ibm.xtools.common.ui.wizards_7.70.300.v20110510_2201.jar,plugins/org.eclipse.gmf.runtime.common.ui.action_1.2.0.v20090403-1720.jar,plugins/org.eclipse.equinox.security_1.0.200.v20100503.jar,plugins/com.ibm.xtools.ras.impord.core.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.platform.doc.isv_3.6.2.r362_v20110111.jar,plugins/org.eclipse.xsd.ecore.exporter_2.5.0.v20100521-1855.jar,plugins/com.ibm.xtools.umldt.transform.viz.core_1.50.0.v20110405_2005.jar,plugins/org.eclipse.core.commands_3.6.0.I20100512-1500.jar,plugins/com.ibm.xtools.umldt.rt.petal.ui.wizards_1.50.0.v20110407_2222.jar,plugins/org.eclipse.birt.report.data.oda.jdbc.ui_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.ras.profile.defauld.edit_7.0.2.v20100805_2013.jar,plugins/com.ibm.ccl.soa.infra.ui.utils.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.xtools.uml.rt.ui.properties_1.50.0.v20110525_0749.jar,plugins/org.eclipse.cdt.managedbuilder.gnu.ui.source_7.0.0.201102110609.jar,plugins/org.eclipse.core.runtime.compatibility.registry.source_3.3.0.v20100520.jar,plugins/org.eclipse.ui.workbench_3.6.2.M20110210-1200.jar,plugins/com.ibm.rsaz.analysis.architecture.core_7.0.0.v20101215_2153.jar,plugins/org.eclipse.birt.core.source_2.6.2.r262_v20110209.jar,plugins/org.eclipse.datatools.enablement.msft.sqlserver_1.0.1.v201001180222.jar,plugins/com.ibm.xtools.transform.cpp.uml2_7.0.500.v20110525_1447.jar,plugins/org.eclipse.pde.api.tools_1.0.202.v20100820_r361.jar,plugins/org.eclipse.core.runtime.source_3.6.0.v20100505.jar,plugins/com.ibm.xtools.umldt.rt.transform.j2se.viz.core_1.50.0.v20110326_0744.jar,plugins/com.ibm.xtools.umlviz.core_7.0.500.v20100715_2051.jar,plugins/org.eclipse.pde.ua.core_1.0.100.v20100504.jar,plugins/org.eclipse.emf.codegen.ecore.ui_2.6.0.v20100914-1218.jar,plugins/org.eclipse.emf.validation.ocl.source_1.4.0.v20100224-1657.jar,plugins/org.eclipse.emf.exporter.source_2.6.0.v20100521-1846.jar,plugins/com.ibm.xtools.ras.profile.defauld.webservice_7.0.1.v20100805_2013.jar,plugins/com.ibm.xtools.pluglets.cshelp_7.0.1.v20090306_1924.jar,plugins/org.eclipse.core.resources.win32.x86_3.5.100.v20100505-1345.jar,plugins/com.ibm.xtools.transform.authoring.uml2_7.2.0.v20100715_2051.jar,plugins/org.eclipse.wst.jsdt.ui_1.1.6.v201105162026.jar,plugins/org.eclipse.tptp.platform.core_4.7.0.v201005061600.jar,plugins/org.eclipse.gmf.runtime.emf.commands.core.source_1.4.0.v20100423-2359.jar,plugins/org.eclipse.hyades.test.tools.ui_4.7.1.v201101211050.jar,plugins/org.eclipse.equinox.frameworkadmin.equinox_1.0.200.v20100505.jar,plugins/com.ibm.xtools.upia.ui.bpmn_7.4.0.v20110507_0844.jar,plugins/com.ibm.xtools.uml.transform.rename.java_7.0.412.v20101104_0014.jar,plugins/com.ibm.xtools.umldt.rt.transform.j2se.ui_1.50.0.v20110326_0744.jar,plugins/org.eclipse.equinox.security.source_1.0.200.v20100503.jar,plugins/org.eclipse.wst.common.frameworks.ui_1.2.0.v201004080500.jar,plugins/org.eclipse.cdt.launch_6.1.0.201102110609.jar,plugins/com.ibm.xtools.ras.repository.datastore.plugin_7.0.0.v20100805_2013.jar,plugins/org.eclipse.pde.ds.core.source_1.0.100.v20100601.jar,plugins/org.apache.commons.httpclient_3.1.0.v201005080502.jar,plugins/com.ibm.xtools.pluglets.ui_7.0.100.v20100715_2051.jar,plugins/org.eclipse.servertools.doc.isv_1.0.100.v20090414.jar,plugins/org.eclipse.birt.report.engine.emitter.wpml_2.6.2.r262_v20110127.jar,plugins/org.eclipse.jst.j2ee.jca.ui_1.1.400.v201004150700.jar,plugins/org.eclipse.datatools.sqltools.data.core_1.2.0.v201005241300.jar,plugins/com.ibm.xtools.patterns.ui.apply.jetprovider_7.60.0.v20100929_0755.jar,plugins/org.eclipse.datatools.connectivity.doc.user.contexts_1.7.0.20090521092446.jar,plugins/org.eclipse.wst.command.env_1.0.409.v201004211805.jar,plugins/org.eclipse.birt.report.data.oda.xml.ui.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.umldt.debug.ui_1.50.0.v20110405_2005.jar,plugins/org.eclipse.tptp.platform.profile.server_4.5.0.v201005061600.jar,plugins/com.ibm.xtools.transform.composite_1.0.0.v20100715_2051.jar,plugins/com.ibm.process.config.rsase_7.0.0.v20100929_0755/,plugins/org.eclipse.cdt.gdb.source_7.0.0.201102110609.jar,plugins/org.eclipse.jdt.compiler.apt_1.0.300.v20100513-0845.jar,plugins/org.eclipse.birt.core_2.6.2.r262_v20110209.jar,plugins/org.eclipse.equinox.p2.repository_2.0.2.R36x_v20110111-1500.jar,plugins/com.ibm.xtools.umldt.rt.core.tools_1.50.0.v20110310_1837/,plugins/com.ibm.xtools.modeler.compare_7.60.300.v20110512_0102.jar,plugins/com.ibm.xtools.transform.authoring.mapping.uml2_7.0.400.v20100715_2051.jar,plugins/org.eclipse.datatools.sqltools.parsers.sql.query_1.2.0.v201004291415.jar,plugins/org.eclipse.jst.jsp.ui_1.1.504.v201103231819.jar,plugins/org.eclipse.emf.ecore.editor.source_2.6.0.v20100914-1218.jar,plugins/com.ibm.xtools.reqpro.resource_7.0.100.v20100715_2051.jar,plugins/com.ibm.xtools.transform.ui_7.100.300.v20110510_2201.jar,plugins/org.eclipse.datatools.enablement.sybase.ui_1.0.0.v200906090458.jar,plugins/com.ibm.xtools.petal.core.win32_7.0.0.v20100929_0755.jar,plugins/org.eclipse.jst.j2ee.ejb.annotations.emitter_1.1.200.v200909290826.jar,plugins/org.eclipse.wst.common.environment.source_1.0.400.v200912181832.jar,plugins/org.eclipse.cdt.debug.core.source_7.0.0.201102110609.jar,plugins/org.eclipse.ui.forms.source_3.5.2.r36_v20100702.jar,plugins/com.ibm.xtools.transform.jet.ui.cshelp_7.2.0.v20100618_1742.jar,plugins/com.ibm.xtools.umldt.rt.cpp.core.internal_1.50.0.v20110515_0735.jar,plugins/com.ibm.ccl.linkability.provider.resource_7.0.100.v20100715_2051.jar,plugins/com.ibm.rational.rsart.product.v80_8.0.0.v20110412/,plugins/org.eclipse.ui.source_3.6.2.M20110203-1100.jar,plugins/org.apache.batik.pdf_1.6.0.v200806031500.jar,plugins/org.eclipse.wst.internet.monitor.ui_1.0.406.v20110309.jar,plugins/org.eclipse.equinox.security.ui_1.0.200.v20100503.jar,plugins/org.apache.batik.ext.awt_1.6.0.v200805290154.jar,plugins/com.ibm.xtools.common.ui.reduction_7.60.300.v20110510_2201.jar,plugins/org.eclipse.gmf.runtime.emf.ui.source_1.2.0.v20090403-1720.jar,plugins/org.eclipse.compare.source_3.5.101.R36x_v20100929-0800.jar,plugins/com.ibm.xtools.emf.core_7.70.300.v20110510_2201.jar,plugins/com.ibm.xtools.transform.ui.uid_1.0.2.v20110510_2201.jar,plugins/org.eclipse.wst.common.emfworkbench.integration.source_1.2.3.v201012020600.jar,plugins/org.objectweb.asm_3.2.0.v200909071300.jar,plugins/com.ibm.xtools.modeler.ui.profile_7.60.0.v20101204_0201.jar,plugins/com.ibm.xtools.transform.uml2.java.sm.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.tptp.platform.doc.user_4.3.1.v201009092123.jar,plugins/com.ibm.xtools.viz.j2se.ui_7.6.300.v20110514_0146.jar,plugins/org.eclipse.uml2.uml.editor_3.1.0.v201005031530.jar,plugins/org.eclipse.datatools.sqltools.plan_1.0.0.v200906022302.jar,plugins/org.eclipse.birt.report.engine.script.javascript.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.emf.transaction.ui.source_1.4.0.v20090819-1300.jar,plugins/org.eclipse.ecf.provider.filetransfer.httpclient.source_4.0.0.v20100906-1425.jar,plugins/com.ibm.xtools.reqpro.modelupgrade.feature.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.xtools.umldt.rt.transform.cpp.ui_1.50.0.v20110331_1459.jar,plugins/com.ibm.xtools.umlal.profiles.feature.uid_1.0.2.v20110415_0734.jar,plugins/com.ibm.xtools.ras.repository.client.workgroup.ui.feature.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.mmi.cshelp_7.0.3.v20110408_2147.jar,plugins/com.ibm.xtools.uml.ui.diagrams.interaction_7.60.300.v20110510_2201.jar,plugins/org.eclipse.jem.beaninfo.vm_2.0.300.v201004110600.jar,plugins/org.eclipse.gmf.runtime.common.ui.services.dnd_1.4.0.v20100423-2359.jar,plugins/com.ibm.xtools.umldt.rt.transform.cpp_1.50.0.v20110518_0733.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.properties.source_1.4.2.v20101130-0030.jar,plugins/com.ibm.xtools.mdx.profiles_7.0.300.v20110407_2222/,plugins/org.eclipse.tptp.platform.report.core_4.5.1.v201009092123.jar,plugins/org.eclipse.jst.ws.infopop_1.0.300.v200805140230.jar,plugins/org.eclipse.compare.win32.source_1.0.101.R36x_v20101103-0618.jar,plugins/org.eclipse.gmf.codegen.ui.source_1.1.200.v20100302-2359.jar,plugins/org.eclipse.jst.server.ui_1.1.102.v20110406.jar,plugins/com.ibm.xtools.sample.umlmodels_7.1.4.v20100201_0328.jar,plugins/com.ibm.xtools.viz.umlv1.compare_7.0.1200.v20100715_2051.jar,plugins/org.eclipse.jdt.launching.source_3.5.200.v20110105_r362.jar,plugins/org.eclipse.wst.common.infopop.source_1.0.300.v201004280700.jar,plugins/org.eclipse.equinox.transforms.xslt.source_1.0.200.v20100503.jar,plugins/com.ibm.xtools.publish.viz_7.60.0.v20100715_2051/,plugins/org.eclipse.cdt.ui_5.2.2.201102110609.jar,plugins/org.eclipse.help.ui_3.5.3.r36_20101116.jar,plugins/org.eclipse.emf.mapping.xsd2ecore.editor_2.6.0.v20100521-1855.jar,plugins/com.ibm.xtools.transform.uml2.viz_7.0.400.v20100715_2051.jar,plugins/org.eclipse.jem.beaninfo.vm.common_2.0.300.v201004110600.jar,plugins/org.eclipse.birt.chart.ui.extension_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.emf.reminders.ui_7.60.0.v20100715_2051.jar,plugins/org.w3c.css.sac_1.3.0.v200805290154.jar,plugins/org.eclipse.wst.server.core.source_1.1.207.v20110401_1511.jar,plugins/com.ibm.xtools.emf.index_7.60.200.v20101106_0006.jar,plugins/com.ibm.xtools.modeler.ui.providers_7.60.0.v20100717_0119.jar,plugins/org.eclipse.equinox.p2.director.app.source_1.0.201.R36x_v20100823.jar,plugins/com.ibm.xtools.comparemerge.richtext_7.60.300.v20110514_0146.jar,plugins/com.ibm.xtools.patterns.content.gof_7.6.0.v20101006_0655/,plugins/com.ibm.xtools.updm.ui.capabilities_7.0.801.v20100929_0755.jar,plugins/org.eclipse.emf.validation.ocl_1.4.0.v20100224-1657.jar,plugins/org.eclipse.gmf.xpand.editor.source_2.1.0.v20100428-2359.jar,plugins/com.ibm.xtools.csguides.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.jst.ws.creation.ejb.ui.source_1.0.201.v201004211805.jar,plugins/org.eclipse.gmf.codegen.ui_1.1.200.v20100302-2359.jar,plugins/org.eclipse.help.source_3.5.0.v20100524.jar,plugins/com.ibm.cic.planverifier_1.1.1.v20110510_2201.jar,plugins/org.eclipse.wst.sse.ui_1.2.4.v201103231819.jar,plugins/org.eclipse.equinox.p2.discovery.compatibility_1.0.1.v20110204-1323.jar,plugins/org.eclipse.gmf.ecore.editor_2.2.0.v20100315-2359.jar,plugins/org.eclipse.jem.workbench_2.0.301.v201104271300.jar,plugins/org.apache.derby.core_10.5.1.1_v20100129/,plugins/org.eclipse.jst.jee.ejb.source_1.0.301.v201007070821.jar,plugins/org.eclipse.gmf.runtime.notation.providers.source_1.3.0.v20100115-2350.jar,plugins/com.ibm.xtools.viz.j2se_7.2.0.v20110514_0146.jar,plugins/com.ibm.cic.ide.int.feature.uid_1.0.2.v20100813_2252.jar,plugins/com.ibm.process_7.1.0.v20100715_2051/,plugins/org.apache.commons.logging_1.0.4.v201005080501.jar,plugins/com.ibm.xtools.transform.composite.ui_1.0.0.v20100715_2051.jar,plugins/org.eclipse.sdk_3.6.2.v201102101200/,plugins/org.eclipse.equinox.launcher.source_1.1.1.R36x_v20101122_1400.jar,plugins/javax.xml.rpc_1.1.0.v201005080400/,plugins/com.ibm.xtools.transform.fuse.uid_1.0.2.v20101020_0109.jar,plugins/com.ibm.xtools.ras.profile.defauld.component.edit_7.0.2.v20100805_2013.jar,plugins/org.eclipse.compare_3.5.101.R36x_v20100929-0800.jar,plugins/org.eclipse.cdt.debug.core_7.0.0.201102110609.jar,plugins/org.eclipse.cdt.debug.mi.ui.source_6.1.0.201102110609.jar,plugins/org.eclipse.ui.intro_3.4.0.v20100427.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.actions_1.4.0.v20100223-2359.jar,plugins/com.ibm.xtools.reqpro.uml_7.0.401.v20100715_2051.jar,plugins/org.eclipse.wst.sse.ui.infopop_1.0.300.v201004150328.jar,plugins/org.eclipse.birt.report.data.oda.xml.ui_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.patterns.transfer.provider_7.60.0.v20100929_0755.jar,plugins/org.eclipse.gmf.sdk_1.0.0.v20090615-0700.jar,plugins/org.eclipse.ocl.ecore.source_3.0.2.R30x_v201101110610.jar,plugins/org.eclipse.gmf.runtime.draw2d.ui.render.source_1.4.2.v20101111-1500.jar,plugins/com.ibm.xtools.umldt.rt.cpp.umlal.core_1.0.0.v20110401_0743.jar,plugins/com.ibm.xtools.analysis.uml.metrics_7.1.100.v20110125_0206.jar,plugins/com.ibm.xtools.transform.uml2.viz.cshelp_7.0.1.v20090306_1924.jar,plugins/com.ibm.rsar.analysis.reporting.oda.base.compatability_7.0.100.v20091130_2021.jar,plugins/org.eclipse.wst.command.env.infopop_1.0.100.v200805301544.jar,plugins/com.ibm.xtools.umldt.debug.core_1.50.0.v20110405_2005.jar,plugins/com.ibm.xtools.ras.profile.defauld.webservice.editor_7.0.0.v20100805_2013.jar,plugins/com.ibm.ccl.erf.birt.report.ic_1.60.0.v20100715_2051/,plugins/org.eclipse.ui.workbench.compatibility_3.2.100.I20100511-0800/,plugins/org.eclipse.emf.validation.ui.ide.source_1.3.0.v200901271722.jar,plugins/org.eclipse.jdt.apt.ui_3.3.300.v20100513-0845.jar,plugins/org.eclipse.ecf.identity.source_3.1.0.v20100906-1425.jar,plugins/org.eclipse.equinox.p2.updatechecker.source_1.1.101.R36x_v20100823.jar,plugins/org.apache.batik.transcoder.source_1.6.0.v200805290154.jar,plugins/org.eclipse.equinox.p2.console.source_1.0.200.v20100601.jar,plugins/org.eclipse.epf.common.ui_1.5.0.v20080430-1709.jar,plugins/org.eclipse.birt.resources_2.6.2.r262_v20101014/,plugins/org.eclipse.equinox.p2.ui.admin.rcp.source_1.0.101.R36x_v20100823.jar,plugins/org.eclipse.emf.ecore.change.edit_2.5.0.v20100521-1846.jar,plugins/org.eclipse.gmf.runtime.emf.clipboard.core.source_1.4.2.v20101111-1500.jar,plugins/com.ibm.ccl.erf.ui.services_1.60.0.v20100715_2051/,plugins/org.eclipse.equinox.util_1.0.200.v20100503.jar,plugins/org.eclipse.emf.query.doc_1.2.0.v20091210-1711.jar,plugins/com.ibm.ccl.f1.mapping.ui.cshelp_1.0.0.v20090306_1011.jar,plugins/org.eclipse.jface.source_3.6.2.M20110210-1200.jar,plugins/org.eclipse.gmf.bridge.ui.dashboard.source_2.0.100.v20100226-2359.jar,plugins/org.eclipse.cdt.managedbuilder.core.source_7.0.2.201102110609.jar,plugins/org.eclipse.jst.j2ee.ejb.annotations.ui_1.1.200.v201004290730.jar,plugins/org.eclipse.equinox.p2.jarprocessor.source_1.0.200.v20100503a.jar,plugins/org.eclipse.equinox.p2.ui.sdk.source_1.0.100.v20100513.jar,plugins/org.eclipse.birt.report.engine.emitter.ppt.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.cic.planverifier.feature.uid_1.0.2.v20101101_1901.jar,plugins/com.ibm.xtools.transform.uml2.java.marker_7.0.100.v20100929_0755.jar,plugins/com.ibm.xtools.updm.ui.report_7.3.801.v20101006_0655/,plugins/org.eclipse.wst.internet.monitor.core_1.0.405.v20110309.jar,plugins/org.eclipse.tptp.platform.report.ui_4.2.0.v201005061600.jar,plugins/com.jcraft.jsch.source_0.1.41.v200903070017.jar,plugins/org.eclipse.equinox.p2.updatechecker_1.1.101.R36x_v20100823.jar,plugins/org.eclipse.wst.web.ui_1.1.400.v201004141630.jar,plugins/com.ibm.xtools.mdx.profiles.feature.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.ccl.linkability.provider.j2ee_7.0.200.v20100715_2051.jar,plugins/org.eclipse.gmf.runtime.common.ui.action.ide_1.4.0.v20100223-2359.jar,plugins/com.ibm.xtools.reqpro.dataaccess_7.0.401.v20100715_2051/,plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.report.engine.emitter.prototype.excel.source_2.6.2.r262_v20110215.jar,plugins/com.ibm.ccl.linkability.core_7.0.400.v20100715_2051.jar,plugins/org.eclipse.gmf.runtime.gef.ui_1.4.0.v20100430-1518.jar,plugins/com.ibm.dojo.runtime_1.1.0.v20100715_2051/,plugins/com.ibm.ccl.erf.rsa.report.data_1.60.0.v20100715_2051/,plugins/org.eclipse.tptp.platform.probekit_4.5.0.v201005061600.jar,plugins/com.ibm.ccl.linkability.provider.uml.ide.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.me2.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.datatools.enablement.ibm.db2.iseries.dbdefinition_1.0.3.v200906161800.jar,plugins/com.ibm.xtools.dptk.doc_1.1.1.v20110211_1741.jar,plugins/com.ibm.xtools.umldt.core_1.50.0.v20110503_2037.jar,plugins/com.ibm.rational.clearcase.ccimport_7.1.0.v201001271035/,plugins/com.ibm.xtools.publish.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.datatools.enablement.ibm.db2.zseries_1.0.2.v201005211230.jar,plugins/org.eclipse.jst.j2ee.doc.user_1.1.300.v201007141655.jar,plugins/com.ibm.xtools.viz.j2se.javadoc.cshelp_7.0.4.v20110408_2147.jar,plugins/com.ibm.xtools.tdi.reqpro.resource.ide.uid_1.0.2.v20101020_0109.jar,plugins/org.eclipse.wst.html.ui_1.0.504.v201101122108.jar,plugins/org.eclipse.wst.web.ui.source_1.1.400.v201004141630.jar,plugins/org.eclipse.hyades.logging.core_4.4.0.v201005061600/,plugins/com.ibm.xtools.patterns.framework_7.60.0.v20100929_0755.jar,plugins/org.eclipse.emf.databinding.edit.source_1.2.0.v20100914-1218.jar,plugins/com.ibm.xtools.ras.repository.core_7.0.1.v20100805_2013.jar,plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.2.R36x_v20101222/,plugins/com.ibm.xtools.modeler.ui.search_7.60.200.v20110124_1541.jar,plugins/org.eclipse.uml2.uml.ecore.exporter_2.4.0.v201005031530.jar,plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile.ui.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.umldt.rt.j2se.runtime_1.0.0.v20100929_0755.jar,plugins/com.ibm.xtools.dodaf.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.xtools.ras.profile.defauld.patterns.editor_7.60.0.v20100929_0755.jar,plugins/org.eclipse.jst.ws.axis.consumption.ui.source_1.0.505.v201004211805.jar,plugins/com.ibm.xtools.ras.impord.ui.wizard_7.0.0.v20100805_2013.jar,plugins/com.ibm.xtools.ras.repository.client.workgroup.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.wst.css.core_1.1.403.v201103021532.jar,plugins/com.ibm.xtools.modelerclient.uid_1.0.2.v20110203_0202.jar,plugins/org.eclipse.birt.report.model.adapter.oda_2.6.2.r262_v20110209.jar,plugins/org.eclipse.datatools.connectivity.ui_1.2.1.v201010211415.jar,plugins/com.ibm.cic.install.launcher_1.0.400.v20100222_2233.jar,plugins/com.ibm.cic.licensing.common.util_7.0.302.v20101007_1238.jar,plugins/com.ibm.xtools.reqpro.cshelp_7.0.3.v20090311_1011.jar,plugins/org.eclipse.jst.jee_1.0.303.v201103311600.jar,plugins/com.ibm.xtools.visualization.cdt.feature.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.xtools.updm.ui.strategic_7.3.800.v20100929_0755.jar,plugins/com.ibm.rsaz.analysis.codereview.java.rules_7.0.100.v20100517_1740.jar,plugins/com.ibm.xtools.transform.uml2.java5_7.5.800.v20110420_0731.jar,plugins/com.ibm.ccl.linkability.provider.j2se.ide.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.ccl.linkability.provider.resource.ide.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.xtools.updm.uid_1.0.2.v20110517_0745.jar,plugins/org.eclipse.update.scheduler_3.2.300.v20100512.jar,plugins/org.eclipse.rcp_3.6.0.v201102101200.jar,plugins/org.eclipse.jdt.apt.pluggable.core.source_1.0.301.R36_v20100727-0110.jar,plugins/org.eclipse.wst.xml.core_1.1.504.v201104070043.jar,plugins/com.ibm.xtools.umldt.rt.j2se.debug.core_1.0.0.v20110425_2320.jar,plugins/com.ibm.xtools.umldt.rt.petal.ui.cpp_1.50.0.v20110515_0735.jar,plugins/com.ibm.ccl.linkability.ui_7.0.100.v20100715_2051.jar,plugins/org.eclipse.emf.edit.ui_2.6.0.v20100914-1218.jar,plugins/org.eclipse.datatools.enablement.sqlite_1.0.0.v201002041100.jar,plugins/org.eclipse.datatools.sqltools.debugger.core_1.0.1.v201005250945.jar,plugins/com.ibm.rsaz.analysis.architecture.java_7.0.0.v20091130_2021.jar,plugins/org.eclipse.emf.transaction.doc_1.4.0.v20091215-1213.jar,plugins/org.eclipse.hyades.test.ui_4.3.102.v201104132345.jar,plugins/com.ibm.xtools.cpp2.model_1.50.0.v20100929_0755.jar,plugins/com.ibm.xtools.ras.type.analyzer.ui_7.0.1.v20100805_2013.jar,plugins/org.eclipse.gmf.runtime.emf.ui_1.2.0.v20090403-1720.jar,plugins/com.ibm.xtools.uml.compare_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.umldt.rt.transform.cpp.viz.ui_1.50.0.v20100929_0755.jar,plugins/com.ibm.xtools.ras.common.ui.ide.feature.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.analysis.codereview.java.globalization_7.0.300.v20100909_1452.jar,plugins/org.eclipse.ui.views.log_1.0.100.v20110210_r362.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.providers.source_1.4.0.v20100430-1518.jar,plugins/org.w3c.dom.smil_1.0.1.v200903091627.jar,plugins/org.eclipse.datatools.sqltools.parsers.sql.lexer_1.0.1.v200906030654.jar,plugins/com.ibm.xtools.ras.export.tasks.feature.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.transform.uml2.xsd.profile_1.0.120.v20110315_1940.jar,plugins/org.eclipse.ui.views_3.5.1.M20110202-0800.jar,plugins/com.ibm.xtools.uml.ui.diagrams.component_7.60.200.v20110114_0201.jar,plugins/com.ibm.xtools.codeview_1.0.0.v20110503_2037.jar,plugins/com.ibm.xtools.analysis.uml.review_7.1.100.v20110125_0206.jar,plugins/org.eclipse.tptp.platform.instrumentation.ui_4.4.2.v201101211050.jar,plugins/com.ibm.xtools.emf.msl_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.reqpro.j2se_7.0.100.v20100715_2051.jar,plugins/org.eclipse.gmf.examples.runtime.ui.pde_1.4.1.v20100720-0030.jar,plugins/org.eclipse.wst.common.emf_1.2.3.v201012100400.jar,plugins/org.eclipse.wst.common.core_1.2.0.v200908252030.jar,plugins/org.eclipse.wst.internet.monitor.core.source_1.0.405.v20110309.jar,plugins/org.eclipse.datatools.enablement.sybase.asa.schemaobjecteditor.examples_2.5.0.200810071.jar,plugins/com.ibm.ccl.oda.uml.feature.uid_1.0.2.v20110216_2129.jar,plugins/org.eclipse.wst.server.discovery.source_1.0.102.v20110427.jar,plugins/org.eclipse.birt.chart.examples.core.source_2.6.2.r262_v20110120.jar,plugins/org.eclipse.cdt.managedbuilder.ui.source_7.0.0.201102110609.jar,plugins/com.ibm.xtools.viz.cdt.bootstrap_7.5.0.v20100929_0755.jar,plugins/org.eclipse.ltk.core.refactoring_3.5.101.r362_v20101117-0800.jar,plugins/com.ibm.xtools.transform.uml2.viz.reqpro.uid_1.0.2.v20101020_0109.jar,plugins/com.ibm.xtools.emf.validation.core_7.60.0.v20100715_2051.jar,plugins/org.eclipse.wst.sse.ui.source_1.2.4.v201103231819.jar,plugins/ilog.views.eclipse.graphlayout_8.7.6.v20101108.jar,plugins/org.eclipse.jst.ws.consumption.ui.source_1.1.303.v201103082026.jar,plugins/com.ibm.etools.ftp.ui_1.0.100.v20100715_2051.jar,plugins/com.ibm.xtools.transform.uml2.mapping.ui.cshelp_7.0.3.v20090306_1924.jar,plugins/org.eclipse.jst.jsp.ui.infopop_1.0.200.v201004150328.jar,plugins/org.eclipse.birt.report.designer.ui.ide.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.wst.common.snippets_1.2.2.v201101130441.jar,plugins/org.eclipse.wst.common.modulecore.ui.source_1.0.4.v201101101700.jar,plugins/com.ibm.xtools.ras.repository.ui.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.datatools.sqltools.db.derby.ui_1.0.0.v200906020900.jar,plugins/org.hamcrest.core_1.1.0.v20090501071000.jar,plugins/org.eclipse.core.runtime_3.6.0.v20100505.jar,plugins/org.eclipse.cdt.dsf.gdb.ui.source_2.1.0.201102110609.jar,plugins/org.eclipse.jst.jee.ui.source_1.0.305.v201105110300.jar,plugins/org.sat4j.core_2.2.0.v20100429.jar,plugins/com.ibm.xtools.topic_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.interaction.overview_7.60.300.v20110510_2201.jar,plugins/com.ibm.ccl.oda.uml_1.60.200.v20110115_0201.jar,plugins/org.eclipse.cdt.dsf.ui_2.1.2.201102110609.jar,plugins/org.eclipse.jdt.compiler.tool.source_1.0.100.v_A76_R36x.jar,plugins/org.eclipse.jst.j2ee.core_1.2.5.v201104261700.jar,plugins/org.eclipse.tptp.platform.report_4.4.0.v201005061600.jar,plugins/com.ibm.xtools.transform.uml2.java_7.0.500.v20100929_0755.jar,plugins/com.ibm.xtools.transform.uml2_7.0.400.v20100715_2051.jar,plugins/com.ibm.xtools.uml.core_7.60.300.v20110510_2201.jar,plugins/org.eclipse.gef.doc.isv_3.5.0.v20100519-2050.jar,plugins/org.eclipse.equinox.p2.ui.admin_1.0.0.v20100503.jar,plugins/org.eclipse.m2m.qvt.oml_3.0.1.v20100901-1530.jar,plugins/com.ibm.xtools.umldt.rt.transform.c.cshelp_1.0.0.v20110411_1749.jar,plugins/com.ibm.rsar.analysis.reporting.oda.compatibility_7.0.100.v20090930_2207.jar,plugins/org.eclipse.cdt.dsf.ui.source_2.1.2.201102110609.jar,plugins/com.ibm.xtools.umldt.rt.debug.launch.ui_1.0.0.v20110326_0744.jar,plugins/org.eclipse.datatools.enablement.hsqldb_1.0.0.v200906020900.jar,plugins/org.eclipse.datatools.sqltools.sql.ui_1.0.0.v200906022302.jar,plugins/org.eclipse.emf.ecore.source_2.6.1.v20100914-1218.jar,plugins/org.eclipse.jst.j2ee.ejb.annotations.xdoclet_1.2.100.v201003112036.jar,plugins/com.ibm.xtools.cpp.ui_7.6.0.v20100929_0755.jar,plugins/com.ibm.rsar.analysis.reporting.oda.ui_7.0.100.v20090930_2207.jar,plugins/org.eclipse.gmf.tooling.source_2.1.0.v20090615-0700.jar,plugins/com.ibm.xtools.umldt.rt.cpp.umlal.ui_1.0.0.v20110326_0744.jar,plugins/com.rational.clearcase_7.6.0.v201105111445/,plugins/org.eclipse.jdt_3.6.1.v201102101200.jar,plugins/org.eclipse.jet.core_1.2.1.v201101271243.jar,plugins/org.eclipse.jst.ws.source_1.0.507.v201004211805.jar,plugins/org.eclipse.pde.ds.ui.source_1.0.100.v20100601.jar,plugins/org.eclipse.datatools.connectivity.sqm.server.ui_1.1.100.v201009280455.jar,plugins/com.ibm.xtools.reqpro.uml.traceability_7.0.601.v20101014_2159.jar,plugins/org.eclipse.datatools.modelbase.sql.query.edit_1.0.0.v200906022249.jar,plugins/com.ibm.xtools.modviz.common.base.feature.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.ras.repository.search.ui_7.0.100.v20100805_2013.jar,plugins/org.eclipse.jsch.ui.source_1.1.300.I20100505-1245.jar,plugins/org.eclipse.wst.server.ui.doc.user_1.1.400.v201104111553.jar,plugins/org.eclipse.jdt.debug.ui.source_3.5.2.v20100928a_r362.jar,plugins/com.ibm.xtools.umlclient.uid_1.0.2.v20110520_2214.jar,plugins/org.eclipse.emf.ecore.xmi.source_2.5.0.v20100521-1846.jar,plugins/com.ibm.xtools.ras.appearance.ui_7.0.0.v20100805_2013.jar,plugins/javax.activation_1.1.0.v201005080500.jar,plugins/com.ibm.xtools.tdi.reqpro.j2ee.ide.uid_1.0.2.v20101020_0109.jar,plugins/org.eclipse.wst.validation.ui.source_1.2.204.v201004150700.jar,plugins/com.ibm.xtools.viz.j2se.bootstrap_7.1.100.v20110510_2201.jar,plugins/org.eclipse.gmf.tooldef_2.0.0.v20090114-0940.jar,plugins/org.eclipse.gmf.map.edit.source_2.2.100.v20100309-2359.jar,plugins/org.eclipse.xsd.mapping_2.6.0.v20100914-1218.jar,plugins/org.eclipse.xsd.ecore.converter_2.6.0.v20100914-1218.jar,plugins/org.apache.batik.ext.awt.source_1.6.0.v200805290154.jar,plugins/org.eclipse.gmf.xpand.qvtlibrary_1.1.0.v20100309-2359.jar,plugins/org.eclipse.datatools.connectivity.dbdefinition.genericJDBC_1.0.1.v200906161815.jar,plugins/org.eclipse.emf.validation.ui.ide_1.3.0.v200901271722.jar,plugins/org.eclipse.birt.report.designer.samplereports_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.umlal.core_1.1.100.v20110515_0735.jar,plugins/com.ibm.xtools.sample.pattern.apply_7.2.1.v20100201_0328.jar,plugins/org.eclipse.birt.report.engine.emitter.pdf_2.6.2.r262_v20110127.jar,plugins/org.eclipse.ui.views.properties.tabbed.source_3.5.100.I20100509-0800.jar,plugins/com.ibm.xtools.jet.nextsteps.wizard_1.0.430.v20110513_0101.jar,plugins/org.eclipse.core.databinding.source_1.3.100.I20100601-0800.jar,plugins/com.ibm.xtools.viz.cdt.ui.vizmenu_7.5.0.v20110201_0853.jar,plugins/com.ibm.xtools.rmp.ui.diagram.notation_1.0.300.v20110510_2201.jar,plugins/org.eclipse.gmf.runtime.diagram.ui_1.4.1.v20100909-1300.jar,plugins/org.eclipse.emf.converter_2.5.0.v20100914-1218.jar,plugins/org.eclipse.emf.common.source_2.6.0.v20100914-1218.jar,plugins/org.eclipse.jface.databinding.source_1.4.0.I20100601-0800.jar,plugins/org.eclipse.birt.report.engine.emitter.pdf.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.jst.j2ee.jca_1.1.400.v201005270700.jar,plugins/com.ibm.xtools.uml.profile.tooling.ui_7.60.0.v20101021_0105.jar,plugins/org.mozilla.javascript.source_1.7.2.v201005080400.jar,plugins/org.eclipse.birt.report.engine.emitter.config.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.gmf.runtime.notation.providers_1.3.0.v20100115-2350.jar,plugins/org.eclipse.equinox.p2.touchpoint.eclipse_2.0.3.R36x_v20101202.jar,plugins/org.eclipse.jst.ws.ui_1.0.403.v201004211805.jar,plugins/com.ibm.xtools.umldt.rt.c.core.internal_1.50.0.v20110515_0735.jar,plugins/com.ibm.xtools.mep.communication.core_1.0.0.v20110308_1632.jar,plugins/org.eclipse.core.net_1.2.100.I20100511-0800.jar,plugins/com.ibm.xtools.transform.common.merge_7.0.510.v20110112_2333.jar,plugins/org.eclipse.datatools.modelbase.sql.xml.query_1.0.1.v201004291415.jar,plugins/org.eclipse.birt.report.designer.ui.editors.schematic_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.data_2.6.2.r262_v20110215.jar,plugins/org.eclipse.birt.report.data.bidi.utils.ui.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.umlal.execution.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.cdt.doc.isv_5.1.0.201102110609.jar,plugins/org.eclipse.birt.report.engine.emitter.excel.config.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.report.engine.emitter.wpml.config_2.6.2.r262_v20110127.jar,plugins/org.eclipse.datatools.sqltools.schemaobjecteditor.ui_1.1.1.200810071.jar,plugins/com.ibm.xtools.viz.compare_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.transform.core.authoring.ide.cshelp_7.0.2.v20090306_1924.jar,plugins/org.eclipse.core.databinding.observable_1.3.0.I20100601-0800.jar,plugins/javax.wsdl_1.5.1.v201005080630.jar,plugins/org.eclipse.birt.report.designer.ui_2.6.2.r262_v20110209.jar,plugins/org.eclipse.datatools.enablement.oracle_1.0.0.v200908130544.jar,plugins/ilog.views.eclipse.utilities.runtime_8.7.6.v20101108/,plugins/org.eclipse.datatools.sqltools.routineeditor.ui_1.0.1.v201004060545.jar,plugins/org.eclipse.uml2.uml.editor.source_3.1.0.v201005031530.jar,plugins/org.eclipse.wst.dtd.core.source_1.1.401.v201101122255.jar,plugins/org.eclipse.jst.j2ee.ejb.annotations.emitter.source_1.1.200.v200909290826.jar,plugins/org.eclipse.wst.ws.ui_1.1.200.v201004211805.jar,plugins/org.eclipse.birt.report.item.crosstab.ui.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.patterns.core.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.birt.report.engine.dataextraction_2.6.2.r262_v20110127.jar,plugins/org.eclipse.datatools.enablement.postgresql_1.0.1.v200906020900.jar,plugins/org.eclipse.emf.codegen.ecore.source_2.6.1.v20100914-1218.jar,plugins/org.eclipse.ecf.identity_3.1.0.v20100906-1425.jar,plugins/org.eclipse.equinox.app.source_1.3.1.R36x_v20100803.jar,plugins/org.eclipse.core.filesystem_1.3.1.R36x_v20100727-0745.jar,plugins/org.eclipse.core.runtime.compatibility.registry_3.3.0.v20100520/,plugins/com.ibm.xtools.transform.uml2.mapping.uid_1.0.2.v20101020_0109.jar,plugins/com.ibm.xtools.umlal.feature.uid_1.0.2.v20110513_0725.jar,plugins/com.ibm.xtools.umldt.rt.umlal.ui_1.0.0.v20110425_1603.jar,plugins/com.ibm.xtools.ras.type.analyzer_7.0.100.v20100805_2013/,plugins/org.eclipse.equinox.p2.ui.sdk.scheduler.source_1.0.0.v20100507-1815.jar,plugins/com.ibm.xtools.transform.java.varargextension_7.5.5.v20100929_0755.jar,plugins/org.eclipse.jdt.doc.isv_3.6.2.r362_v20101117-0800.jar,plugins/com.ibm.rcp.rte_6.2.1.20090925-1604.jar,plugins/com.ibm.xtools.sample.create.report_1.0.0.v20100201_0328.jar,plugins/org.eclipse.ant.launching_1.0.1.v20110404_r362.jar,plugins/org.eclipse.core.databinding_1.3.100.I20100601-0800.jar,plugins/org.eclipse.ecf.provider.filetransfer.ssl.source_1.0.0.v20100906-1425.jar,plugins/org.eclipse.swt.win32.win32.x86_3.6.3.v3659d.jar,plugins/com.ibm.xtools.umldt.rt.j2se.feature.uid_1.0.2.v20110330_0744.jar,plugins/org.eclipse.birt.report.designer.ui.editors.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.equinox.p2.updatesite.source_1.0.201.R36x_v20100823.jar,plugins/com.ibm.ccl.mapping_1.0.400.v20100715_2051.jar,plugins/org.eclipse.jdt.junit.core_3.6.1.r361_v20100825-0800.jar,plugins/com.ibm.rcp.textanalyzer.nl_6.2.1.200909031836.jar,plugins/org.eclipse.pde.ds.core_1.0.100.v20100601.jar,plugins/com.ibm.xtools.modeler.ui.templates_7.60.0.v20100715_2051.jar,plugins/org.eclipse.tptp.platform.collection.framework_4.3.0.v201005061600/,plugins/org.objectweb.asm.source_3.2.0.v200909071300.jar,plugins/com.ibm.xtools.model.execution.cshelp_1.0.0.v20110408_2147.jar,plugins/org.eclipse.datatools.connectivity.apache.derby.ui_1.0.3.v201007080903.jar,plugins/com.ibm.xtools.transform.core_7.200.20.v20110525_0547.jar,plugins/org.eclipse.gmf.graphdef.codegen.ui_1.0.100.v20090114-0940.jar,plugins/org.eclipse.jst.server.ui.source_1.1.102.v20110406.jar,plugins/org.eclipse.birt.report.designer.ui.views_2.6.2.r262_v20110127.jar,plugins/org.eclipse.update.configurator.source_3.3.100.v20100512.jar,plugins/org.eclipse.pde.ua.ui.source_1.0.100.v20100504.jar,plugins/org.eclipse.datatools.enablement.postgresql.ui_1.0.0.v200906020900.jar,plugins/org.eclipse.wst.css.ui.source_1.0.502.v201101122002.jar,plugins/org.eclipse.birt.data.source_2.6.2.r262_v20110215.jar,plugins/org.eclipse.jst.j2ee.webservice.source_1.1.400.v201004110600.jar,plugins/com.ibm.xtools.uml.profile.tooling.ui.editor.diagrams_7.60.0.v20100715_2051.jar,plugins/org.eclipse.emf.mapping.ecore2xml.ui_2.5.0.v20100521-1847.jar,plugins/org.eclipse.equinox.p2.extensionlocation.source_1.2.0.v20100518.jar,plugins/org.eclipse.equinox.p2.reconciler.dropins.source_1.1.2.R36x_v20110114.jar,plugins/org.eclipse.draw2d_3.6.2.v20110128-0100.jar,plugins/com.ibm.process.rsx.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.datatools.oda.cshelp_1.1.1.v200907031118.jar,plugins/org.eclipse.pde.ui_3.6.2.v20110527_r363.jar,plugins/org.eclipse.tptp.platform.agentcontroller.doc.user_4.3.1.v201009092123.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.clazz_7.60.200.v20101130_0203.jar,plugins/com.ibm.xtools.updm.ui.operational_7.3.801.v20100929_0755.jar,plugins/org.eclipse.gmf.map.source_2.2.101.v20100831-1541.jar,plugins/com.ibm.ccl.oda.diagram_1.60.0.v20100715_2051.jar,plugins/org.eclipse.team.ui_3.5.102.R36x_v20110203-1036.jar,plugins/org.eclipse.cdt.make.ui_7.0.0.201102110609.jar,plugins/com.ibm.xtools.umldt.rt.petal.ui.im_1.50.0.v20110518_0733.jar,plugins/org.w3c.dom.svg_1.1.0.v200806040011.jar,plugins/org.eclipse.wst.html.core_1.1.405.v201104191549.jar,plugins/org.eclipse.wst.jsdt.support.ie_1.0.300.v201004150600.jar,plugins/org.eclipse.cdt.dsf.source_2.1.1.201102110609.jar,plugins/com.ibm.xtools.ras.profile.defauld.editor_7.0.2.v20100805_2013.jar,plugins/org.eclipse.wst.css.ui_1.0.502.v201101122002.jar,plugins/com.ibm.xtools.modeler_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.modeler.feature.uid_1.0.2.v20110513_0101.jar,plugins/com.ibm.xtools.codeview.j2se.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.datatools.connectivity.oda.flatfile.ui_3.1.1.v201101261130.jar,plugins/org.eclipse.gmf.runtime.emf.type.ui_1.2.0.v20090403-1720.jar,plugins/com.ibm.xtools.comparemerge.emf.delta.annotation_7.60.0.v20100715_2051.jar,plugins/org.eclipse.gmf.runtime.diagram.core.source_1.4.0.v20100331-2359.jar,plugins/org.eclipse.wst.xmleditor.doc.user_1.0.700.v201005192212.jar,plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.publish.ui_7.60.0.v20100715_2051/,plugins/com.ibm.xtools.transform.uml2.xsd.cshelp_1.0.5.v20110408_2147.jar,plugins/com.ibm.xtools.umldt.rt.umlal.debug.core_1.0.0.v20110326_0744.jar,plugins/org.eclipse.jst.ws.consumption.source_1.0.508.v201103082026.jar,plugins/org.eclipse.emf.ecore.sdo_2.4.0.v200801221930.jar,plugins/com.ibm.xtools.analysis.reporting_7.1.100.v20100909_1452.jar,plugins/com.ibm.xtools.viz.j2se.common_7.0.0.v20100715_2051.jar,plugins/org.eclipse.wst.server.core_1.1.207.v20110401_1511.jar,plugins/com.ibm.xtools.comparemerge.diagram_7.60.300.v20110510_2201.jar,plugins/org.eclipse.birt.report.engine.emitter.html.source_2.6.2.r262_v20110209.jar,plugins/org.eclipse.equinox.p2.repository.tools_2.0.1.R36x_v20100823.jar,plugins/org.eclipse.datatools.sqltools.result_1.1.0.v201005260930.jar,plugins/org.eclipse.equinox.simpleconfigurator_1.0.200.v20100503.jar,plugins/org.apache.fop_0.20.5.1/,plugins/com.ibm.support.feedback.errorreports.core_1.0.1.v20110329_0031.jar,plugins/com.ibm.xtools.analysis.model_feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.gmf.runtime.common.ui_1.4.0.v20100518-2230.jar,plugins/org.eclipse.wst.jsdt.support.ie.source_1.0.300.v201004150600.jar,plugins/org.eclipse.jet.source_1.1.1.v201101271243/,plugins/com.ibm.xtools.patterns.content.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.help.gallery.cat_7.6.0.v20110304_1609.jar,plugins/com.ibm.xtools.modeler.rt.ui.examples_1.50.0.v20110325_2100.jar,plugins/com.ibm.xtools.ras.profile.defauld.patterns.edit_7.60.0.v20100929_0755.jar,plugins/org.eclipse.xsd.editor_2.6.0.v20100914-1218.jar,plugins/com.ibm.xtools.transform.authoring.jet_7.3.0.v20101207_0201.jar,plugins/org.eclipse.tptp.platform.iac.administrator_4.5.0.v201005061600.jar,plugins/org.eclipse.birt.report.engine.emitter.pdf.config.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.modeler.ui.profile.wizards_7.60.300.v20110510_2201.jar,plugins/com.ibm.xtools.transform.java.jet2_1.0.100.v20110117_1549.jar,plugins/com.ibm.xtools.rmp.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.xtools.transform.sourcemodelassoc_7.5.4.v20110210_0845.jar,plugins/org.eclipse.ui.views.properties.tabbed_3.5.100.I20100509-0800.jar,plugins/org.eclipse.datatools.modelbase.dbdefinition_1.0.2.v201002130228.jar,plugins/org.eclipse.osgi.services.source_3.2.100.v20100503.jar,plugins/org.eclipse.jst.j2ee.navigator.ui.source_1.1.403.v201012020600.jar,plugins/org.eclipse.gmf.runtime.common.ui.services.properties.source_1.3.0.v20101129-1213.jar,plugins/com.ibm.ccl.oda.uml.ui_1.60.200.v20110115_0201.jar,plugins/org.eclipse.emf.validation.ui.source_1.3.0.v200901271722.jar,plugins/org.eclipse.datatools.enablement.hsqldb.ui_1.0.0.v200906020900.jar,plugins/org.eclipse.datatools.sqltools.parsers.sql.xml.query_1.0.0.v200906022302.jar,plugins/org.eclipse.equinox.simpleconfigurator.manipulator_2.0.0.v20100503.jar,plugins/org.eclipse.birt.doc_2.6.1.v20100813.jar,plugins/org.apache.batik.util.source_1.6.0.v200805290154.jar,plugins/org.eclipse.wst.jsdt.web.core_1.0.305.v201103170144.jar,plugins/org.eclipse.jst.ws.axis.creation.ui.source_1.0.600.v201008171516.jar,plugins/com.ibm.xtools.emf.validation.reporting.ui_7.60.0.v20100715_2051.jar,plugins/org.eclipse.gmf.runtime.emf.core_1.4.1.v20100909-1300.jar,plugins/org.eclipse.equinox.frameworkadmin.equinox.source_1.0.200.v20100505.jar,plugins/com.ibm.xtools.updm.birt_7.0.801.v20100929_0755.jar,plugins/org.eclipse.emf.mapping.ecore_2.6.0.v20100914-1218.jar,plugins/org.eclipse.ui.editors_3.6.1.r361_v20100825-0800.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.communication_7.60.300.v20110510_2201.jar,plugins/org.eclipse.birt.report.designer.ui.cubebuilder_2.6.2.r262_v20110127.jar,plugins/org.apache.batik.svggen.source_1.6.0.v200805290154.jar,plugins/com.ibm.xtools.umldt.rt.transform.j2se.viz.ui_1.0.0.v20110326_0744.jar,plugins/org.eclipse.xsd.source_2.6.0.v20100914-1218.jar,plugins/org.eclipse.emf.edit_2.6.0.v20100914-1218.jar,plugins/org.eclipse.cdt.gdb_7.0.0.201102110609.jar,plugins/org.eclipse.hyades.probekit_4.3.3.v201104261357/,plugins/org.eclipse.cdt.managedbuilder.core_7.0.2.201102110609.jar,plugins/com.ibm.xtools.modeler.ui.diagram_7.60.200.v20110130_0206.jar,plugins/org.eclipse.equinox.event.source_1.2.0.v20100503.jar,plugins/com.ibm.xtools.ras.edit.ui_7.1.1.v20100805_2013.jar,plugins/org.eclipse.ui.navigator.source_3.5.0.I20100601-0800.jar,plugins/com.ibm.xtools.uml.rt.feature.uid_1.0.2.v20110515_0735.jar,plugins/com.ibm.xtools.prodover.doc_7.1.2.v20110408_2147.jar,plugins/org.eclipse.cdt.sdk_7.0.2.201102110609.jar,plugins/org.eclipse.birt.chart.engine.extension.source_2.6.2.r262_v20110113.jar,plugins/com.ibm.xtools.comparemerge.extensibility_7.60.300.v20110510_2201.jar,plugins/org.eclipse.gmf.runtime.diagram.core_1.4.0.v20100331-2359.jar,plugins/org.eclipse.wst.internet.monitor.ui.source_1.0.406.v20110309.jar,plugins/com.ibm.xtools.ras.common.core.feature.uid_1.0.2.v20101019_0105.jar,plugins/javax.xml_1.3.4.v201005080400.jar,plugins/org.eclipse.emf.validation.source_1.4.0.v20100428-2315.jar,plugins/com.ibm.xtools.patterns.repository.provider_7.60.0.v20100929_0755.jar,plugins/com.ibm.xtools.diagram.ui.browse_7.60.300.v20110510_2201.jar,plugins/org.eclipse.tptp.platform.common.ui.trace_4.4.3.v201105161135.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.providers_1.4.0.v20100430-1518.jar,plugins/com.ibm.ccl.oda.emf.feature.uid_1.0.2.v20110127_0205.jar,plugins/org.apache.batik.bridge_1.6.0.v200912221622.jar,plugins/org.eclipse.core.runtime.compatibility.auth_3.2.200.v20100517.jar,plugins/org.eclipse.equinox.p2.ql_2.0.0.v20100503a.jar,plugins/com.ibm.xtools.ras.export.core.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.wst.xml.ui_1.1.104.v201103021532.jar,plugins/org.eclipse.help_3.5.0.v20100524.jar,plugins/org.eclipse.core.variables.source_3.2.400.v20100505.jar,plugins/com.jcraft.jsch_0.1.41.v200903070017.jar,plugins/org.eclipse.birt.report.engine.emitter.postscript.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.transform.uml2.cpp.morph_7.5.0.v20100929_0755.jar,plugins/com.ibm.xtools.ras.export.ui.wizard_7.0.1.v20100805_2013.jar,plugins/org.eclipse.datatools.enablement.ibm.informix.ui_1.0.2.v201005211230.jar,plugins/org.eclipse.equinox.p2.discovery_1.0.0.v20100503.jar,plugins/com.ibm.xtools.umldt.rt.transform.cpp.cshelp_7.1.2.v20110411_1749.jar,plugins/org.eclipse.gmf.runtime.draw2d.ui.render.awt_1.4.2.v20101111-1500.jar,plugins/org.eclipse.birt.chart.examples.core_2.6.2.r262_v20110120.jar,plugins/com.ibm.xtools.sample.rose.model_7.2.2.v20100203_0307.jar,plugins/com.ibm.xtools.petal.ui_7.0.0.v20110517_1415.jar,plugins/com.ibm.xtools.transform.team_7.1.400.v20100715_2051.jar,plugins/org.eclipse.jst.ws.ui.source_1.0.403.v201004211805.jar,plugins/com.ibm.xtools.pde.ui_7.60.0.v20100715_2051.jar,plugins/org.eclipse.wst.common.emf.source_1.2.3.v201012100400.jar,plugins/org.eclipse.wst.dtd.ui.source_1.0.500.v201004290328.jar,plugins/com.ibm.ccl.linkability.provider.uml_7.0.402.v20110224_1852.jar,plugins/com.ibm.xtools.modeler.rt.ui.diagrams.sequence_1.50.0.v20110507_0844.jar,plugins/org.eclipse.jdt.junit4.runtime.source_1.1.100.v20100526-0800.jar,plugins/org.eclipse.ui.net_1.2.100.I20100505-1245.jar,plugins/com.ibm.xtools.j2se.umlal.ui_1.0.100.v20110515_0735.jar,plugins/org.eclipse.equinox.p2.repository.source_2.0.2.R36x_v20110111-1500.jar,plugins/com.ibm.xtools.pluglets_7.0.100.v20100715_2051.jar,plugins/org.eclipse.tptp.platform.trace_4.5.0.v201005061600.jar,plugins/org.eclipse.cdt.make.ui.source_7.0.0.201102110609.jar,plugins/org.eclipse.datatools.enablement.sap.maxdb.ui_1.0.0.v200906020900.jar,plugins/org.eclipse.emf.exporter_2.6.0.v20100521-1846.jar,plugins/org.eclipse.platform_3.6.2.v201102101200/,plugins/org.eclipse.jdt.debug_3.6.2.v20110406_r362/,plugins/org.eclipse.birt.chart.device.swt_2.6.2.r262_v20101209.jar,plugins/com.ibm.xtools.reqpro_ed.cshelp_7.0.0.v20090319_1011.jar,plugins/org.eclipse.wst.jsdt.support.firefox_1.0.300.v201004150600.jar,plugins/com.ibm.xtools.umlnotation.edit_7.60.0.v20100715_2051.jar,plugins/org.eclipse.birt.report.model.source_2.6.2.r262_v20110209.jar,plugins/com.ibm.xtools.petal.profile.feature.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.xtools.transform.uml2.mapping.ui_7.0.400.v20100715_2051.jar,plugins/com.ibm.xtools.cdt.ui.providers_7.5.0.v20100929_0755/,plugins/com.ibm.xtools.jet.guidance.gen_1.0.0.v20100715_2051.jar,plugins/org.eclipse.tptp.test_4.4.0.v200906041936.jar,plugins/org.apache.ant_1.7.1.v20100518-1145/,plugins/com.ibm.xtools.comparemerge.reflectivemergefacade_7.60.0.v20100715_2051.jar,plugins/org.eclipse.birt.report.designer.ui.cubebuilder.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.gmf.runtime.common.ui.printing.win32.source_1.4.0.v20100223-2359.jar,plugins/com.ibm.xtools.jet.guidance_4.0.0.v20100715_2051.jar,plugins/org.eclipse.xsd.cheatsheets_2.6.0.v20100521-1855.jar,plugins/org.eclipse.datatools.connectivity.sqm.core_1.2.1.v201010090204.jar,plugins/org.eclipse.wst.common.environment_1.0.400.v200912181832.jar,plugins/org.apache.commons.discovery_0.2.0.v201004190315/,plugins/org.eclipse.datatools.enablement.ingres.ui_1.0.0.v201006242214.jar,plugins/com.ibm.xtools.comparemerge.clearcaseversioncheck_7.60.0.v20100715_2051.jar,plugins/org.eclipse.birt.chart.device.extension_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.transform.uml2.sm.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.datatools.connectivity.sqm.core.ui_1.2.0.v201002281800.jar,plugins/org.apache.batik.css_1.6.0.v200912221622.jar,plugins/org.eclipse.wst.sse.core.source_1.1.505.v201104070043.jar,plugins/org.eclipse.jst.ejb.doc.user_1.1.300.v201103302045.jar,plugins/javax.mail_1.4.0.v201005080615.jar,plugins/org.eclipse.ocl.source_3.0.2.R30x_v201101110610.jar,plugins/com.ibm.xtools.uml.msl_7.70.300.v20110518_0102.jar,plugins/org.eclipse.birt.report.debug.ui_2.6.2.r262_v20110127.jar,plugins/org.eclipse.hyades.execution.correlation_4.2.0.v201005061600.jar,plugins/org.eclipse.wst.web.ui.infopop_1.0.300.v200805140415.jar,plugins/org.eclipse.hyades.logging.core.sample_4.2.0.v201005061600.jar,plugins/com.ibm.ccl.tdi.reqpro.core_7.0.100.v20100715_2051.jar,plugins/org.eclipse.cdt.source_7.0.2.201102110609.jar,plugins/org.eclipse.datatools.enablement.ingres.dbdefinition_1.0.0.v200906161800.jar,plugins/com.ibm.help.common.accessibility.doc_7.6.0.v20110512_1525.jar,plugins/org.eclipse.ui.workbench.texteditor_3.6.2.r362_v20110316.jar,plugins/org.eclipse.xsd.doc_2.6.0.v20100914-1218.jar,plugins/org.eclipse.datatools.connectivity.oda.profile_3.2.4.v201007150318.jar,plugins/org.eclipse.ltk.ui.refactoring_3.5.0.v20100526-0800.jar,plugins/org.eclipse.gmf.runtime.common.ui.services.action.source_1.4.0.v20100430-1518.jar,plugins/com.ibm.xtools.patterns.core.transformprovider_7.60.0.v20100929_0755.jar,plugins/org.eclipse.jst.jee.ejb_1.0.301.v201007070821.jar,plugins/com.ibm.xtools.uml.validation_7.60.300.v20110510_2201.jar,plugins/com.ibm.xtools.cdt.ui.views_7.5.0.v20100929_0755.jar,plugins/com.ibm.xtools.ras.impord.tasks_7.0.100.v20100805_2013.jar,plugins/org.eclipse.jst.ws.jaxrs.ui_1.0.302.v201105161815.jar,plugins/org.apache.xml.serializer_2.7.1.v201005080400.jar,plugins/com.ibm.xtools.modeling.csguides.win32_7.0.300.v20100929_0755.jar,plugins/org.eclipse.datatools.enablement.ibm.db2.iseries.ui_1.0.1.v201005211230.jar,plugins/org.eclipse.ui.presentations.r21_3.2.200.I20100517-1500.jar,plugins/org.eclipse.jst.j2ee_1.1.405.v201104141500.jar,plugins/com.ibm.xtools.viz.cpp.cshelp_7.0.8.v20110408_2147.jar,plugins/org.eclipse.gmf.runtime.common.ui.printing_1.4.0.v20100223-2359.jar,plugins/org.apache.commons.codec_1.3.0.v20100518-1140.jar,plugins/com.ibm.cic.licensing.lum_7.0.200.v20110105_1929/,plugins/org.eclipse.gmf.map_2.2.101.v20100831-1541.jar,plugins/org.eclipse.ui.navigator.resources.source_3.4.202.M20101124-0800.jar,plugins/org.eclipse.emf.mapping_2.6.0.v20100914-1218.jar,plugins/org.eclipse.compare.win32_1.0.101.R36x_v20101103-0618.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.dnd.source_1.2.0.v20090403-1720.jar,plugins/com.ibm.cic.licensing.flexlm_7.0.816.v20110429_1203/,plugins/org.eclipse.jst.ws.creation.ejb.ui_1.0.201.v201004211805.jar,plugins/org.eclipse.emf.mapping.ui_2.6.0.v20100914-1218.jar,plugins/org.eclipse.emf.ecore.edit_2.6.0.v20100914-1218.jar,plugins/com.ibm.xtools.ras.profile.defauld.component.editor_7.0.0.v20100805_2013.jar,plugins/org.eclipse.emf.cheatsheets_2.5.0.v20100521-1846.jar,plugins/com.ibm.xtools.dodaf.ui.providers_7.0.500.v20100929_0755.jar,plugins/org.eclipse.jst.common.annotations.controller_1.1.300.v200908252030.jar,plugins/org.eclipse.m2m.qvt.oml.emf.util_2.0.100.v20100122-1411.jar,plugins/org.eclipse.datatools.enablement.ibm.db2.zseries.dbdefinition_1.0.4.v201005211230.jar,plugins/com.ibm.ccl.erf.core_1.60.0.v20100715_2051/,plugins/org.hamcrest.core.source_1.1.0.v20090501071000.jar,plugins/org.eclipse.equinox.jsp.jasper.registry_1.0.200.v20100503.jar,plugins/org.eclipse.debug.ui_3.6.3.v20110513_r363.jar,plugins/org.eclipse.uml2.uml.ecore.importer_2.4.0.v201005031530.jar,plugins/org.eclipse.wst.xml.core.source_1.1.504.v201104070043.jar,plugins/org.eclipse.datatools.enablement.sqlite.dbdefinition_1.0.1.v201002041100.jar,plugins/org.eclipse.gmf.graphdef.codegen.ui.source_1.0.100.v20090114-0940.jar,plugins/org.eclipse.wst.server.discovery_1.0.102.v20110427.jar,plugins/org.apache.batik.parser.source_1.6.0.v200805290154.jar,plugins/org.eclipse.birt.report.engine.script.javascript_2.6.2.r262_v20110127.jar,plugins/org.eclipse.datatools.enablement.sybase.ase_1.0.1.v200906020900.jar,plugins/org.eclipse.wst.server.ui_1.1.208.v20110427_1739.jar,plugins/com.ibm.xtools.uml2.bom.integration.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.uddi4j_2.0.5.v200805270300.jar,plugins/com.ibm.xtools.mde.ui_1.0.1.v20100928_2018.jar,plugins/com.ibm.xtools.mde.solution.ui_8.0.0.v20100715_2051.jar,plugins/org.eclipse.ui.intro.universal.source_3.2.402.r36_v20100702.jar,plugins/org.eclipse.m2m.qvt.oml.common_2.1.0.v20100524-1530.jar,plugins/com.ibm.xtools.transform.uml2.sm.core_1.0.100.v20110117_1549.jar,plugins/com.ibm.xtools.umlal.ui_1.0.100.v20110401_0743.jar,plugins/com.ibm.ccl.soa.sketcher.ui_1.0.400.v20110525_0749.jar,plugins/org.eclipse.equinox.p2.publisher.source_1.1.2.v20100824-2220.jar,plugins/org.eclipse.gef.examples.ui.pde_3.5.2.v20110128-0100.jar,plugins/org.eclipse.hyades.probekit.doc.user_4.3.1.v201009092123.jar,plugins/org.eclipse.birt.report.data.oda.sampledb.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.gmf.runtime.draw2d.ui.render.awt.source_1.4.2.v20101111-1500.jar,plugins/org.eclipse.core.contenttype_3.4.100.v20100505-1235.jar,plugins/com.ibm.xtools.rose.feature.uid_1.0.2.v20110517_1415.jar,plugins/org.eclipse.jst.ejb.ui.infopop_1.0.300.v2010022311013.jar,plugins/com.ibm.help.common.rational.taxonomy.doc_1.0.0.v20110304_1609.jar,plugins/org.eclipse.datatools.enablement.sap.maxdb.dbdefinition_1.0.0.v200906161800.jar,plugins/org.eclipse.equinox.simpleconfigurator.manipulator.source_2.0.0.v20100503.jar,plugins/com.ibm.xtools.dodaf_7.0.801.v20100929_0755.jar,plugins/org.eclipse.wst.jsdt.debug.rhino_1.0.1.v201008170101.jar,plugins/com.ibm.xtools.reqpro.ide.win32.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.draw2d.doc.isv_3.5.0.v20100519-2050.jar,plugins/org.apache.xerces_2.9.0.v201005080400.jar,plugins/org.eclipse.jst.ws.consumption.ui_1.1.303.v201103082026.jar,plugins/org.apache.batik.dom.svg.source_1.6.0.v200805290154.jar,plugins/com.ibm.xtools.cpp2.jet2_1.50.0.v20110405_2005.jar,plugins/com.ibm.support.feedback.ui_1.1.2.v20110330_1815.jar,plugins/org.junit4_4.8.1.v20100525/,plugins/org.eclipse.equinox.p2.operations_2.0.0.v20100510.jar,plugins/com.ibm.xtools.emf.query.core_7.60.0.v20100715_2051.jar,plugins/org.eclipse.datatools.connectivity.db.generic.ui_1.0.1.v201004070709.jar,plugins/org.eclipse.birt.report.designer.ui.editors_2.6.2.r262_v20110127.jar,plugins/com.ibm.welcome.common.rational.doc_7.6.0.v20110304_1645.jar,plugins/org.eclipse.emf.workspace_1.4.0.v20100224-1706.jar,plugins/org.eclipse.m2m.qvt.oml.editor.ui_2.1.0.v20100606-1530.jar,plugins/org.eclipse.datatools.connectivity.oda.consumer_3.2.3.v201102051100.jar,plugins/org.eclipse.gmf.graphdef.codegen_2.0.101.v20100831-1541.jar,plugins/org.eclipse.core.resources.source_3.6.1.R36x_v20110131-1630.jar,plugins/org.eclipse.core.runtime.compatibility_3.2.100.v20100505.jar,plugins/org.eclipse.uml2.uml.resources_3.1.1.v201008191505.jar,plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb.ui.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.equinox.p2.ui.sdk_1.0.100.v20100513.jar,plugins/org.eclipse.tptp.trace.arm.ui_4.4.0.v201005061600.jar,plugins/com.ibm.xtools.umldt.rt.c.feature.uid_1.0.2.v20110315_0754.jar,plugins/org.eclipse.jface_3.6.2.M20110210-1200.jar,plugins/org.eclipse.tptp.test.tools_4.4.0.v200906041936.jar,plugins/org.eclipse.search.source_3.6.0.v20100520-0800.jar,plugins/com.ibm.ccl.ua.wizards.feature.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.xtools.comparemerge.clearcasedirectory.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.equinox.p2.jarprocessor_1.0.200.v20100503a.jar,plugins/com.ibm.xtools.diagram.ui.common_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.transform.sourcemodelassoc.feature.uid_1.0.2.v20110427_0740.jar,plugins/javax.xml.soap_1.2.0.v201005080501/,plugins/org.eclipse.gmf.common_1.2.0.v20100226-2359.jar,plugins/org.eclipse.cdt.core.win32_5.2.0.201102110609/,plugins/org.eclipse.pde.build.source_3.6.2.R36x_20110203.jar,plugins/ilog.views.eclipse.graphlayout.gmf.edit_8.7.6.v20101108.jar,plugins/com.ibm.rational.rsa.welcome.doc_1.0.3.v20110413_0047.jar,plugins/org.eclipse.equinox.p2.extensionlocation_1.2.0.v20100518.jar,plugins/org.eclipse.osgi.util.source_3.2.100.v20100503.jar,plugins/org.eclipse.hyades.test.ui.extensions_4.6.0.v201005212338.jar,plugins/org.eclipse.tptp.platform.instrumentation.annotation_4.6.0.v201001151900.jar,plugins/com.ibm.xtools.transform.java.uml_7.5.800.v20110527_0030.jar,plugins/org.eclipse.birt.report.engine.dataextraction.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.ccl.ua.wizards_1.0.150.v20101020_0109.jar,plugins/org.eclipse.cdt.debug.mi.core_7.0.1.201102110609.jar,plugins/org.eclipse.gmf.source_1.4.1.v20100720-0030.jar,plugins/com.ibm.xtools.petal.core.policies_7.0.0.v20100929_0755.jar,plugins/org.eclipse.emf.importer.java_2.6.0.v20100521-1846.jar,plugins/com.ibm.xtools.ras.repository.client.ui_7.0.2.v20100805_2013.jar,plugins/com.ibm.xtools.mde.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.gmf.runtime.emf.type.ui.source_1.2.0.v20090403-1720.jar,plugins/com.ibm.xtools.analysis.codereview.java.j2ee_7.0.310.v20100517_1740.jar,plugins/com.ibm.xtools.comparemerge.team.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.gmf.ecore.editor.source_2.2.0.v20100315-2359.jar,plugins/com.ibm.ccl.help.state_1.0.1.v20100715_2051.jar,plugins/com.ibm.xtools.analysis.codereview.java.security_7.0.300.v20100517_1740.jar,plugins/com.ibm.xtools.rasset.cshelp_7.0.2.v20110408_2147.jar,plugins/org.eclipse.uml2.uml.edit.source_3.1.0.v201005031530.jar,plugins/org.eclipse.datatools.sqltools.schemaobjecteditor_1.1.0.v200906022302.jar,plugins/com.ibm.xtools.codeview.feature.uid_1.0.2.v20110503_2037.jar,plugins/com.ibm.xtools.analysis.model_7.1.100.v20100715_2051.jar,plugins/org.eclipse.gmf.xpand.qvtlibrary.source_1.1.0.v20100309-2359.jar,plugins/com.ibm.xtools.mep.feature.uid_1.0.2.v20110517_0745.jar,plugins/org.eclipse.team.cvs.ssh2_3.2.300.I20100526-0800.jar,plugins/com.ibm.ccl.erf.rsa.report.ic_2.60.0.v20100715_2051/,plugins/com.rational.clearcase.activities_7.6.0.v201105111445/,plugins/com.ibm.etools.ftp.feature.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.uml2.common.edit.source_1.5.0.v201005031530.jar,plugins/com.ibm.xtools.comparemerge.emf.ccdirectory_7.0.200.v20100715_2051.jar,plugins/com.ibm.etools.performance.core.win32_1.2.300.v20110315_1851.jar,plugins/com.ibm.xtools.uml.transform.rename.java.uid_1.0.2.v20101020_0109.jar,plugins/com.ibm.icu.source_4.2.1.v20100412.jar,plugins/com.lowagie.text_2.1.7.v201004222200.jar,plugins/org.eclipse.jst.jee.ui_1.0.305.v201105110300.jar,plugins/org.sat4j.pb_2.2.0.v20100429.jar,plugins/com.ibm.support.feature.uid_1.0.2.v20110520_0029.jar,plugins/org.eclipse.m2m.qvt.oml.runtime.ui_2.1.0.v20100524-1530.jar,plugins/org.eclipse.jst.j2ee.ejb_1.1.402.v201102071010.jar,plugins/org.eclipse.ui.win32.source_3.2.200.I20100509-0800.jar,plugins/org.eclipse.pde.api.tools.ui_1.0.201.v20100820_r361.jar,plugins/org.eclipse.cdt.managedbuilder.ui_7.0.0.201102110609.jar,plugins/org.eclipse.ui.editors.source_3.6.1.r361_v20100825-0800.jar,plugins/org.eclipse.emf.ecore.change.source_2.5.1.v20100907-1643.jar,plugins/com.ibm.rational.capabilities.modeling_7.60.0.v20100715_2051.jar,plugins/org.eclipse.jst.j2ee.ejb.annotation.model_1.1.300.v201003112036.jar,plugins/com.ibm.xtools.uml.profile.tooling.feature.uid_1.0.2.v20101020_0109.jar,plugins/org.eclipse.wst.webtools.doc.user_1.0.500.v201005192212.jar,plugins/org.eclipse.gmf.runtime.emf.type.core.source_1.4.0.v20100423-2359.jar,plugins/org.eclipse.ecf.ssl_1.0.100.v20100906-1425.jar,plugins/com.ibm.xtools.reqpro.j2ee_7.0.200.v20100715_2051.jar,plugins/com.ibm.xtools.diagram.ui.compatibility_7.60.0.v20100715_2051.jar,plugins/org.eclipse.pde.launching_3.6.0.v20100601.jar,plugins/org.eclipse.ui.navigator_3.5.0.I20100601-0800.jar,plugins/org.eclipse.datatools.connectivity.apache.derby_1.0.100.v200906020900.jar,plugins/com.ibm.xtools.rmp.ui_1.10.300.v20110510_2201.jar,plugins/org.eclipse.ocl.uml_3.0.2.R30x_v201101181635.jar,plugins/com.ibm.ccl.help.preferenceharvester_1.0.150.v20110510_2201.jar,plugins/org.apache.commons.codec.source_1.3.0.v20100518-1140.jar,plugins/org.eclipse.wst.command.env.doc.user_1.5.300.v201005192225.jar,plugins/org.apache.jasper_5.5.17.v201004212143.jar,plugins/org.eclipse.tptp.platform.report.birt.ui_4.5.0.v201005061600/,plugins/org.eclipse.datatools.sqltools.db.derby_1.0.0.v200906020900.jar,plugins/org.eclipse.wst.dtd.ui.infopop_1.0.300.v200805140200.jar,plugins/org.eclipse.gmf.graphdef_2.0.100.v20090420-1925.jar,plugins/org.eclipse.gmf.xpand.migration_1.0.100.v20100309-2359.jar,plugins/com.ibm.ccl.ua.help.gallery.menuactions_7.5.0.v20100715_2051.jar,plugins/org.eclipse.wst.validation.doc.isv_1.2.200.v201004280700.jar,plugins/com.ibm.xtools.umlviz.cshelp_7.0.7.v20110408_2147.jar,plugins/org.eclipse.emf.common.ui_2.6.0.v20100914-1218.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.timing_7.60.300.v20110512_0102.jar,plugins/com.ibm.xtools.me2.ui_1.1.0.v20110515_0735.jar,plugins/com.ibm.ccl.erf.core.birt.feature.uid_1.0.2.v20110127_0205.jar,plugins/com.ibm.xtools.uml.ui.diagrams.deployment_7.60.300.v20110510_2201.jar,plugins/org.eclipse.help.appserver_3.1.400.v20100427.jar,plugins/com.ibm.xtools.ras.export_7.0.300.v20100805_2013/,plugins/org.eclipse.ocl.uml.source_3.0.2.R30x_v201101181635.jar,plugins/org.eclipse.tptp.platform.logging.events_4.4.1.v201009092123/,plugins/com.ibm.rcp.swt.browser.dom.ie_6.2.1.20090925-1604/,plugins/com.ibm.xtools.modeler.ui.capabilities_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.patterns.framework.specialized_7.60.100.v20100929_0755.jar,plugins/com.ibm.xtools.ras.repository.client_7.0.200.v20100805_2013.jar,plugins/com.ibm.rsart.nav.doc_1.0.4.v20110513_1123.jar,plugins/org.eclipse.equinox.p2.touchpoint.eclipse.source_2.0.3.R36x_v20101202.jar,plugins/org.eclipse.jst.common.project.facet.core_1.4.102.v201008182136.jar,plugins/org.eclipse.birt.core.script.function.source_2.6.2.r262_v20110209.jar,plugins/org.eclipse.gmf.runtime.sdk_1.4.1.v20100720-0030.jar,plugins/org.apache.batik.util.gui.source_1.6.0.v200805290154.jar,plugins/com.ibm.xtools.dodaf.report_7.0.300.v20100929_0755.jar,plugins/com.ibm.xtools.visualization.modeler.required.feature.uid_1.0.2.v20101021_2044.jar,plugins/org.eclipse.birt.report.engine.emitter.html.config_2.6.2.r262_v20110127.jar,plugins/org.eclipse.wst.common.frameworks.ui.source_1.2.0.v201004080500.jar,plugins/com.ibm.xtools.rmp.startup_7.60.300.v20110510_2201.jar,plugins/org.eclipse.wst.css.core.source_1.1.403.v201103021532.jar,plugins/com.ibm.xtools.ras.repository.datastore.filesystem_7.0.0.v20100805_2013.jar,plugins/com.ibm.xtools.tdi.reqpro.j2se.ide.uid_1.0.2.v20101020_0109.jar,plugins/com.ibm.cic.licensing.common.ui_7.1.302.v20101007_1238.jar,plugins/org.eclipse.team.ui.source_3.5.102.R36x_v20110203-1036.jar,plugins/org.eclipse.emf.transaction_1.4.0.v20100331-1738.jar,plugins/com.ibm.xtools.updm.ui.providers_7.0.801.v20100929_0755.jar,plugins/org.eclipse.wst.server.ui.source_1.1.208.v20110427_1739.jar,plugins/com.ibm.xtools.uml.profile.tooling.ui.editor_7.60.0.v20100715_2051.jar,plugins/com.ibm.ccl.erf.cshelp_1.1.0.v20090306_1924.jar,plugins/org.eclipse.jst.ws.axis.consumption.core_1.0.406.v201004211805.jar,plugins/org.eclipse.emf.query.ocl.source_2.0.0.v20091215-1624.jar,plugins/com.ibm.xtools.modeler.ui.type_7.60.100.v20100927_1422.jar,plugins/com.ibm.xtools.viz.j2se.ui.javadoc_7.0.200.v20110510_2201.jar,plugins/org.eclipse.emf.ecore.editor_2.6.0.v20100914-1218.jar,plugins/com.ibm.xtools.umldt.rt.ui_1.50.0.v20110515_0735.jar,plugins/org.eclipse.emf.ecore.xmi_2.5.0.v20100521-1846.jar,plugins/com.ibm.xtools.ras.profile.io.unbundled.local_7.0.100.v20100805_2013.jar,plugins/org.eclipse.datatools.sqltools.parsers.sql_1.0.2.v201004291415.jar,plugins/com.ibm.xtools.uml.ui.diagrams.sequence_7.60.300.v20110510_2201.jar,plugins/org.eclipse.gmf.doc.ui_1.3.0.v20090729-2031.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.render_1.4.1.v20100909-1300.jar,plugins/org.eclipse.datatools.modelbase.sql.query_1.1.1.v201008100700.jar,plugins/org.eclipse.emf.validation.examples_1.3.0.v200901271722.jar,plugins/org.eclipse.ecf.provider.filetransfer.ssl_1.0.0.v20100906-1425.jar,plugins/org.eclipse.core.expressions_3.4.200.v20100505.jar,plugins/org.eclipse.datatools.enablement.sybase.models_1.0.0.v201010140307.jar,plugins/org.eclipse.birt.report.designer.ui.ide_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.component_7.60.0.v20100715_2051.jar,plugins/com.ibm.rsaz.analysis.core.ui_7.1.200.v20101215_2153.jar,plugins/org.eclipse.datatools.enablement.postgresql.dbdefinition_1.0.1.v200906161800.jar,plugins/org.eclipse.birt.report.data.bidi.utils.ui_2.6.2.r262_v20110127.jar,plugins/com.ibm.rsaz.analysis.codereview.java.rules.base_7.0.100.v20100517_1740.jar,plugins/org.eclipse.uml2.doc_3.1.0.v201005031530.jar,plugins/org.eclipse.jst.ws.jaxrs.core.source_1.0.201.v201011231540.jar,plugins/org.eclipse.equinox.supplement.source_1.3.1.R36x_v20101021.jar,plugins/org.eclipse.tptp.platform.profile.server.core_4.3.3.v201104210930.jar,plugins/com.ibm.xtools.umldt.rt.j2se.umlal.debug.ui_1.0.0.v20110420_0731.jar,plugins/org.eclipse.wst.xsd.ui.source_1.2.305.v201104132127.jar,plugins/org.eclipse.emf.codegen.ui_2.6.0.v20100914-1218.jar,plugins/org.eclipse.equinox.event_1.2.0.v20100503.jar,plugins/com.ibm.xtools.transform.uml2.cpp.jet2_7.1.0.v20110120_0844.jar,plugins/com.ibm.xtools.uml.ocl_7.60.0.v20100715_2051.jar,plugins/org.eclipse.wst.validation.infopop_1.0.300.v200806041506.jar,plugins/org.eclipse.birt.chart.engine_2.6.2.r262_v20110120.jar,plugins/org.eclipse.debug.ui.source_3.6.3.v20110513_r363.jar,plugins/org.eclipse.jst.j2ee.web_1.1.404.v201102030400.jar,plugins/org.eclipse.jface.text_3.6.1.r361_v20100825-0800.jar,plugins/org.eclipse.datatools.enablement.ibm.informix.dbdefinition_1.0.4.v201005211230.jar,plugins/com.ibm.cds_2.1.0.201009130929.jar,plugins/org.eclipse.equinox.p2.publisher_1.1.2.v20100824-2220.jar,plugins/org.eclipse.jdt.junit_3.6.1.r361_v20100825-0800.jar,plugins/com.ibm.xtools.transform.authoring.mapping.ui_7.2.0.v20100715_2051.jar,plugins/org.eclipse.jst.server.generic.ui_1.0.505.v20100428.jar,plugins/com.ibm.etools.performance.core_1.2.300.v20110502_0026.jar,plugins/com.ibm.xtools.uml.profile.tooling.cshelp_1.0.0.v20090306_1924.jar,plugins/org.eclipse.gmf.validate_1.2.0.v20100302-2359.jar,plugins/org.eclipse.hyades.trace.ui_4.5.103.v201105061500.jar,plugins/com.ibm.xtools.uml.ui.diagrams.clazz_7.60.200.v20110217_2306.jar,plugins/com.ibm.xtools.updm.ui.query_7.3.820.v20110114_1619.jar,plugins/org.eclipse.ui.views.source_3.5.1.M20110202-0800.jar,plugins/org.eclipse.emf.ecore_2.6.1.v20100914-1218.jar,plugins/com.ibm.xtools.notation.compatibility_7.60.100.v20100902_0104.jar,plugins/org.eclipse.wst.dtd.core_1.1.401.v201101122255.jar,plugins/org.eclipse.birt.report.item.crosstab.core_2.6.2.r262_v20110127.jar,plugins/org.eclipse.tptp.platform.samples_4.5.0.v201005061600.jar,plugins/com.ibm.xtools.umldt.rt.cpp.feature.uid_1.0.2.v20110315_0754.jar,plugins/com.ibm.ccl.welcome.bits.feature.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.emf.mapping.ecore2ecore.editor_2.4.0.v20100521-1847.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.source_1.4.1.v20100909-1300.jar,plugins/org.eclipse.jem.util.source_2.1.3.v201012070000.jar,plugins/org.eclipse.wst.ws.service.policy_1.0.204.v201011011834.jar,plugins/com.ibm.ccl.linkability.provider.j2se_7.0.400.v20100715_2051.jar,plugins/org.eclipse.gmf.xpand_2.1.0.v20100315-2101.jar,plugins/com.ibm.xtools.comparemerge.delta.annotation.ui_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.umldt.rt.cpp.umlal.core.resources_1.0.0.v20101203_1715.jar,plugins/com.ibm.xtools.ocleditor.sample.ocl_1.2.2.v20110408_2147.jar,plugins/org.eclipse.core.contenttype.source_3.4.100.v20100505-1235.jar,plugins/com.ibm.xtools.ras.repository.client.xde.ui.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.emf.transaction.ui_1.4.0.v20090819-1300.jar,plugins/org.eclipse.birt.report.engine_2.6.2.r262_v20110214.jar,plugins/org.eclipse.pde.build_3.6.2.R36x_20110203/,plugins/org.apache.ant.source_1.7.1.v20100518-1145.jar,plugins/org.eclipse.help.base_3.5.3.v201102101200.jar,plugins/org.eclipse.pde.ui.source_3.6.2.v20110527_r363.jar,plugins/org.eclipse.birt.chart_2.6.1.v20100813/,plugins/com.ibm.xtools.umldt.rt.cpp.ui.diagrams_1.50.0.v20110326_0744.jar,plugins/ilog.views.eclipse.graphlayout.edit_8.7.6.v20101108.jar,plugins/com.ibm.xtools.umldt.rt.petal.ui.c_1.50.0.v20110515_0735.jar,plugins/org.eclipse.jdt.junit.source_3.6.1.r361_v20100825-0800.jar,plugins/com.ibm.xtools.ras.profile.defauld.webservice.edit_7.0.2.v20100805_2013.jar,plugins/org.eclipse.emf.workspace.ui_1.3.0.v200901271819.jar,plugins/com.ibm.xtools.sample.transform.authoring.doc_1.0.1.v20100201_0328.jar,plugins/org.eclipse.emf.databinding.source_1.2.0.v20100914-1218.jar,plugins/org.eclipse.birt.report.designer.ui.data_2.6.2.r262_v20110209.jar,plugins/com.ibm.etools.performance.ui_1.2.300.v20110404_1907.jar,plugins/org.eclipse.jst.servlet.ui.infopop_1.0.400.v201103302034.jar,plugins/org.eclipse.birt.example_2.6.1.v20100813.jar,plugins/org.eclipse.equinox.p2.engine_2.0.1.R36x_v20110201.jar,plugins/org.eclipse.jst.ws.consumption.ui.doc.user_1.0.600.v201005192217.jar,plugins/org.eclipse.datatools.enablement.sybase.ase.ui_1.0.1.v200906020900.jar,plugins/org.eclipse.equinox.frameworkadmin_2.0.0.v20100503.jar,plugins/org.eclipse.datatools.enablement.oda.ws_1.2.2.v201010151422.jar,plugins/com.ibm.xtools.umldt.rt.umlal.feature.uid_1.0.2.v20110405_2005.jar,plugins/com.ibm.xtools.transform.uml2.cpp.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.birt.chart.engine.source_2.6.2.r262_v20110120.jar,plugins/org.eclipse.pde.ua.core.source_1.0.100.v20100504.jar,plugins/javax.servlet.jsp_2.0.0.v200806031607.jar,plugins/org.eclipse.ui.console_3.5.0.v20100526.jar,plugins/org.eclipse.birt.data.aggregation_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.report.designer.ui.samples.ide_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.report.engine.emitter.ppt.config_2.6.2.r262_v20110127.jar,plugins/org.eclipse.uml2_3.0.0.v201005031530.jar,plugins/org.eclipse.cdt.p2_1.0.0.201102110609.jar,plugins/org.eclipse.birt.report.data.oda.jdbc.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.cdt.debug.ui.source_7.0.0.201102110609.jar,plugins/org.eclipse.gmf.runtime.common.ui.services.dnd.ide_1.2.0.v20090403-1720.jar,plugins/org.eclipse.equinox.p2.metadata.generator.source_1.0.202.R36x_v20101208-1400.jar,plugins/org.eclipse.jst.jsp.core_1.2.306.v201105162026.jar,plugins/org.eclipse.equinox.transforms.hook.source_1.0.200.v20100503.jar,plugins/org.eclipse.datatools.sqltools.sql_1.0.0.v200906022302.jar,plugins/org.eclipse.emf.doc_2.6.0.v20100914-1218.jar,plugins/org.eclipse.wst.wsdl.ui.doc.user_1.0.700.v201007141653.jar,plugins/org.eclipse.birt.report.engine.fonts.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.transform.cpp.profile_7.5.20.v20110127_0855.jar,plugins/com.ibm.xtools.comparemerge.modelconverter_7.60.0.v20100715_2051.jar,plugins/org.eclipse.wst.jsdt.debug.core_1.0.4.v201103310001.jar,plugins/com.ibm.xtools.transform.ui.cshelp_7.0.8.v20090803_1558.jar,plugins/org.eclipse.gmf.codegen.source_2.2.100.v20100518-2359.jar,plugins/org.eclipse.wst.common.ui_1.1.500.v200911190730.jar,plugins/org.eclipse.datatools.enablement.sybase.asa.dbdefinition_1.0.0.v200906161800.jar,plugins/org.eclipse.jst.server.core_1.2.102.v20110309.jar,plugins/com.ibm.xtools.modeler.base.feature.uid_1.0.2.v20110516_2128.jar,plugins/org.eclipse.gmf.runtime.emf.ui.properties_1.4.0.v20100304-2359.jar,plugins/org.eclipse.cdt.core_5.2.1.201102110609.jar,plugins/com.ibm.rational.clearcase.ccrefresh_7.6.0.v201105111445/,plugins/org.eclipse.jst.common.annotations.core_1.1.300.v201004141630.jar,plugins/org.eclipse.jst.common.annotations.ui_1.1.300.v201002081900.jar,plugins/com.ibm.xtools.me2.umlsl_1.0.0.v20110405_2005.jar,plugins/com.ibm.ccl.erf.repository_1.60.0.v20100715_2051.jar,plugins/org.eclipse.emf.codegen_2.6.0.v20100914-1218.jar,plugins/org.eclipse.birt.source_2.6.1.v20100813.jar,plugins/com.ibm.xtools.umldt.rt.cpp.ui_1.50.0.v20110503_2037.jar,plugins/org.eclipse.emf.workspace.doc_1.3.0.v200901271819.jar,plugins/org.eclipse.jdt.core.manipulation_1.3.0.v20100520-0800.jar,plugins/com.ibm.xtools.mde.solution.transform_1.0.0.v20100715_2051.jar,plugins/com.ibm.xtools.uml.validation.profile.ui_7.60.300.v20110510_2201.jar,plugins/org.eclipse.tptp.platform.examples_4.4.0.v201005061600.jar,plugins/org.eclipse.wst.xsd.ui_1.2.305.v201104132127.jar,plugins/com.ibm.xtools.comparemerge.core.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.birt.chart.device.svg_2.6.2.r262_v20101230.jar,plugins/com.ibm.xtools.dodaf.ui.cshelp_7.0.1.v20110408_2147.jar,plugins/com.ibm.ccl.linkability.provider.reqpro_7.0.100.v20100715_2051.jar,plugins/org.eclipse.equinox.p2.engine.source_2.0.1.R36x_v20110201.jar,plugins/org.eclipse.tptp.test.tools.junit.plugin_4.6.1.v201101211050/,plugins/org.eclipse.ltk.ui.refactoring.source_3.5.0.v20100526-0800.jar,plugins/org.eclipse.wst.jsdt.manipulation.source_1.0.200.v201004150600.jar,plugins/org.eclipse.ui.ide_3.6.3.M20110511-1135.jar,plugins/com.ibm.xtools.umldt.rt.transform.viz.core_1.50.0.v20110326_0744.jar,plugins/org.eclipse.ltk.core.refactoring.source_3.5.101.r362_v20101117-0800.jar,plugins/org.eclipse.gmf_1.4.1.v20100720-0030.jar,plugins/com.ibm.xtools.umldt.rt.debug.ui_1.50.0.v20110429_1455.jar,plugins/com.ibm.etools.ftp.core_1.0.0.v20100715_2051.jar,plugins/org.eclipse.emf.common.ui.source_2.6.0.v20100914-1218.jar,plugins/org.eclipse.equinox.concurrent_1.0.100.v20100503.jar,plugins/org.eclipse.birt.report.data.adapter_2.6.2.r262_v20110215.jar,plugins/com.ibm.xtools.ras.repository.search.engine_7.0.0.v20100805_2013.jar,plugins/org.eclipse.wst.common.modulecore.ui_1.0.4.v201101101700.jar,plugins/com.ibm.xtools.umldt.rt.cpp.core_1.50.0.v20110325_2100.jar,plugins/com.ibm.xtools.publish.uml2_7.60.300.v20110510_2201/,plugins/com.ibm.xtools.umldt.transform.viz.ui_1.50.0.v20110405_2005.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.instance_7.60.100.v20100818_1448.jar,plugins/org.eclipse.osgi.util_3.2.100.v20100503.jar,plugins/org.eclipse.tptp.platform.welcome_4.6.0.v201005061600.jar,plugins/org.eclipse.equinox.jsp.jasper_1.0.201.R36x_v20101103.jar,plugins/org.eclipse.datatools.enablement.ibm.db2.luw_1.0.2.v201005211230.jar,plugins/com.ibm.xtools.emf.collections_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.umldt.rt.ui.diagrams_1.50.0.v20110326_0744.jar,plugins/net.sourceforge.lpg.lpgjavaruntime_1.1.0.v201004271650.jar,plugins/com.ibm.xtools.transform.java.jet2templates_1.0.100.v20110117_1549.jar,plugins/org.eclipse.datatools.modelbase.sql_1.0.4.v201002250945.jar,plugins/com.ibm.xtools.umlsljavatransformation_1.1.0.v20110331_1459.jar,plugins/com.ibm.cic.licensing.feature.uid_1.0.2.v20101007_1238.jar,plugins/org.eclipse.emf.mapping.ecore2ecore_2.5.0.v20100521-1847.jar,plugins/org.eclipse.jst.ws.jaxrs.ui.source_1.0.301.v201012020511.jar,plugins/org.mortbay.jetty.util_6.1.23.v201004211559.jar,plugins/org.eclipse.ui.workbench.source_3.6.2.M20110210-1200.jar,plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/,plugins/org.junit_3.8.2.v3_8_2_v20100427-1100/,plugins/com.ibm.xtools.reqpro.modelupgrade_7.0.401.v20110407_2222/,plugins/org.eclipse.ant.core_3.2.201.v20110203_r362.jar,plugins/org.eclipse.epf.richtext_1.5.0.v20080714-1745/,plugins/org.eclipse.jst.ws.doc.user_1.0.600.v201005192217.jar,plugins/com.ibm.xtools.patterns.ui.providers_7.60.0.v20100929_0755.jar,plugins/com.ibm.xtools.uml.ui_7.70.300.v20110514_0146.jar,plugins/com.ibm.xtools.transform.uml2.java5.varargextension_7.5.5.v20100929_0755.jar,plugins/com.ibm.xtools.sample.uml2.xsd.extension_1.0.20.v20110112_2333.jar,plugins/org.apache.batik.extension_1.6.0.v200805290154.jar,plugins/org.eclipse.emf.codegen.ui.source_2.6.0.v20100914-1218.jar,plugins/org.eclipse.birt.report.data.oda.sampledb.ui.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.transform.cpp.profile.feature.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.ccl.linkability.store.reqpro_7.0.200.v20100715_2051.jar,plugins/com.ibm.xtools.umldt.rt.umlal.core.resources_1.0.0.v20101203_1715.jar,plugins/com.ibm.process.context.rsx_7.0.0.v20100929_0755.jar,plugins/com.ibm.xtools.patterns.core_7.60.0.v20100929_0755.jar,plugins/org.eclipse.datatools.doc.user_1.7.0.20090521092446.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.providers.ide.source_1.2.0.v20090403-1720.jar,plugins/org.eclipse.equinox.security.win32.x86_1.0.200.v20100503.jar,plugins/org.apache.batik.xml_1.6.0.v200805290154.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.activity_7.60.200.v20110216_0205.jar,plugins/com.ibm.xtools.rumv.ui.workingsets_7.60.0.v20100715_2051.jar,plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar,plugins/org.eclipse.ui.intro.universal_3.2.402.r36_v20100702/,plugins/org.eclipse.equinox.p2.garbagecollector_1.0.100.v20100503.jar,plugins/org.eclipse.wst.command.env.core_1.0.205.v201004211805.jar,plugins/com.ibm.xtools.transform.core.doc.isv_7.0.400.v20110525_0547.jar,plugins/com.ibm.xtools.uml.navigator_7.60.300.v20110510_2201.jar,plugins/org.eclipse.core.databinding.property.source_1.3.0.I20100601-0800.jar,plugins/com.ibm.xtools.modeler.ui.viz.j2se_7.0.200.v20101021_2044.jar,plugins/org.eclipse.emf.transaction.examples_1.2.100.v200901271819.jar,plugins/org.eclipse.core.filesystem.win32.x86_1.1.201.R36x_v20100727-0745.jar,plugins/org.eclipse.tptp.platform.models_4.6.103.v201105161135.jar,plugins/org.eclipse.core.expressions.source_3.4.200.v20100505.jar,plugins/org.eclipse.emf.edit.ui.source_2.6.0.v20100914-1218.jar,plugins/com.ibm.xtools.transform.uml2.java5.morph_7.0.300.v20100929_0755.jar,plugins/com.ibm.xtools.ras.repository.client.workgroup_7.0.100.v20100805_2013/,plugins/org.eclipse.ui.navigator.resources_3.4.202.M20101124-0800.jar,plugins/org.eclipse.ecf.filetransfer_4.0.0.v20100906-1425.jar,plugins/org.eclipse.cdt.core.source_5.2.1.201102110609.jar,plugins/com.ibm.ccl.oda.emf.ui_1.60.200.v20101224_0201.jar,plugins/com.ibm.xtools.modeler.ui.views_7.60.200.v20101217_0201.jar,plugins/org.eclipse.uml2.codegen.ecore.ui_1.6.0.v201005031530.jar,plugins/com.ibm.ccl.tdi.reqpro.uml.traceability.ide.uid_1.0.2.v20110427_0740.jar,plugins/ilog.views.eclipse.graphlayout.runtime_8.7.6.v20101108/,plugins/com.ibm.help.common.rational.doc_7.6.0.v20110517_1103.jar,plugins/org.eclipse.datatools.sqltools.db.generic_1.0.0.v200906020900.jar,plugins/org.eclipse.help.appserver.source_3.1.400.v20100427.jar,plugins/org.eclipse.wst.ws.infopop_1.0.300.v200805140230.jar,plugins/org.eclipse.cdt.dsf_2.1.1.201102110609.jar,plugins/org.apache.lucene.analysis_1.9.1.v20100518-1140.jar,plugins/org.eclipse.wst.wsdl.ui_1.2.305.v201103170010.jar,plugins/org.apache.batik.css.source_1.6.0.v200912221622.jar,plugins/com.ibm.xtools.transform.authoring.uid_1.0.2.v20110127_0205.jar,plugins/org.eclipse.emf.ecore.change.edit.source_2.5.0.v20100521-1846.jar,plugins/org.eclipse.birt.core.ui_2.6.2.r262_v20101014.jar,plugins/com.ibm.xtools.transform.utility.marking_1.0.300.v20110525_0547.jar,plugins/com.ibm.xtools.transform.soa.util.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.apache.batik.transcoder_1.6.0.v200805290154.jar,plugins/com.ibm.xtools.ruml.base.feature.uid_1.0.2.v20110510_2201.jar,plugins/org.eclipse.wst.ws.parser_1.0.403.v201004211805.jar,plugins/com.ibm.xtools.modeler.ui.navigator_7.60.300.v20110510_2201.jar,plugins/com.ibm.ccl.welcome.roles.feature.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.birt.chart.ui.extension.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.wst.jsdt.debug.rhino.debugger.source_1.0.1.v201008170101.jar,plugins/org.eclipse.jst.jsf.doc.user_1.2.1.v20100827.jar,plugins/com.ibm.xtools.modeler.rt.ui.diagrams.statechart_1.50.0.v20110515_0735.jar,plugins/com.ibm.xtools.uml.transform.core.uid_1.0.2.v20101020_0109.jar,plugins/org.eclipse.gmf.common.source_1.2.0.v20100226-2359.jar,plugins/com.ibm.xtools.visualization.common.feature.uid_1.0.2.v20101020_0109.jar'/>
+ <property name='org.eclipse.update.site.list' value='features/com.ibm.xtools.viz.cpp.cshelp.feature_7.0.3.v20110408_2147/,features/com.ibm.ccl.preferenceharvester.feature.uid.feature_1.0.2.v20110217_1732/,features/com.ibm.ccl.linkability.provider.uml.ide.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.cic.licensing.feature_7.0.302.v20110513_1648/,features/org.eclipse.datatools.enablement.oda.feature_1.8.2.v201010181125-7A7T78DZRDKDFbGwFjNK/,features/org.eclipse.gef_3.6.2.v20110128-0100-777B381A4Bz06565376E32322/,features/com.ibm.cic.licensing.flexlm.win32.feature_1.0.1.v20110515_2041/,features/com.ibm.support.ui.feature_1.1.2.v20110330_1815/,features/org.eclipse.jst.enterprise_sdk.feature_3.2.4.v201103101400-7737784gALLieKVO9_NxbvLL8AXf1UZMokTIC1qU/,features/com.ibm.xtools.model.execution.cshelp.feature_1.0.0.v20110408_2147/,features/org.eclipse.epf.richtext.feature_1.5.0.v20080820-1636-37D-9oA55S5M9H28O9O/,features/org.eclipse.datatools.enablement.sqlite.feature_1.8.2.v201010181125-541AkF79P7N8NAQ77/,features/org.eclipse.equinox.server.core_1.0.1.R36x_v20101007-7K7QEtDVci4YrnH_88QAH/,features/com.ibm.ccl.soa.sketcher.cshelp.feature_1.0.0.v20110408_2147/,features/org.eclipse.jst.web_core.feature_3.2.4.v201103231838-7Q7BG7OFE9LeABBX5jb4Ltojqz-7oEpj5963/,features/org.eclipse.emf.query.sdk_1.4.0.v20100428-2315-67J-95GFz01DOIuNNRTWK_NPj507/,features/org.eclipse.wst.jsdt_sdk.feature_1.2.4.v201103240300-47A7990LCFLLkMQOsQaRWPjPf76vAKhMXQNBaFOq/,features/com.ibm.cic.licensing.itlm.feature_7.0.1.v20110105_1929/,features/com.ibm.xtools.comparemerge.core.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.patterns.examples_feature_7.60.0.v20100929_0755/,features/com.ibm.ccl.ua.wizards.feature.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.datatools.enablement.sap.feature_1.8.2.v201010181125-540AkF77g7V9N9e77/,features/com.ibm.xtools.vizclient.uid.feature_1.0.2.v20101020_0109/,features/com.ibm.xtools.visualization.modeler.required.feature_7.0.200.v20101021_2044/,features/com.ibm.xtools.publish.ui.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.patterns.core.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.rcp.source.R362patch_1.0.0/,features/com.ibm.xtools.ras.repository.client.xde.ui.feature_7.0.1.v20100805_2013/,features/com.ibm.ccl.erf.core.birt.feature.uid.feature_1.0.2.v20110127_0205/,features/org.eclipse.emf_2.6.1.v20100914-1218/,features/org.eclipse.emf.common_2.6.0.v20100914-1218/,features/com.ibm.xtools.rose.feature_7.0.0.v20110517_1415/,features/com.ibm.xtools.ras.export.tasks.feature.uid.feature_1.0.2.v20101019_0105/,features/org.eclipse.gmf.runtime.notation_1.4.1.v20100909-1000-37708s73533F5C1479I/,features/com.ibm.xtools.ras.repository.client.workgroup.ui.feature_7.0.1.v20100805_2013/,features/com.ibm.xtools.uml.profile.tooling.cshelp.feature_1.0.0.v20090306_1924/,features/com.ibm.ccl.help.feedback.feature.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.ras.documentation.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.pluglets.feature.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.emf.source_2.6.1.v20100914-1218/,features/com.ibm.xtools.jet.feature.uid.feature_1.0.2.v20110510_2201/,features/com.ibm.ccl.mapping.feature_1.0.300.v20110513_0101/,features/com.ibm.xtools.ras.common.core.feature_7.0.300.v20100805_2013/,features/com.ibm.xtools.transform.jet.ui.cshelp.feature_7.2.0.v20100618_1742/,features/com.ibm.xtools.analysis.uml_feature.uid.feature_1.0.2.v20110125_0206/,features/com.ibm.xtools.vizumlv1client.uid.feature_1.0.2.v20101020_0109/,features/com.ibm.xtools.transform.uml2.sm.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.cic.licensing.flexlm.feature_7.0.403.v20110509_2210/,features/com.ibm.xtools.transforms.xsd.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.xtools.uml.rt.feature.uid.feature_1.0.2.v20110515_0735/,features/com.ibm.xtools.publish.ui.feature_7.60.0.v20100715_2051/,features/org.eclipse.tptp.platform.report_4.4.1.v201009092123-7D7A09oB5855O5Q9I78/,features/org.eclipse.datatools.sqldevtools.ddlgen.feature_1.8.2.v201010181125-7A-3F7RZHLz-Hz-OlPz0Qf/,features/org.eclipse.equinox.server.p2_1.0.1.R36x_v20101007-7x7IFI3FOf7yk63X6z0kz-Z2T158/,features/org.eclipse.jet.sdk_1.1.1.v201101271243-42186A5NsKEQPHRQeFaJS4A35/,features/com.ibm.ccl.welcome.roles.feature.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.tptp.platform.report.birt_4.4.1.v201101261720-797908s7354395A5983/,features/com.ibm.xtools.publish.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.umldt.rt.c.resources.feature_1.0.0.v20110325_2100/,features/org.eclipse.tptp.platform.batik_4.5.0.v201005032111-7H8H-FE-z0VXWZcyEYyUI/,features/org.eclipse.gef.sdk_3.6.2.v20110128-0100-7G7R77A5WNcHQDbhX8JWOYLOSeRJ/,features/org.eclipse.emf.transaction_1.4.0.v20100428-2315-377-8s734C3E7D15D6B/,features/org.eclipse.tptp.test.doc.user_4.5.0.v201005032111-54-7w312116383211/,features/org.eclipse.help_1.2.1.r362_v20101111-7e7jEVFDr6xg-LSlC_z0w1D/,features/com.ibm.xtools.codeview.uml.feature.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.xsd.mapping.editor_2.6.0.v20100914-1218/,features/com.ibm.xtools.uml.rt.feature_1.50.0.v20110525_0749/,features/com.ibm.xtools.uml.transform.rename.java_7.0.412.v20101104_0014/,features/org.eclipse.emf.query.ocl.source_1.4.0.v20100428-2315-3--7w311A232602735/,features/com.ibm.xtools.traceability.cshelp.feature_7.0.0.v20060924-77--7w31171_35/,features/com.ibm.ccl.feedreader.feature_1.0.5.v20101006_0104/,features/org.eclipse.tptp.platform.profile.server_4.5.3.v201104210930-7H7F5AkF7B97QBOBNHA/,features/com.ibm.xtools.umldt.rt.j2se.feature.uid.feature_1.0.2.v20110330_0744/,features/com.ibm.ccl.common.splash.feature.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.jst.enterprise_core.feature.source_3.2.3.v201102071500-52FMUAkF7B87PAT8SA8/,features/com.ibm.support.feature_1.1.3.v20110330_1815/,features/com.ibm.xtools.ras.export.tasks.feature_7.0.1.v20100805_2013/,features/com.ibm.ccl.welcome.roles.feature_7.0.0.v20100715_2051/,features/com.ibm.xtools.transform.uml2.mapping.uid.feature_1.0.2.v20101020_0109/,features/com.ibm.xtools.ocleditor.sample.ocl.feature_1.2.2.v20110408_2147/,features/com.ibm.xtools.comparemerge.cshelp.feature_7.0.1.v20090708_1529/,features/com.ibm.process.rsase.feature.uid.feature_1.0.2.v20101006_0655/,features/org.eclipse.ocl.all_3.0.2.R30x_v201101181635-77-37EB3HoFvCkw5HyIBJDNGHCCG/,features/com.ibm.xtools.transform.ui.uid.feature_1.0.2.v20110510_2201/,features/org.eclipse.wst.web_core.feature.source_3.2.4.v201103170600-7E7AFIAAJrn5WMH1wVGEpTILWIDTYd/,features/com.ibm.xtools.ras.documentation.feature_7.0.100.v20100805_2013/,features/com.ibm.xtools.umlmodel.sample.feature_7.1.5.v20100201_0328/,features/org.eclipse.wst.server_userdoc.feature_3.1.120.v201104182004-20DF7w312215222664/,features/com.ibm.xtools.comparemerge.emf_7.60.300.v20110510_2201/,features/com.ibm.etools.ftp.feature.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.codeview.uml.feature_1.0.0.v20110515_0735/,features/com.ibm.ccl.oda.emf.feature.uid.feature_1.0.2.v20110127_0205/,features/com.ibm.xtools.traceability_feature_7.60.0.v20101006_0655/,features/com.ibm.help.common.feature_7.6.0.v20110531_2151/,features/org.eclipse.emf.ecore_2.6.1.v20100914-1218/,features/org.eclipse.tptp.trace.arm_4.3.0.v201005032111-793-8s73533E3H5F5C/,features/com.ibm.xtools.transform.core.cshelp.feature_7.0.8.v20090803_1558/,features/org.eclipse.datatools.enablement.oda.designer.feature_1.8.2.v201010181125-3328s735357795A78/,features/org.eclipse.emf.transaction.sdk_1.4.0.v20100428-2315-777N-9AZP-D1aQtjUklrYl0eU20D/,features/com.ibm.cic.licensing.common.ui.feature_7.1.302.v20101007_1238/,features/com.ibm.xtools.umldt.rt.c.feature_1.0.0.v20110515_0735/,features/com.ibm.xtools.transform.uml2.sm.feature_1.0.100.v20110117_1549/,features/org.eclipse.emf.edit_2.6.0.v20100914-1218/,features/com.ibm.xtools.umldt.rt.j2se.resources.feature_1.0.0.v20110325_2100/,features/com.ibm.xtools.ras.export.ui.ide.feature_7.0.1.v20100805_2013/,features/com.ibm.rcp.dombrowser.feature_6.2.1.20090925-1604/,features/org.eclipse.birt_2.6.2.r262_v20101008-9iF7A9JGHMBCRz-R8tbxRel8kQrI/,features/com.ibm.process.rsx.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.xtools.transform.fuse.uid.feature_1.0.2.v20101020_0109/,features/com.ibm.rsaz.analysis.architecture_feature_7.0.0.v20101215_2153/,features/com.ibm.rcp.rte.feature_6.2.1.20090925-1604/,features/org.eclipse.xsd.doc_2.6.0.v20100914-1218/,features/com.ibm.xtools.uml.profile.tooling.feature_7.60.0.v20110208_0023/,features/com.ibm.process.rsx.feature_7.0.1.v20100929_0755/,features/org.eclipse.draw2d.sdk_3.6.2.v20110128-0100-7A7G38yE6F08CAO499J539958x42/,features/com.ibm.xtools.traceability.reqpro_feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.cic.licensing.flexlm.feature.uid.feature_1.0.2.v20110228_1402/,features/com.ibm.xtools.transform.uml.viz.cshelp.feature_7.0.1.v20090306_1924/,features/org.eclipse.birt.chart.osgi.runtime_2.6.2.r262_v20101025-7pA07UFXyNCqK4YeHKOHG4/,features/com.ibm.xtools.ras.common.ui.ide.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.ccl.mapping.feature.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.datatools.enablement.msft.feature_1.8.2.v201010181125-542AkF79P7QCP9SDB/,features/com.ibm.xtools.ras.impord.core.feature_7.0.200.v20100805_2013/,features/com.ibm.cic.licensing.common.ui.feature.uid.feature_1.0.2.v20101007_1238/,features/com.ibm.xtools.comparemerge.help.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.wst.ws_userdoc.feature_3.1.200.v201007151546-44FO-9oB5855O8M9JHH/,features/com.ibm.rsar.compatibility_feature_7.0.100.v20090930_2207/,features/com.ibm.xtools.dodaf_7.0.801.v20100929_0755/,features/com.ibm.xtools.modelerclient.uid.feature_1.0.2.v20110203_0202/,features/com.ibm.xtools.ruml.base.feature.uid.feature_1.0.2.v20110510_2201/,features/com.ibm.ccl.linkability.provider.resource.ide.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.transform.uml2.mapping_7.6.10.v20110525_0547/,features/com.ibm.xtools.ras.impord.ui.ide.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.transform.java.uml_7.5.800.v20110527_0030/,features/com.ibm.cic.install.launcher.feature_1.0.400.v20100222_2233/,features/com.ibm.xtools.umlal.execution.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.xtools.publish.ui.birt.feature.uid.feature_1.0.2.v20101019_0105/,features/org.eclipse.pde.R362patch_1.0.2/,features/com.ibm.xtools.ras.impord.tasks.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.tdi.reqpro.resource.ide_7.0.400.v20100715_2051/,features/com.ibm.ccl.oda.emf.feature_1.60.200.v20101224_0201/,features/org.eclipse.gmf.runtime.thirdparty.source_1.1.0.v20100511-1424-7I850FCnk296ZOs5Y2KHaw311A16/,features/com.ibm.xtools.ruml.base.feature_7.70.300.v20110518_0102/,features/com.ibm.ccl.erf.core.birt.feature_1.60.300.v20110510_2201/,features/com.ibm.xtools.ras.common.ui.ide.feature_7.1.100.v20100805_2013/,features/com.ibm.xtools.comparemerge.clearcasedirectory_7.60.0.v20100715_2051/,features/com.ibm.xtools.uml.rt.resources.feature_1.0.0.v20110515_0735/,features/com.ibm.xtools.uml2.bom.integration.feature_7.0.350.v20101006_0655/,features/com.ibm.xtools.mep.feature.uid.feature_1.0.2.v20110517_0745/,features/com.ibm.xtools.umlal.feature_1.0.100.v20110515_0735/,features/org.eclipse.cdt.gnu.build.source_7.0.0.201102110609/,features/com.ibm.cic.licensing.lum.win32.feature_7.0.3.v20110330_2243/,features/com.ibm.xtools.transform.fuse_7.0.400.v20100715_2051/,features/com.ibm.ccl.welcome.bits.feature.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.cdt.gnu.dsf_2.1.0.201102110609/,features/com.ibm.xtools.ras.export.tasks.ide.feature.uid.feature_1.0.2.v20101019_0105/,features/org.eclipse.emf.validation.ocl.source_1.4.0.v20100428-2315-23-7w3121133502768/,features/org.eclipse.emf.ecore.sdo.edit_2.4.0.v200801221930/,features/com.ibm.ccl.erf.emf.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.comparemerge.core_7.60.300.v20110510_2201/,features/org.eclipse.tptp.platform.instrumentation.ui_4.3.2.v201101261720-797918s735435695C83/,features/com.ibm.xtools.transform.soa.util.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.ccl.tdi.reqpro.uml.traceability.ide.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.xtools.tdi.reqpro.uml.ide.uid.feature_1.0.2.v20101020_0109/,features/com.ibm.xtools.umldt.rt.umlal.feature_1.0.0.v20110518_0733/,features/com.ibm.xtools.uml2.bom.integration.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.ccl.help.state.feature_1.0.1.v20100715_2051/,features/org.eclipse.tptp.test_4.5.102.v201104210930-7L7N8aBgJ9DJ9YGPISM_/,features/com.ibm.xtools.reqpro.ide.win32.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.tdi.reqpro.ide_7.1.402.v20100715_2051/,features/com.ibm.xtools.rmp.base_7.80.310.v20110525_2117/,features/com.ibm.xtools.comparemerge.team_7.60.100.v20100916_0104/,features/org.mortbay.jetty.jasper.feature_1.0.150.v20101020_0109/,features/org.eclipse.ocl.uml.source_3.0.2.R30x_v201101181635-4-17S41yaw312212292746/,features/org.eclipse.equinox.server.p2.R362patch_1.0.0/,features/com.ibm.ccl.linkability.provider.j2se.ide.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.platform.R362patch_1.0.6/,features/org.eclipse.platform.source.R362patch_1.0.6/,features/com.ibm.xtools.umldt.rt.cpp.resources.feature_1.0.0.v20110325_2100/,features/com.ibm.xtools.ras.export.core.feature_7.0.300.v20100805_2013/,features/com.ibm.xtools.me2.feature_1.0.0.v20110515_0735/,features/com.ibm.xtools.vizclient_7.60.0.v20100715_2051/,features/com.ibm.xtools.uml.transform.rename.java.uid.feature_1.0.2.v20101020_0109/,features/com.ibm.rsx.prodover.doc.feature_7.1.2.v20110408_2147/,features/org.eclipse.birt.example_2.6.2.r262_v20101008-7F7e7CDBRmTc_XEMHBHMm/,features/org.eclipse.jst.server_ui.feature_3.2.4.v20110323-7A5FEn9xFc7TCFKWBBINHK43A/,features/org.eclipse.wst.jsdt.feature.patch_3.2.4.v201105242202-317B8s73553D6D755B/,features/com.ibm.ccl.linkability.provider.uml.ide_7.0.403.v20110224_1852/,features/org.eclipse.emf.converter.source_2.6.0.v20100914-1218/,features/org.eclipse.wst.ws_ui.feature_3.2.4.v201103170600-7I78FZLEtEoO4cC9yKz-eSNz0B07ngOrgut6FPKH/,features/com.ibm.xtools.traceability.viz_feature_7.60.0.v20100929_0755/,features/org.eclipse.pde_3.6.2.r362_v20110203-7b7mFL2FET3dhHalh1iNZtL/,features/com.ibm.xtools.reqpro.ide.win32_7.2.102.v20101113_0204/,features/org.eclipse.wst.web_userdoc.feature_3.2.0.v201005241510-31Eo8s734B3E4H7799/,features/com.ibm.xtools.mep.feature_1.0.0.v20110518_0733/,features/com.ibm.etools.performance_1.2.300.v20110502_0026/,features/com.ibm.rational.rsart_80.product.feature_8.0.0.v20110412/,features/org.eclipse.jst.enterprise_ui.feature.source_3.2.4.v201104201417-7b7HHfYFSK2WDvSHB0pTyNZ7TpYo/,features/org.eclipse.ocl.core.sdk_3.0.2.R30x_v201101181635-7A-582I6-L5K8OvL0K41MTBLRWIg/,features/com.ibm.xtools.transform.cpp.profile.feature.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.gmf.tooling.source_2.3.0.v20100421-2359-7c7MFO2FLWUl0im8BjQMa9f/,features/org.eclipse.wst.web_ui.feature.source_3.2.4.v201103170600-7O7CFbbEMf84sL-GEz-v6KOf-MfOa4C140IylMHO/,features/com.ibm.xtools.transform.uml2.java.sm.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.xtools.vizumlv1client_7.0.1200.v20100715_2051/,features/org.eclipse.xsd.editor_2.6.0.v20100914-1218/,features/org.eclipse.tptp.platform.integration.pde_4.5.2.v201101261720-5417w312212322161/,features/com.ibm.etools.ftp.feature_1.0.100.v20100715_2051/,features/org.eclipse.m2m.qvt.oml.common_2.1.0.v20100606-1530-7908_AkF7AG8KEM3CMFA/,features/com.ibm.ccl.erf.emf.examples.feature_1.60.0.v20100715_2051/,features/com.ibm.xtools.ras.export.ui.ide.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.ccl.erf.core.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.rmp_7.60.300.v20110510_2201/,features/com.ibm.xtools.comparemerge.gmf.uid.feature_1.0.2.v20110520_2214/,features/com.ibm.xtools.transform.ide.cshelp.feature_7.0.2.v20090306_1924/,features/com.ibm.xtools.transform.uml2.viz.uid.feature_1.0.2.v20101020_0109/,features/com.ibm.xtools.patterns.sample.feature_7.2.1.v20100201_0328/,features/com.ibm.xtools.ras.impord.core.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.petal.profile.feature_7.0.0.v20100929_0755/,features/com.ibm.xtools.patterns.ui.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.cdt.gnu.build_7.0.0.201102110609/,features/com.ibm.xtools.comparemerge.clearcaseversioncheck.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.emf.query.ocl_1.4.0.v20100428-2315-3--7w311A232602735/,features/com.ibm.xtools.traceability_feature.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.datatools.enablement.mysql.feature_1.8.2.v201010181125-546AkF78Y7R9PAX77/,features/com.ibm.xtools.transform.authoring.cshelp.feature_7.1.3.v20090306_1924/,features/com.ibm.xtools.mdx.profiles.feature.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.emf.mapping.ecore.source_2.6.0.v20100914-1218/,features/org.eclipse.datatools.enablement.hsqldb.feature_1.8.2.v201010181125-67C2AqGBJVKbHlH1GU7QBR/,features/org.eclipse.emf.codegen.ui.source_2.6.0.v20100914-1218/,features/com.ibm.xtools.transform.uml.java.cshelp.feature_7.1.7.v20110408_2147/,features/org.eclipse.tptp.test.recorders.url_4.7.0.v201005032111-797D-8s73533D75799J/,features/org.eclipse.gmf.sdk_2.3.0.v20100508-1742-7779-95sDcLbMSsdu7Xz-xO-z0oe/,features/com.ibm.ccl.erf.core.feature_1.60.0.v20100715_2051/,features/com.ibm.xtools.ras.repository.client.workgroup.ui.feature.uid.feature_1.0.2.v20101019_0105/,features/org.eclipse.datatools.connectivity.oda.designer.core.feature_1.8.2.v201010181125-7B7C7ACcNBGLEOIeD_SO/,features/com.ibm.xtools.rasset.cshelp.feature_7.0.2.v20110408_2147/,features/com.rational.clearcase_7.6.0.v201105111445/,features/org.eclipse.emf.common.ui.source_2.6.0.v20100914-1218/,features/org.eclipse.emf.query.doc_1.4.0.v20100428-2315-33-8s733L466A3AE72/,features/com.ibm.xtools.reqpro.modelupgrade.feature.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.emf.mapping.ui_2.6.0.v20100914-1218/,features/com.ibm.process.feature_7.1.0.v20100715_2051/,features/com.ibm.xtools.analysis.model_feature_7.1.0.v20100715_2051/,features/com.ibm.rcp.textanalyzer.feature_6.2.1.200909031836/,features/org.eclipse.pde.source_3.6.2.r362_v20110203-7b7mFL2FET3dhHalh1iNZtL/,features/com.ibm.xtools.dodaf.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.ccl.oda.diagram.feature_1.60.0.v20100715_2051/,features/com.ibm.ccl.feedreader.feature.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.m2m.qvt.oml.editor_2.1.0.v20100606-1530-30-7w3121171702641/,features/org.eclipse.wst.xml_ui.feature.source_3.2.4.v201103170600-7H7AFUaDxumQJOs8hggQZ6_jl1EOJGNlUsOsTM/,features/com.ibm.xtools.csguides.feature_7.0.200.v20100929_0755/,features/org.eclipse.datatools.connectivity.feature_1.8.2.v201010181125-7C7b8mEt1Zwkn9kfkUHHsoP_3to/,features/org.eclipse.draw2d.source_3.6.2.v20110128-0100-4517w3122123901211/,features/com.ibm.xtools.transform.uml2.cpp.feature_7.5.10.v20110525_1447/,features/com.ibm.xtools.pluglets.doc.isv.feature_7.0.3.v20110106_1550/,features/com.ibm.ccl.oda.uml.feature_1.60.200.v20110115_0201/,features/com.ibm.xtools.modviz.common.feature_7.60.0.v20100715_2051/,features/ilog.views.eclipse.graphlayout.gmf.features_8.7.6.v20101108/,features/com.ibm.xtools.analysis.codereview.java.globalization_feature_7.0.300.v20100909_1452/,features/com.ibm.ccl.linkability.ide.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.transform.ui_7.100.300.v20110510_2201/,features/com.ibm.xtools.tdi.reqpro.uml.ide_7.0.402.v20100715_2051/,features/com.ibm.xtools.transform.authoring.doc.isv_7.2.0.v20110102_0201/,features/org.eclipse.emf.transaction.source_1.4.0.v20100428-2315-377-8s734C3E7D15D6B/,features/org.eclipse.emf.ecore.sdo.editor_2.4.0.v200801221930/,features/org.eclipse.wst.server_core.feature.source_3.2.4.v20110323-30F8Z8s73553A3Da2622/,features/org.eclipse.tptp.platform.runtime_4.7.3.v201104210930-7u847H8kkkG2m4bQGLU1GUOv3hUD/,features/com.ibm.xtools.umldt.rt.j2se.feature_1.50.0.v20110429_1455/,features/com.ibm.ccl.erf.emf.feature_1.60.0.v20100715_2051/,features/org.eclipse.gmf.source_1.4.2.v20110201-1000-7d9A7FFYnmMD7_nYQqNhbc2tsgXc/,features/org.eclipse.wst.xml_core.feature.source_3.2.4.v201103231834-7C7OFXfF7RZHQLInN2MhWd/,features/org.eclipse.jdt_3.6.2.r362_v20101117-0800-7z8XFW6FLFlmjJcvz03jyeFBLS_F/,features/com.ibm.xtools.codeview.feature_1.0.0.v20110503_2037/,features/com.ibm.cic.licensing.itlm.feature.uid.feature_1.0.2.v20100813_2252/,features/com.ibm.xtools.ras.repository.ui.feature_7.0.200.v20100805_2013/,features/org.eclipse.rcp_3.6.2.r362_v20101104-9SAxFMKFkSAqi8axkv1ZjegmiBLY/,features/com.ibm.xtools.tdi.reqpro.j2ee.ide.uid.feature_1.0.2.v20101020_0109/,features/com.ibm.ccl.linkability.provider.j2ee.ide_7.0.300.v20100715_2051/,features/com.ibm.xtools.viz.core.cshelp.feature_7.0.6.v20110408_2147/,features/org.eclipse.datatools.enablement.feature_1.8.2.v201010181125-7J8x7UBWwUN6z02z-fiI_w4x4uLf/,features/com.ibm.xtools.transform.uml.cpp.cshelp.feature_7.1.6.v20110408_2147/,features/org.eclipse.jst.web_core.feature.patch_3.2.4.v201105162026-21Bm7w312216273137/,features/com.ibm.support.errorreport.ui.feature_1.0.3.v20110502_0026/,features/com.ibm.ccl.soa.deploy.sketcher.feature_1.0.501.v20110525_0749/,features/com.ibm.xtools.umldt.rt.c.feature.uid.feature_1.0.2.v20110315_0754/,features/com.ibm.cic.licensing.feature.uid.feature_1.0.2.v20101007_1238/,features/org.eclipse.emf.ecore.edit.source_2.6.0.v20100914-1218/,features/org.eclipse.emf.workspace.source_1.4.0.v20100428-2315-36-8s734C367E3CBC7/,features/com.ibm.xtools.modviz.common.base.feature_7.60.200.v20110210_0202/,features/com.ibm.rational.clearcase.ccrefresh_7.6.0.v201105111445/,features/com.ibm.xtools.traceability.reqpro_feature_7.60.0.v20110527_1732/,features/com.ibm.ccl.soa.deploy.sketcher.ide.feature_1.0.501.v20110524_0741/,features/com.ibm.xtools.umldt.rt.umlal.feature.uid.feature_1.0.2.v20110405_2005/,features/org.eclipse.wst.server_sdk.feature_3.2.4.v20110323-7838g90K9LSlN-Vem6LbeU19l-yDz0YdrvGQNKJk/,features/org.eclipse.jst.enterprise_ui.feature.patch_3.2.4.v201105171500-30FA38s73553D5G5G48/,features/org.eclipse.gmf.examples.runtime.ui.pde_1.4.0.v20100511-1355-2307w3121183101141/,features/com.ibm.xtools.umldt.rt.transform.java.cshelp.feature_1.0.0.v20110411_1749/,features/org.eclipse.datatools.enablement.sybase.feature_1.8.2.v201010181125-7E45F9NiNZVR6a1PMVn/,features/org.eclipse.tptp.test.runtime_4.5.102.v201104210930-7H7I8b7VtKB4xQUp2oyKHy19w8-Q/,features/org.eclipse.wst.common_core.feature.source_3.2.4.v201103101400-7B7DFEuF7RZHOaLjSqMqRK/,features/org.eclipse.cdt.p2_1.0.0.201102110609/,features/org.eclipse.datatools.enablement.apache.derby.feature_1.8.2.v201010181125-77778fBmKDNOMgJvJ8Of7QBR/,features/com.ibm.ccl.tdi.reqpro.uml.traceability.ide_7.0.401.v20101014_2159/,features/com.ibm.xtools.analysis.codereview.java.security_feature_7.0.300.v20100517_1740/,features/org.eclipse.wst.web_ui.feature_3.2.4.v201103170600-7O7CFbbEMf84sL-GEz-v6KOf-MfOa4C140IylMHO/,features/org.eclipse.pde.source.R362patch_1.0.2/,features/org.eclipse.ocl_3.0.2.R30x_v201101181635-79-7K8qD6z-DtD7E8BB753F53/,features/org.eclipse.gmf.runtime.thirdparty_1.4.0.v20100521-1113-7P8W5FHV2CNOiy0niXURaw311A16/,features/com.ibm.xtools.comparemerge.team.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.comparemerge.help_7.0.200.v20100715_2051/,features/org.eclipse.jst.enterprise_userdoc.feature_3.3.10.v201104200444-62FSgBgJ9EA9YGdILLd/,features/org.eclipse.datatools.enablement.ingres.feature_1.8.2.v201010181125-540AkF78Y7VCOCQDB/,features/com.ibm.xtools.ras.repository.client.xde.ui.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.comparemerge.clearcaseversioncheck_7.60.0.v20100715_2051/,features/org.eclipse.tptp.platform.trace_4.5.3.v201104210930-7L7O8iBgJ9EC9YBcESFJ/,features/org.eclipse.tptp.platform.jvmti_4.5.3.v201104210930-797A68s73553D5F559D/,features/com.ibm.xtools.richtext.uid.feature_1.0.2.v20110516_2128/,features/org.eclipse.datatools.sqldevtools.feature_1.8.2.v201010181125-7N7y7JFDrhqbGIFUNhcFodMMD2J0/,features/com.ibm.xtools.visualization.common.feature_7.5.100.v20110510_2201/,features/org.apache.fop_0.20.5.1/,features/com.ibm.xtools.visualization.common.feature.uid.feature_1.0.2.v20101020_0109/,features/org.eclipse.emf.ecore.edit_2.6.0.v20100914-1218/,features/com.ibm.xtools.analysis.uml_feature_7.1.0.v20110125_0206/,features/org.eclipse.emf.validation.sdk_1.4.0.v20100428-2315-67J-96SGR35WNqZRZfmQnghI6uFA/,features/org.eclipse.datatools.connectivity.doc.user_1.8.2.v201010181125-37D-7733L3D753L7BBF/,features/org.eclipse.equinox.p2.user.ui.source_2.0.1.r361_v20100903-897HFa-FX0z-z-ntoaavz0JPX628/,features/com.ibm.xtools.me2.feature.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.jet.doc_1.1.0.v201006011447-20-7w312114362635/,features/org.eclipse.tptp.platform.commons.logging_4.5.0.v201005032111-2-37w312116191612/,features/com.ibm.xtools.umldt.rt.cpp.feature_1.50.0.v20110518_0733/,features/com.ibm.xtools.transform.uml2.java.sm.feature_1.0.100.v20110420_0731/,features/com.ibm.xtools.visualization.cdt.feature_7.5.0.v20110412_0735/,features/com.ibm.xtools.transform.cpp.profile.feature_7.5.10.v20110127_0855/,features/org.eclipse.jst.common.fproj.enablement.jdt_3.2.2.v201008170019-377AB8s73533J5J759F/,features/org.eclipse.wst.common_sdk.feature_3.2.4.v201103101400-795AG9xPEHVX5Pz0qmk0ZhtEvs5Zt1TuTDQ105la/,features/com.ibm.xtools.transforms.java.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.eclipse.sdk.plugin.only_3.6.2.v201102260852/,features/com.ibm.xtools.modeler.feature_7.70.300.v20110516_2128/,features/com.ibm.xtools.modeler.base.feature.uid.feature_1.0.2.v20110516_2128/,features/com.ibm.xtools.analysis.model_feature.uid.feature_1.0.2.v20101019_0105/,features/org.eclipse.emf.doc_2.6.0.v20100914-1218/,features/org.eclipse.emf.codegen.ecore_2.6.1.v20100914-1218/,features/com.ibm.xtools.ras.export.core.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.modeler.feature.uid.feature_1.0.2.v20110513_0101/,features/org.eclipse.datatools.enablement.ibm.feature_1.8.2.v201010181125-7F47SFC7sRbrSZope9vW/,features/com.ibm.xtools.patterns.core_7.60.100.v20100929_0755/,features/com.ibm.help.common.rational.remote.feature_7.6.0.v20110527_2039/,features/org.eclipse.uml2.doc_3.1.0.v201005281015/,features/com.ibm.cic.licensing.lum.feature.uid.feature_1.0.2.v20100813_2252/,features/org.eclipse.xsd.ecore.converter_2.6.0.v20100914-1218/,features/com.ibm.xtools.modeler.cshelp.feature_7.0.2.v20090306_1924/,features/org.eclipse.wst.server_ui.feature.source_3.2.4.v20110323-7B4FDgAtJcbuEKOlpFPMJIjBD33/,features/com.ibm.ccl.linkability.provider.resource.ide_7.0.400.v20100715_2051/,features/com.ibm.rsaz.analysis.commandline.core_feature_7.0.0.v20091003_0917/,features/com.ibm.xtools.uml.rt.helper.feature_1.0.0.v20110525_0749/,features/com.ibm.xtools.transform.soa.util.feature_8.0.200.v20110416_0731/,features/org.eclipse.birt.chart_2.6.2.r262_v20101008-7f9T7OFPWowQ1naKt1Wwu4/,features/com.ibm.xtools.dodaf.ui.cshelp.feature_7.0.1.v20110408_2147/,features/org.eclipse.birt.doc_2.6.2.r262_v20101008-3507w31211924/,features/com.ibm.xtools.patterns.core.doc.isv_7.60.0.v20110112_2333/,features/com.ibm.xtools.dptk.help.feature_1.1.1.v20110211_1741/,features/com.ibm.xtools.csguides.win32.feature_7.0.300.v20100929_0755/,features/com.ibm.xtools.mdx.profiles.feature_7.0.200.v20110407_2222/,features/org.eclipse.emf.mapping_2.6.0.v20100914-1218/,features/com.ibm.xtools.comparemerge.emf.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.rsar.analysis.reporting.oda.base.compatability_feature_7.0.100.v20091130_2021/,features/org.eclipse.wst.jsdt.feature.source_1.2.4.v201103240300-7C78FGYF9JgLWPMA_ENpYd/,features/org.eclipse.wst.common.fproj_3.2.3.v201101121727-377AC8s73543C6H4A5H/,features/com.ibm.xtools.codeview.j2se.feature_1.0.0.v20110503_2037/,features/com.ibm.xtools.dodaf.report_7.0.300.v20100929_0755/,features/org.eclipse.emf.mapping.ui.source_2.6.0.v20100914-1218/,features/com.ibm.xtools.ras.repository.ui.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.pluglets.feature_7.0.100.v20100715_2051/,features/org.eclipse.wst.ws_wsdl15.feature_1.5.300.v201005241450-2407w312116191741/,features/com.ibm.etools.performance.uid.feature_1.0.2.v20110414_0031/,features/com.ibm.xtools.transforms.xsd.profile.feature_1.0.0.v20110504_2111/,features/com.ibm.ccl.f1.mapping.ui.feature_1.0.1.v20090306_1011/,features/org.eclipse.m2m.qvt.oml_3.0.1.v20100818-1530-7B11AkF7AG8VAT3BRLA/,features/com.ibm.xtools.ras.repository.core.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.ccl.da.dw.feature.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.umlal.profiles.feature.uid.feature_1.0.2.v20110415_0734/,features/com.ibm.xtools.visualization.cdt.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.ccl.linkability.provider.j2se.ide_7.0.401.v20100715_2051/,features/org.eclipse.tptp.trace.arm.ui_4.4.1.v201009092123-797708s73533H3I6A56/,features/com.ibm.xtools.patterns.cshelp.feature_7.0.1.v20090306_1924/,features/com.ibm.rup.cshelp.doc.feature_7.0.1.v20090306_1011/,features/com.ibm.rsaz.analysis.codereview_feature_7.0.0.v20100914_1840/,features/com.ibm.rsaz.analysis_feature_7.0.0.v20101215_2153/,features/org.eclipse.jst.web_ui.feature_3.2.4.v201103231838-7F77FJcC25Tkfz-8pggwPyqQj55b71NDjuB2IcyF/,features/com.ibm.xtools.modelerclient_7.60.300.v20110512_0102/,features/org.eclipse.platform_3.6.2.r362_v20110210-9gF78Gs1FrIGnHDHWkEcopoN8AmxeZflGDGKQi/,features/com.ibm.cic.planverifier.feature_1.1.1.v20110510_2201/,features/org.eclipse.emf.edit.ui_2.6.0.v20100914-1218/,features/org.eclipse.xsd_2.6.0.v20100914-1218/,features/com.ibm.xtools.visualization.j2se.feature_7.6.0.v20110514_0146/,features/com.ibm.xtools.rjcb.core.feature_7.0.2.v20100715_2051/,features/org.eclipse.emf.edit.source_2.6.0.v20100914-1218/,features/org.eclipse.uml2.source_3.1.2.v201010261927/,features/com.ibm.xtools.umldt.rt.transform.cpp.cshelp.feature_1.2.2.v20110411_1749/,features/com.ibm.xtools.ras.repository.core.feature_7.0.400.v20100805_2013/,features/org.eclipse.jst.web_userdoc.feature_3.2.2.v201010211813-2107w31211938/,features/com.ibm.xtools.transform.core_7.100.20.v20110525_0547/,features/org.eclipse.wst.web_sdk.feature_3.2.4.v201103170600-7E797J8SxYiO9-YCmj-iVV1WnlVz-1JfMdhhvEh_/,features/com.ibm.ccl.common.splash.feature_1.0.150.v20110510_2201/,features/com.ibm.xtools.modeler.base.feature_7.60.300.v20110518_0102/,features/com.ibm.xtools.updm.uid.feature_1.0.2.v20110517_0745/,features/com.ibm.xtools.tdi.reqpro.j2ee.ide_7.0.400.v20100715_2051/,features/com.ibm.xtools.analysis.codereview.java.j2se_feature_7.0.300.v20100517_1740/,features/org.eclipse.wst.common_core.feature_3.2.4.v201103101400-7B7DFEuF7RZHOaLjSqMqRK/,features/com.ibm.xtools.umldt.rt.cpp.feature.uid.feature_1.0.2.v20110315_0754/,features/com.ibm.cic.ide.int.feature.uid.feature_1.0.2.v20100813_2252/,features/com.ibm.xtools.analysis.modelanalysis.cshelp.feature_1.0.0.v20100201_0328/,features/com.ibm.xtools.publish.ui.birt.feature_7.60.0.v20100715_2051/,features/org.eclipse.equinox.p2.user.ui_2.0.1.r361_v20100903-897HFa-FX0z-z-ntoaavz0JPX628/,features/org.eclipse.wst.xml_core.feature_3.2.4.v201103231834-7C7OFXfF7RZHQLInN2MhWd/,features/com.ibm.xtools.sample.model.publishing.feature_7.1.201.v20100201_0328/,features/com.ibm.help.common.rational.feature_7.6.1.v20110517_1103/,features/org.eclipse.ocl.uml_3.0.2.R30x_v201101181635-4-17S41yaw312212292746/,features/org.eclipse.emf.mapping.source_2.6.0.v20100914-1218/,features/org.eclipse.wst.server_core.feature_3.2.4.v20110323-30F8Z8s73553A3Da2622/,features/com.ibm.xtools.comparemerge.gmf_7.60.300.v20110514_0146/,features/org.eclipse.emf.codegen.ecore.ui.source_2.6.0.v20100914-1218/,features/org.eclipse.emf.mapping.ecore_2.6.0.v20100914-1218/,features/org.eclipse.wst.web_core.feature_3.2.4.v201103170600-7E7AFIAAJrn5WMH1wVGEpTILWIDTYd/,features/com.ibm.xtools.rose.sample.feature_7.2.0.v20100203_0307/,features/com.ibm.xtools.rsarte.legal.doc.feature_7.1.8.v20110412_2230/,features/com.ibm.xtools.jet.feature_7.0.510.v20110513_0101/,features/com.ibm.xtools.pluglets.cshelp.feature_7.0.1.v20090306_1924/,features/com.ibm.xtools.ras.impord.ui.ide.feature_7.0.1.v20100805_2013/,features/com.ibm.xtools.mde.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.tptp.platform.core.doc.user_4.4.1.v201009092123-79518s73533L3L7579/,features/com.ibm.xtools.transforms.java.profile.feature_7.5.0.v20100929_0755/,features/org.eclipse.emf.validation.source_1.4.0.v20100428-2315-479-9oB56N5BBR6LCA6/,features/org.eclipse.datatools.modelbase.feature_1.8.2.v201010181125-77078CcNBGKBZI_FcRd/,features/org.eclipse.cdt.gdb_7.0.0.201102110609/,features/org.eclipse.tptp.trace_4.3.3.v201104210930-794F9z8s73543D4F5A68/,features/org.eclipse.emf.ecore.editor_2.6.0.v20100914-1218/,features/org.eclipse.cdt_7.0.2.201102110609/,features/org.eclipse.tptp.test.samples_4.4.0.v201005032111-53-7w312116323449/,features/com.ibm.xtools.umlclient.uid.feature_1.0.2.v20110520_2214/,features/com.ibm.xtools.transform.uml2.viz_7.0.400.v20100715_2051/,features/org.eclipse.emf.databinding_1.2.0.v20100914-1218/,features/org.eclipse.equinox.p2.sdk.R362patch_1.0.0/,features/org.eclipse.cdt.platform.source_7.0.2.201102110609/,features/com.ibm.xtools.transform.uml2.viz.reqpro_7.0.300.v20100715_2051/,features/org.eclipse.emf.databinding.edit_1.2.0.v20100914-1218/,features/com.ibm.xtools.umldt.rt.feature.uid.feature_1.0.2.v20110510_0738/,features/com.ibm.tomcat.plugin.only_4.1.230.v20070531/,features/org.eclipse.draw2d_3.6.2.v20110128-0100-4517w3122123901211/,features/org.eclipse.jst.server_userdoc.feature_3.3.0.v201005241530-2-Eo7w3121162A3329/,features/org.eclipse.jdt.source_3.6.2.r362_v20101117-0800-7z8XFW6FLFlmjJcvz03jyeFBLS_F/,features/org.eclipse.emf.transaction.doc_1.4.0.v20100428-2315-358Z8s733L466F3C6D4/,features/org.eclipse.gmf.tooling_2.3.0.v20100421-2359-7c7MFO2FLWUl0im8BjQMa9f/,features/com.ibm.xtools.umldt.rt.feature_1.50.0.v20110521_0931/,features/com.ibm.xtools.transform.samples_7.0.500.v20110216_2129/,features/com.ibm.rational.common.welcome.doc.feature_7.6.0.v20110527_2039/,features/com.ibm.xtools.patterns.ui_7.60.0.v20110502_2018/,features/org.eclipse.emf.mapping.ecore.editor_2.6.0.v20100914-1218/,features/org.eclipse.rcp.R362patch_1.0.0/,features/com.ibm.xtools.transforms.java.feature_7.5.800.v20110420_0731/,features/com.ibm.xtools.analysis.codereview.java.j2ee_feature_7.0.300.v20100517_1740/,features/com.ibm.xtools.modviz.common.base.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.codeview.feature.uid.feature_1.0.2.v20110503_2037/,features/org.eclipse.tptp.trace.runtime_4.4.3.v201104210930-7H7C67XbN_K6E9OJOUaf_kXWF9/,features/org.eclipse.datatools.enablement.oracle.feature_1.8.2.v201010181125-548dAkF79Q7RAN9UEE/,features/org.eclipse.tptp.platform.probekit.doc.user_4.4.1.v201009092123-5207w31211A1A3234/,features/org.eclipse.gmf_1.4.2.v20110201-1000-7d9A7FFYnmMD7_nYQqNhbc2tsgXc/,features/com.ibm.xtools.viz.j2se.cshelp.feature_7.0.4.v20110408_2147/,features/com.ibm.xtools.publish.feature_7.60.300.v20110510_2201/,features/com.ibm.xtools.umldt.rt.petal.ui.cshelp.feature_7.0.1.v20110411_1749/,features/com.ibm.ccl.soa.infra.ui.utils.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.comparemerge.clearcasedirectory.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.petal.cshelp.feature_7.0.1.v20090306_1924/,features/com.ibm.xtools.umlclient_7.60.300.v20110514_0146/,features/com.ibm.rsar.analysis.reporting.oda_feature_7.0.400.v20100517_2203/,features/org.eclipse.equinox.p2.sdk_3.6.2.R36x_v20110120-9I7VGEAG438GhnfSLuLz0FXP9NYJ/,features/org.eclipse.m2m.qvt.oml.runtime_2.1.0.v20100606-1530-7A2-AkF7AG8PBU3BRLA/,features/org.eclipse.jet.source_1.1.1.v201101271243/,features/org.eclipse.tptp.trace.jvmti_4.3.3.v201104210930-5427w312216272246/,features/org.eclipse.jst.server_sdk.feature_3.2.4.v20110323-7737784F8JIqG0LeHfKXbKO9a0RpJLXXCCJOIL54/,features/org.eclipse.cdt.gnu.debug_7.0.1.201102110609/,features/org.eclipse.tptp.platform.doc.user_4.4.1.v201009092123-797717FE8C5yB897GPGRCBEA/,features/com.ibm.rational.rsa.welcome.doc.feature_1.0.3.v20110413_0047/,features/com.ibm.xtools.transform.java.jet2.feature.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.cdt.sdk_7.0.2.201102110609/,features/org.eclipse.gmf.runtime.sdk_1.4.2.v20110201-1000-67G49E9QYBfkXgwmVt5ksk7w9Vqi/,features/org.eclipse.tptp.platform.samples_4.5.0.v201005032111-7D7A-9oB5855K5N8N55/,features/com.ibm.ccl.da.dw.feature_7.0.0.v20100715_2051/,features/org.eclipse.emf.validation.ocl_1.4.0.v20100428-2315-23-7w3121133502768/,features/com.ibm.support.uid.feature_1.0.1.v20110510_2201/,features/org.eclipse.tptp.test.tools.junit_4.7.1.v201101261720-7H7P1AkF7B97JFHCJKF/,features/org.eclipse.datatools.sqldevtools.ddl.feature_1.8.2.v201010181125-277178B04G8S_IMz00Iz00PmQz01/,features/com.ibm.xtools.transform.uml2.viz.reqpro.uid.feature_1.0.2.v20101020_0109/,features/com.ibm.xtools.updm.base.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.xtools.rose.win32.feature_7.0.0.v20100929_0755/,features/com.ibm.ccl.oda.diagram.feature.uid.feature_1.0.2.v20101016_0104/,features/com.ibm.xtools.ras.repository.client.xde.feature.uid.feature_1.0.2.v20101019_0105/,features/org.eclipse.cdt.gnu.debug.source_7.0.1.201102110609/,features/org.eclipse.emf.validation_1.4.0.v20100428-2315-479-9oB56N5BBR6LCA6/,features/com.ibm.xtools.reqpro.modelupgrade.feature_7.0.400.v20110407_2222/,features/org.eclipse.jst.enterprise_ui.feature_3.2.4.v201104201417-7b7HHfYFSK2WDvSHB0pTyNZ7TpYo/,features/com.ibm.xtools.sample.transform.authoring.feature_1.0.1.v20100201_0328/,features/org.eclipse.tptp.platform.jakarta.log4j_4.5.0.v201005032111-217E7w312116191611/,features/com.ibm.xtools.tdi.reqpro.resource.ide.uid.feature_1.0.2.v20101020_0109/,features/org.eclipse.datatools.sqldevtools.data.feature_1.8.2.v201010181125-641BgJ9DJ9VGTCaHL/,features/org.eclipse.equinox.core.sdk_3.6.1.r36x_v20110210-7sF99FsNFS-Ci4TSP4RDFHLIA5B3/,features/com.ibm.xtools.transforms.xsd.feature_7.6.10.v20110413_2148/,features/com.ibm.xtools.visualization.j2se.feature.uid.feature_1.0.2.v20110510_2201/,features/com.ibm.xtools.ras.repository.client.workgroup.feature_7.0.100.v20100805_2013/,features/org.eclipse.emf.edit.ui.source_2.6.0.v20100914-1218/,features/com.ibm.xtools.transform.sourcemodelassoc.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.rsart.nav.doc.feature_1.0.4.v20110513_1123/,features/org.eclipse.jdt.R362patch_1.0.2/,features/com.ibm.xtools.tdi.reqpro.ide.uid.feature_1.0.2.v20101020_0109/,features/org.eclipse.emf.common.ui_2.6.0.v20100914-1218/,features/org.eclipse.tptp.platform.batik.pdf_4.5.0.v201005032111-25-7w311917142611/,features/com.ibm.support.feature.uid.feature_1.0.2.v20110520_0029/,features/com.ibm.xtools.codeview.j2se.feature.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.birt.report.designer.editor.xml.wtp_2.6.2.r262_v20101008-7m9f7bFS5-OfHSjPqH_1t2/,features/org.eclipse.wst.server_ui.feature_3.2.4.v20110323-7B4FDgAtJcbuEKOlpFPMJIjBD33/,features/org.eclipse.emf.query.source_1.4.0.v20100428-2315-218Z7w311A142A1142/,features/org.eclipse.emf.validation.doc_1.4.0.v20100428-2315-35-8s733L466F3B769/,features/com.ibm.xtools.tdi.reqpro.j2se.ide_7.0.400.v20100715_2051/,features/org.eclipse.wst.xml_sdk.feature_3.2.4.v201103231834-7A57B8DXHQaidiMFR-Ts-Vigiz-l5SwVMhP5VbOg/,features/org.eclipse.wst.common_ui.feature.source_3.2.4.v201103101400-7C78FPmEdhO_oXYe4k_elbMkTrNrSL/,features/org.eclipse.emf.ecore.source_2.6.1.v20100914-1218/,features/com.ibm.xtools.petal.profile.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.xtools.transform.sourcemodelassoc.feature_7.5.4.v20110210_0845/,features/com.ibm.rsaz.analysis.codereview.java_feature_7.0.100.v20101215_2153/,features/com.ibm.support.errorreport.core.feature_1.0.1.v20110329_0031/,features/com.ibm.xtools.analysis.reporting_feature_7.0.400.v20100924_1819/,features/com.ibm.xtools.ras.export.tasks.ide.feature_7.0.1.v20100805_2013/,features/org.eclipse.emf.databinding.edit.source_1.2.0.v20100914-1218/,features/com.ibm.xtools.uml.transform.core.uid.feature_1.0.2.v20101020_0109/,features/com.ibm.xtools.umldt.feature.uid.feature_1.0.2.v20110217_0818/,features/com.ibm.ccl.soa.infra.ui.utils_1.0.0.v20100715_2051/,features/com.ibm.process.feature.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.xsd.mapping_2.6.0.v20100914-1218/,features/org.eclipse.emf.ecore.sdo_2.4.0.v200801221930/,features/com.ibm.cds.feature_2.1.0.201009130929/,features/org.eclipse.gmf.doc_1.4.0.v20100518-2359-35-8s733L3H7L17395/,features/com.ibm.xtools.ras.repository.client.xde.feature_7.0.100.v20100805_2013/,features/org.eclipse.emf.converter_2.6.0.v20100914-1218/,features/com.ibm.xtools.patterns.content_7.6.0.v20101006_0655/,features/com.ibm.xtools.transforms.java.profile.feature.uid.feature_1.0.2.v20110427_0740/,features/org.eclipse.rcp.source_3.6.2.r362_v20101104-9SAxFMKFkSAqi8axkv1ZjegmiBLY/,features/com.ibm.xtools.ras.repository.client.workgroup.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.xtools.tdi.reqpro.j2se.ide.uid.feature_1.0.2.v20101020_0109/,features/org.eclipse.cvs_1.2.1.r362_v20101111-7B77FKv99HL0GvIAF99I8H14B7E/,features/org.eclipse.tptp.test.tools_4.5.1.v201101261720-7L7U1A5eNmJSvZVScRkPPMVWa/,features/com.ibm.xtools.csguides.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.ccl.welcome.bits.feature_7.0.7.v20101006_0104/,features/org.eclipse.emf.workspace_1.4.0.v20100428-2315-36-8s734C367E3CBC7/,features/org.eclipse.uml2_3.1.2.v201010261927/,features/com.ibm.xtools.pluglets.ui.help.feature_7.4.0.v20100201_0328/,features/com.ibm.xtools.reqpro.cshelp.feature_7.0.3.v20090311_1011/,features/org.eclipse.datatools.sqldevtools.schemaobjecteditor.feature_1.8.2.v201010181125-4208375LG5BJ93413/,features/org.eclipse.datatools.sqldevtools.sqlbuilder.feature_1.8.2.v201010181125-79-4EVVFJoFwKcN-L_/,features/com.ibm.ccl.linkability.provider.j2ee.ide.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.xsd.edit_2.6.0.v20100914-1218/,features/com.ibm.xtools.umlal.profiles.feature_1.0.100.v20110401_0743/,features/org.eclipse.birt.source_2.6.2.r262_v20101008-9iF7A9JGHMBCRz-R8tbxRel8kQrI/,features/com.ibm.ccl.ua.wizards.feature_1.0.150.v20101020_0109/,features/com.ibm.xtools.transform.ide_7.0.400.v20100715_2051/,features/org.eclipse.emf.codegen.source_2.6.0.v20100914-1218/,features/org.eclipse.datatools.sqldevtools.results.feature_1.8.2.v201010181125-4219oB57E6G9F7KDB/,features/org.eclipse.wst.xml_ui.feature_3.2.4.v201103170600-7H7AFUaDxumQJOs8hggQZ6_jl1EOJGNlUsOsTM/,features/org.eclipse.jdt.source.R362patch_1.0.2/,features/com.ibm.xtools.umlal.execution.feature_1.0.100.v20110331_1459/,features/com.ibm.xtools.updm_7.4.0.v20110507_0844/,features/com.ibm.xtools.transform.authoring.uid.feature_1.0.2.v20110127_0205/,features/org.eclipse.cdt.platform_7.0.2.201102110609/,features/com.ibm.xtools.reqpro_ed.cshelp.feature_7.0.0.v20090319_1011/,features/com.ibm.rational.rsart.welcome.doc.feature_1.0.6.v20110412_2230/,features/com.ibm.xtools.rjcb.core.feature.uid.feature_1.0.2.v20101016_0104/,features/org.eclipse.equinox.p2.user.ui.source.R362patch_1.0.0/,features/com.ibm.xtools.uml.transform.core_7.0.400.v20100715_2051/,features/org.eclipse.emf.query_1.4.0.v20100428-2315-218Z7w311A142A1142/,features/com.ibm.process.rsase.feature_7.0.0.v20100929_0755/,features/com.ibm.xtools.umldt.rt.umlal.resources.feature_1.0.0.v20101203_1715/,features/com.ibm.xtools.richtext_7.70.300.v20110516_2128/,features/org.eclipse.jet_1.1.1.v201101271243-5319sC7HCAGERASDK3924/,features/org.eclipse.emf.codegen.ecore.ui_2.6.0.v20100914-1218/,features/com.ibm.xtools.transform.uml.xsd.cshelp.feature_1.0.5.v20110408_2147/,features/com.ibm.xtools.updm.base_7.4.0.v20110412_0735/,features/org.eclipse.emf.mapping.ecore.editor.source_2.6.0.v20100914-1218/,features/org.eclipse.jst.server_core.feature_3.2.4.v20110323-31FA38s73543B4E/,features/com.ibm.xtools.visualization.modeler.required.feature.uid.feature_1.0.2.v20101021_2044/,features/org.eclipse.datatools.doc.user_1.8.2.v201010181125-47C08w95ENAK6AFDFK7/,features/com.ibm.xtools.ras.impord.tasks.feature_7.0.100.v20100805_2013/,features/com.ibm.ccl.soa.deploy.sketcher.uml.feature_1.0.100.v20110524_0741/,features/org.eclipse.equinox.p2.discovery.feature_1.0.1.R36x_v20110210-4-09oB5865H6L02434/,features/com.ibm.xtools.transform.ide.uid.feature_1.0.2.v20101020_0109/,features/org.eclipse.platform.source_3.6.2.r362_v20110210-9gF78Gs1FrIGnHDHWkEcopoN8AmxeZflGDGKQi/,features/com.ibm.xtools.traceability.viz_feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.xtools.rose.feature.uid.feature_1.0.2.v20110517_1415/,features/ilog.views.eclipse.graphlayout.features_8.7.6.v20101108/,features/com.ibm.xtools.ruml.feature_7.60.0.v20100715_2051/,features/org.eclipse.emf.common.source_2.6.0.v20100914-1218/,features/com.ibm.xtools.transform.core.doc.isv_7.0.400.v20110525_0547/,features/com.ibm.xtools.transform.authoring_7.3.0.v20101207_0201/,features/org.eclipse.emf.codegen_2.6.0.v20100914-1218/,features/com.ibm.dojo.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.ccl.linkability.ide_7.1.401.v20100715_2051/,features/com.ibm.xtools.transform.java.jet2.feature_1.0.100.v20110117_1549/,features/com.ibm.xtools.publish.cshelp.feature_7.0.1.v20090306_1924/,features/org.eclipse.jst.enterprise_core.feature_3.2.3.v201102071500-52FMUAkF7B87PAT8SA8/,features/com.ibm.xtools.transform.java.uml.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.cic.planverifier.feature.uid.feature_1.0.2.v20101101_1901/,features/org.eclipse.datatools.enablement.jdbc.feature_1.8.2.v201010181125-4-29oB56N5N7L6PAQ/,features/org.eclipse.tptp.platform.probekit_4.5.3.v201104210930-7H7BF8SAkF7B97UAYCIHM/,features/com.ibm.xtools.rmp.base.uid.feature_1.0.2.v20110510_2201/,features/com.ibm.xtools.pluglets.sample.feature_7.2.0.v20100201_0328/,features/org.eclipse.datatools.enablement.postgresql.feature_1.8.2.v201010181125-542AkF77g7V9N9e77/,features/org.eclipse.emf.ecore.editor.source_2.6.0.v20100914-1218/,features/org.eclipse.emf.databinding.source_1.2.0.v20100914-1218/,features/com.ibm.ccl.help.feedback.feature_7.0.1.v20100715_2051/,features/com.ibm.ccl.preferenceharvester.feature_1.0.150.v20110510_2201/,features/com.ibm.xtools.umldt.feature_1.50.0.v20110503_2037/,features/com.ibm.rational.clearcase.ccimport.feature_7.1.0.v201001271035--08422A2_242663/,features/com.ibm.xtools.mde_1.0.1.v20100928_2018/,features/org.eclipse.cdt.gnu.dsf.source_2.1.0.201102110609/,features/org.eclipse.equinox.p2.user.ui.R362patch_1.0.0/,features/org.eclipse.gef.source_3.6.2.v20110128-0100-777B381A4Bz06565376E32322/,features/com.ibm.xtools.transform.uml2.cpp.feature.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.xtools.ras.common.core.feature.uid.feature_1.0.2.v20101019_0105/,features/com.ibm.cic.licensing.lum.feature_7.0.200.v20110105_1929/,features/org.eclipse.wst.ws_core.feature_3.2.3.v201102160541-7L7RFf0FGtGd-nipy6nDoi4852/,features/org.eclipse.tptp.platform.core_4.7.3.v201104132345-8P8RFOWFJdMh0riOwc7uJT/,features/com.ibm.dojo.feature_1.1.10.v20100715_2051/,features/org.eclipse.datatools.connectivity.oda.designer.feature_1.8.2.v201010181125-4107w3121151A1A53/,features/com.ibm.xtools.umlal.feature.uid.feature_1.0.2.v20110513_0725/,features/com.ibm.ccl.erf.cshelp.feature_1.1.0.v20090306_1924/,features/org.eclipse.cdt.gdb.source_7.0.0.201102110609/,features/org.eclipse.emf.workspace.doc_1.4.0.v20100428-2315-22-7w311A1238292A/,features/org.eclipse.wst.common_ui.feature_3.2.4.v201103101400-7C78FPmEdhO_oXYe4k_elbMkTrNrSL/,features/org.eclipse.datatools.enablement.jdt.feature_1.8.2.v201010181125-2-07w31211518181A/,features/com.ibm.xtools.patterns.content.uid.feature_1.0.2.v20110427_0740/,features/com.ibm.ccl.oda.uml.feature.uid.feature_1.0.2.v20110216_2129/,features/com.ibm.cic.ide.int.feature_1.0.1.v20100222_2233/,features/org.eclipse.wst.xml_userdoc.feature_3.2.101.v201102161624-50FXNAkF7B77RBgFFBF/,features/org.eclipse.jet.uml2_1.1.0.v201006011447-2-07w311A1A152813/,features/com.ibm.xtools.transform.core.uid.feature_1.0.2.v20101020_0109/,features/org.eclipse.datatools.sqldevtools.parsers.feature_1.8.2.v201010181125-622BgJ9CR9XFcEWLP/,features/com.ibm.xtools.modviz.common.feature.uid.feature_1.0.2.v20101019_0105/,features/org.eclipse.jst.server_core.feature.source_3.2.4.v20110323-31FA38s73543B4E/,features/com.ibm.etools.performance.win32_1.2.300.v20110315_1851/,features/org.eclipse.emf.codegen.ui_2.6.0.v20100914-1218/,features/com.ibm.xtools.uml.profile.tooling.feature.uid.feature_1.0.2.v20101020_0109/,features/org.eclipse.jst.server_ui.feature.source_3.2.4.v20110323-7A5FEn9xFc7TCFKWBBINHK43A/,features/org.eclipse.tptp.platform.xerces_4.6.0.v201005032111-777K4AkF7B77R7c7N77/,features/org.eclipse.emf.codegen.ecore.source_2.6.1.v20100914-1218/,features/org.eclipse.ocl.source_3.0.2.R30x_v201101181635-79-7K8qD6z-DtD7E8BB753F53/,features/org.eclipse.xsd.source_2.6.0.v20100914-1218/,features/org.eclipse.datatools.connectivity.oda.feature_1.8.2.v201010181125-7H7C7CCcNBHEDPHcETPO/,features/org.eclipse.wst.jsdt.feature_1.2.4.v201103240300-7C78FGYF9JgLWPMA_ENpYd/,features/com.ibm.xtools.rmp.uid.feature_1.0.2.v20101016_0104/,plugins/org.eclipse.gmf.templates.legacy_1.0.1.v20100831-1541/,plugins/com.ibm.xtools.uml.rt.core_1.50.0.v20110515_0735.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.properties_1.4.2.v20101130-0030.jar,plugins/com.ibm.xtools.pluglets.ui.doc_7.4.0.v20100201_0328.jar,plugins/org.eclipse.birt.chart.reportitem.source_2.6.2.r262_v20110120.jar,plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl.source_1.0.0.v20100906-1425.jar,plugins/org.eclipse.emf.query.ocl_2.0.0.v20091215-1624.jar,plugins/org.eclipse.jem_2.0.401.v201104271300.jar,plugins/org.eclipse.gmf.xpand.editor_2.1.0.v20100428-2359.jar,plugins/org.eclipse.uml2.uml_3.1.2.v201010261927.jar,plugins/org.eclipse.wst.wsdl.validation_1.1.501.v201004201506.jar,plugins/org.eclipse.jst.servlet.ui.source_1.1.405.v201104141500.jar,plugins/org.eclipse.datatools.enablement.oda.ws.ui_1.2.2.v201012301630.jar,plugins/com.ibm.xtools.pluglets.doc.isv_7.0.3.v20110106_1550.jar,plugins/com.ibm.ccl.erf.ui_1.60.0.v20100715_2051.jar,plugins/org.eclipse.jst.j2ee.jca.source_1.1.400.v201005270700.jar,plugins/org.eclipse.equinox.common_3.6.0.v20100503.jar,plugins/com.ibm.xtools.transform.uml2.java.morph_7.0.300.v20100929_0755.jar,plugins/com.ibm.xtools.uml.cacheadapter_7.60.0.v20100715_2051.jar,plugins/org.apache.batik.parser_1.6.0.v200805290154.jar,plugins/com.ibm.xtools.transform.ui.doc_7.0.300.v20100715_2051.jar,plugins/com.ibm.xtools.modeler.ui.ocl_7.60.200.v20101106_0006.jar,plugins/org.eclipse.emf.ant.source_2.6.1.v20100905-1631.jar,plugins/com.ibm.xtools.jet.feature.uid_1.0.2.v20110510_2201.jar,plugins/org.eclipse.jst.ws.uddiregistry_1.0.500.v201004211805.jar,plugins/org.eclipse.osgi.services_3.2.100.v20100503.jar,plugins/org.eclipse.equinox.app_1.3.1.R36x_v20100803.jar,plugins/com.ibm.xtools.updm.base.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.emf.converter.source_2.5.0.v20100914-1218.jar,plugins/com.ibm.xtools.patterns.core.doc.isv_7.60.0.v20110112_2333.jar,plugins/org.eclipse.equinox.security.ui.source_1.0.200.v20100503.jar,plugins/org.eclipse.wst.jsdt.doc_1.0.301.v201007150153.jar,plugins/org.eclipse.cdt.managedbuilder.gnu.ui_7.0.0.201102110609.jar,plugins/org.eclipse.birt.core.ui.source_2.6.2.r262_v20101014.jar,plugins/com.ibm.xtools.ras.repository.client.workgroup.ui_7.0.0.v20100805_2013.jar,plugins/org.apache.batik.xml.source_1.6.0.v200805290154.jar,plugins/org.eclipse.datatools.sqltools.ddlgen.ui_1.0.1.v201002270530.jar,plugins/com.ibm.xtools.patterns.examples_7.60.0.v20100929_0755.jar,plugins/com.ibm.xtools.analysis.codereview.java.j2se_7.0.300.v20100517_1740.jar,plugins/org.eclipse.pde.junit.runtime_3.4.100.v20100601.jar,plugins/com.ibm.ccl.help.feedback_7.0.1.v20100715_2051.jar,plugins/org.eclipse.ui.intro.source_3.4.0.v20100427.jar,plugins/org.eclipse.jdt.junit4.runtime_1.1.100.v20100526-0800.jar,plugins/org.eclipse.equinox.concurrent.source_1.0.100.v20100503.jar,plugins/org.eclipse.gmf.runtime.common.ui.services.action_1.4.0.v20100430-1518.jar,plugins/org.eclipse.jst.ws_1.0.507.v201004211805.jar,plugins/org.eclipse.jem.beaninfo_2.0.300.v200905030615.jar,plugins/org.eclipse.jsch.core_1.1.200.I20100505-1245.jar,plugins/com.ibm.xtools.publish.ui.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.actions.source_1.4.0.v20100223-2359.jar,plugins/com.ibm.cic.licensing.flexlm.win32_1.0.1.v20110515_2041/,plugins/org.eclipse.equinox.preferences.source_3.3.0.v20100503.jar,plugins/com.ibm.xtools.ras.repository.client.local_7.0.0.v20100805_2013.jar,plugins/org.eclipse.pde.core.source_3.6.3.v20110407_r363.jar,plugins/org.eclipse.gmf.runtime.common.ui.printing.win32_1.4.0.v20100223-2359.jar,plugins/org.eclipse.gmf.graphdef.codegen.source_2.0.101.v20100831-1541.jar,plugins/org.eclipse.core.runtime.compatibility.auth.source_3.2.200.v20100517.jar,plugins/org.eclipse.debug.core_3.6.0.v20100519.jar,plugins/org.eclipse.datatools.sqltools.editor.core_1.0.0.v201001150815.jar,plugins/org.eclipse.equinox.p2.ui.source_2.0.0.v20100518.jar,plugins/org.eclipse.tptp.platform.models.hierarchy_4.7.3.v201104132345.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.resources.editor.source_1.4.1.v20100729-0030.jar,plugins/com.ibm.xtools.viz.umlv1_7.0.100.v20100715_2051.jar,plugins/org.eclipse.wst.common.frameworks_1.2.0.v201003040800.jar,plugins/org.eclipse.birt.report.designer.ui.lib.explorer.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.richtext.emf_7.60.300.v20110516_2128.jar,plugins/org.eclipse.emf.validation.ui_1.3.0.v200901271722.jar,plugins/org.eclipse.emf.validation_1.4.0.v20100428-2315.jar,plugins/org.eclipse.ecf.provider.filetransfer.source_3.1.0.v20100906-1425.jar,plugins/com.ibm.ccl.erf.emf.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.equinox.frameworkadmin.source_2.0.0.v20100503.jar,plugins/org.eclipse.wst.web.source_1.1.403.v201103081400.jar,plugins/org.eclipse.datatools.connectivity.oda_3.3.1.v201102051100.jar,plugins/org.eclipse.uml2.codegen.ecore.ui.source_1.6.0.v201005031530.jar,plugins/lpg.runtime.java_2.0.17.v201004271640.jar,plugins/org.eclipse.birt.report.data.oda.jdbc_2.6.2.r262_v20110127/,plugins/org.eclipse.uml2.common.source_1.5.0.v201005031530.jar,plugins/org.eclipse.jst.ws.axis.creation.ui_1.0.600.v201008171516.jar,plugins/com.ibm.xtools.traceability.java_7.60.0.v20100929_0755.jar,plugins/com.ibm.xtools.modeler.rt.ui_1.50.0.v20110515_0735.jar,plugins/org.eclipse.ui.workbench.texteditor.source_3.6.2.r362_v20110316.jar,plugins/org.eclipse.equinox.p2.artifact.repository_1.1.1.R36x_v20100901.jar,plugins/org.eclipse.jem.proxy_2.0.301.v201101101700.jar,plugins/org.eclipse.birt.report.designer.ui.lib.explorer_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.modeler.rt.ui.diagrams_1.50.0.v20110429_1455.jar,plugins/org.eclipse.ui.ide.source_3.6.3.M20110511-1135.jar,plugins/com.ibm.xtools.ras.repository.datastore.core_7.0.100.v20100805_2013.jar,plugins/org.eclipse.core.externaltools.source_1.0.2.v20110315_r362.jar,plugins/org.eclipse.datatools.sqltools.sqleditor_1.0.2.v201009230800.jar,plugins/com.ibm.xtools.transform.uml2.xsd_7.2.420.v20110413_2148.jar,plugins/org.eclipse.birt.report.engine.emitter.pdf.config_2.6.2.r262_v20110127.jar,plugins/org.eclipse.wst.common.infopop_1.0.300.v201004280700.jar,plugins/com.ibm.process.rsase.feature.uid_1.0.2.v20101006_0655.jar,plugins/org.eclipse.tptp.platform.probekit.launch_4.5.0.v201005061600.jar,plugins/org.apache.commons.logging.source_1.0.4.v201005080501.jar,plugins/com.ibm.xtools.ras.export.tasks.ide.feature.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.viz.j2se.ui.vizmenu_7.1.500.v20110510_2201.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.dnd_1.2.0.v20090403-1720.jar,plugins/org.eclipse.equinox.p2.core_2.0.3.R36x_v20110111.jar,plugins/com.ibm.rsaz.analysis.compatibility_7.0.100.v20100909_1452.jar,plugins/org.eclipse.gmf.runtime.draw2d.ui.render_1.4.2.v20101111-1500.jar,plugins/org.eclipse.jdt.apt.core_3.3.402.R36_v20110120-1000.jar,plugins/com.ibm.xtools.transform.fuse_7.0.300.v20100715_2051.jar,plugins/com.ibm.rsaz.analysis.birt.compatibility_7.0.100.v20100518_1916.jar,plugins/org.eclipse.gmf.runtime.gef.ui.source_1.4.0.v20100430-1518.jar,plugins/com.ibm.xtools.patterns.notation.edit_7.60.0.v20100929_0755.jar,plugins/org.eclipse.datatools.sqltools.sqlscrapbook_1.0.1.v201005250945.jar,plugins/org.eclipse.platform.source_3.6.2.v201102101200.jar,plugins/com.ibm.xtools.reqpro.ui_7.1.303.v20100908_0104.jar,plugins/org.eclipse.birt.report.viewer.source_2.6.2.r262_v20110214.jar,plugins/com.ibm.ccl.help.feedback.feature.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.xtools.umldt.rt.petal.ui.cshelp_7.0.1.v20110411_1749.jar,plugins/com.ibm.ccl.erf.birt_1.60.300.v20110510_2201.jar,plugins/com.ibm.cic.licensing.lum.win32_8.1.1006.v20110330_2243/,plugins/org.eclipse.emf.importer.rose_2.6.0.v20100521-1846.jar,plugins/org.apache.batik.dom.svg_1.6.0.v200805290154.jar,plugins/org.eclipse.m2m.qvt.oml.cst.parser_2.1.1.v20100818-1530.jar,plugins/org.eclipse.jface.databinding_1.4.0.I20100601-0800.jar,plugins/com.ibm.xtools.transform.ide.uid_1.0.2.v20101020_0109.jar,plugins/org.eclipse.gmf.runtime.common.ui.services_1.3.0.v20100423-2359.jar,plugins/org.eclipse.jst.server.ui.doc.user_1.0.500.v201005192218.jar,plugins/com.ibm.xtools.uml.redefinition_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.transform.uml2.mapping_7.5.400.v20100715_2051.jar,plugins/org.w3c.dom.events.source_3.0.0.draft20060413_v200905140418.jar,plugins/org.eclipse.wst.jsdt.core_1.1.6.v201105242202.jar,plugins/org.eclipse.wst.ws.service.policy.ui_1.0.202.v201004211732.jar,plugins/org.eclipse.jst.ws.consumption_1.0.508.v201103082026.jar,plugins/org.eclipse.birt.report.debug.core_2.6.2.r262_v20110127.jar,plugins/com.ibm.rcp.rte.ie_6.2.1.20090925-1604.jar,plugins/com.ibm.support.uid_1.0.1.v20110510_2201.jar,plugins/com.ibm.ccl.feedreader.feature.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.wst.xsd.core.source_1.1.503.v201011121919.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.resources.editor_1.4.1.v20100729-0030.jar,plugins/org.eclipse.datatools.enablement.sybase.asa_1.0.1.v200906020900.jar,plugins/com.ibm.ccl.tdi.reqpro.ui_7.1.400.v20100715_2051.jar,plugins/org.eclipse.update.ui.source_3.2.300.v20100512.jar,plugins/org.apache.batik.bridge.source_1.6.0.v200912221622.jar,plugins/org.eclipse.jst.j2ee.navigator.ui_1.1.403.v201012020600.jar,plugins/com.ibm.xtools.umldt.rt.debug.launch.core_1.0.0.v20110326_0744.jar,plugins/com.ibm.help.common.nav.doc_7.6.0.v20110527_2039.jar,plugins/org.eclipse.pde.ui.templates.source_3.4.200.v20100601.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.printing.render.source_1.4.0.v20100423-2359.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.usecase_7.60.0.v20100715_2051.jar,plugins/org.eclipse.hyades.execution_4.5.1.v201101211900/,plugins/org.eclipse.wst.sse.doc.user_1.1.100.v201005192212.jar,plugins/org.eclipse.tptp.trace.arm_4.4.0.v201005061600/,plugins/org.eclipse.wst.ws.explorer_1.0.508.v201103082027.jar,plugins/org.eclipse.birt.report.designer.ui.data.source_2.6.2.r262_v20110209.jar,plugins/org.eclipse.equinox.p2.director.source_2.0.3.R36x_v20101117-1018.jar,plugins/org.eclipse.wst.web_1.1.403.v201103081400.jar,plugins/org.eclipse.birt.chart.device.svg.source_2.6.2.r262_v20101230.jar,plugins/org.eclipse.wst.internet.cache.source_1.0.400.v201004280700.jar,plugins/org.eclipse.jst.j2ee.webservice_1.1.400.v201004110600.jar,plugins/org.eclipse.swt_3.6.3.v3659d.jar,plugins/org.eclipse.hyades.probekit.ui_4.1.601.v201105161135.jar,plugins/org.eclipse.emf.mapping.ecore2ecore.editor.source_2.4.0.v20100521-1847.jar,plugins/org.eclipse.team.cvs.core_3.3.301.R36x_v20110119-0815.jar,plugins/org.eclipse.equinox.p2.metadata_2.0.1.R36x_v20101202.jar,plugins/org.eclipse.datatools.enablement.oda.xml.ui_1.2.1.v201012161115.jar,plugins/org.eclipse.core.databinding.property_1.3.0.I20100601-0800.jar,plugins/com.ibm.xtools.sample.model.publishing.doc_7.1.200.v20100201_0328.jar,plugins/org.eclipse.tptp.platform.common.ui_4.4.302.v201104132345.jar,plugins/org.eclipse.ecf_3.1.0.v20100906-1425.jar,plugins/com.ibm.rational.rsart.core.welcome.doc_1.0.6.v20110412_2230.jar,plugins/org.eclipse.birt.chart.device.swt.source_2.6.2.r262_v20101209.jar,plugins/com.ibm.xtools.mmi.core_7.60.200.v20101217_0201.jar,plugins/org.eclipse.datatools.modelbase.derby_1.0.0.v201002161452.jar,plugins/org.eclipse.birt.chart.reportitem_2.6.2.r262_v20110120.jar,plugins/com.ibm.xtools.mde.solution.core.gen_1.0.0.v20100715_2051.jar,plugins/com.ibm.xtools.httpserver_1.0.0.v20110308_1632.jar,plugins/org.eclipse.gmf.bridge.ui.source_1.2.100.v20090709-1925.jar,plugins/org.eclipse.xsd.ecore.importer_2.6.0.v20100521-1855.jar,plugins/com.ibm.xtools.umldt.rt.feature.uid_1.0.2.v20110510_0738.jar,plugins/com.ibm.xtools.patterns.ui.apply_7.60.0.v20100929_0755.jar,plugins/com.ibm.xtools.mde.solution.core_8.0.0.v20100715_2051.jar,plugins/org.eclipse.xsd_2.6.0.v20100914-1218.jar,plugins/com.ibm.xtools.modeler.cshelp_7.0.2.v20090306_1924.jar,plugins/com.ibm.xtools.uml.type_7.60.300.v20110510_2201.jar,plugins/org.eclipse.wst.ws_1.1.203.v201004211805.jar,plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.report.designer.ui.preview.web.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.ecf.source_3.1.0.v20100906-1425.jar,plugins/org.eclipse.equinox.http.registry_1.1.1.R36x_v20101103.jar,plugins/org.eclipse.wst.jsdt.web.core.source_1.0.305.v201103170144.jar,plugins/org.eclipse.ui.externaltools_3.2.0.v20100427.jar,plugins/com.ibm.xtools.comparemerge.ui_7.60.300.v20110510_2201.jar,plugins/com.ibm.xtools.comparemerge.ccdirectory_7.0.1240.v20100715_2051.jar,plugins/org.eclipse.core.databinding.beans_1.2.100.I20100601-0800.jar,plugins/org.eclipse.datatools.enablement.sybase_1.0.1.v200906020900.jar,plugins/org.apache.batik.swing_1.6.0.v200805290154.jar,plugins/com.ibm.xtools.umldt.rt.j2se.debug.ui_1.0.0.v20110420_0731.jar,plugins/org.eclipse.pde.core_3.6.3.v20110407_r363.jar,plugins/com.ibm.xtools.transform.core.authoring.common_7.0.300.v20100715_2051.jar,plugins/com.ibm.ccl.mapping.feature.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.xtools.gs_eclipse_wb.doc_1.0.2.v20110408_2147.jar,plugins/com.ibm.cic.licensing.common.ui.feature.uid_1.0.2.v20101007_1238.jar,plugins/org.eclipse.birt.report.designer.ui.editors.schematic.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.core.jobs_3.5.1.R36x_v20100824.jar,plugins/org.eclipse.birt.report.engine.emitter.prototype.excel_2.6.2.r262_v20110215.jar,plugins/com.ibm.xtools.mde_1.0.0.v20100715_2051.jar,plugins/org.eclipse.uml2.uml.source_3.1.2.v201010261927.jar,plugins/com.ibm.xtools.transform.uml2.xsd.extension.gelement_1.0.0.v20110112_2333.jar,plugins/org.eclipse.equinox.p2.ui.discovery_1.0.0.v20100519.jar,plugins/org.eclipse.emf.importer.java.source_2.6.0.v20100521-1846.jar,plugins/org.eclipse.birt.report.data.oda.jdbc.ui.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.report.engine.emitter.config_2.6.2.r262_v20110127.jar,plugins/org.eclipse.jst.server.generic.core_1.0.606.v20100512.jar,plugins/org.eclipse.core.boot_3.1.200.v20100505.jar,plugins/com.ibm.xtools.transform.xsd.profile_1.0.10.v20110504_2111.jar,plugins/org.opengroup.arm_4.0.0.v201006081629/,plugins/com.ibm.xtools.umldt.rt.transform.cpp.viz.core_1.50.0.v20110326_0744.jar,plugins/org.eclipse.update.core.win32.source_3.2.200.v20100512.jar,plugins/org.eclipse.core.resources_3.6.1.R36x_v20110131-1630.jar,plugins/com.ibm.xtools.ras.export.ui.ide.feature.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.umldt.rt.transform.java.cshelp_1.0.0.v20110411_1749.jar,plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition_1.0.2.v200906161815.jar,plugins/com.ibm.xtools.umlviz.ui_7.5.310.v20110518_0102.jar,plugins/com.ibm.xtools.umldt.rt.j2se.core_1.50.0.v20110429_1455.jar,plugins/com.ibm.xtools.transform.authoring.mapping.ide_7.2.0.v20100715_2051.jar,plugins/org.eclipse.birt.report.model.adapter.oda.source_2.6.2.r262_v20110209.jar,plugins/com.ibm.xtools.updm.core_7.3.801.v20100929_0755.jar,plugins/com.ibm.xtools.umldt.rt.transform.c.ui_1.0.0.v20110331_1459.jar,plugins/org.eclipse.datatools.connectivity_1.2.2.v201010220354.jar,plugins/org.eclipse.birt.chart.engine.extension_2.6.2.r262_v20110113.jar,plugins/com.ibm.ccl.common.splash.feature.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.xtools.ras.export.tasks_7.0.0.v20100805_2013.jar,plugins/org.eclipse.jdt.compiler.apt.source_1.0.300.v20100513-0845.jar,plugins/org.eclipse.equinox.transforms.xslt_1.0.200.v20100503.jar,plugins/org.eclipse.jst.server.core.source_1.2.102.v20110309.jar,plugins/com.ibm.xtools.tdi.reqpro.ide.uid_1.0.2.v20101020_0109.jar,plugins/com.ibm.xtools.rmp.ui.search_1.10.200.v20110105_0203.jar,plugins/org.eclipse.ui.workbench.compatibility.source_3.2.100.I20100511-0800.jar,plugins/org.eclipse.wst.wsi.ui.doc.user_1.0.600.v201007141654.jar,plugins/com.ibm.dojo.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.tptp.platform.integration.pde_4.5.2.v201101211050.jar,plugins/org.eclipse.wst.wsdl_1.2.104.v201012082239.jar,plugins/com.ibm.xtools.sample.javaTransform.extension_1.0.1.v20100929_0755.jar,plugins/com.ibm.xtools.reqpro.activities_7.0.100.v20100715_2051.jar,plugins/org.eclipse.birt.report.designer.ui.lib_2.6.2.r262_v20110127.jar,plugins/org.eclipse.emf.codegen.ecore_2.6.1.v20100914-1218.jar,plugins/com.ibm.ccl.mapping.ui_1.0.400.v20110513_0101.jar,plugins/org.eclipse.datatools.sqltools.common.ui_1.0.0.v200906022302.jar,plugins/org.eclipse.jst.ws.creation.ui_1.0.511.v201103082026.jar,plugins/org.eclipse.emf.query.source_1.2.100.v200903190031.jar,plugins/com.ibm.xtools.modeler.rt.ui.properties_1.50.0.v20110518_0733.jar,plugins/com.ibm.xtools.transform.uml2.soa.util_7.1.210.v20110416_0731.jar,plugins/org.eclipse.cdt.gdb.ui.source_7.0.0.201102110609.jar,plugins/org.eclipse.birt.report.designer.ui.editor.script.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.draw2d.source_3.6.2.v20110128-0100.jar,plugins/org.eclipse.datatools.enablement.oracle.ui_1.0.2.v201005051303.jar,plugins/com.ibm.xtools.sample.mobilephone_7.1.3.v20100201_0328.jar,plugins/org.eclipse.datatools.connectivity.oda.template.ui_3.2.1.v201004090942.jar,plugins/org.eclipse.equinox.p2.metadata.generator_1.0.202.R36x_v20101208-1400.jar,plugins/com.ibm.rational.common.licensing.ibmratl.client_8.1.1006.v20110509_2210/,plugins/com.ibm.xtools.codeview.j2se_1.0.0.v20110503_2037.jar,plugins/com.ibm.xtools.transform.java.uml.cshelp_7.0.8.v20110408_2147.jar,plugins/com.ibm.xtools.updm.ui.project_7.3.801.v20100929_0755.jar,plugins/org.eclipse.equinox.http.jetty_2.0.0.v20100503.jar,plugins/org.eclipse.ant.ui.source_3.5.0.v20100427.jar,plugins/org.eclipse.osgi_3.6.2.R36x_v20110210.jar,plugins/org.eclipse.core.externaltools_1.0.2.v20110315_r362.jar,plugins/org.eclipse.cdt.dsf.gdb.source_3.0.0.201102110609.jar,plugins/com.ibm.xtools.uml.profile.tooling.migration_7.5.300.v20100715_2051.jar,plugins/com.ibm.xtools.transform.authoring.mapping.cshelp_7.0.5.v20090306_1924.jar,plugins/org.eclipse.emf.mapping.ecore2ecore.source_2.5.0.v20100521-1847.jar,plugins/com.ibm.xtools.ras.profile.defauld_7.0.100.v20100805_2013.jar,plugins/org.eclipse.wst.common.core.source_1.2.0.v200908252030.jar,plugins/com.ibm.xtools.rumv.ui_7.60.200.v20110210_0202.jar,plugins/org.eclipse.wst.common.project.facet.core_1.4.102.v201008170019.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.render.source_1.4.1.v20100909-1300.jar,plugins/org.eclipse.equinox.p2.artifact.repository.source_1.1.1.R36x_v20100901.jar,plugins/org.eclipse.jem.util_2.1.3.v201012070000.jar,plugins/org.eclipse.platform.doc.user_3.6.2.r362_v20101117-0800.jar,plugins/org.eclipse.jet.doc_1.1.0.v201003251524.jar,plugins/com.ibm.xtools.umldt.feature.uid_1.0.2.v20110217_0818.jar,plugins/org.eclipse.xsd.edit_2.6.0.v20100914-1218.jar,plugins/org.eclipse.jst.j2ee.ui_1.1.405.v201104141600.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.structure_7.60.200.v20110130_0206.jar,plugins/org.eclipse.emf.workspace.source_1.4.0.v20100224-1706.jar,plugins/org.eclipse.birt.report.item.crosstab.ui_2.6.2.r262_v20110127.jar,plugins/org.eclipse.tptp.platform.agentcontroller_4.3.4.v201105161135/,plugins/org.eclipse.epf.common_1.5.0.v20080709-1606/,plugins/com.ibm.xtools.umldt.rt.transform_1.50.0.v20110510_0738.jar,plugins/com.ibm.xtools.transform.uml2.viz.uid_1.0.2.v20101020_0109.jar,plugins/org.eclipse.equinox.registry_3.5.0.v20100503.jar,plugins/com.ibm.xtools.umldt.rt.j2se.core.resources_1.0.0.v20110325_2100.jar,plugins/com.ibm.xtools.updm.ui.standard_7.0.801.v20100929_0755.jar,plugins/org.eclipse.emf.importer.rose.source_2.6.0.v20100521-1846.jar,plugins/com.ibm.xtools.transform.uml2.java.cshelp_7.1.7.v20110408_2147.jar,plugins/com.ibm.xtools.traceability_feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.jdt.junit.core.source_3.6.1.r361_v20100825-0800.jar,plugins/com.ibm.xtools.updm.ui.enterprise_7.3.801.v20100929_0755.jar,plugins/org.eclipse.gmf.tooldef.edit.source_2.0.100.v20090114-0940.jar,plugins/org.eclipse.birt.report.data.bidi.utils_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.report.engine.emitter.wpml.config.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.ecf.provider.filetransfer_3.1.0.v20100906-1425.jar,plugins/org.eclipse.birt.report.engine.dataextraction.csv_2.6.2.r262_v20110127.jar,plugins/org.eclipse.ui.externaltools.source_3.2.0.v20100427.jar,plugins/com.ibm.xtools.bizmodeler_7.0.200.v20101006_0655/,plugins/org.eclipse.jet_1.1.1.v201101311015.jar,plugins/com.ibm.cic.licensing.common.core_7.0.202.v20110429_1203.jar,plugins/com.ibm.xtools.comparemerge.gmf.uid_1.0.2.v20110520_2214.jar,plugins/org.eclipse.birt.report.designer.ui.lib.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.sample.pluglet.modelenum_7.3.0.v20100201_0328.jar,plugins/org.eclipse.birt.report.engine.emitter.postscript.config_2.6.2.r262_v20110127.jar,plugins/org.eclipse.pde_3.6.1.v201102101200.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide_1.2.0.v20100423-2359.jar,plugins/org.eclipse.wst.sse.core_1.1.505.v201104070043.jar,plugins/org.eclipse.core.databinding.beans.source_1.2.100.I20100601-0800.jar,plugins/org.eclipse.cdt.gdb.ui_7.0.0.201102110609.jar,plugins/org.eclipse.wst.common.snippets.source_1.2.2.v201101130441.jar,plugins/org.eclipse.uml2.source_3.0.0.v201005031530.jar,plugins/org.apache.wsil4j_1.0.0.v200901211807.jar,plugins/org.eclipse.gmf.codegen_2.2.100.v20100518-2359.jar,plugins/org.eclipse.osgi.source_3.6.2.R36x_v20110210.jar,plugins/org.eclipse.birt.report.item.crosstab.core.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.traceability.reqpro_feature.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.xtools.transform.uml2.viz.reqpro_7.0.300.v20100715_2051.jar,plugins/org.eclipse.tptp.trace.arm.doc.user_4.4.1.v201009092123.jar,plugins/com.ibm.xtools.vizumlv1client.uid_1.0.2.v20101020_0109.jar,plugins/com.ibm.xtools.msword.bridge_7.0.200.v20100929_0755.jar,plugins/org.eclipse.datatools.modelbase.sql.edit_1.0.1.v201002161452.jar,plugins/org.eclipse.pde.runtime_3.4.200.v20100601.jar,plugins/org.eclipse.jst.server.ui.infopop_1.0.400.v200805140145.jar,plugins/com.ibm.xtools.modeler.ui_7.60.300.v20110510_2201.jar,plugins/org.eclipse.hyades.test.tools.core_4.6.0.v201005271900/,plugins/org.eclipse.equinox.security.win32.x86.source_1.0.200.v20100503.jar,plugins/org.eclipse.wst.jsdt.web.support.jsp_1.0.303.v201012160047.jar,plugins/org.apache.batik.svggen_1.6.0.v200805290154.jar,plugins/org.eclipse.wst.common.modulecore_1.2.6.v201103310300.jar,plugins/org.eclipse.jst.server.generic.core.source_1.0.606.v20100512.jar,plugins/com.ibm.xtools.comparemerge.emf.ccdirectory.edit_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.modeler.validation_7.60.0.v20100715_2051.jar,plugins/org.eclipse.equinox.p2.ui.admin.rcp_1.0.101.R36x_v20100823.jar,plugins/org.eclipse.wst.common.emfworkbench.integration_1.2.3.v201012020600.jar,plugins/org.eclipse.ui_3.6.2.M20110203-1100.jar,plugins/org.eclipse.uml2.uml.edit_3.1.0.v201005031530.jar,plugins/org.eclipse.xsd.mapping.editor_2.6.0.v20100914-1218.jar,plugins/com.ibm.xtools.ras.impord.tasks.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.jst.j2ee.xdoclet.runtime.source_1.1.300.v201004280700.jar,plugins/com.ibm.xtools.traceability_7.60.0.v20101006_0655/,plugins/org.eclipse.emf.query.examples_1.2.0.v200901271643.jar,plugins/org.eclipse.jst.ws.consumption.infopop_1.0.300.v200805140230.jar,plugins/org.eclipse.core.filebuffers.source_3.5.100.v20100520-0800.jar,plugins/org.eclipse.equinox.util.source_1.0.200.v20100503.jar,plugins/org.eclipse.cdt.debug.mi.core.source_7.0.1.201102110609.jar,plugins/com.ibm.xtools.traceability.viz_feature.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.xtools.mmi.ui_7.60.300.v20110510_2201.jar,plugins/org.eclipse.compare.core_3.5.101.R36x_v20100929-0800.jar,plugins/com.ibm.xtools.transforms.java.feature.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.rsar.analysis.reporting.oda_7.0.100.v20100517_2203.jar,plugins/com.ibm.icu_4.2.1.v20100412.jar,plugins/com.ibm.ccl.oda.diagram.feature.uid_1.0.2.v20101016_0104.jar,plugins/org.w3c.dom.svg.source_1.1.0.v200806040011.jar,plugins/org.w3c.sac_1.3.0.v20100915/,plugins/org.eclipse.gmf.bridge.ui_1.2.100.v20090709-1925.jar,plugins/org.eclipse.wst.common.ui.source_1.1.500.v200911190730.jar,plugins/org.eclipse.emf.mapping.ecore2xml.source_2.5.0.v20100521-1847.jar,plugins/org.eclipse.birt.report.model_2.6.2.r262_v20110209.jar,plugins/com.ibm.ccl.linkability.provider.core_7.1.100.v20100715_2051.jar,plugins/org.eclipse.emf.importer.ecore_2.6.0.v20100521-1846.jar,plugins/com.ibm.ccl.soa.sketcher.cshelp_1.0.0.v20110408_2147.jar,plugins/com.ibm.xtools.ras.core_7.0.0.v20100805_2013/,plugins/com.ibm.ccl.soa.sketcher.compare_1.0.300.v20110524_0741.jar,plugins/org.w3c.dom.smil_1.0.0.v200806040011.jar,plugins/org.eclipse.birt_2.6.1.v20100813.jar,plugins/org.eclipse.jst.servlet.ui_1.1.406.v201105171500.jar,plugins/com.ibm.rsaz.analysis.java.core_7.0.0.v20090930_2207.jar,plugins/com.ibm.xtools.uml.ui.diagrams.usecase_7.60.300.v20110510_2201.jar,plugins/org.eclipse.emf.mapping.ecore2xml_2.5.0.v20100521-1847.jar,plugins/com.ibm.xtools.comparemerge.msl_7.60.0.v20100715_2051.jar,plugins/org.eclipse.cdt.doc.user_5.1.0.201102110609.jar,plugins/org.eclipse.datatools.sqltools.editor.core.ui_1.0.0.v201001150815.jar,plugins/com.ibm.xtools.updm.ui.organizational_7.3.801.v20100929_0755.jar,plugins/org.eclipse.datatools.connectivity.console.profile_1.0.0.v200906020553.jar,plugins/org.eclipse.ocl_3.0.2.R30x_v201101110610.jar,plugins/com.ibm.xtools.comparemerge.cshelp_7.0.4.v20090708_1529.jar,plugins/org.eclipse.birt.report.engine.emitter.html.config.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.equinox.p2.console_1.0.200.v20100601.jar,plugins/org.eclipse.jdt.ui.source_3.6.2.r362_v20110203.jar,plugins/org.eclipse.jst.j2ee.ejb.annotations.ui.source_1.1.200.v201004290730.jar,plugins/org.eclipse.jst.jee.web_1.0.301.v201007070907.jar,plugins/org.eclipse.emf.ecore.sdo.edit_2.3.0.v200801221930.jar,plugins/org.eclipse.datatools.enablement.hsqldb.dbdefinition_1.0.0.v200906161800.jar,plugins/org.eclipse.jdt.compiler.tool_1.0.100.v_A76_R36x.jar,plugins/org.eclipse.wst.jsdt.manipulation_1.0.200.v201004150600.jar,plugins/org.eclipse.pde.source_3.6.1.v201102101200.jar,plugins/com.ibm.xtools.presentation_7.60.0.v20100715_2051.jar,plugins/org.eclipse.jsch.core.source_1.1.200.I20100505-1245.jar,plugins/com.ibm.xtools.rmp.base.uid_1.0.2.v20110510_2201.jar,plugins/com.ibm.xtools.umldt.rt.cpp.umlal.cpp2.jet2_1.0.0.v20110405_2005.jar,plugins/org.apache.batik.util.gui_1.6.0.v200805290154.jar,plugins/org.eclipse.gmf.runtime.common.ui.services.properties_1.3.0.v20101129-1213.jar,plugins/org.eclipse.wst.common.modulecore.source_1.2.6.v201103310300.jar,plugins/org.mozilla.javascript_1.7.2.v201005080400.jar,plugins/org.eclipse.equinox.registry.source_3.5.0.v20100503.jar,plugins/com.ibm.rational.clearcase.rtc.UCMActivity_7.6.0.v201105111445.jar,plugins/org.apache.batik.dom_1.6.0.v200912221622.jar,plugins/com.ibm.xtools.viz.common_7.5.100.v20110510_2201.jar,plugins/org.w3c.css.sac.source_1.3.0.v200805290154.jar,plugins/org.eclipse.jst.ws.jaxrs.core_1.0.201.v201011231540.jar,plugins/org.eclipse.equinox.transforms.hook_1.0.200.v20100503.jar,plugins/org.eclipse.team.cvs.ui_3.3.302.R36x_v20110203-1036.jar,plugins/org.mortbay.jetty.server_6.1.23.v201004211559.jar,plugins/org.apache.batik.dom.source_1.6.0.v200912221622.jar,plugins/org.eclipse.cdt.ui.source_5.2.2.201102110609.jar,plugins/com.ibm.xtools.uml2.bom.integration.ui_7.0.310.v20100929_0755.jar,plugins/org.eclipse.update.core.source_3.2.402.R36x_v20100629.jar,plugins/com.ibm.xtools.comparemerge.team_7.60.100.v20100916_0104/,plugins/com.ibm.xtools.petal.core_7.0.0.v20110517_1415.jar,plugins/com.ibm.ccl.erf.rsa.report.uml2_1.60.0.v20100715_2051.jar,plugins/org.eclipse.birt.report.data.adapter.source_2.6.2.r262_v20110215.jar,plugins/com.ibm.cic.licensing.common_7.0.14.v20110513_1648.jar,plugins/ilog.views.eclipse.graphlayout.properties_8.7.6.v20101108.jar,plugins/org.eclipse.uml2.codegen.ecore.source_1.6.0.v201005031530.jar,plugins/org.eclipse.emf.mapping.ecore2xml.ui.source_2.5.0.v20100521-1847.jar,plugins/com.ibm.xtools.sample.pluglet.fan_7.2.0.v20100201_0328.jar,plugins/com.ibm.help.common.rational.remote.doc_7.6.0.v20110527_2039.jar,plugins/org.eclipse.wst.xsdeditor.doc.user_1.0.800.v201005192212.jar,plugins/org.eclipse.gmf.runtime.notation.edit_1.4.0.v20100512-1416.jar,plugins/org.eclipse.emf.ant_2.6.1.v20100905-1631.jar,plugins/org.eclipse.equinox.p2.metadata.repository_1.1.1.R36x_v20110302.jar,plugins/org.eclipse.gmf.runtime.common.core_1.4.0.v20100423-2359.jar,plugins/org.eclipse.wst.jsdt.debug.ui.source_1.0.4.v201103310001.jar,plugins/com.ibm.xtools.viz.artifact_7.0.0.v20100715_2051.jar,plugins/com.ibm.process.context_7.0.0.v20100715_2051.jar,plugins/org.eclipse.uml2.common_1.5.0.v201005031530.jar,plugins/com.ibm.xtools.comparemerge.core_7.60.0.v20100715_2051.jar,plugins/org.eclipse.cvs_1.0.500.v201102101200.jar,plugins/org.apache.commons.httpclient.source_3.1.0.v201005080502.jar,plugins/org.eclipse.emf.importer_2.6.0.v20100521-1846.jar,plugins/org.eclipse.datatools.sqltools.sqlbuilder_1.0.3.v201009131745.jar,plugins/com.ibm.xtools.umlnotation_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.reqpro.core_7.0.402.v20101113_0204.jar,plugins/org.eclipse.tptp.platform.profile.server.wst_4.4.2.v201101211050.jar,plugins/org.eclipse.jdt.source_3.6.1.v201102101200.jar,plugins/com.ibm.xtools.uml.profile.tooling_7.60.0.v20110208_0023.jar,plugins/org.eclipse.wst.dtdeditor.doc.user_1.0.600.v201005192212.jar,plugins/com.ibm.xtools.jet.dptk_1.0.0.v20100715_2051.jar,plugins/org.eclipse.jst.common.ui_1.0.3.v201101101700.jar,plugins/org.eclipse.jst.j2ee.xdoclet.runtime_1.1.300.v201004280700.jar,plugins/org.eclipse.pde.api.tools.source_1.0.202.v20100820_r361.jar,plugins/org.eclipse.update.core.win32_3.2.200.v20100512.jar,plugins/com.ibm.xtools.ras.repository.client.plugin_7.0.1.v20100805_2013.jar,plugins/org.eclipse.rcp.source_3.6.0.v201102101200.jar,plugins/com.ibm.rsar.analysis.core.reporting_7.1.0.v20100517_1740.jar,plugins/com.ibm.help.common.doc_7.6.0.v20110304_1609.jar,plugins/org.apache.log4j_1.2.15.v201005080500.jar,plugins/org.eclipse.jst.standard.schemas_1.1.0.v201003031644.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.geoshapes.source_1.4.0.v20100419-2359.jar,plugins/org.eclipse.cdt.dsf.gdb_3.0.0.201102110609.jar,plugins/com.ibm.etools.performance.uid_1.0.2.v20110414_0031.jar,plugins/org.eclipse.jsch.ui_1.1.300.I20100505-1245.jar,plugins/org.eclipse.emf.common_2.6.0.v20100914-1218.jar,plugins/com.ibm.xtools.transform.authoring.mapping_7.3.0.v20101207_0201.jar,plugins/com.ibm.xtools.ras.repository.search.core_7.0.0.v20100805_2013.jar,plugins/org.eclipse.core.runtime.compatibility.source_3.2.100.v20100505.jar,plugins/org.eclipse.equinox.p2.touchpoint.natives_1.0.201.R36x_v20110111.jar,plugins/org.eclipse.birt.chart.device.pdf_2.6.2.r262_v20101230.jar,plugins/org.eclipse.core.jobs.source_3.5.1.R36x_v20100824.jar,plugins/org.eclipse.pde.runtime.source_3.4.200.v20100601.jar,plugins/org.eclipse.wst.jsdt.web.ui_1.0.304.v201012160349.jar,plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.tptp.platform.report.birt_4.5.1.v201101211050.jar,plugins/org.eclipse.wst.jsdt.debug.rhino.source_1.0.1.v201008170101.jar,plugins/org.eclipse.gmf.xpand.source_2.1.0.v20100315-2101.jar,plugins/com.ibm.xtools.updm.ui.service_7.3.801.v20100929_0755.jar,plugins/org.eclipse.wst.wsi_1.0.400.v201004220210.jar,plugins/com.ibm.ccl.da.dw.feature.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.xtools.transform.java.common_7.5.800.v20100929_0755.jar,plugins/com.ibm.xtools.umldt.rt.j2se.umlal.ui_1.0.0.v20110326_0744.jar,plugins/com.ibm.xtools.umldt.rt.transform.c_1.0.0.v20110515_0735.jar,plugins/org.eclipse.equinox.p2.metadata.repository.source_1.1.1.R36x_v20110302.jar,plugins/com.ibm.xtools.comparemerge.emf_7.60.300.v20110510_2201.jar,plugins/org.eclipse.pde.ds.ui_1.0.100.v20100601.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.geoshapes_1.4.0.v20100419-2359.jar,plugins/com.ibm.cic.ide.int_1.0.1.v20100222_2233.jar,plugins/com.ibm.xtools.transform.merge_7.0.0.v20100929_0755.jar,plugins/org.eclipse.datatools.enablement.ibm.db2.luw.ui_1.0.2.v201005211230.jar,plugins/org.eclipse.jdt.ui_3.6.2.r362_v20110203.jar,plugins/org.eclipse.gmf.runtime.emf.commands.core_1.4.0.v20100423-2359.jar,plugins/com.ibm.ccl.welcome.roles_7.0.0.v20100715_2051.jar,plugins/com.ibm.xtools.common.ui.navigator_7.70.300.v20110510_2201.jar,plugins/com.ibm.xtools.upia.pes.model_7.0.801.v20100929_0755.jar,plugins/com.ibm.xtools.dodaf.ui_7.0.801.v20100929_0755.jar,plugins/org.eclipse.datatools.enablement.ibm.db2.zseries.ui_1.0.1.v201005211230.jar,plugins/org.eclipse.tomcat_4.1.230.v20070531/,plugins/org.eclipse.equinox.common.source_3.6.0.v20100503.jar,plugins/com.ibm.xtools.mep.execution.ui_1.1.0.v20110422_0737.jar,plugins/com.ibm.xtools.umldt.rt.c.ui_1.0.0.v20110503_2037.jar,plugins/com.ibm.xtools.umldt.rt.cpp.debug.ui_1.50.0.v20110326_0744.jar,plugins/com.ibm.xtools.traceability.cpp_7.60.0.v20100929_0755.jar,plugins/org.eclipse.jdt.apt.pluggable.core_1.0.301.R36_v20100727-0110.jar,plugins/org.eclipse.jdt.doc.user_3.6.1.r361_v20100721-0800.jar,plugins/com.ibm.xtools.umldt.rt.core_1.50.0.v20110429_1455.jar,plugins/org.eclipse.emf.validation.doc_1.3.0.v20091215-1218.jar,plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile.ui_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.resources.source_2.6.2.r262_v20101014.jar,plugins/org.eclipse.birt.chart.device.extension.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.ccl.erf.birt.ui_1.60.300.v20110510_2201.jar,plugins/org.eclipse.gmf.runtime.common.ui.services.dnd.source_1.4.0.v20100423-2359.jar,plugins/com.ibm.xtools.ras.documentation.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.source_1.2.0.v20100423-2359.jar,plugins/com.ibm.xtools.transforms.xsd.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.birt.report.engine.emitter.html_2.6.2.r262_v20110209.jar,plugins/com.ibm.cic.licensing.flexlm.feature.uid_1.0.2.v20110228_1402.jar,plugins/org.eclipse.ui.forms_3.5.2.r36_v20100702.jar,plugins/org.eclipse.equinox.p2.installer_1.0.200.v20100503a.jar,plugins/com.ibm.ccl.erf.emf.examples_1.60.0.v20100715_2051.jar,plugins/org.eclipse.emf_2.6.0.v20100914-1218.jar,plugins/com.ibm.xtools.uml2.bom.integration_7.0.330.v20100929_0755.jar,plugins/com.ibm.xtools.publish.cshelp_7.0.1.v20090306_1924.jar,plugins/org.eclipse.hyades.execution.trace_4.2.0.v201005061600.jar,plugins/org.eclipse.datatools.connectivity.db.generic_1.0.1.v200908130547.jar,plugins/org.eclipse.birt.report.data.oda.xml_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.chart.reportitem.ui_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.ras.profile.core_7.0.0.v20100805_2013.jar,plugins/org.eclipse.datatools.enablement.ingres_1.0.0.v200906111150.jar,plugins/org.eclipse.gmf.runtime.common.core.source_1.4.0.v20100423-2359.jar,plugins/com.ibm.xtools.umlal.debug.ui_1.0.100.v20110331_1459.jar,plugins/com.ibm.xtools.modeler.rt.ui.diagrams.editor_1.0.0.v20110325_2100.jar,plugins/org.eclipse.emf.ecore.sdo.editor_2.3.0.v200801221930.jar,plugins/com.ibm.xtools.viz.j2se.cshelp_7.0.9.v20110408_2147.jar,plugins/org.eclipse.birt.report.designer.ui.editor.xml.wtp_2.6.2.r262_v20110127.jar,plugins/org.eclipse.gmf.runtime.common.ui.action.ide.source_1.4.0.v20100223-2359.jar,plugins/org.eclipse.cdt_7.0.2.201102110609.jar,plugins/org.eclipse.tptp.platform.common_4.4.4.v201104142332.jar,plugins/com.ibm.xtools.visualization.j2se.feature.uid_1.0.2.v20110510_2201.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.sequence_7.60.200.v20101109_0104.jar,plugins/org.eclipse.hyades.test.doc.user_4.5.0.v201005272100.jar,plugins/org.eclipse.wst.html.ui.infopop_1.0.200.v201004150328.jar,plugins/org.eclipse.jst.ws.creation.ui.source_1.0.511.v201103082026.jar,plugins/org.eclipse.core.net.win32.x86_1.0.100.I20100511-0800.jar,plugins/org.eclipse.wst.internet.cache_1.0.400.v201004280700.jar,plugins/com.ibm.xtools.ras.profile.defauld.component_7.0.1.v20100805_2013.jar,plugins/org.eclipse.gmf.bridge.source_1.1.100.v20100309-2359.jar,plugins/com.ibm.rcp.textanalyzer_6.2.1.200909031836.jar,plugins/org.eclipse.ui.cheatsheets_3.4.0.v20100427.jar,plugins/org.eclipse.birt.report.debug.core.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.report.engine.emitter.postscript_2.6.2.r262_v20110127.jar,plugins/com.ibm.cic.licensing.lum.feature.uid_1.0.2.v20100813_2252.jar,plugins/org.eclipse.wst.common.frameworks.source_1.2.0.v201003040800.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.printing.source_1.4.0.v20100430-1518.jar,plugins/org.eclipse.birt.chart.examples_2.6.2.r262_v20110113.jar,plugins/com.ibm.xtools.modeler.ui.editors_7.70.300.v20110516_2128.jar,plugins/org.eclipse.cdt.debug.mi.ui_6.1.0.201102110609.jar,plugins/org.eclipse.gmf.runtime.common.ui.printing.source_1.4.0.v20100223-2359.jar,plugins/com.ibm.xtools.umldt.rt.ui.examples_1.50.0.v20110326_0744.jar,plugins/org.apache.batik.util_1.6.0.v200805290154.jar,plugins/org.eclipse.gmf.templates.legacy.source_1.0.1.v20100831-1541.jar,plugins/com.ibm.xtools.mep.animation.core_1.0.0.v20110325_2100.jar,plugins/com.ibm.xtools.modeler.ui.viz_7.0.200.v20101021_2044.jar,plugins/org.eclipse.jst.common.project.facet.ui_1.4.102.v201008182136.jar,plugins/com.ibm.xtools.transform.java.profile_1.0.0.v20100929_0755.jar,plugins/com.ibm.xtools.ras.documentation_7.0.100.v20100805_2013.jar,plugins/com.ibm.xtools.vizclient.uid_1.0.2.v20101020_0109.jar,plugins/org.eclipse.jst.j2ee.ui.source_1.1.405.v201104141600.jar,plugins/com.ibm.xtools.updm.ui_7.3.801.v20100929_0755.jar,plugins/com.ibm.xtools.uml.validation.ocl_7.60.0.v20100715_2051.jar,plugins/org.eclipse.birt.report.engine.emitter.ppt_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.viz.cdt.common_7.5.0.v20100929_0755.jar,plugins/com.ibm.xtools.uml.ui.properties_7.60.300.v20110510_2201.jar,plugins/com.ibm.xtools.umldt.rt.transform.ui_1.50.0.v20110518_0733.jar,plugins/com.ibm.xtools.rmp.ui.diagram.notation.edit_1.0.100.v20101118_1550.jar,plugins/org.eclipse.wst.common.project.facet.ui_1.4.103.v201101271715.jar,plugins/org.eclipse.compare.core.source_3.5.101.R36x_v20100929-0800.jar,plugins/org.eclipse.wst.wsi.ui_1.0.501.v201004201506.jar,plugins/org.apache.lucene_1.9.1.v20100518-1140.jar,plugins/org.eclipse.equinox.p2.ql.source_2.0.0.v20100503a.jar,plugins/com.ibm.xtools.viz.cdt_7.5.0.v20110412_0735.jar,plugins/org.eclipse.wst.common.uriresolver_1.1.401.v201004280700.jar,plugins/org.eclipse.wst.html.ui.source_1.0.504.v201101122108.jar,plugins/org.eclipse.datatools.enablement.ibm.db2.luw.dbdefinition_1.0.4.v201005211215.jar,plugins/org.eclipse.datatools.sqltools.debugger.core.ui_1.0.0.v201003161000.jar,plugins/org.eclipse.gmf.graphdef.edit.source_2.0.200.v20090216-1925.jar,plugins/org.eclipse.wst.jsdt.support.firefox.source_1.0.300.v201004150600.jar,plugins/org.eclipse.gmf.tooldef.source_2.0.0.v20090114-0940.jar,plugins/org.eclipse.gmf.validate.source_1.2.0.v20100302-2359.jar,plugins/com.ibm.rsaz.analysis.codereview_7.1.0.v20091008_1446.jar,plugins/org.eclipse.equinox.p2.metadata.source_2.0.1.R36x_v20101202.jar,plugins/com.ibm.ccl.soa.sketcher.integration.uml_1.0.100.v20110524_0741.jar,plugins/org.eclipse.m2m.qvt.oml.emf.util.ui_2.0.1.v20100524-1530.jar,plugins/com.ibm.xtools.topic.msl_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.rmp.core_7.70.300.v20110510_2201.jar,plugins/org.eclipse.emf.commonj.sdo_2.3.0.v200801221930.jar,plugins/org.eclipse.birt.report.designer.ui.source_2.6.2.r262_v20110209.jar,plugins/org.eclipse.birt.report.debug.ui.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.transform.uml2.java.sm_1.0.100.v20110420_0731.jar,plugins/org.eclipse.birt.report.data.oda.sampledb_2.6.2.r262_v20110127/,plugins/com.ibm.xtools.umldt.rt.j2se.umlal.core_1.0.0.v20110401_0743.jar,plugins/com.ibm.xtools.pluglets.feature.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.xtools.codeview.uml_1.0.0.v20110515_0735.jar,plugins/org.eclipse.emf.workspace.ui.source_1.3.0.v200901271819.jar,plugins/org.eclipse.emf.mapping.source_2.6.0.v20100914-1218.jar,plugins/org.eclipse.equinox.preferences_3.3.0.v20100503.jar,plugins/com.ibm.xtools.transform.authoring_7.3.0.v20101207_0201.jar,plugins/org.eclipse.tptp.platform.execution_4.5.1.v201101211050/,plugins/org.eclipse.gmf.runtime.common.ui.services.source_1.3.0.v20100423-2359.jar,plugins/org.eclipse.datatools.enablement.mysql.ui_1.0.0.v200906020900.jar,plugins/com.ibm.xtools.mep.animation.ui_1.1.0.v20110518_0733.jar,plugins/org.eclipse.ui.ide.application_1.0.201.M20100707-0800.jar,plugins/org.eclipse.equinox.p2.director_2.0.3.R36x_v20101117-1018.jar,plugins/com.ibm.xtools.jet.nextsteps.wizard.cshelp_1.0.0.v20090306_1011.jar,plugins/org.eclipse.ant.core.source_3.2.201.v20110203_r362.jar,plugins/com.ibm.xtools.umldt.rt.cpp.debug.core_1.50.0.v20110326_0744.jar,plugins/org.eclipse.m2m.qvt.oml.common.ui_2.0.0.v20091215-2112.jar,plugins/org.eclipse.birt.report.engine.emitter.wpml.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.cdt.core.win32.source_5.2.0.201102110609.jar,plugins/com.ibm.xtools.uml.ui.diagrams.structure_7.60.300.v20110510_2201.jar,plugins/org.eclipse.gmf.runtime.emf.core.compatibility_1.60.200.v20110226_0201.jar,plugins/org.eclipse.emf.importer.source_2.6.0.v20100521-1846.jar,plugins/com.ibm.xtools.umldt.rt.c.core_1.50.0.v20110325_2100.jar,plugins/com.ibm.xtools.ras.export.tasks.ide_7.0.1.v20100805_2013.jar,plugins/org.junit.source_4.8.1.v4_8_1_v20100427-1100.jar,plugins/org.junit.source_3.8.2.v3_8_2_v20100427-1100.jar,plugins/org.eclipse.tptp.test.recorders.url.doc.user_4.7.0.v201005212338.jar,plugins/org.eclipse.jst.j2ee.webservice.ui.source_1.1.400.v201004110600.jar,plugins/org.eclipse.jst.j2ee.ejb.annotation.model.source_1.1.300.v201003112036.jar,plugins/com.ibm.ccl.soa.infrastructure.ui.utils_6.0.0.v20100715_2051.jar,plugins/com.ibm.xtools.umldt.rt.transform.j2se_1.50.0.v20110420_0731.jar,plugins/com.ibm.xtools.dodaf.type_7.0.801.v20100929_0755.jar,plugins/org.eclipse.uml2.uml.ecore.importer.source_2.4.0.v201005031530.jar,plugins/com.ibm.xtools.richtext.uid_1.0.2.v20110516_2128.jar,plugins/com.ibm.support.feedback.core_1.0.3.v20110330_1815.jar,plugins/org.eclipse.gmf.runtime.emf.clipboard.core_1.4.2.v20101111-1500.jar,plugins/org.eclipse.gmf.graphdef.edit_2.0.200.v20090216-1925.jar,plugins/org.apache.commons.el_1.0.0.v201004212143.jar,plugins/com.ibm.xtools.transform.uml2.cpp.cshelp_7.0.7.v20110408_2147.jar,plugins/org.eclipse.jst.ws.axis.ui.doc.user_1.1.100.v201005192217.jar,plugins/com.ibm.xtools.traceability.reqpro_7.60.0.v20110527_1732.jar,plugins/org.mortbay.jetty.jasper_1.0.150.v20101020_0109/,plugins/com.ibm.xtools.viz.artifact.ui_7.0.200.v20110510_2201.jar,plugins/org.eclipse.core.commands.source_3.6.0.I20100512-1500.jar,plugins/org.eclipse.birt.report.engine.fonts_2.6.2.r262_v20110127/,plugins/org.eclipse.ui.browser.source_3.3.1.r36_20101216.jar,plugins/com.ibm.xtools.comparemerge.emf.delta_7.60.300.v20110510_2201.jar,plugins/org.eclipse.team.core.source_3.5.101.R36x_v20110203-1036.jar,plugins/com.ibm.xtools.ras.common.ui_7.0.100.v20100805_2013.jar,plugins/org.eclipse.datatools.enablement.ibm.db2.iseries_1.0.2.v201005211230.jar,plugins/org.eclipse.pde.doc.user_3.6.2.v20101118_r362.jar,plugins/com.ibm.xtools.updm.ui.system_7.3.800.v20100929_0755.jar,plugins/org.eclipse.equinox.p2.directorywatcher_1.0.203.R36x_v20101220.jar,plugins/com.ibm.etools.rup.cshelp_7.0.1.v20090306_1011.jar,plugins/com.ibm.xtools.updm.type_7.4.0.v20110412_0735.jar,plugins/com.ibm.xtools.comparemerge.infopop_7.0.200.v20100715_2051/,plugins/ilog.views.eclipse.graphlayout.gmf_8.7.6.v20101108.jar,plugins/org.eclipse.datatools.sqltools.schemaobjecteditor.ui.pages_1.1.0.200810071.jar,plugins/com.ibm.rsaz.analysis.codereview.java_7.0.300.v20101215_2153.jar,plugins/org.eclipse.emf.transaction.source_1.4.0.v20100331-1738.jar,plugins/com.ibm.xtools.mep.execution.core_1.0.0.v20110515_0735.jar,plugins/com.ibm.ccl.common.splash_1.0.151.v20110510_2201.jar,plugins/com.ibm.ccl.linkability.ide.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.uml2.codegen.ecore_1.6.0.v201005031530.jar,plugins/org.eclipse.gmf.runtime.draw2d.ui_1.4.2.v20101217-0030.jar,plugins/org.eclipse.datatools.enablement.msft.sqlserver.ui_1.0.1.v200908130512.jar,plugins/com.ibm.xtools.viz.cdt.ui.policies_7.0.0.v20100929_0755.jar,plugins/org.eclipse.jdt.apt.core.source_3.3.402.R36_v20110120-1000.jar,plugins/org.eclipse.emf.mapping.xsd2ecore_2.5.0.v20100521-1855.jar,plugins/com.ibm.xtools.transform.cpp.uml2.cshelp_1.1.4.v20110408_2147.jar,plugins/org.eclipse.jdt.core.manipulation.source_1.3.0.v20100520-0800.jar,plugins/com.ibm.rsaz.analysis.core_7.1.200.v20101215_2153.jar,plugins/com.ibm.xtools.umlal.translation.cpp_1.0.100.v20110401_0743.jar,plugins/org.eclipse.datatools.sqltools.db.generic.ui_1.0.0.v200906020900.jar,plugins/org.eclipse.jst.ws.axis.infopop_1.0.300.v200805140230.jar,plugins/com.ibm.xtools.ras.impord.ui.ide.feature.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.umldt.rt.transform.viz.ui_1.50.0.v20110326_0744.jar,plugins/org.eclipse.equinox.p2.ui_2.0.0.v20100518.jar,plugins/org.eclipse.wst.jsdt.debug.ui_1.0.4.v201103310001.jar,plugins/org.eclipse.tptp.test.samples_4.4.0.v201005212338.jar,plugins/org.eclipse.birt.chart.device.pdf.source_2.6.2.r262_v20101230.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.printing_1.4.0.v20100430-1518.jar,plugins/org.eclipse.equinox.p2.core.source_2.0.3.R36x_v20110111.jar,plugins/com.ibm.xtools.transform.authoring.doc.isv_7.2.0.v20110102_0201.jar,plugins/org.eclipse.wst.xml.ui.infopop_1.0.400.v201004292007.jar,plugins/com.ibm.ccl.welcome.bits_7.0.7.vv20101006_0104.jar,plugins/com.ibm.xtools.comparemerge.help.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.m2m.qvt.oml.ecore.imperativeocl_3.0.0.v20091209-1553.jar,plugins/com.ibm.xtools.updm.migration_7.3.810.v20110114_1619.jar,plugins/com.ibm.xtools.ras.profile.defauld.patterns_7.60.0.v20100929_0755.jar,plugins/com.ibm.ccl.feedreader_1.0.5.v20101006_0104.jar,plugins/com.ibm.xtools.upia.pes.ui_7.0.801.v20101019_2201.jar,plugins/com.ibm.xtools.jet.transform.nextsteps_1.0.400.v20100715_2051.jar,plugins/org.eclipse.update.ui_3.2.300.v20100512.jar,plugins/org.eclipse.jface.text.source_3.6.1.r361_v20100825-0800.jar,plugins/org.eclipse.jst.ws.uddiregistry.source_1.0.500.v201004211805.jar,plugins/com.ibm.xtools.patterns.ui.apply.transformprovider_7.60.0.v20100929_0755.jar,plugins/org.eclipse.gmf.runtime.emf.ui.properties.source_1.4.0.v20100304-2359.jar,plugins/org.eclipse.datatools.enablement.sybase.asa.models_1.0.0.v201010140307.jar,plugins/org.eclipse.wst.standard.schemas_1.0.301.v201103302013.jar,plugins/org.eclipse.datatools.enablement.oracle.dbdefinition_1.0.102.v201101120730.jar,plugins/com.ibm.xtools.transform.samples_7.0.500.v20110216_2129/,plugins/com.ibm.xtools.jet.solution_1.0.0.v20100715_2051.jar,plugins/org.eclipse.gef_3.6.2.v20110110-2020.jar,plugins/org.eclipse.birt.chart.ui.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.cdt.make.core_7.0.1.201102110609.jar,plugins/org.eclipse.emf.importer.ecore.source_2.6.0.v20100521-1846.jar,plugins/com.ibm.xtools.transform.java.enumext_7.5.0.v20100929_0755.jar,plugins/com.ibm.xtools.ras.impord_7.0.200.v20100805_2013/,plugins/org.eclipse.tptp.trace.jvmti.client_4.5.3.v201105161135.jar,plugins/com.ibm.xtools.modeling.csguides_7.0.200.v20100929_0755.jar,plugins/org.eclipse.core.filesystem.source_1.3.1.R36x_v20100727-0745.jar,plugins/org.eclipse.birt.core.script.function_2.6.2.r262_v20110209.jar,plugins/org.eclipse.hyades.test.core_4.6.0.v201005212338/,plugins/com.ibm.help.common.rational.getstart.doc_1.0.0.v20110517_1103.jar,plugins/com.ibm.xtools.patterns.ui_7.60.0.v20100929_0755.jar,plugins/org.eclipse.datatools.connectivity.doc.user_1.7.0.20090521092446.jar,plugins/org.eclipse.emf.mapping.ui.source_2.6.0.v20100914-1218.jar,plugins/org.eclipse.emf.ecore.edit.source_2.6.0.v20100914-1218.jar,plugins/org.eclipse.jdt.core.source_3.6.3.v_A77_R36x.jar,plugins/org.eclipse.datatools.enablement.oda.xml_1.2.1.v201010211755.jar,plugins/org.eclipse.emf.databinding.edit_1.2.0.v20100914-1218.jar,plugins/org.eclipse.birt.report.data.oda.xml.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.chart.reportitem.ui.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.jdt.junit.runtime.source_3.4.200.v20100526-0800.jar,plugins/org.eclipse.emf.query_1.2.100.v200903190031.jar,plugins/org.eclipse.emf.mapping.ecore.editor_2.6.0.v20100914-1218.jar,plugins/org.eclipse.update.core_3.2.402.R36x_v20100629.jar,plugins/org.eclipse.birt.report.designer.ui.views.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.datatools.enablement.finfo_1.5.1.v200906161800.jar,plugins/com.ibm.xtools.emf.reminders.core_7.60.0.v20100715_2051.jar,plugins/org.eclipse.cdt.dsf.gdb.ui_2.1.0.201102110609.jar,plugins/org.eclipse.gmf.graphdef.source_2.0.100.v20090420-1925.jar,plugins/org.eclipse.gef.source_3.6.2.v20110110-2020.jar,plugins/com.ibm.xtools.transform.java.uml.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.m2m.qvt.oml.project_2.1.0.v20100524-1530.jar,plugins/com.ibm.xtools.pluglets.core_7.0.100.v20100715_2051.jar,plugins/org.eclipse.gmf.codegen.edit.source_2.2.100.v20100309-2359.jar,plugins/com.ibm.xtools.transforms.java.profile.feature.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.xtools.umldt.rt.j2se.umlal.debug.core_1.0.0.v20110420_0731.jar,plugins/com.ibm.xtools.uml.rt.ui_1.50.0.v20110525_0749.jar,plugins/com.ibm.xtools.jet.ui.resource_7.0.400.v20100715_2051.jar,plugins/com.ibm.xtools.jet.solution.gen_1.0.0.v20100715_2051.jar,plugins/org.eclipse.gmf.map.edit_2.2.100.v20100309-2359.jar,plugins/org.eclipse.birt.report.engine.emitter.ppt.config.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.data.aggregation.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.jdt.debug.ui_3.5.2.v20100928a_r362.jar,plugins/org.eclipse.datatools.enablement.jdt.classpath_1.0.1.v201004070709.jar,plugins/org.eclipse.wst.common.uriresolver.source_1.1.401.v201004280700.jar,plugins/org.eclipse.gmf.runtime.notation_1.4.1.v20100717-0059.jar,plugins/org.eclipse.gmf.runtime.emf.type.core_1.4.0.v20100423-2359.jar,plugins/org.eclipse.gmf.runtime.emf.core.source_1.4.1.v20100909-1300.jar,plugins/org.eclipse.cdt.debug.ui_7.0.0.201102110609.jar,plugins/org.eclipse.wst.jsdt.web.ui.source_1.0.304.v201012160349.jar,plugins/com.ibm.xtools.mep.communication.ui_1.0.0.v20110323_1619.jar,plugins/org.eclipse.emf.ecore.change_2.5.1.v20100907-1643.jar,plugins/org.eclipse.jst.ejb.ui.source_1.1.502.v201101121843.jar,plugins/org.eclipse.equinox.p2.director.app_1.0.201.R36x_v20100823.jar,plugins/com.ibm.xtools.jet.ui_7.1.510.v20110512_1353.jar,plugins/org.eclipse.birt.report.data.oda.sampledb.ui_2.6.2.r262_v20110127.jar,plugins/org.eclipse.datatools.connectivity.oda.design_3.3.2.v201012150951.jar,plugins/org.eclipse.ui.cheatsheets.source_3.4.0.v20100427.jar,plugins/org.eclipse.wst.validation.ui_1.2.204.v201004150700.jar,plugins/com.ibm.ccl.oda.emf_1.60.200.v20101122_2134.jar,plugins/com.ibm.xtools.sample.model.publishing_7.1.200.v20100201_0328.jar,plugins/com.ibm.xtools.uml.transform.core_7.0.400.v20100715_2051.jar,plugins/com.ibm.support.feedback.errorreports.ui_1.0.3.v20110502_0026.jar,plugins/com.ibm.xtools.patterns.ui.authoring_7.60.0.v20110502_2018.jar,plugins/org.eclipse.birt.report.engine.emitter.excel.config_2.6.2.r262_v20110127.jar,plugins/org.eclipse.gmf.xpand.migration.source_1.0.100.v20100309-2359.jar,plugins/org.eclipse.update.scheduler.source_3.2.300.v20100512.jar,plugins/org.eclipse.datatools.help_1.5.0.v200906020553.jar,plugins/org.eclipse.wst.validation.source_1.2.202.v201103212041.jar,plugins/org.eclipse.jdt.launching_3.5.200.v20110105_r362.jar,plugins/com.ibm.xtools.cdt.providers.transfer_7.5.0.v20100929_0755.jar,plugins/com.ibm.xtools.ras.documentation.ui_7.0.1.v20100805_2013.jar,plugins/com.ibm.xtools.cpp.model_7.1.0.v20100929_0755.jar,plugins/com.ibm.xtools.tdi.reqpro.uml.ide.uid_1.0.2.v20101020_0109.jar,plugins/com.ibm.xtools.reqpro.ui.editor_7.1.2.v20100715_2051.jar,plugins/com.ibm.xtools.transform.core.debug_7.0.400.v20100715_2051.jar,plugins/org.eclipse.jst.j2ee.ejb.annotations.xdoclet.source_1.2.100.v201003112036.jar,plugins/com.ibm.xtools.updm.ui.performance_7.0.801.v20100929_0755.jar,plugins/org.eclipse.jst.ws.axis.consumption.core.source_1.0.406.v201004211805.jar,plugins/com.ibm.xtools.umldt.ui_1.50.0.v20110405_2005.jar,plugins/org.eclipse.gmf.bridge_1.1.100.v20100309-2359.jar,plugins/com.ibm.process.feature.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.ccl.linkability.provider.j2ee.ide.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.cdt.launch.source_6.1.0.201102110609.jar,plugins/com.ibm.rcp.rte.nl_6.2.1.20090925-1604.jar,plugins/org.eclipse.datatools.enablement.sybase.asa.ui_1.0.1.v200906111150.jar,plugins/com.ibm.xtools.modeler.ui.properties_7.60.300.v20110516_2128.jar,plugins/org.eclipse.core.net.source_1.2.100.I20100511-0800.jar,plugins/org.eclipse.wst.server.ui.infopop_1.1.100.v201005192130.jar,plugins/com.ibm.xtools.modviz.common.feature.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.viz.cdt.ui_7.5.0.v20110412_0735.jar,plugins/com.ibm.xtools.codeview.uml.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.wst.jsdt.debug.rhino.debugger_1.0.1.v201008170101.jar,plugins/com.ibm.xtools.umldt.rt.umlal.core_1.0.0.v20110518_0733.jar,plugins/com.ibm.xtools.modeler.ui.wizards_7.60.0.v20110510_2201.jar,plugins/org.eclipse.wst.jsdt.core.source_1.1.5.v201104272136.jar,plugins/com.ibm.process.common_7.0.0.v20100715_2051.jar,plugins/org.eclipse.debug.core.source_3.6.0.v20100519.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.deployment_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.umldt.ui.diagrams_1.50.0.v20110405_2005.jar,plugins/org.eclipse.wst.common.api.doc_1.0.1.v200807181737.jar,plugins/org.eclipse.wst.jsdt.debug.core.source_1.0.4.v201103310001.jar,plugins/org.eclipse.ui.presentations.r21.source_3.2.200.I20100517-1500.jar,plugins/com.ibm.xtools.uml.rt.ui.diagrams_1.50.0.v20110518_0733.jar,plugins/com.ibm.cic.licensing.itlm.feature.uid_1.0.2.v20100813_2252.jar,plugins/com.ibm.xtools.me2.core_1.1.0.v20110405_2005.jar,plugins/org.eclipse.gmf.runtime.common.ui.source_1.4.0.v20100518-2230.jar,plugins/org.eclipse.m2m.qvt.oml.ocl_2.1.0.v20100524-1530.jar,plugins/org.eclipse.m2m.qvt.oml.trace.edit_3.0.0.v20091209-1553.jar,plugins/org.eclipse.jst.j2ee.webservice.ui_1.1.400.v201004110600.jar,plugins/org.eclipse.wst.doc.user_1.2.0.v200806052254.jar,plugins/org.eclipse.ant.ui_3.5.0.v20100427.jar,plugins/org.eclipse.ecf.provider.filetransfer.httpclient.ssl_1.0.0.v20100906-1425.jar,plugins/org.eclipse.equinox.p2.ui.admin.source_1.0.0.v20100503.jar,plugins/org.eclipse.tptp.trace_4.4.0.v201005061600.jar,plugins/org.eclipse.birt.report.engine.dataextraction.csv.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.report.data.bidi.utils.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.umldt.rt.to.core_1.0.0.v20110315_1940.jar,plugins/com.ibm.xtools.petal.profile_7.0.0.v20100929_0755.jar,plugins/javax.servlet_2.5.0.v200910301333.jar,plugins/org.eclipse.equinox.p2.garbagecollector.source_1.0.100.v20100503.jar,plugins/org.eclipse.uml2.uml.resources.source_3.1.1.v201008191505.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.providers.ide_1.2.0.v20090403-1720.jar,plugins/org.eclipse.uml2.uml.ecore.exporter.source_2.4.0.v201005031530.jar,plugins/ilog.views.eclipse.crossing_8.7.6.v20101108.jar,plugins/com.ibm.xtools.modeler.ui.marking_7.60.300.v20110518_0102.jar,plugins/org.eclipse.core.filebuffers_3.5.100.v20100520-0800.jar,plugins/org.eclipse.search_3.6.0.v20100520-0800.jar,plugins/org.eclipse.datatools.enablement.ibm.informix_1.0.1.v201005211230.jar,plugins/com.ibm.xtools.modeler.rt.ui.diagrams.structure_1.50.0.v20110515_0735.jar,plugins/org.eclipse.wst.dtd.ui_1.0.500.v201004290328.jar,plugins/org.eclipse.datatools.enablement.msft.sqlserver.dbdefinition_1.0.0.v201004211630.jar,plugins/com.ibm.xtools.patterns.notation_7.60.0.v20100929_0755.jar,plugins/org.eclipse.datatools.enablement.sybase.ase.models_1.0.1.v201010140307.jar,plugins/org.eclipse.equinox.supplement_1.3.1.R36x_v20101021.jar,plugins/org.eclipse.emf.codegen.source_2.6.0.v20100914-1218.jar,plugins/org.eclipse.birt.report.designer.core.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.patterns.cshelp_7.0.1.v20090306_1924.jar,plugins/org.eclipse.gmf.bridge.ui.dashboard_2.0.100.v20100226-2359.jar,plugins/com.ibm.ccl.erf.core.feature.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.transform.uml2.cpp_7.5.10.v20110315_1940.jar,plugins/org.eclipse.datatools.enablement.sybase.ase.dbdefinition_1.0.0.v200906161800.jar,plugins/com.ibm.xtools.sample.create.report.doc_1.0.0.v20100201_0328.jar,plugins/org.eclipse.wst.jsdt.ui.source_1.1.5.v201104070556.jar,plugins/org.eclipse.birt.report.viewer_2.6.2.r262_v20110214/,plugins/org.eclipse.equinox.p2.operations.source_2.0.0.v20100510.jar,plugins/org.eclipse.core.databinding.observable.source_1.3.0.I20100601-0800.jar,plugins/org.eclipse.emf.edit.source_2.6.0.v20100914-1218.jar,plugins/com.ibm.ccl.da.dw_7.0.0.v20100715_2051/,plugins/org.eclipse.birt.report.designer.core_2.6.2.r262_v20110127.jar,plugins/com.ibm.cic.licensing.itlm_7.0.1.v20110105_1929/,plugins/com.ibm.xtools.reqpro.dataaccess.model_7.0.300.v20100715_2051.jar,plugins/org.eclipse.ecf.ssl.source_1.0.100.v20100906-1425.jar,plugins/org.eclipse.gmf.doc_1.3.0.v20090729-2031.jar,plugins/com.ibm.ccl.erf.tools_1.60.200.v20110205_0201.jar,plugins/org.eclipse.pde.launching.source_3.6.0.v20100601.jar,plugins/org.eclipse.equinox.p2.ui.sdk.scheduler_1.0.0.v20100507-1815.jar,plugins/org.eclipse.text_3.5.0.v20100601-1300.jar,plugins/com.ibm.xtools.modeler.ui.jazz_7.60.0.v20100715_2051.jar,plugins/org.eclipse.datatools.connectivity.ui.dse_1.1.4.v201004270430.jar,plugins/org.eclipse.wst.html.core.source_1.1.405.v201104191549.jar,plugins/org.eclipse.jdt.debug.source_3.6.2.v20110406_r362.jar,plugins/org.eclipse.pde.api.tools.ui.source_1.0.201.v20100820_r361.jar,plugins/org.eclipse.birt.report.designer.ui.editor.script_2.6.2.r262_v20110127.jar,plugins/org.eclipse.text.source_3.5.0.v20100601-1300.jar,plugins/org.eclipse.datatools.enablement.mysql_1.0.2.v201002041100.jar,plugins/com.ibm.xtools.umldt.rt.j2se.ui_1.50.0.v20110326_0744.jar,plugins/com.ibm.rsaz.eclipse.ui.compatibility_7.0.100.v20090930_2207.jar,plugins/org.eclipse.gmf.runtime.common.ui.action.source_1.2.0.v20090403-1720.jar,plugins/com.ibm.xtools.rjcb.core_7.0.1.v20100715_2051/,plugins/org.eclipse.jst.j2ee.ejb.source_1.1.402.v201102071010.jar,plugins/org.eclipse.tptp.test.recorders.url_4.7.0.v201005212338/,plugins/com.ibm.xtools.richtext.gef_7.60.300.v20110516_2128.jar,plugins/org.eclipse.datatools.sqltools.routineeditor_1.0.0.v201003161000.jar,plugins/com.ibm.xtools.topic.edit_7.60.0.v20100715_2051.jar,plugins/org.eclipse.ui.win32_3.2.200.I20100509-0800.jar,plugins/org.eclipse.datatools.enablement.ibm.ui_1.0.0.v200906020900.jar,plugins/com.ibm.xtools.rsarte.legal.doc_7.1.8.v20110412_2230.jar,plugins/com.ibm.xtools.ras.repository.core.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.team.core_3.5.101.R36x_v20110203-1036.jar,plugins/org.eclipse.tptp.test.tools.junit.plugin.doc.user_4.7.0.v201005212338.jar,plugins/org.w3c.dom.events_3.0.0.draft20060413_v200905140418.jar,plugins/org.eclipse.datatools.sqltools.result.ui_1.1.1.v201101140400.jar,plugins/com.ibm.xtools.patterns.ui.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.uml2.common.edit_1.5.0.v201005031530.jar,plugins/org.eclipse.jst.server.generic.ui.source_1.0.505.v20100428.jar,plugins/com.ibm.xtools.patterns.core.framework_7.60.100.v20100929_0755.jar,plugins/org.eclipse.gmf.codegen.edit_2.2.100.v20100309-2359.jar,plugins/org.eclipse.help.webapp_3.5.3.r36_20101130.jar,plugins/org.eclipse.ecf.provider.filetransfer.httpclient_4.0.0.v20100906-1425.jar,plugins/com.rational.clearcase.help_7.6.0.v201105111445.jar,plugins/com.ibm.ccl.preferenceharvester.feature.uid_1.0.2.v20110217_1732.jar,plugins/org.eclipse.gmf.runtime.draw2d.ui.source_1.4.2.v20101217-0030.jar,plugins/org.eclipse.jdt.apt.ui.source_3.3.300.v20100513-0845.jar,plugins/com.ibm.xtools.publish.ui.birt.feature.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.viz.core.bootstrap_7.0.0.v20110510_2201.jar,plugins/org.eclipse.equinox.http.servlet_1.1.0.v20100503.jar,plugins/org.eclipse.jst.common.frameworks_1.1.404.v201103311600.jar,plugins/org.eclipse.emf.codegen.ecore.ui.source_2.6.0.v20100914-1218.jar,plugins/org.eclipse.pde.ua.ui_1.0.100.v20100504.jar,plugins/org.eclipse.equinox.ds.source_1.2.1.R36x_v20100803.jar,plugins/com.ibm.xtools.umldt.rt.debug.core_1.0.0.v20110425_2320.jar,plugins/org.eclipse.datatools.connectivity.oda.design.ui_3.2.4.v201012150951.jar,plugins/org.eclipse.gmf.runtime.common.ui.services.dnd.ide.source_1.2.0.v20090403-1720.jar,plugins/com.ibm.xtools.umlal.profiles_1.0.100.v20110401_0743.jar,plugins/org.eclipse.ant.launching.source_1.0.1.v20110404_r362.jar,plugins/org.eclipse.equinox.p2.repository.tools.source_2.0.1.R36x_v20100823.jar,plugins/org.eclipse.ui.console.source_3.5.0.v20100526.jar,plugins/org.eclipse.hyades.trace.views_4.1.703.v201105161135.jar,plugins/com.ibm.help.common.resources.doc_7.6.0.v20110531_2151.jar,plugins/org.eclipse.swt.win32.win32.x86.source_3.6.3.v3659d.jar,plugins/org.eclipse.datatools.connectivity.oda.flatfile_3.1.1.v201101261130.jar,plugins/org.eclipse.wst.xml.ui.source_1.1.104.v201103021532.jar,plugins/ilog.views.eclipse.jlm_8.7.6.v20101108/,plugins/org.eclipse.ui.browser_3.3.1.r36_20101216.jar,plugins/com.ibm.xtools.transform.core.authoring.ide_7.0.400.v20100715_2051.jar,plugins/org.eclipse.birt.report.engine.emitter.postscript.config.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.m2m.qvt.oml.runtime_2.1.0.v20100606-1530.jar,plugins/com.ibm.xtools.umlal.translation.java_1.0.100.v20110117_1549.jar,plugins/org.eclipse.ui.net.source_1.2.100.I20100505-1245.jar,plugins/org.eclipse.equinox.p2.directorywatcher.source_1.0.203.R36x_v20101220.jar,plugins/org.eclipse.equinox.ds_1.2.1.R36x_v20100803.jar,plugins/com.ibm.xtools.uml.ui.diagram_7.60.300.v20110510_2201.jar,plugins/com.ibm.xtools.ras.profile.io.bundled_7.0.100.v20100805_2013.jar,plugins/org.apache.axis_1.4.0.v201005080400/,plugins/com.ibm.xtools.transform.core.uid_1.0.2.v20101020_0109.jar,plugins/org.eclipse.jet.ui_1.0.0.v200906120900.jar,plugins/org.eclipse.ui.views.log.source_1.0.100.v20110210_r362.jar,plugins/com.ibm.xtools.rjcb.core.feature.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.datatools.enablement.sap.maxdb_1.0.0.v200906020900.jar,plugins/com.ibm.xtools.ras.repository.client.xde.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.jst.j2ee.jca.ui.source_1.1.400.v201004150700.jar,plugins/org.eclipse.jst.ws.axis.consumption.ui_1.0.505.v201004211805.jar,plugins/com.ibm.xtools.emf.query.ui_7.60.300.v20110510_2201.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.printing.render_1.4.0.v20100423-2359.jar,plugins/org.eclipse.jdt.junit.runtime_3.4.200.v20100526-0800.jar,plugins/com.ibm.xtools.traceability.cshelp_7.0.0.v20060924.jar,plugins/org.eclipse.jst.j2ee.infopop_1.0.300.v200805140415.jar,plugins/org.eclipse.pde.junit.runtime.source_3.4.100.v20100601.jar,plugins/org.eclipse.birt.report.designer.ui.samplesview_2.6.2.r262_v20110127.jar,plugins/org.eclipse.ecf.filetransfer.source_4.0.0.v20100906-1425.jar,plugins/org.eclipse.birt.report.designer.ui.preview.web_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.report.engine.source_2.6.2.r262_v20110214.jar,plugins/com.ibm.xtools.analysis.uml_feature.uid_1.0.2.v20110125_0206.jar,plugins/org.eclipse.equinox.p2.updatesite_1.0.201.R36x_v20100823.jar,plugins/org.eclipse.core.variables_3.2.400.v20100505.jar,plugins/com.ibm.xtools.transform.cpp.sourcemodelassoc_8.0.0.v20100929_0755.jar,plugins/com.ibm.xtools.comparemerge.emf.uid_1.0.2.v20101016_0104.jar,plugins/ilog.views.eclipse.graphlayout.gmf.properties_8.7.6.v20101108.jar,plugins/com.ibm.xtools.ras.repository.client.xde.ui_7.0.0.v20100805_2013.jar,plugins/org.eclipse.tptp.platform.profile.server.doc.user_4.4.1.v201009092123.jar,plugins/com.ibm.xtools.patterns.core.jetprovider_7.60.0.v20100929_0755.jar,plugins/org.eclipse.wst.xsd.core_1.1.503.v201011121919.jar,plugins/org.eclipse.jet.uml2_1.0.1.v200909041702.jar,plugins/org.eclipse.wst.validation_1.2.202.v201103212041.jar,plugins/com.ibm.xtools.transform.xsd.uml_1.0.110.v20110112_2333.jar,plugins/com.ibm.rsaz.analysis.commandline.core_7.0.0.v20091003_0917.jar,plugins/com.ibm.ccl.linkability.provider.ui_7.1.0.v20100715_2051.jar,plugins/org.eclipse.emf.databinding_1.2.0.v20100914-1218.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.statechart_7.60.200.v20110217_2306.jar,plugins/org.eclipse.equinox.p2.touchpoint.natives.source_1.0.201.R36x_v20110111.jar,plugins/org.eclipse.ocl.ecore_3.0.2.R30x_v201101110610.jar,plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb.ui_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.transform.java.jet2.feature.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.xtools.uml.compatibility_7.60.200.v20110224_1533.jar,plugins/org.eclipse.pde.ui.templates_3.4.200.v20100601.jar,plugins/com.ibm.xtools.analysis.modelanalysis.cshelp_1.0.0.v20100201_0328.jar,plugins/com.ibm.xtools.petal.cshelp_7.0.1.v20090306_1924.jar,plugins/org.eclipse.gmf.tooldef.edit_2.0.100.v20090114-0940.jar,plugins/org.eclipse.equinox.p2.reconciler.dropins_1.1.2.R36x_v20110114.jar,plugins/org.eclipse.datatools.enablement.sqlite.ui_1.0.0.v200906020900.jar,plugins/org.eclipse.wst.command.env.ui_1.1.3.v201004211805.jar,plugins/org.eclipse.tptp.platform.jvmti.client_4.5.3.v201105161135.jar,plugins/org.eclipse.cdt.make.core.source_7.0.1.201102110609.jar,plugins/com.ibm.xtools.umldt.rt.j2se.umlal.core.resources_1.0.0.v20101203_1715.jar,plugins/com.ibm.xtools.rmp.ui.diagram_1.20.310.v20110525_2117.jar,plugins/org.w3c.dom.smil.source_1.0.1.v200903091627.jar,plugins/org.eclipse.jst.ejb.ui_1.1.502.v201101121843.jar,plugins/org.eclipse.gmf.tooling_2.1.0.v20090615-0700.jar,plugins/org.eclipse.ui.ide.application.source_1.0.201.M20100707-0800.jar,plugins/org.eclipse.jdt.core_3.6.3.v_A77_R36x.jar,plugins/com.ibm.xtools.ras.profile.management_7.0.0.v20100805_2013.jar,plugins/org.eclipse.datatools.sqltools.tabledataeditor_1.0.1.v201005250945.jar,plugins/org.eclipse.hyades.ui_4.3.0.v201005181900.jar,plugins/org.eclipse.equinox.p2.installer.source_1.0.200.v20100503a.jar,plugins/com.ibm.xtools.ras.repository.client.xde_7.0.100.v20100805_2013.jar,plugins/org.apache.xml.resolver_1.2.0.v201005080400.jar,plugins/org.eclipse.equinox.simpleconfigurator.source_1.0.200.v20100503.jar,plugins/com.ibm.xtools.umldt.rt.petal.ui_1.50.0.v20110521_0931.jar,plugins/com.ibm.xtools.richtext.control_7.70.300.v20110510_2201.jar,plugins/com.ibm.xtools.rmp.animation_1.0.200.v20110118_0201.jar,plugins/org.eclipse.birt.chart.ui_2.6.2.r262_v20110127.jar,plugins/org.eclipse.datatools.sqltools.data.ui_1.2.0.v201005250945.jar,plugins/com.ibm.xtools.comparemerge.clearcaseversioncheck.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.datatools.enablement.mysql.dbdefinition_1.0.4.v200906161800.jar,plugins/org.eclipse.tptp.platform.ac.win_ia32_4.4.303.v201105161135/,plugins/org.eclipse.tptp.platform.jvmti.runtime_4.6.4.v201105161135/,plugins/com.ibm.xtools.common.ui.wizards_7.70.300.v20110510_2201.jar,plugins/org.eclipse.gmf.runtime.common.ui.action_1.2.0.v20090403-1720.jar,plugins/org.eclipse.equinox.security_1.0.200.v20100503.jar,plugins/com.ibm.xtools.ras.impord.core.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.platform.doc.isv_3.6.2.r362_v20110111.jar,plugins/org.eclipse.xsd.ecore.exporter_2.5.0.v20100521-1855.jar,plugins/com.ibm.xtools.umldt.transform.viz.core_1.50.0.v20110405_2005.jar,plugins/org.eclipse.core.commands_3.6.0.I20100512-1500.jar,plugins/com.ibm.xtools.umldt.rt.petal.ui.wizards_1.50.0.v20110407_2222.jar,plugins/org.eclipse.birt.report.data.oda.jdbc.ui_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.ras.profile.defauld.edit_7.0.2.v20100805_2013.jar,plugins/com.ibm.ccl.soa.infra.ui.utils.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.xtools.uml.rt.ui.properties_1.50.0.v20110525_0749.jar,plugins/org.eclipse.cdt.managedbuilder.gnu.ui.source_7.0.0.201102110609.jar,plugins/org.eclipse.core.runtime.compatibility.registry.source_3.3.0.v20100520.jar,plugins/org.eclipse.ui.workbench_3.6.2.M20110210-1200.jar,plugins/com.ibm.rsaz.analysis.architecture.core_7.0.0.v20101215_2153.jar,plugins/org.eclipse.birt.core.source_2.6.2.r262_v20110209.jar,plugins/org.eclipse.datatools.enablement.msft.sqlserver_1.0.1.v201001180222.jar,plugins/com.ibm.xtools.transform.cpp.uml2_7.0.500.v20110525_1447.jar,plugins/org.eclipse.pde.api.tools_1.0.202.v20100820_r361.jar,plugins/org.eclipse.core.runtime.source_3.6.0.v20100505.jar,plugins/com.ibm.xtools.umldt.rt.transform.j2se.viz.core_1.50.0.v20110326_0744.jar,plugins/com.ibm.xtools.umlviz.core_7.0.500.v20100715_2051.jar,plugins/org.eclipse.pde.ua.core_1.0.100.v20100504.jar,plugins/org.eclipse.emf.codegen.ecore.ui_2.6.0.v20100914-1218.jar,plugins/org.eclipse.emf.validation.ocl.source_1.4.0.v20100224-1657.jar,plugins/org.eclipse.emf.exporter.source_2.6.0.v20100521-1846.jar,plugins/com.ibm.xtools.ras.profile.defauld.webservice_7.0.1.v20100805_2013.jar,plugins/com.ibm.xtools.pluglets.cshelp_7.0.1.v20090306_1924.jar,plugins/org.eclipse.core.resources.win32.x86_3.5.100.v20100505-1345.jar,plugins/com.ibm.xtools.transform.authoring.uml2_7.2.0.v20100715_2051.jar,plugins/org.eclipse.wst.jsdt.ui_1.1.6.v201105162026.jar,plugins/org.eclipse.tptp.platform.core_4.7.0.v201005061600.jar,plugins/org.eclipse.gmf.runtime.emf.commands.core.source_1.4.0.v20100423-2359.jar,plugins/org.eclipse.hyades.test.tools.ui_4.7.1.v201101211050.jar,plugins/org.eclipse.equinox.frameworkadmin.equinox_1.0.200.v20100505.jar,plugins/com.ibm.xtools.upia.ui.bpmn_7.4.0.v20110507_0844.jar,plugins/com.ibm.xtools.uml.transform.rename.java_7.0.412.v20101104_0014.jar,plugins/com.ibm.xtools.umldt.rt.transform.j2se.ui_1.50.0.v20110326_0744.jar,plugins/org.eclipse.equinox.security.source_1.0.200.v20100503.jar,plugins/org.eclipse.wst.common.frameworks.ui_1.2.0.v201004080500.jar,plugins/org.eclipse.cdt.launch_6.1.0.201102110609.jar,plugins/com.ibm.xtools.ras.repository.datastore.plugin_7.0.0.v20100805_2013.jar,plugins/org.eclipse.pde.ds.core.source_1.0.100.v20100601.jar,plugins/org.apache.commons.httpclient_3.1.0.v201005080502.jar,plugins/com.ibm.xtools.pluglets.ui_7.0.100.v20100715_2051.jar,plugins/org.eclipse.servertools.doc.isv_1.0.100.v20090414.jar,plugins/org.eclipse.birt.report.engine.emitter.wpml_2.6.2.r262_v20110127.jar,plugins/org.eclipse.jst.j2ee.jca.ui_1.1.400.v201004150700.jar,plugins/org.eclipse.datatools.sqltools.data.core_1.2.0.v201005241300.jar,plugins/com.ibm.xtools.patterns.ui.apply.jetprovider_7.60.0.v20100929_0755.jar,plugins/org.eclipse.datatools.connectivity.doc.user.contexts_1.7.0.20090521092446.jar,plugins/org.eclipse.wst.command.env_1.0.409.v201004211805.jar,plugins/org.eclipse.birt.report.data.oda.xml.ui.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.umldt.debug.ui_1.50.0.v20110405_2005.jar,plugins/org.eclipse.tptp.platform.profile.server_4.5.0.v201005061600.jar,plugins/com.ibm.xtools.transform.composite_1.0.0.v20100715_2051.jar,plugins/com.ibm.process.config.rsase_7.0.0.v20100929_0755/,plugins/org.eclipse.cdt.gdb.source_7.0.0.201102110609.jar,plugins/org.eclipse.jdt.compiler.apt_1.0.300.v20100513-0845.jar,plugins/org.eclipse.birt.core_2.6.2.r262_v20110209.jar,plugins/org.eclipse.equinox.p2.repository_2.0.2.R36x_v20110111-1500.jar,plugins/com.ibm.xtools.umldt.rt.core.tools_1.50.0.v20110310_1837/,plugins/com.ibm.xtools.modeler.compare_7.60.300.v20110512_0102.jar,plugins/com.ibm.xtools.transform.authoring.mapping.uml2_7.0.400.v20100715_2051.jar,plugins/org.eclipse.datatools.sqltools.parsers.sql.query_1.2.0.v201004291415.jar,plugins/org.eclipse.jst.jsp.ui_1.1.504.v201103231819.jar,plugins/org.eclipse.emf.ecore.editor.source_2.6.0.v20100914-1218.jar,plugins/com.ibm.xtools.reqpro.resource_7.0.100.v20100715_2051.jar,plugins/com.ibm.xtools.transform.ui_7.100.300.v20110510_2201.jar,plugins/org.eclipse.datatools.enablement.sybase.ui_1.0.0.v200906090458.jar,plugins/com.ibm.xtools.petal.core.win32_7.0.0.v20100929_0755.jar,plugins/org.eclipse.jst.j2ee.ejb.annotations.emitter_1.1.200.v200909290826.jar,plugins/org.eclipse.wst.common.environment.source_1.0.400.v200912181832.jar,plugins/org.eclipse.cdt.debug.core.source_7.0.0.201102110609.jar,plugins/org.eclipse.ui.forms.source_3.5.2.r36_v20100702.jar,plugins/com.ibm.xtools.transform.jet.ui.cshelp_7.2.0.v20100618_1742.jar,plugins/com.ibm.xtools.umldt.rt.cpp.core.internal_1.50.0.v20110515_0735.jar,plugins/com.ibm.ccl.linkability.provider.resource_7.0.100.v20100715_2051.jar,plugins/com.ibm.rational.rsart.product.v80_8.0.0.v20110412/,plugins/org.eclipse.ui.source_3.6.2.M20110203-1100.jar,plugins/org.apache.batik.pdf_1.6.0.v200806031500.jar,plugins/org.eclipse.wst.internet.monitor.ui_1.0.406.v20110309.jar,plugins/org.eclipse.equinox.security.ui_1.0.200.v20100503.jar,plugins/org.apache.batik.ext.awt_1.6.0.v200805290154.jar,plugins/com.ibm.xtools.common.ui.reduction_7.60.300.v20110510_2201.jar,plugins/org.eclipse.gmf.runtime.emf.ui.source_1.2.0.v20090403-1720.jar,plugins/org.eclipse.compare.source_3.5.101.R36x_v20100929-0800.jar,plugins/com.ibm.xtools.emf.core_7.70.300.v20110510_2201.jar,plugins/com.ibm.xtools.transform.ui.uid_1.0.2.v20110510_2201.jar,plugins/org.eclipse.wst.common.emfworkbench.integration.source_1.2.3.v201012020600.jar,plugins/org.objectweb.asm_3.2.0.v200909071300.jar,plugins/com.ibm.xtools.modeler.ui.profile_7.60.0.v20101204_0201.jar,plugins/com.ibm.xtools.transform.uml2.java.sm.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.tptp.platform.doc.user_4.3.1.v201009092123.jar,plugins/com.ibm.xtools.viz.j2se.ui_7.6.300.v20110514_0146.jar,plugins/org.eclipse.uml2.uml.editor_3.1.0.v201005031530.jar,plugins/org.eclipse.datatools.sqltools.plan_1.0.0.v200906022302.jar,plugins/org.eclipse.birt.report.engine.script.javascript.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.emf.transaction.ui.source_1.4.0.v20090819-1300.jar,plugins/org.eclipse.ecf.provider.filetransfer.httpclient.source_4.0.0.v20100906-1425.jar,plugins/com.ibm.xtools.reqpro.modelupgrade.feature.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.xtools.umldt.rt.transform.cpp.ui_1.50.0.v20110331_1459.jar,plugins/com.ibm.xtools.umlal.profiles.feature.uid_1.0.2.v20110415_0734.jar,plugins/com.ibm.xtools.ras.repository.client.workgroup.ui.feature.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.mmi.cshelp_7.0.3.v20110408_2147.jar,plugins/com.ibm.xtools.uml.ui.diagrams.interaction_7.60.300.v20110510_2201.jar,plugins/org.eclipse.jem.beaninfo.vm_2.0.300.v201004110600.jar,plugins/org.eclipse.gmf.runtime.common.ui.services.dnd_1.4.0.v20100423-2359.jar,plugins/com.ibm.xtools.umldt.rt.transform.cpp_1.50.0.v20110518_0733.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.properties.source_1.4.2.v20101130-0030.jar,plugins/com.ibm.xtools.mdx.profiles_7.0.300.v20110407_2222/,plugins/org.eclipse.tptp.platform.report.core_4.5.1.v201009092123.jar,plugins/org.eclipse.jst.ws.infopop_1.0.300.v200805140230.jar,plugins/org.eclipse.compare.win32.source_1.0.101.R36x_v20101103-0618.jar,plugins/org.eclipse.gmf.codegen.ui.source_1.1.200.v20100302-2359.jar,plugins/org.eclipse.jst.server.ui_1.1.102.v20110406.jar,plugins/com.ibm.xtools.sample.umlmodels_7.1.4.v20100201_0328.jar,plugins/com.ibm.xtools.viz.umlv1.compare_7.0.1200.v20100715_2051.jar,plugins/org.eclipse.jdt.launching.source_3.5.200.v20110105_r362.jar,plugins/org.eclipse.wst.common.infopop.source_1.0.300.v201004280700.jar,plugins/org.eclipse.equinox.transforms.xslt.source_1.0.200.v20100503.jar,plugins/com.ibm.xtools.publish.viz_7.60.0.v20100715_2051/,plugins/org.eclipse.cdt.ui_5.2.2.201102110609.jar,plugins/org.eclipse.help.ui_3.5.3.r36_20101116.jar,plugins/org.eclipse.emf.mapping.xsd2ecore.editor_2.6.0.v20100521-1855.jar,plugins/com.ibm.xtools.transform.uml2.viz_7.0.400.v20100715_2051.jar,plugins/org.eclipse.jem.beaninfo.vm.common_2.0.300.v201004110600.jar,plugins/org.eclipse.birt.chart.ui.extension_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.emf.reminders.ui_7.60.0.v20100715_2051.jar,plugins/org.w3c.css.sac_1.3.0.v200805290154.jar,plugins/org.eclipse.wst.server.core.source_1.1.207.v20110401_1511.jar,plugins/com.ibm.xtools.emf.index_7.60.200.v20101106_0006.jar,plugins/com.ibm.xtools.modeler.ui.providers_7.60.0.v20100717_0119.jar,plugins/org.eclipse.equinox.p2.director.app.source_1.0.201.R36x_v20100823.jar,plugins/com.ibm.xtools.comparemerge.richtext_7.60.300.v20110514_0146.jar,plugins/com.ibm.xtools.patterns.content.gof_7.6.0.v20101006_0655/,plugins/com.ibm.xtools.updm.ui.capabilities_7.0.801.v20100929_0755.jar,plugins/org.eclipse.emf.validation.ocl_1.4.0.v20100224-1657.jar,plugins/org.eclipse.gmf.xpand.editor.source_2.1.0.v20100428-2359.jar,plugins/com.ibm.xtools.csguides.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.jst.ws.creation.ejb.ui.source_1.0.201.v201004211805.jar,plugins/org.eclipse.gmf.codegen.ui_1.1.200.v20100302-2359.jar,plugins/org.eclipse.help.source_3.5.0.v20100524.jar,plugins/com.ibm.cic.planverifier_1.1.1.v20110510_2201.jar,plugins/org.eclipse.wst.sse.ui_1.2.4.v201103231819.jar,plugins/org.eclipse.equinox.p2.discovery.compatibility_1.0.1.v20110204-1323.jar,plugins/org.eclipse.gmf.ecore.editor_2.2.0.v20100315-2359.jar,plugins/org.eclipse.jem.workbench_2.0.301.v201104271300.jar,plugins/org.apache.derby.core_10.5.1.1_v20100129/,plugins/org.eclipse.jst.jee.ejb.source_1.0.301.v201007070821.jar,plugins/org.eclipse.gmf.runtime.notation.providers.source_1.3.0.v20100115-2350.jar,plugins/com.ibm.xtools.viz.j2se_7.2.0.v20110514_0146.jar,plugins/com.ibm.cic.ide.int.feature.uid_1.0.2.v20100813_2252.jar,plugins/com.ibm.process_7.1.0.v20100715_2051/,plugins/org.apache.commons.logging_1.0.4.v201005080501.jar,plugins/com.ibm.xtools.transform.composite.ui_1.0.0.v20100715_2051.jar,plugins/org.eclipse.sdk_3.6.2.v201102101200/,plugins/org.eclipse.equinox.launcher.source_1.1.1.R36x_v20101122_1400.jar,plugins/javax.xml.rpc_1.1.0.v201005080400/,plugins/com.ibm.xtools.transform.fuse.uid_1.0.2.v20101020_0109.jar,plugins/com.ibm.xtools.ras.profile.defauld.component.edit_7.0.2.v20100805_2013.jar,plugins/org.eclipse.compare_3.5.101.R36x_v20100929-0800.jar,plugins/org.eclipse.cdt.debug.core_7.0.0.201102110609.jar,plugins/org.eclipse.cdt.debug.mi.ui.source_6.1.0.201102110609.jar,plugins/org.eclipse.ui.intro_3.4.0.v20100427.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.actions_1.4.0.v20100223-2359.jar,plugins/com.ibm.xtools.reqpro.uml_7.0.401.v20100715_2051.jar,plugins/org.eclipse.wst.sse.ui.infopop_1.0.300.v201004150328.jar,plugins/org.eclipse.birt.report.data.oda.xml.ui_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.patterns.transfer.provider_7.60.0.v20100929_0755.jar,plugins/org.eclipse.gmf.sdk_1.0.0.v20090615-0700.jar,plugins/org.eclipse.ocl.ecore.source_3.0.2.R30x_v201101110610.jar,plugins/org.eclipse.gmf.runtime.draw2d.ui.render.source_1.4.2.v20101111-1500.jar,plugins/com.ibm.xtools.umldt.rt.cpp.umlal.core_1.0.0.v20110401_0743.jar,plugins/com.ibm.xtools.analysis.uml.metrics_7.1.100.v20110125_0206.jar,plugins/com.ibm.xtools.transform.uml2.viz.cshelp_7.0.1.v20090306_1924.jar,plugins/com.ibm.rsar.analysis.reporting.oda.base.compatability_7.0.100.v20091130_2021.jar,plugins/org.eclipse.wst.command.env.infopop_1.0.100.v200805301544.jar,plugins/com.ibm.xtools.umldt.debug.core_1.50.0.v20110405_2005.jar,plugins/com.ibm.xtools.ras.profile.defauld.webservice.editor_7.0.0.v20100805_2013.jar,plugins/com.ibm.ccl.erf.birt.report.ic_1.60.0.v20100715_2051/,plugins/org.eclipse.ui.workbench.compatibility_3.2.100.I20100511-0800/,plugins/org.eclipse.emf.validation.ui.ide.source_1.3.0.v200901271722.jar,plugins/org.eclipse.jdt.apt.ui_3.3.300.v20100513-0845.jar,plugins/org.eclipse.ecf.identity.source_3.1.0.v20100906-1425.jar,plugins/org.eclipse.equinox.p2.updatechecker.source_1.1.101.R36x_v20100823.jar,plugins/org.apache.batik.transcoder.source_1.6.0.v200805290154.jar,plugins/org.eclipse.equinox.p2.console.source_1.0.200.v20100601.jar,plugins/org.eclipse.epf.common.ui_1.5.0.v20080430-1709.jar,plugins/org.eclipse.birt.resources_2.6.2.r262_v20101014/,plugins/org.eclipse.equinox.p2.ui.admin.rcp.source_1.0.101.R36x_v20100823.jar,plugins/org.eclipse.emf.ecore.change.edit_2.5.0.v20100521-1846.jar,plugins/org.eclipse.gmf.runtime.emf.clipboard.core.source_1.4.2.v20101111-1500.jar,plugins/com.ibm.ccl.erf.ui.services_1.60.0.v20100715_2051/,plugins/org.eclipse.equinox.util_1.0.200.v20100503.jar,plugins/org.eclipse.emf.query.doc_1.2.0.v20091210-1711.jar,plugins/com.ibm.ccl.f1.mapping.ui.cshelp_1.0.0.v20090306_1011.jar,plugins/org.eclipse.jface.source_3.6.2.M20110210-1200.jar,plugins/org.eclipse.gmf.bridge.ui.dashboard.source_2.0.100.v20100226-2359.jar,plugins/org.eclipse.cdt.managedbuilder.core.source_7.0.2.201102110609.jar,plugins/org.eclipse.jst.j2ee.ejb.annotations.ui_1.1.200.v201004290730.jar,plugins/org.eclipse.equinox.p2.jarprocessor.source_1.0.200.v20100503a.jar,plugins/org.eclipse.equinox.p2.ui.sdk.source_1.0.100.v20100513.jar,plugins/org.eclipse.birt.report.engine.emitter.ppt.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.cic.planverifier.feature.uid_1.0.2.v20101101_1901.jar,plugins/com.ibm.xtools.transform.uml2.java.marker_7.0.100.v20100929_0755.jar,plugins/com.ibm.xtools.updm.ui.report_7.3.801.v20101006_0655/,plugins/org.eclipse.wst.internet.monitor.core_1.0.405.v20110309.jar,plugins/org.eclipse.tptp.platform.report.ui_4.2.0.v201005061600.jar,plugins/com.jcraft.jsch.source_0.1.41.v200903070017.jar,plugins/org.eclipse.equinox.p2.updatechecker_1.1.101.R36x_v20100823.jar,plugins/org.eclipse.wst.web.ui_1.1.400.v201004141630.jar,plugins/com.ibm.xtools.mdx.profiles.feature.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.ccl.linkability.provider.j2ee_7.0.200.v20100715_2051.jar,plugins/org.eclipse.gmf.runtime.common.ui.action.ide_1.4.0.v20100223-2359.jar,plugins/com.ibm.xtools.reqpro.dataaccess_7.0.401.v20100715_2051/,plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.report.engine.emitter.prototype.excel.source_2.6.2.r262_v20110215.jar,plugins/com.ibm.ccl.linkability.core_7.0.400.v20100715_2051.jar,plugins/org.eclipse.gmf.runtime.gef.ui_1.4.0.v20100430-1518.jar,plugins/com.ibm.dojo.runtime_1.1.0.v20100715_2051/,plugins/com.ibm.ccl.erf.rsa.report.data_1.60.0.v20100715_2051/,plugins/org.eclipse.tptp.platform.probekit_4.5.0.v201005061600.jar,plugins/com.ibm.ccl.linkability.provider.uml.ide.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.me2.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.datatools.enablement.ibm.db2.iseries.dbdefinition_1.0.3.v200906161800.jar,plugins/com.ibm.xtools.dptk.doc_1.1.1.v20110211_1741.jar,plugins/com.ibm.xtools.umldt.core_1.50.0.v20110503_2037.jar,plugins/com.ibm.rational.clearcase.ccimport_7.1.0.v201001271035/,plugins/com.ibm.xtools.publish.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.datatools.enablement.ibm.db2.zseries_1.0.2.v201005211230.jar,plugins/org.eclipse.jst.j2ee.doc.user_1.1.300.v201007141655.jar,plugins/com.ibm.xtools.viz.j2se.javadoc.cshelp_7.0.4.v20110408_2147.jar,plugins/com.ibm.xtools.tdi.reqpro.resource.ide.uid_1.0.2.v20101020_0109.jar,plugins/org.eclipse.wst.html.ui_1.0.504.v201101122108.jar,plugins/org.eclipse.wst.web.ui.source_1.1.400.v201004141630.jar,plugins/org.eclipse.hyades.logging.core_4.4.0.v201005061600/,plugins/com.ibm.xtools.patterns.framework_7.60.0.v20100929_0755.jar,plugins/org.eclipse.emf.databinding.edit.source_1.2.0.v20100914-1218.jar,plugins/com.ibm.xtools.ras.repository.core_7.0.1.v20100805_2013.jar,plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.2.R36x_v20101222/,plugins/com.ibm.xtools.modeler.ui.search_7.60.200.v20110124_1541.jar,plugins/org.eclipse.uml2.uml.ecore.exporter_2.4.0.v201005031530.jar,plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile.ui.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.umldt.rt.j2se.runtime_1.0.0.v20100929_0755.jar,plugins/com.ibm.xtools.dodaf.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.xtools.ras.profile.defauld.patterns.editor_7.60.0.v20100929_0755.jar,plugins/org.eclipse.jst.ws.axis.consumption.ui.source_1.0.505.v201004211805.jar,plugins/com.ibm.xtools.ras.impord.ui.wizard_7.0.0.v20100805_2013.jar,plugins/com.ibm.xtools.ras.repository.client.workgroup.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.wst.css.core_1.1.403.v201103021532.jar,plugins/com.ibm.xtools.modelerclient.uid_1.0.2.v20110203_0202.jar,plugins/org.eclipse.birt.report.model.adapter.oda_2.6.2.r262_v20110209.jar,plugins/org.eclipse.datatools.connectivity.ui_1.2.1.v201010211415.jar,plugins/com.ibm.cic.install.launcher_1.0.400.v20100222_2233.jar,plugins/com.ibm.cic.licensing.common.util_7.0.302.v20101007_1238.jar,plugins/com.ibm.xtools.reqpro.cshelp_7.0.3.v20090311_1011.jar,plugins/org.eclipse.jst.jee_1.0.303.v201103311600.jar,plugins/com.ibm.xtools.visualization.cdt.feature.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.xtools.updm.ui.strategic_7.3.800.v20100929_0755.jar,plugins/com.ibm.rsaz.analysis.codereview.java.rules_7.0.100.v20100517_1740.jar,plugins/com.ibm.xtools.transform.uml2.java5_7.5.800.v20110420_0731.jar,plugins/com.ibm.ccl.linkability.provider.j2se.ide.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.ccl.linkability.provider.resource.ide.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.xtools.updm.uid_1.0.2.v20110517_0745.jar,plugins/org.eclipse.update.scheduler_3.2.300.v20100512.jar,plugins/org.eclipse.rcp_3.6.0.v201102101200.jar,plugins/org.eclipse.jdt.apt.pluggable.core.source_1.0.301.R36_v20100727-0110.jar,plugins/org.eclipse.wst.xml.core_1.1.504.v201104070043.jar,plugins/com.ibm.xtools.umldt.rt.j2se.debug.core_1.0.0.v20110425_2320.jar,plugins/com.ibm.xtools.umldt.rt.petal.ui.cpp_1.50.0.v20110515_0735.jar,plugins/com.ibm.ccl.linkability.ui_7.0.100.v20100715_2051.jar,plugins/org.eclipse.emf.edit.ui_2.6.0.v20100914-1218.jar,plugins/org.eclipse.datatools.enablement.sqlite_1.0.0.v201002041100.jar,plugins/org.eclipse.datatools.sqltools.debugger.core_1.0.1.v201005250945.jar,plugins/com.ibm.rsaz.analysis.architecture.java_7.0.0.v20091130_2021.jar,plugins/org.eclipse.emf.transaction.doc_1.4.0.v20091215-1213.jar,plugins/org.eclipse.hyades.test.ui_4.3.102.v201104132345.jar,plugins/com.ibm.xtools.cpp2.model_1.50.0.v20100929_0755.jar,plugins/com.ibm.xtools.ras.type.analyzer.ui_7.0.1.v20100805_2013.jar,plugins/org.eclipse.gmf.runtime.emf.ui_1.2.0.v20090403-1720.jar,plugins/com.ibm.xtools.uml.compare_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.umldt.rt.transform.cpp.viz.ui_1.50.0.v20100929_0755.jar,plugins/com.ibm.xtools.ras.common.ui.ide.feature.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.analysis.codereview.java.globalization_7.0.300.v20100909_1452.jar,plugins/org.eclipse.ui.views.log_1.0.100.v20110210_r362.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.providers.source_1.4.0.v20100430-1518.jar,plugins/org.w3c.dom.smil_1.0.1.v200903091627.jar,plugins/org.eclipse.datatools.sqltools.parsers.sql.lexer_1.0.1.v200906030654.jar,plugins/com.ibm.xtools.ras.export.tasks.feature.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.transform.uml2.xsd.profile_1.0.120.v20110315_1940.jar,plugins/org.eclipse.ui.views_3.5.1.M20110202-0800.jar,plugins/com.ibm.xtools.uml.ui.diagrams.component_7.60.200.v20110114_0201.jar,plugins/com.ibm.xtools.codeview_1.0.0.v20110503_2037.jar,plugins/com.ibm.xtools.analysis.uml.review_7.1.100.v20110125_0206.jar,plugins/org.eclipse.tptp.platform.instrumentation.ui_4.4.2.v201101211050.jar,plugins/com.ibm.xtools.emf.msl_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.reqpro.j2se_7.0.100.v20100715_2051.jar,plugins/org.eclipse.gmf.examples.runtime.ui.pde_1.4.1.v20100720-0030.jar,plugins/org.eclipse.wst.common.emf_1.2.3.v201012100400.jar,plugins/org.eclipse.wst.common.core_1.2.0.v200908252030.jar,plugins/org.eclipse.wst.internet.monitor.core.source_1.0.405.v20110309.jar,plugins/org.eclipse.datatools.enablement.sybase.asa.schemaobjecteditor.examples_2.5.0.200810071.jar,plugins/com.ibm.ccl.oda.uml.feature.uid_1.0.2.v20110216_2129.jar,plugins/org.eclipse.wst.server.discovery.source_1.0.102.v20110427.jar,plugins/org.eclipse.birt.chart.examples.core.source_2.6.2.r262_v20110120.jar,plugins/org.eclipse.cdt.managedbuilder.ui.source_7.0.0.201102110609.jar,plugins/com.ibm.xtools.viz.cdt.bootstrap_7.5.0.v20100929_0755.jar,plugins/org.eclipse.ltk.core.refactoring_3.5.101.r362_v20101117-0800.jar,plugins/com.ibm.xtools.transform.uml2.viz.reqpro.uid_1.0.2.v20101020_0109.jar,plugins/com.ibm.xtools.emf.validation.core_7.60.0.v20100715_2051.jar,plugins/org.eclipse.wst.sse.ui.source_1.2.4.v201103231819.jar,plugins/ilog.views.eclipse.graphlayout_8.7.6.v20101108.jar,plugins/org.eclipse.jst.ws.consumption.ui.source_1.1.303.v201103082026.jar,plugins/com.ibm.etools.ftp.ui_1.0.100.v20100715_2051.jar,plugins/com.ibm.xtools.transform.uml2.mapping.ui.cshelp_7.0.3.v20090306_1924.jar,plugins/org.eclipse.jst.jsp.ui.infopop_1.0.200.v201004150328.jar,plugins/org.eclipse.birt.report.designer.ui.ide.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.wst.common.snippets_1.2.2.v201101130441.jar,plugins/org.eclipse.wst.common.modulecore.ui.source_1.0.4.v201101101700.jar,plugins/com.ibm.xtools.ras.repository.ui.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.datatools.sqltools.db.derby.ui_1.0.0.v200906020900.jar,plugins/org.hamcrest.core_1.1.0.v20090501071000.jar,plugins/org.eclipse.core.runtime_3.6.0.v20100505.jar,plugins/org.eclipse.cdt.dsf.gdb.ui.source_2.1.0.201102110609.jar,plugins/org.eclipse.jst.jee.ui.source_1.0.305.v201105110300.jar,plugins/org.sat4j.core_2.2.0.v20100429.jar,plugins/com.ibm.xtools.topic_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.interaction.overview_7.60.300.v20110510_2201.jar,plugins/com.ibm.ccl.oda.uml_1.60.200.v20110115_0201.jar,plugins/org.eclipse.cdt.dsf.ui_2.1.2.201102110609.jar,plugins/org.eclipse.jdt.compiler.tool.source_1.0.100.v_A76_R36x.jar,plugins/org.eclipse.jst.j2ee.core_1.2.5.v201104261700.jar,plugins/org.eclipse.tptp.platform.report_4.4.0.v201005061600.jar,plugins/com.ibm.xtools.transform.uml2.java_7.0.500.v20100929_0755.jar,plugins/com.ibm.xtools.transform.uml2_7.0.400.v20100715_2051.jar,plugins/com.ibm.xtools.uml.core_7.60.300.v20110510_2201.jar,plugins/org.eclipse.gef.doc.isv_3.5.0.v20100519-2050.jar,plugins/org.eclipse.equinox.p2.ui.admin_1.0.0.v20100503.jar,plugins/org.eclipse.m2m.qvt.oml_3.0.1.v20100901-1530.jar,plugins/com.ibm.xtools.umldt.rt.transform.c.cshelp_1.0.0.v20110411_1749.jar,plugins/com.ibm.rsar.analysis.reporting.oda.compatibility_7.0.100.v20090930_2207.jar,plugins/org.eclipse.cdt.dsf.ui.source_2.1.2.201102110609.jar,plugins/com.ibm.xtools.umldt.rt.debug.launch.ui_1.0.0.v20110326_0744.jar,plugins/org.eclipse.datatools.enablement.hsqldb_1.0.0.v200906020900.jar,plugins/org.eclipse.datatools.sqltools.sql.ui_1.0.0.v200906022302.jar,plugins/org.eclipse.emf.ecore.source_2.6.1.v20100914-1218.jar,plugins/org.eclipse.jst.j2ee.ejb.annotations.xdoclet_1.2.100.v201003112036.jar,plugins/com.ibm.xtools.cpp.ui_7.6.0.v20100929_0755.jar,plugins/com.ibm.rsar.analysis.reporting.oda.ui_7.0.100.v20090930_2207.jar,plugins/org.eclipse.gmf.tooling.source_2.1.0.v20090615-0700.jar,plugins/com.ibm.xtools.umldt.rt.cpp.umlal.ui_1.0.0.v20110326_0744.jar,plugins/com.rational.clearcase_7.6.0.v201105111445/,plugins/org.eclipse.jdt_3.6.1.v201102101200.jar,plugins/org.eclipse.jet.core_1.2.1.v201101271243.jar,plugins/org.eclipse.jst.ws.source_1.0.507.v201004211805.jar,plugins/org.eclipse.pde.ds.ui.source_1.0.100.v20100601.jar,plugins/org.eclipse.datatools.connectivity.sqm.server.ui_1.1.100.v201009280455.jar,plugins/com.ibm.xtools.reqpro.uml.traceability_7.0.601.v20101014_2159.jar,plugins/org.eclipse.datatools.modelbase.sql.query.edit_1.0.0.v200906022249.jar,plugins/com.ibm.xtools.modviz.common.base.feature.uid_1.0.2.v20101019_0105.jar,plugins/com.ibm.xtools.ras.repository.search.ui_7.0.100.v20100805_2013.jar,plugins/org.eclipse.jsch.ui.source_1.1.300.I20100505-1245.jar,plugins/org.eclipse.wst.server.ui.doc.user_1.1.400.v201104111553.jar,plugins/org.eclipse.jdt.debug.ui.source_3.5.2.v20100928a_r362.jar,plugins/com.ibm.xtools.umlclient.uid_1.0.2.v20110520_2214.jar,plugins/org.eclipse.emf.ecore.xmi.source_2.5.0.v20100521-1846.jar,plugins/com.ibm.xtools.ras.appearance.ui_7.0.0.v20100805_2013.jar,plugins/javax.activation_1.1.0.v201005080500.jar,plugins/com.ibm.xtools.tdi.reqpro.j2ee.ide.uid_1.0.2.v20101020_0109.jar,plugins/org.eclipse.wst.validation.ui.source_1.2.204.v201004150700.jar,plugins/com.ibm.xtools.viz.j2se.bootstrap_7.1.100.v20110510_2201.jar,plugins/org.eclipse.gmf.tooldef_2.0.0.v20090114-0940.jar,plugins/org.eclipse.gmf.map.edit.source_2.2.100.v20100309-2359.jar,plugins/org.eclipse.xsd.mapping_2.6.0.v20100914-1218.jar,plugins/org.eclipse.xsd.ecore.converter_2.6.0.v20100914-1218.jar,plugins/org.apache.batik.ext.awt.source_1.6.0.v200805290154.jar,plugins/org.eclipse.gmf.xpand.qvtlibrary_1.1.0.v20100309-2359.jar,plugins/org.eclipse.datatools.connectivity.dbdefinition.genericJDBC_1.0.1.v200906161815.jar,plugins/org.eclipse.emf.validation.ui.ide_1.3.0.v200901271722.jar,plugins/org.eclipse.birt.report.designer.samplereports_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.umlal.core_1.1.100.v20110515_0735.jar,plugins/com.ibm.xtools.sample.pattern.apply_7.2.1.v20100201_0328.jar,plugins/org.eclipse.birt.report.engine.emitter.pdf_2.6.2.r262_v20110127.jar,plugins/org.eclipse.ui.views.properties.tabbed.source_3.5.100.I20100509-0800.jar,plugins/com.ibm.xtools.jet.nextsteps.wizard_1.0.430.v20110513_0101.jar,plugins/org.eclipse.core.databinding.source_1.3.100.I20100601-0800.jar,plugins/com.ibm.xtools.viz.cdt.ui.vizmenu_7.5.0.v20110201_0853.jar,plugins/com.ibm.xtools.rmp.ui.diagram.notation_1.0.300.v20110510_2201.jar,plugins/org.eclipse.gmf.runtime.diagram.ui_1.4.1.v20100909-1300.jar,plugins/org.eclipse.emf.converter_2.5.0.v20100914-1218.jar,plugins/org.eclipse.emf.common.source_2.6.0.v20100914-1218.jar,plugins/org.eclipse.jface.databinding.source_1.4.0.I20100601-0800.jar,plugins/org.eclipse.birt.report.engine.emitter.pdf.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.jst.j2ee.jca_1.1.400.v201005270700.jar,plugins/com.ibm.xtools.uml.profile.tooling.ui_7.60.0.v20101021_0105.jar,plugins/org.mozilla.javascript.source_1.7.2.v201005080400.jar,plugins/org.eclipse.birt.report.engine.emitter.config.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.gmf.runtime.notation.providers_1.3.0.v20100115-2350.jar,plugins/org.eclipse.equinox.p2.touchpoint.eclipse_2.0.3.R36x_v20101202.jar,plugins/org.eclipse.jst.ws.ui_1.0.403.v201004211805.jar,plugins/com.ibm.xtools.umldt.rt.c.core.internal_1.50.0.v20110515_0735.jar,plugins/com.ibm.xtools.mep.communication.core_1.0.0.v20110308_1632.jar,plugins/org.eclipse.core.net_1.2.100.I20100511-0800.jar,plugins/com.ibm.xtools.transform.common.merge_7.0.510.v20110112_2333.jar,plugins/org.eclipse.datatools.modelbase.sql.xml.query_1.0.1.v201004291415.jar,plugins/org.eclipse.birt.report.designer.ui.editors.schematic_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.data_2.6.2.r262_v20110215.jar,plugins/org.eclipse.birt.report.data.bidi.utils.ui.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.umlal.execution.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.cdt.doc.isv_5.1.0.201102110609.jar,plugins/org.eclipse.birt.report.engine.emitter.excel.config.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.report.engine.emitter.wpml.config_2.6.2.r262_v20110127.jar,plugins/org.eclipse.datatools.sqltools.schemaobjecteditor.ui_1.1.1.200810071.jar,plugins/com.ibm.xtools.viz.compare_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.transform.core.authoring.ide.cshelp_7.0.2.v20090306_1924.jar,plugins/org.eclipse.core.databinding.observable_1.3.0.I20100601-0800.jar,plugins/javax.wsdl_1.5.1.v201005080630.jar,plugins/org.eclipse.birt.report.designer.ui_2.6.2.r262_v20110209.jar,plugins/org.eclipse.datatools.enablement.oracle_1.0.0.v200908130544.jar,plugins/ilog.views.eclipse.utilities.runtime_8.7.6.v20101108/,plugins/org.eclipse.datatools.sqltools.routineeditor.ui_1.0.1.v201004060545.jar,plugins/org.eclipse.uml2.uml.editor.source_3.1.0.v201005031530.jar,plugins/org.eclipse.wst.dtd.core.source_1.1.401.v201101122255.jar,plugins/org.eclipse.jst.j2ee.ejb.annotations.emitter.source_1.1.200.v200909290826.jar,plugins/org.eclipse.wst.ws.ui_1.1.200.v201004211805.jar,plugins/org.eclipse.birt.report.item.crosstab.ui.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.patterns.core.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.birt.report.engine.dataextraction_2.6.2.r262_v20110127.jar,plugins/org.eclipse.datatools.enablement.postgresql_1.0.1.v200906020900.jar,plugins/org.eclipse.emf.codegen.ecore.source_2.6.1.v20100914-1218.jar,plugins/org.eclipse.ecf.identity_3.1.0.v20100906-1425.jar,plugins/org.eclipse.equinox.app.source_1.3.1.R36x_v20100803.jar,plugins/org.eclipse.core.filesystem_1.3.1.R36x_v20100727-0745.jar,plugins/org.eclipse.core.runtime.compatibility.registry_3.3.0.v20100520/,plugins/com.ibm.xtools.transform.uml2.mapping.uid_1.0.2.v20101020_0109.jar,plugins/com.ibm.xtools.umlal.feature.uid_1.0.2.v20110513_0725.jar,plugins/com.ibm.xtools.umldt.rt.umlal.ui_1.0.0.v20110425_1603.jar,plugins/com.ibm.xtools.ras.type.analyzer_7.0.100.v20100805_2013/,plugins/org.eclipse.equinox.p2.ui.sdk.scheduler.source_1.0.0.v20100507-1815.jar,plugins/com.ibm.xtools.transform.java.varargextension_7.5.5.v20100929_0755.jar,plugins/org.eclipse.jdt.doc.isv_3.6.2.r362_v20101117-0800.jar,plugins/com.ibm.rcp.rte_6.2.1.20090925-1604.jar,plugins/com.ibm.xtools.sample.create.report_1.0.0.v20100201_0328.jar,plugins/org.eclipse.ant.launching_1.0.1.v20110404_r362.jar,plugins/org.eclipse.core.databinding_1.3.100.I20100601-0800.jar,plugins/org.eclipse.ecf.provider.filetransfer.ssl.source_1.0.0.v20100906-1425.jar,plugins/org.eclipse.swt.win32.win32.x86_3.6.3.v3659d.jar,plugins/com.ibm.xtools.umldt.rt.j2se.feature.uid_1.0.2.v20110330_0744.jar,plugins/org.eclipse.birt.report.designer.ui.editors.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.equinox.p2.updatesite.source_1.0.201.R36x_v20100823.jar,plugins/com.ibm.ccl.mapping_1.0.400.v20100715_2051.jar,plugins/org.eclipse.jdt.junit.core_3.6.1.r361_v20100825-0800.jar,plugins/com.ibm.rcp.textanalyzer.nl_6.2.1.200909031836.jar,plugins/org.eclipse.pde.ds.core_1.0.100.v20100601.jar,plugins/com.ibm.xtools.modeler.ui.templates_7.60.0.v20100715_2051.jar,plugins/org.eclipse.tptp.platform.collection.framework_4.3.0.v201005061600/,plugins/org.objectweb.asm.source_3.2.0.v200909071300.jar,plugins/com.ibm.xtools.model.execution.cshelp_1.0.0.v20110408_2147.jar,plugins/org.eclipse.datatools.connectivity.apache.derby.ui_1.0.3.v201007080903.jar,plugins/com.ibm.xtools.transform.core_7.200.20.v20110525_0547.jar,plugins/org.eclipse.gmf.graphdef.codegen.ui_1.0.100.v20090114-0940.jar,plugins/org.eclipse.jst.server.ui.source_1.1.102.v20110406.jar,plugins/org.eclipse.birt.report.designer.ui.views_2.6.2.r262_v20110127.jar,plugins/org.eclipse.pde.ua.ui.source_1.0.100.v20100504.jar,plugins/org.eclipse.datatools.enablement.postgresql.ui_1.0.0.v200906020900.jar,plugins/org.eclipse.wst.css.ui.source_1.0.502.v201101122002.jar,plugins/org.eclipse.birt.data.source_2.6.2.r262_v20110215.jar,plugins/org.eclipse.jst.j2ee.webservice.source_1.1.400.v201004110600.jar,plugins/com.ibm.xtools.uml.profile.tooling.ui.editor.diagrams_7.60.0.v20100715_2051.jar,plugins/org.eclipse.emf.mapping.ecore2xml.ui_2.5.0.v20100521-1847.jar,plugins/org.eclipse.equinox.p2.extensionlocation.source_1.2.0.v20100518.jar,plugins/org.eclipse.equinox.p2.reconciler.dropins.source_1.1.2.R36x_v20110114.jar,plugins/org.eclipse.draw2d_3.6.2.v20110128-0100.jar,plugins/com.ibm.process.rsx.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.datatools.oda.cshelp_1.1.1.v200907031118.jar,plugins/org.eclipse.pde.ui_3.6.2.v20110527_r363.jar,plugins/org.eclipse.tptp.platform.agentcontroller.doc.user_4.3.1.v201009092123.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.clazz_7.60.200.v20101130_0203.jar,plugins/com.ibm.xtools.updm.ui.operational_7.3.801.v20100929_0755.jar,plugins/org.eclipse.gmf.map.source_2.2.101.v20100831-1541.jar,plugins/com.ibm.ccl.oda.diagram_1.60.0.v20100715_2051.jar,plugins/org.eclipse.team.ui_3.5.102.R36x_v20110203-1036.jar,plugins/org.eclipse.cdt.make.ui_7.0.0.201102110609.jar,plugins/com.ibm.xtools.umldt.rt.petal.ui.im_1.50.0.v20110518_0733.jar,plugins/org.w3c.dom.svg_1.1.0.v200806040011.jar,plugins/org.eclipse.wst.html.core_1.1.405.v201104191549.jar,plugins/org.eclipse.wst.jsdt.support.ie_1.0.300.v201004150600.jar,plugins/org.eclipse.cdt.dsf.source_2.1.1.201102110609.jar,plugins/com.ibm.xtools.ras.profile.defauld.editor_7.0.2.v20100805_2013.jar,plugins/org.eclipse.wst.css.ui_1.0.502.v201101122002.jar,plugins/com.ibm.xtools.modeler_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.modeler.feature.uid_1.0.2.v20110513_0101.jar,plugins/com.ibm.xtools.codeview.j2se.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.datatools.connectivity.oda.flatfile.ui_3.1.1.v201101261130.jar,plugins/org.eclipse.gmf.runtime.emf.type.ui_1.2.0.v20090403-1720.jar,plugins/com.ibm.xtools.comparemerge.emf.delta.annotation_7.60.0.v20100715_2051.jar,plugins/org.eclipse.gmf.runtime.diagram.core.source_1.4.0.v20100331-2359.jar,plugins/org.eclipse.wst.xmleditor.doc.user_1.0.700.v201005192212.jar,plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.publish.ui_7.60.0.v20100715_2051/,plugins/com.ibm.xtools.transform.uml2.xsd.cshelp_1.0.5.v20110408_2147.jar,plugins/com.ibm.xtools.umldt.rt.umlal.debug.core_1.0.0.v20110326_0744.jar,plugins/org.eclipse.jst.ws.consumption.source_1.0.508.v201103082026.jar,plugins/org.eclipse.emf.ecore.sdo_2.4.0.v200801221930.jar,plugins/com.ibm.xtools.analysis.reporting_7.1.100.v20100909_1452.jar,plugins/com.ibm.xtools.viz.j2se.common_7.0.0.v20100715_2051.jar,plugins/org.eclipse.wst.server.core_1.1.207.v20110401_1511.jar,plugins/com.ibm.xtools.comparemerge.diagram_7.60.300.v20110510_2201.jar,plugins/org.eclipse.birt.report.engine.emitter.html.source_2.6.2.r262_v20110209.jar,plugins/org.eclipse.equinox.p2.repository.tools_2.0.1.R36x_v20100823.jar,plugins/org.eclipse.datatools.sqltools.result_1.1.0.v201005260930.jar,plugins/org.eclipse.equinox.simpleconfigurator_1.0.200.v20100503.jar,plugins/org.apache.fop_0.20.5.1/,plugins/com.ibm.support.feedback.errorreports.core_1.0.1.v20110329_0031.jar,plugins/com.ibm.xtools.analysis.model_feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.gmf.runtime.common.ui_1.4.0.v20100518-2230.jar,plugins/org.eclipse.wst.jsdt.support.ie.source_1.0.300.v201004150600.jar,plugins/org.eclipse.jet.source_1.1.1.v201101271243/,plugins/com.ibm.xtools.patterns.content.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.help.gallery.cat_7.6.0.v20110304_1609.jar,plugins/com.ibm.xtools.modeler.rt.ui.examples_1.50.0.v20110325_2100.jar,plugins/com.ibm.xtools.ras.profile.defauld.patterns.edit_7.60.0.v20100929_0755.jar,plugins/org.eclipse.xsd.editor_2.6.0.v20100914-1218.jar,plugins/com.ibm.xtools.transform.authoring.jet_7.3.0.v20101207_0201.jar,plugins/org.eclipse.tptp.platform.iac.administrator_4.5.0.v201005061600.jar,plugins/org.eclipse.birt.report.engine.emitter.pdf.config.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.modeler.ui.profile.wizards_7.60.300.v20110510_2201.jar,plugins/com.ibm.xtools.transform.java.jet2_1.0.100.v20110117_1549.jar,plugins/com.ibm.xtools.rmp.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.xtools.transform.sourcemodelassoc_7.5.4.v20110210_0845.jar,plugins/org.eclipse.ui.views.properties.tabbed_3.5.100.I20100509-0800.jar,plugins/org.eclipse.datatools.modelbase.dbdefinition_1.0.2.v201002130228.jar,plugins/org.eclipse.osgi.services.source_3.2.100.v20100503.jar,plugins/org.eclipse.jst.j2ee.navigator.ui.source_1.1.403.v201012020600.jar,plugins/org.eclipse.gmf.runtime.common.ui.services.properties.source_1.3.0.v20101129-1213.jar,plugins/com.ibm.ccl.oda.uml.ui_1.60.200.v20110115_0201.jar,plugins/org.eclipse.emf.validation.ui.source_1.3.0.v200901271722.jar,plugins/org.eclipse.datatools.enablement.hsqldb.ui_1.0.0.v200906020900.jar,plugins/org.eclipse.datatools.sqltools.parsers.sql.xml.query_1.0.0.v200906022302.jar,plugins/org.eclipse.equinox.simpleconfigurator.manipulator_2.0.0.v20100503.jar,plugins/org.eclipse.birt.doc_2.6.1.v20100813.jar,plugins/org.apache.batik.util.source_1.6.0.v200805290154.jar,plugins/org.eclipse.wst.jsdt.web.core_1.0.305.v201103170144.jar,plugins/org.eclipse.jst.ws.axis.creation.ui.source_1.0.600.v201008171516.jar,plugins/com.ibm.xtools.emf.validation.reporting.ui_7.60.0.v20100715_2051.jar,plugins/org.eclipse.gmf.runtime.emf.core_1.4.1.v20100909-1300.jar,plugins/org.eclipse.equinox.frameworkadmin.equinox.source_1.0.200.v20100505.jar,plugins/com.ibm.xtools.updm.birt_7.0.801.v20100929_0755.jar,plugins/org.eclipse.emf.mapping.ecore_2.6.0.v20100914-1218.jar,plugins/org.eclipse.ui.editors_3.6.1.r361_v20100825-0800.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.communication_7.60.300.v20110510_2201.jar,plugins/org.eclipse.birt.report.designer.ui.cubebuilder_2.6.2.r262_v20110127.jar,plugins/org.apache.batik.svggen.source_1.6.0.v200805290154.jar,plugins/com.ibm.xtools.umldt.rt.transform.j2se.viz.ui_1.0.0.v20110326_0744.jar,plugins/org.eclipse.xsd.source_2.6.0.v20100914-1218.jar,plugins/org.eclipse.emf.edit_2.6.0.v20100914-1218.jar,plugins/org.eclipse.cdt.gdb_7.0.0.201102110609.jar,plugins/org.eclipse.hyades.probekit_4.3.3.v201104261357/,plugins/org.eclipse.cdt.managedbuilder.core_7.0.2.201102110609.jar,plugins/com.ibm.xtools.modeler.ui.diagram_7.60.200.v20110130_0206.jar,plugins/org.eclipse.equinox.event.source_1.2.0.v20100503.jar,plugins/com.ibm.xtools.ras.edit.ui_7.1.1.v20100805_2013.jar,plugins/org.eclipse.ui.navigator.source_3.5.0.I20100601-0800.jar,plugins/com.ibm.xtools.uml.rt.feature.uid_1.0.2.v20110515_0735.jar,plugins/com.ibm.xtools.prodover.doc_7.1.2.v20110408_2147.jar,plugins/org.eclipse.cdt.sdk_7.0.2.201102110609.jar,plugins/org.eclipse.birt.chart.engine.extension.source_2.6.2.r262_v20110113.jar,plugins/com.ibm.xtools.comparemerge.extensibility_7.60.300.v20110510_2201.jar,plugins/org.eclipse.gmf.runtime.diagram.core_1.4.0.v20100331-2359.jar,plugins/org.eclipse.wst.internet.monitor.ui.source_1.0.406.v20110309.jar,plugins/com.ibm.xtools.ras.common.core.feature.uid_1.0.2.v20101019_0105.jar,plugins/javax.xml_1.3.4.v201005080400.jar,plugins/org.eclipse.emf.validation.source_1.4.0.v20100428-2315.jar,plugins/com.ibm.xtools.patterns.repository.provider_7.60.0.v20100929_0755.jar,plugins/com.ibm.xtools.diagram.ui.browse_7.60.300.v20110510_2201.jar,plugins/org.eclipse.tptp.platform.common.ui.trace_4.4.3.v201105161135.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.providers_1.4.0.v20100430-1518.jar,plugins/com.ibm.ccl.oda.emf.feature.uid_1.0.2.v20110127_0205.jar,plugins/org.apache.batik.bridge_1.6.0.v200912221622.jar,plugins/org.eclipse.core.runtime.compatibility.auth_3.2.200.v20100517.jar,plugins/org.eclipse.equinox.p2.ql_2.0.0.v20100503a.jar,plugins/com.ibm.xtools.ras.export.core.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.wst.xml.ui_1.1.104.v201103021532.jar,plugins/org.eclipse.help_3.5.0.v20100524.jar,plugins/org.eclipse.core.variables.source_3.2.400.v20100505.jar,plugins/com.jcraft.jsch_0.1.41.v200903070017.jar,plugins/org.eclipse.birt.report.engine.emitter.postscript.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.transform.uml2.cpp.morph_7.5.0.v20100929_0755.jar,plugins/com.ibm.xtools.ras.export.ui.wizard_7.0.1.v20100805_2013.jar,plugins/org.eclipse.datatools.enablement.ibm.informix.ui_1.0.2.v201005211230.jar,plugins/org.eclipse.equinox.p2.discovery_1.0.0.v20100503.jar,plugins/com.ibm.xtools.umldt.rt.transform.cpp.cshelp_7.1.2.v20110411_1749.jar,plugins/org.eclipse.gmf.runtime.draw2d.ui.render.awt_1.4.2.v20101111-1500.jar,plugins/org.eclipse.birt.chart.examples.core_2.6.2.r262_v20110120.jar,plugins/com.ibm.xtools.sample.rose.model_7.2.2.v20100203_0307.jar,plugins/com.ibm.xtools.petal.ui_7.0.0.v20110517_1415.jar,plugins/com.ibm.xtools.transform.team_7.1.400.v20100715_2051.jar,plugins/org.eclipse.jst.ws.ui.source_1.0.403.v201004211805.jar,plugins/com.ibm.xtools.pde.ui_7.60.0.v20100715_2051.jar,plugins/org.eclipse.wst.common.emf.source_1.2.3.v201012100400.jar,plugins/org.eclipse.wst.dtd.ui.source_1.0.500.v201004290328.jar,plugins/com.ibm.ccl.linkability.provider.uml_7.0.402.v20110224_1852.jar,plugins/com.ibm.xtools.modeler.rt.ui.diagrams.sequence_1.50.0.v20110507_0844.jar,plugins/org.eclipse.jdt.junit4.runtime.source_1.1.100.v20100526-0800.jar,plugins/org.eclipse.ui.net_1.2.100.I20100505-1245.jar,plugins/com.ibm.xtools.j2se.umlal.ui_1.0.100.v20110515_0735.jar,plugins/org.eclipse.equinox.p2.repository.source_2.0.2.R36x_v20110111-1500.jar,plugins/com.ibm.xtools.pluglets_7.0.100.v20100715_2051.jar,plugins/org.eclipse.tptp.platform.trace_4.5.0.v201005061600.jar,plugins/org.eclipse.cdt.make.ui.source_7.0.0.201102110609.jar,plugins/org.eclipse.datatools.enablement.sap.maxdb.ui_1.0.0.v200906020900.jar,plugins/org.eclipse.emf.exporter_2.6.0.v20100521-1846.jar,plugins/org.eclipse.platform_3.6.2.v201102101200/,plugins/org.eclipse.jdt.debug_3.6.2.v20110406_r362/,plugins/org.eclipse.birt.chart.device.swt_2.6.2.r262_v20101209.jar,plugins/com.ibm.xtools.reqpro_ed.cshelp_7.0.0.v20090319_1011.jar,plugins/org.eclipse.wst.jsdt.support.firefox_1.0.300.v201004150600.jar,plugins/com.ibm.xtools.umlnotation.edit_7.60.0.v20100715_2051.jar,plugins/org.eclipse.birt.report.model.source_2.6.2.r262_v20110209.jar,plugins/com.ibm.xtools.petal.profile.feature.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.xtools.transform.uml2.mapping.ui_7.0.400.v20100715_2051.jar,plugins/com.ibm.xtools.cdt.ui.providers_7.5.0.v20100929_0755/,plugins/com.ibm.xtools.jet.guidance.gen_1.0.0.v20100715_2051.jar,plugins/org.eclipse.tptp.test_4.4.0.v200906041936.jar,plugins/org.apache.ant_1.7.1.v20100518-1145/,plugins/com.ibm.xtools.comparemerge.reflectivemergefacade_7.60.0.v20100715_2051.jar,plugins/org.eclipse.birt.report.designer.ui.cubebuilder.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.gmf.runtime.common.ui.printing.win32.source_1.4.0.v20100223-2359.jar,plugins/com.ibm.xtools.jet.guidance_4.0.0.v20100715_2051.jar,plugins/org.eclipse.xsd.cheatsheets_2.6.0.v20100521-1855.jar,plugins/org.eclipse.datatools.connectivity.sqm.core_1.2.1.v201010090204.jar,plugins/org.eclipse.wst.common.environment_1.0.400.v200912181832.jar,plugins/org.apache.commons.discovery_0.2.0.v201004190315/,plugins/org.eclipse.datatools.enablement.ingres.ui_1.0.0.v201006242214.jar,plugins/com.ibm.xtools.comparemerge.clearcaseversioncheck_7.60.0.v20100715_2051.jar,plugins/org.eclipse.birt.chart.device.extension_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.transform.uml2.sm.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.datatools.connectivity.sqm.core.ui_1.2.0.v201002281800.jar,plugins/org.apache.batik.css_1.6.0.v200912221622.jar,plugins/org.eclipse.wst.sse.core.source_1.1.505.v201104070043.jar,plugins/org.eclipse.jst.ejb.doc.user_1.1.300.v201103302045.jar,plugins/javax.mail_1.4.0.v201005080615.jar,plugins/org.eclipse.ocl.source_3.0.2.R30x_v201101110610.jar,plugins/com.ibm.xtools.uml.msl_7.70.300.v20110518_0102.jar,plugins/org.eclipse.birt.report.debug.ui_2.6.2.r262_v20110127.jar,plugins/org.eclipse.hyades.execution.correlation_4.2.0.v201005061600.jar,plugins/org.eclipse.wst.web.ui.infopop_1.0.300.v200805140415.jar,plugins/org.eclipse.hyades.logging.core.sample_4.2.0.v201005061600.jar,plugins/com.ibm.ccl.tdi.reqpro.core_7.0.100.v20100715_2051.jar,plugins/org.eclipse.cdt.source_7.0.2.201102110609.jar,plugins/org.eclipse.datatools.enablement.ingres.dbdefinition_1.0.0.v200906161800.jar,plugins/com.ibm.help.common.accessibility.doc_7.6.0.v20110512_1525.jar,plugins/org.eclipse.ui.workbench.texteditor_3.6.2.r362_v20110316.jar,plugins/org.eclipse.xsd.doc_2.6.0.v20100914-1218.jar,plugins/org.eclipse.datatools.connectivity.oda.profile_3.2.4.v201007150318.jar,plugins/org.eclipse.ltk.ui.refactoring_3.5.0.v20100526-0800.jar,plugins/org.eclipse.gmf.runtime.common.ui.services.action.source_1.4.0.v20100430-1518.jar,plugins/com.ibm.xtools.patterns.core.transformprovider_7.60.0.v20100929_0755.jar,plugins/org.eclipse.jst.jee.ejb_1.0.301.v201007070821.jar,plugins/com.ibm.xtools.uml.validation_7.60.300.v20110510_2201.jar,plugins/com.ibm.xtools.cdt.ui.views_7.5.0.v20100929_0755.jar,plugins/com.ibm.xtools.ras.impord.tasks_7.0.100.v20100805_2013.jar,plugins/org.eclipse.jst.ws.jaxrs.ui_1.0.302.v201105161815.jar,plugins/org.apache.xml.serializer_2.7.1.v201005080400.jar,plugins/com.ibm.xtools.modeling.csguides.win32_7.0.300.v20100929_0755.jar,plugins/org.eclipse.datatools.enablement.ibm.db2.iseries.ui_1.0.1.v201005211230.jar,plugins/org.eclipse.ui.presentations.r21_3.2.200.I20100517-1500.jar,plugins/org.eclipse.jst.j2ee_1.1.405.v201104141500.jar,plugins/com.ibm.xtools.viz.cpp.cshelp_7.0.8.v20110408_2147.jar,plugins/org.eclipse.gmf.runtime.common.ui.printing_1.4.0.v20100223-2359.jar,plugins/org.apache.commons.codec_1.3.0.v20100518-1140.jar,plugins/com.ibm.cic.licensing.lum_7.0.200.v20110105_1929/,plugins/org.eclipse.gmf.map_2.2.101.v20100831-1541.jar,plugins/org.eclipse.ui.navigator.resources.source_3.4.202.M20101124-0800.jar,plugins/org.eclipse.emf.mapping_2.6.0.v20100914-1218.jar,plugins/org.eclipse.compare.win32_1.0.101.R36x_v20101103-0618.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.dnd.source_1.2.0.v20090403-1720.jar,plugins/com.ibm.cic.licensing.flexlm_7.0.816.v20110429_1203/,plugins/org.eclipse.jst.ws.creation.ejb.ui_1.0.201.v201004211805.jar,plugins/org.eclipse.emf.mapping.ui_2.6.0.v20100914-1218.jar,plugins/org.eclipse.emf.ecore.edit_2.6.0.v20100914-1218.jar,plugins/com.ibm.xtools.ras.profile.defauld.component.editor_7.0.0.v20100805_2013.jar,plugins/org.eclipse.emf.cheatsheets_2.5.0.v20100521-1846.jar,plugins/com.ibm.xtools.dodaf.ui.providers_7.0.500.v20100929_0755.jar,plugins/org.eclipse.jst.common.annotations.controller_1.1.300.v200908252030.jar,plugins/org.eclipse.m2m.qvt.oml.emf.util_2.0.100.v20100122-1411.jar,plugins/org.eclipse.datatools.enablement.ibm.db2.zseries.dbdefinition_1.0.4.v201005211230.jar,plugins/com.ibm.ccl.erf.core_1.60.0.v20100715_2051/,plugins/org.hamcrest.core.source_1.1.0.v20090501071000.jar,plugins/org.eclipse.equinox.jsp.jasper.registry_1.0.200.v20100503.jar,plugins/org.eclipse.debug.ui_3.6.3.v20110513_r363.jar,plugins/org.eclipse.uml2.uml.ecore.importer_2.4.0.v201005031530.jar,plugins/org.eclipse.wst.xml.core.source_1.1.504.v201104070043.jar,plugins/org.eclipse.datatools.enablement.sqlite.dbdefinition_1.0.1.v201002041100.jar,plugins/org.eclipse.gmf.graphdef.codegen.ui.source_1.0.100.v20090114-0940.jar,plugins/org.eclipse.wst.server.discovery_1.0.102.v20110427.jar,plugins/org.apache.batik.parser.source_1.6.0.v200805290154.jar,plugins/org.eclipse.birt.report.engine.script.javascript_2.6.2.r262_v20110127.jar,plugins/org.eclipse.datatools.enablement.sybase.ase_1.0.1.v200906020900.jar,plugins/org.eclipse.wst.server.ui_1.1.208.v20110427_1739.jar,plugins/com.ibm.xtools.uml2.bom.integration.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.uddi4j_2.0.5.v200805270300.jar,plugins/com.ibm.xtools.mde.ui_1.0.1.v20100928_2018.jar,plugins/com.ibm.xtools.mde.solution.ui_8.0.0.v20100715_2051.jar,plugins/org.eclipse.ui.intro.universal.source_3.2.402.r36_v20100702.jar,plugins/org.eclipse.m2m.qvt.oml.common_2.1.0.v20100524-1530.jar,plugins/com.ibm.xtools.transform.uml2.sm.core_1.0.100.v20110117_1549.jar,plugins/com.ibm.xtools.umlal.ui_1.0.100.v20110401_0743.jar,plugins/com.ibm.ccl.soa.sketcher.ui_1.0.400.v20110525_0749.jar,plugins/org.eclipse.equinox.p2.publisher.source_1.1.2.v20100824-2220.jar,plugins/org.eclipse.gef.examples.ui.pde_3.5.2.v20110128-0100.jar,plugins/org.eclipse.hyades.probekit.doc.user_4.3.1.v201009092123.jar,plugins/org.eclipse.birt.report.data.oda.sampledb.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.gmf.runtime.draw2d.ui.render.awt.source_1.4.2.v20101111-1500.jar,plugins/org.eclipse.core.contenttype_3.4.100.v20100505-1235.jar,plugins/com.ibm.xtools.rose.feature.uid_1.0.2.v20110517_1415.jar,plugins/org.eclipse.jst.ejb.ui.infopop_1.0.300.v2010022311013.jar,plugins/com.ibm.help.common.rational.taxonomy.doc_1.0.0.v20110304_1609.jar,plugins/org.eclipse.datatools.enablement.sap.maxdb.dbdefinition_1.0.0.v200906161800.jar,plugins/org.eclipse.equinox.simpleconfigurator.manipulator.source_2.0.0.v20100503.jar,plugins/com.ibm.xtools.dodaf_7.0.801.v20100929_0755.jar,plugins/org.eclipse.wst.jsdt.debug.rhino_1.0.1.v201008170101.jar,plugins/com.ibm.xtools.reqpro.ide.win32.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.draw2d.doc.isv_3.5.0.v20100519-2050.jar,plugins/org.apache.xerces_2.9.0.v201005080400.jar,plugins/org.eclipse.jst.ws.consumption.ui_1.1.303.v201103082026.jar,plugins/org.apache.batik.dom.svg.source_1.6.0.v200805290154.jar,plugins/com.ibm.xtools.cpp2.jet2_1.50.0.v20110405_2005.jar,plugins/com.ibm.support.feedback.ui_1.1.2.v20110330_1815.jar,plugins/org.junit4_4.8.1.v20100525/,plugins/org.eclipse.equinox.p2.operations_2.0.0.v20100510.jar,plugins/com.ibm.xtools.emf.query.core_7.60.0.v20100715_2051.jar,plugins/org.eclipse.datatools.connectivity.db.generic.ui_1.0.1.v201004070709.jar,plugins/org.eclipse.birt.report.designer.ui.editors_2.6.2.r262_v20110127.jar,plugins/com.ibm.welcome.common.rational.doc_7.6.0.v20110304_1645.jar,plugins/org.eclipse.emf.workspace_1.4.0.v20100224-1706.jar,plugins/org.eclipse.m2m.qvt.oml.editor.ui_2.1.0.v20100606-1530.jar,plugins/org.eclipse.datatools.connectivity.oda.consumer_3.2.3.v201102051100.jar,plugins/org.eclipse.gmf.graphdef.codegen_2.0.101.v20100831-1541.jar,plugins/org.eclipse.core.resources.source_3.6.1.R36x_v20110131-1630.jar,plugins/org.eclipse.core.runtime.compatibility_3.2.100.v20100505.jar,plugins/org.eclipse.uml2.uml.resources_3.1.1.v201008191505.jar,plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb.ui.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.equinox.p2.ui.sdk_1.0.100.v20100513.jar,plugins/org.eclipse.tptp.trace.arm.ui_4.4.0.v201005061600.jar,plugins/com.ibm.xtools.umldt.rt.c.feature.uid_1.0.2.v20110315_0754.jar,plugins/org.eclipse.jface_3.6.2.M20110210-1200.jar,plugins/org.eclipse.tptp.test.tools_4.4.0.v200906041936.jar,plugins/org.eclipse.search.source_3.6.0.v20100520-0800.jar,plugins/com.ibm.ccl.ua.wizards.feature.uid_1.0.2.v20101016_0104.jar,plugins/com.ibm.xtools.comparemerge.clearcasedirectory.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.equinox.p2.jarprocessor_1.0.200.v20100503a.jar,plugins/com.ibm.xtools.diagram.ui.common_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.transform.sourcemodelassoc.feature.uid_1.0.2.v20110427_0740.jar,plugins/javax.xml.soap_1.2.0.v201005080501/,plugins/org.eclipse.gmf.common_1.2.0.v20100226-2359.jar,plugins/org.eclipse.cdt.core.win32_5.2.0.201102110609/,plugins/org.eclipse.pde.build.source_3.6.2.R36x_20110203.jar,plugins/ilog.views.eclipse.graphlayout.gmf.edit_8.7.6.v20101108.jar,plugins/com.ibm.rational.rsa.welcome.doc_1.0.3.v20110413_0047.jar,plugins/org.eclipse.equinox.p2.extensionlocation_1.2.0.v20100518.jar,plugins/org.eclipse.osgi.util.source_3.2.100.v20100503.jar,plugins/org.eclipse.hyades.test.ui.extensions_4.6.0.v201005212338.jar,plugins/org.eclipse.tptp.platform.instrumentation.annotation_4.6.0.v201001151900.jar,plugins/com.ibm.xtools.transform.java.uml_7.5.800.v20110527_0030.jar,plugins/org.eclipse.birt.report.engine.dataextraction.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.ccl.ua.wizards_1.0.150.v20101020_0109.jar,plugins/org.eclipse.cdt.debug.mi.core_7.0.1.201102110609.jar,plugins/org.eclipse.gmf.source_1.4.1.v20100720-0030.jar,plugins/com.ibm.xtools.petal.core.policies_7.0.0.v20100929_0755.jar,plugins/org.eclipse.emf.importer.java_2.6.0.v20100521-1846.jar,plugins/com.ibm.xtools.ras.repository.client.ui_7.0.2.v20100805_2013.jar,plugins/com.ibm.xtools.mde.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.gmf.runtime.emf.type.ui.source_1.2.0.v20090403-1720.jar,plugins/com.ibm.xtools.analysis.codereview.java.j2ee_7.0.310.v20100517_1740.jar,plugins/com.ibm.xtools.comparemerge.team.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.gmf.ecore.editor.source_2.2.0.v20100315-2359.jar,plugins/com.ibm.ccl.help.state_1.0.1.v20100715_2051.jar,plugins/com.ibm.xtools.analysis.codereview.java.security_7.0.300.v20100517_1740.jar,plugins/com.ibm.xtools.rasset.cshelp_7.0.2.v20110408_2147.jar,plugins/org.eclipse.uml2.uml.edit.source_3.1.0.v201005031530.jar,plugins/org.eclipse.datatools.sqltools.schemaobjecteditor_1.1.0.v200906022302.jar,plugins/com.ibm.xtools.codeview.feature.uid_1.0.2.v20110503_2037.jar,plugins/com.ibm.xtools.analysis.model_7.1.100.v20100715_2051.jar,plugins/org.eclipse.gmf.xpand.qvtlibrary.source_1.1.0.v20100309-2359.jar,plugins/com.ibm.xtools.mep.feature.uid_1.0.2.v20110517_0745.jar,plugins/org.eclipse.team.cvs.ssh2_3.2.300.I20100526-0800.jar,plugins/com.ibm.ccl.erf.rsa.report.ic_2.60.0.v20100715_2051/,plugins/com.rational.clearcase.activities_7.6.0.v201105111445/,plugins/com.ibm.etools.ftp.feature.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.uml2.common.edit.source_1.5.0.v201005031530.jar,plugins/com.ibm.xtools.comparemerge.emf.ccdirectory_7.0.200.v20100715_2051.jar,plugins/com.ibm.etools.performance.core.win32_1.2.300.v20110315_1851.jar,plugins/com.ibm.xtools.uml.transform.rename.java.uid_1.0.2.v20101020_0109.jar,plugins/com.ibm.icu.source_4.2.1.v20100412.jar,plugins/com.lowagie.text_2.1.7.v201004222200.jar,plugins/org.eclipse.jst.jee.ui_1.0.305.v201105110300.jar,plugins/org.sat4j.pb_2.2.0.v20100429.jar,plugins/com.ibm.support.feature.uid_1.0.2.v20110520_0029.jar,plugins/org.eclipse.m2m.qvt.oml.runtime.ui_2.1.0.v20100524-1530.jar,plugins/org.eclipse.jst.j2ee.ejb_1.1.402.v201102071010.jar,plugins/org.eclipse.ui.win32.source_3.2.200.I20100509-0800.jar,plugins/org.eclipse.pde.api.tools.ui_1.0.201.v20100820_r361.jar,plugins/org.eclipse.cdt.managedbuilder.ui_7.0.0.201102110609.jar,plugins/org.eclipse.ui.editors.source_3.6.1.r361_v20100825-0800.jar,plugins/org.eclipse.emf.ecore.change.source_2.5.1.v20100907-1643.jar,plugins/com.ibm.rational.capabilities.modeling_7.60.0.v20100715_2051.jar,plugins/org.eclipse.jst.j2ee.ejb.annotation.model_1.1.300.v201003112036.jar,plugins/com.ibm.xtools.uml.profile.tooling.feature.uid_1.0.2.v20101020_0109.jar,plugins/org.eclipse.wst.webtools.doc.user_1.0.500.v201005192212.jar,plugins/org.eclipse.gmf.runtime.emf.type.core.source_1.4.0.v20100423-2359.jar,plugins/org.eclipse.ecf.ssl_1.0.100.v20100906-1425.jar,plugins/com.ibm.xtools.reqpro.j2ee_7.0.200.v20100715_2051.jar,plugins/com.ibm.xtools.diagram.ui.compatibility_7.60.0.v20100715_2051.jar,plugins/org.eclipse.pde.launching_3.6.0.v20100601.jar,plugins/org.eclipse.ui.navigator_3.5.0.I20100601-0800.jar,plugins/org.eclipse.datatools.connectivity.apache.derby_1.0.100.v200906020900.jar,plugins/com.ibm.xtools.rmp.ui_1.10.300.v20110510_2201.jar,plugins/org.eclipse.ocl.uml_3.0.2.R30x_v201101181635.jar,plugins/com.ibm.ccl.help.preferenceharvester_1.0.150.v20110510_2201.jar,plugins/org.apache.commons.codec.source_1.3.0.v20100518-1140.jar,plugins/org.eclipse.wst.command.env.doc.user_1.5.300.v201005192225.jar,plugins/org.apache.jasper_5.5.17.v201004212143.jar,plugins/org.eclipse.tptp.platform.report.birt.ui_4.5.0.v201005061600/,plugins/org.eclipse.datatools.sqltools.db.derby_1.0.0.v200906020900.jar,plugins/org.eclipse.wst.dtd.ui.infopop_1.0.300.v200805140200.jar,plugins/org.eclipse.gmf.graphdef_2.0.100.v20090420-1925.jar,plugins/org.eclipse.gmf.xpand.migration_1.0.100.v20100309-2359.jar,plugins/com.ibm.ccl.ua.help.gallery.menuactions_7.5.0.v20100715_2051.jar,plugins/org.eclipse.wst.validation.doc.isv_1.2.200.v201004280700.jar,plugins/com.ibm.xtools.umlviz.cshelp_7.0.7.v20110408_2147.jar,plugins/org.eclipse.emf.common.ui_2.6.0.v20100914-1218.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.timing_7.60.300.v20110512_0102.jar,plugins/com.ibm.xtools.me2.ui_1.1.0.v20110515_0735.jar,plugins/com.ibm.ccl.erf.core.birt.feature.uid_1.0.2.v20110127_0205.jar,plugins/com.ibm.xtools.uml.ui.diagrams.deployment_7.60.300.v20110510_2201.jar,plugins/org.eclipse.help.appserver_3.1.400.v20100427.jar,plugins/com.ibm.xtools.ras.export_7.0.300.v20100805_2013/,plugins/org.eclipse.ocl.uml.source_3.0.2.R30x_v201101181635.jar,plugins/org.eclipse.tptp.platform.logging.events_4.4.1.v201009092123/,plugins/com.ibm.rcp.swt.browser.dom.ie_6.2.1.20090925-1604/,plugins/com.ibm.xtools.modeler.ui.capabilities_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.patterns.framework.specialized_7.60.100.v20100929_0755.jar,plugins/com.ibm.xtools.ras.repository.client_7.0.200.v20100805_2013.jar,plugins/com.ibm.rsart.nav.doc_1.0.4.v20110513_1123.jar,plugins/org.eclipse.equinox.p2.touchpoint.eclipse.source_2.0.3.R36x_v20101202.jar,plugins/org.eclipse.jst.common.project.facet.core_1.4.102.v201008182136.jar,plugins/org.eclipse.birt.core.script.function.source_2.6.2.r262_v20110209.jar,plugins/org.eclipse.gmf.runtime.sdk_1.4.1.v20100720-0030.jar,plugins/org.apache.batik.util.gui.source_1.6.0.v200805290154.jar,plugins/com.ibm.xtools.dodaf.report_7.0.300.v20100929_0755.jar,plugins/com.ibm.xtools.visualization.modeler.required.feature.uid_1.0.2.v20101021_2044.jar,plugins/org.eclipse.birt.report.engine.emitter.html.config_2.6.2.r262_v20110127.jar,plugins/org.eclipse.wst.common.frameworks.ui.source_1.2.0.v201004080500.jar,plugins/com.ibm.xtools.rmp.startup_7.60.300.v20110510_2201.jar,plugins/org.eclipse.wst.css.core.source_1.1.403.v201103021532.jar,plugins/com.ibm.xtools.ras.repository.datastore.filesystem_7.0.0.v20100805_2013.jar,plugins/com.ibm.xtools.tdi.reqpro.j2se.ide.uid_1.0.2.v20101020_0109.jar,plugins/com.ibm.cic.licensing.common.ui_7.1.302.v20101007_1238.jar,plugins/org.eclipse.team.ui.source_3.5.102.R36x_v20110203-1036.jar,plugins/org.eclipse.emf.transaction_1.4.0.v20100331-1738.jar,plugins/com.ibm.xtools.updm.ui.providers_7.0.801.v20100929_0755.jar,plugins/org.eclipse.wst.server.ui.source_1.1.208.v20110427_1739.jar,plugins/com.ibm.xtools.uml.profile.tooling.ui.editor_7.60.0.v20100715_2051.jar,plugins/com.ibm.ccl.erf.cshelp_1.1.0.v20090306_1924.jar,plugins/org.eclipse.jst.ws.axis.consumption.core_1.0.406.v201004211805.jar,plugins/org.eclipse.emf.query.ocl.source_2.0.0.v20091215-1624.jar,plugins/com.ibm.xtools.modeler.ui.type_7.60.100.v20100927_1422.jar,plugins/com.ibm.xtools.viz.j2se.ui.javadoc_7.0.200.v20110510_2201.jar,plugins/org.eclipse.emf.ecore.editor_2.6.0.v20100914-1218.jar,plugins/com.ibm.xtools.umldt.rt.ui_1.50.0.v20110515_0735.jar,plugins/org.eclipse.emf.ecore.xmi_2.5.0.v20100521-1846.jar,plugins/com.ibm.xtools.ras.profile.io.unbundled.local_7.0.100.v20100805_2013.jar,plugins/org.eclipse.datatools.sqltools.parsers.sql_1.0.2.v201004291415.jar,plugins/com.ibm.xtools.uml.ui.diagrams.sequence_7.60.300.v20110510_2201.jar,plugins/org.eclipse.gmf.doc.ui_1.3.0.v20090729-2031.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.render_1.4.1.v20100909-1300.jar,plugins/org.eclipse.datatools.modelbase.sql.query_1.1.1.v201008100700.jar,plugins/org.eclipse.emf.validation.examples_1.3.0.v200901271722.jar,plugins/org.eclipse.ecf.provider.filetransfer.ssl_1.0.0.v20100906-1425.jar,plugins/org.eclipse.core.expressions_3.4.200.v20100505.jar,plugins/org.eclipse.datatools.enablement.sybase.models_1.0.0.v201010140307.jar,plugins/org.eclipse.birt.report.designer.ui.ide_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.component_7.60.0.v20100715_2051.jar,plugins/com.ibm.rsaz.analysis.core.ui_7.1.200.v20101215_2153.jar,plugins/org.eclipse.datatools.enablement.postgresql.dbdefinition_1.0.1.v200906161800.jar,plugins/org.eclipse.birt.report.data.bidi.utils.ui_2.6.2.r262_v20110127.jar,plugins/com.ibm.rsaz.analysis.codereview.java.rules.base_7.0.100.v20100517_1740.jar,plugins/org.eclipse.uml2.doc_3.1.0.v201005031530.jar,plugins/org.eclipse.jst.ws.jaxrs.core.source_1.0.201.v201011231540.jar,plugins/org.eclipse.equinox.supplement.source_1.3.1.R36x_v20101021.jar,plugins/org.eclipse.tptp.platform.profile.server.core_4.3.3.v201104210930.jar,plugins/com.ibm.xtools.umldt.rt.j2se.umlal.debug.ui_1.0.0.v20110420_0731.jar,plugins/org.eclipse.wst.xsd.ui.source_1.2.305.v201104132127.jar,plugins/org.eclipse.emf.codegen.ui_2.6.0.v20100914-1218.jar,plugins/org.eclipse.equinox.event_1.2.0.v20100503.jar,plugins/com.ibm.xtools.transform.uml2.cpp.jet2_7.1.0.v20110120_0844.jar,plugins/com.ibm.xtools.uml.ocl_7.60.0.v20100715_2051.jar,plugins/org.eclipse.wst.validation.infopop_1.0.300.v200806041506.jar,plugins/org.eclipse.birt.chart.engine_2.6.2.r262_v20110120.jar,plugins/org.eclipse.debug.ui.source_3.6.3.v20110513_r363.jar,plugins/org.eclipse.jst.j2ee.web_1.1.404.v201102030400.jar,plugins/org.eclipse.jface.text_3.6.1.r361_v20100825-0800.jar,plugins/org.eclipse.datatools.enablement.ibm.informix.dbdefinition_1.0.4.v201005211230.jar,plugins/com.ibm.cds_2.1.0.201009130929.jar,plugins/org.eclipse.equinox.p2.publisher_1.1.2.v20100824-2220.jar,plugins/org.eclipse.jdt.junit_3.6.1.r361_v20100825-0800.jar,plugins/com.ibm.xtools.transform.authoring.mapping.ui_7.2.0.v20100715_2051.jar,plugins/org.eclipse.jst.server.generic.ui_1.0.505.v20100428.jar,plugins/com.ibm.etools.performance.core_1.2.300.v20110502_0026.jar,plugins/com.ibm.xtools.uml.profile.tooling.cshelp_1.0.0.v20090306_1924.jar,plugins/org.eclipse.gmf.validate_1.2.0.v20100302-2359.jar,plugins/org.eclipse.hyades.trace.ui_4.5.103.v201105061500.jar,plugins/com.ibm.xtools.uml.ui.diagrams.clazz_7.60.200.v20110217_2306.jar,plugins/com.ibm.xtools.updm.ui.query_7.3.820.v20110114_1619.jar,plugins/org.eclipse.ui.views.source_3.5.1.M20110202-0800.jar,plugins/org.eclipse.emf.ecore_2.6.1.v20100914-1218.jar,plugins/com.ibm.xtools.notation.compatibility_7.60.100.v20100902_0104.jar,plugins/org.eclipse.wst.dtd.core_1.1.401.v201101122255.jar,plugins/org.eclipse.birt.report.item.crosstab.core_2.6.2.r262_v20110127.jar,plugins/org.eclipse.tptp.platform.samples_4.5.0.v201005061600.jar,plugins/com.ibm.xtools.umldt.rt.cpp.feature.uid_1.0.2.v20110315_0754.jar,plugins/com.ibm.ccl.welcome.bits.feature.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.emf.mapping.ecore2ecore.editor_2.4.0.v20100521-1847.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.source_1.4.1.v20100909-1300.jar,plugins/org.eclipse.jem.util.source_2.1.3.v201012070000.jar,plugins/org.eclipse.wst.ws.service.policy_1.0.204.v201011011834.jar,plugins/com.ibm.ccl.linkability.provider.j2se_7.0.400.v20100715_2051.jar,plugins/org.eclipse.gmf.xpand_2.1.0.v20100315-2101.jar,plugins/com.ibm.xtools.comparemerge.delta.annotation.ui_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.umldt.rt.cpp.umlal.core.resources_1.0.0.v20101203_1715.jar,plugins/com.ibm.xtools.ocleditor.sample.ocl_1.2.2.v20110408_2147.jar,plugins/org.eclipse.core.contenttype.source_3.4.100.v20100505-1235.jar,plugins/com.ibm.xtools.ras.repository.client.xde.ui.feature.uid_1.0.2.v20101019_0105.jar,plugins/org.eclipse.emf.transaction.ui_1.4.0.v20090819-1300.jar,plugins/org.eclipse.birt.report.engine_2.6.2.r262_v20110214.jar,plugins/org.eclipse.pde.build_3.6.2.R36x_20110203/,plugins/org.apache.ant.source_1.7.1.v20100518-1145.jar,plugins/org.eclipse.help.base_3.5.3.v201102101200.jar,plugins/org.eclipse.pde.ui.source_3.6.2.v20110527_r363.jar,plugins/org.eclipse.birt.chart_2.6.1.v20100813/,plugins/com.ibm.xtools.umldt.rt.cpp.ui.diagrams_1.50.0.v20110326_0744.jar,plugins/ilog.views.eclipse.graphlayout.edit_8.7.6.v20101108.jar,plugins/com.ibm.xtools.umldt.rt.petal.ui.c_1.50.0.v20110515_0735.jar,plugins/org.eclipse.jdt.junit.source_3.6.1.r361_v20100825-0800.jar,plugins/com.ibm.xtools.ras.profile.defauld.webservice.edit_7.0.2.v20100805_2013.jar,plugins/org.eclipse.emf.workspace.ui_1.3.0.v200901271819.jar,plugins/com.ibm.xtools.sample.transform.authoring.doc_1.0.1.v20100201_0328.jar,plugins/org.eclipse.emf.databinding.source_1.2.0.v20100914-1218.jar,plugins/org.eclipse.birt.report.designer.ui.data_2.6.2.r262_v20110209.jar,plugins/com.ibm.etools.performance.ui_1.2.300.v20110404_1907.jar,plugins/org.eclipse.jst.servlet.ui.infopop_1.0.400.v201103302034.jar,plugins/org.eclipse.birt.example_2.6.1.v20100813.jar,plugins/org.eclipse.equinox.p2.engine_2.0.1.R36x_v20110201.jar,plugins/org.eclipse.jst.ws.consumption.ui.doc.user_1.0.600.v201005192217.jar,plugins/org.eclipse.datatools.enablement.sybase.ase.ui_1.0.1.v200906020900.jar,plugins/org.eclipse.equinox.frameworkadmin_2.0.0.v20100503.jar,plugins/org.eclipse.datatools.enablement.oda.ws_1.2.2.v201010151422.jar,plugins/com.ibm.xtools.umldt.rt.umlal.feature.uid_1.0.2.v20110405_2005.jar,plugins/com.ibm.xtools.transform.uml2.cpp.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.eclipse.birt.chart.engine.source_2.6.2.r262_v20110120.jar,plugins/org.eclipse.pde.ua.core.source_1.0.100.v20100504.jar,plugins/javax.servlet.jsp_2.0.0.v200806031607.jar,plugins/org.eclipse.ui.console_3.5.0.v20100526.jar,plugins/org.eclipse.birt.data.aggregation_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.report.designer.ui.samples.ide_2.6.2.r262_v20110127.jar,plugins/org.eclipse.birt.report.engine.emitter.ppt.config_2.6.2.r262_v20110127.jar,plugins/org.eclipse.uml2_3.0.0.v201005031530.jar,plugins/org.eclipse.cdt.p2_1.0.0.201102110609.jar,plugins/org.eclipse.birt.report.data.oda.jdbc.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.cdt.debug.ui.source_7.0.0.201102110609.jar,plugins/org.eclipse.gmf.runtime.common.ui.services.dnd.ide_1.2.0.v20090403-1720.jar,plugins/org.eclipse.equinox.p2.metadata.generator.source_1.0.202.R36x_v20101208-1400.jar,plugins/org.eclipse.jst.jsp.core_1.2.306.v201105162026.jar,plugins/org.eclipse.equinox.transforms.hook.source_1.0.200.v20100503.jar,plugins/org.eclipse.datatools.sqltools.sql_1.0.0.v200906022302.jar,plugins/org.eclipse.emf.doc_2.6.0.v20100914-1218.jar,plugins/org.eclipse.wst.wsdl.ui.doc.user_1.0.700.v201007141653.jar,plugins/org.eclipse.birt.report.engine.fonts.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.transform.cpp.profile_7.5.20.v20110127_0855.jar,plugins/com.ibm.xtools.comparemerge.modelconverter_7.60.0.v20100715_2051.jar,plugins/org.eclipse.wst.jsdt.debug.core_1.0.4.v201103310001.jar,plugins/com.ibm.xtools.transform.ui.cshelp_7.0.8.v20090803_1558.jar,plugins/org.eclipse.gmf.codegen.source_2.2.100.v20100518-2359.jar,plugins/org.eclipse.wst.common.ui_1.1.500.v200911190730.jar,plugins/org.eclipse.datatools.enablement.sybase.asa.dbdefinition_1.0.0.v200906161800.jar,plugins/org.eclipse.jst.server.core_1.2.102.v20110309.jar,plugins/com.ibm.xtools.modeler.base.feature.uid_1.0.2.v20110516_2128.jar,plugins/org.eclipse.gmf.runtime.emf.ui.properties_1.4.0.v20100304-2359.jar,plugins/org.eclipse.cdt.core_5.2.1.201102110609.jar,plugins/com.ibm.rational.clearcase.ccrefresh_7.6.0.v201105111445/,plugins/org.eclipse.jst.common.annotations.core_1.1.300.v201004141630.jar,plugins/org.eclipse.jst.common.annotations.ui_1.1.300.v201002081900.jar,plugins/com.ibm.xtools.me2.umlsl_1.0.0.v20110405_2005.jar,plugins/com.ibm.ccl.erf.repository_1.60.0.v20100715_2051.jar,plugins/org.eclipse.emf.codegen_2.6.0.v20100914-1218.jar,plugins/org.eclipse.birt.source_2.6.1.v20100813.jar,plugins/com.ibm.xtools.umldt.rt.cpp.ui_1.50.0.v20110503_2037.jar,plugins/org.eclipse.emf.workspace.doc_1.3.0.v200901271819.jar,plugins/org.eclipse.jdt.core.manipulation_1.3.0.v20100520-0800.jar,plugins/com.ibm.xtools.mde.solution.transform_1.0.0.v20100715_2051.jar,plugins/com.ibm.xtools.uml.validation.profile.ui_7.60.300.v20110510_2201.jar,plugins/org.eclipse.tptp.platform.examples_4.4.0.v201005061600.jar,plugins/org.eclipse.wst.xsd.ui_1.2.305.v201104132127.jar,plugins/com.ibm.xtools.comparemerge.core.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.birt.chart.device.svg_2.6.2.r262_v20101230.jar,plugins/com.ibm.xtools.dodaf.ui.cshelp_7.0.1.v20110408_2147.jar,plugins/com.ibm.ccl.linkability.provider.reqpro_7.0.100.v20100715_2051.jar,plugins/org.eclipse.equinox.p2.engine.source_2.0.1.R36x_v20110201.jar,plugins/org.eclipse.tptp.test.tools.junit.plugin_4.6.1.v201101211050/,plugins/org.eclipse.ltk.ui.refactoring.source_3.5.0.v20100526-0800.jar,plugins/org.eclipse.wst.jsdt.manipulation.source_1.0.200.v201004150600.jar,plugins/org.eclipse.ui.ide_3.6.3.M20110511-1135.jar,plugins/com.ibm.xtools.umldt.rt.transform.viz.core_1.50.0.v20110326_0744.jar,plugins/org.eclipse.ltk.core.refactoring.source_3.5.101.r362_v20101117-0800.jar,plugins/org.eclipse.gmf_1.4.1.v20100720-0030.jar,plugins/com.ibm.xtools.umldt.rt.debug.ui_1.50.0.v20110429_1455.jar,plugins/com.ibm.etools.ftp.core_1.0.0.v20100715_2051.jar,plugins/org.eclipse.emf.common.ui.source_2.6.0.v20100914-1218.jar,plugins/org.eclipse.equinox.concurrent_1.0.100.v20100503.jar,plugins/org.eclipse.birt.report.data.adapter_2.6.2.r262_v20110215.jar,plugins/com.ibm.xtools.ras.repository.search.engine_7.0.0.v20100805_2013.jar,plugins/org.eclipse.wst.common.modulecore.ui_1.0.4.v201101101700.jar,plugins/com.ibm.xtools.umldt.rt.cpp.core_1.50.0.v20110325_2100.jar,plugins/com.ibm.xtools.publish.uml2_7.60.300.v20110510_2201/,plugins/com.ibm.xtools.umldt.transform.viz.ui_1.50.0.v20110405_2005.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.instance_7.60.100.v20100818_1448.jar,plugins/org.eclipse.osgi.util_3.2.100.v20100503.jar,plugins/org.eclipse.tptp.platform.welcome_4.6.0.v201005061600.jar,plugins/org.eclipse.equinox.jsp.jasper_1.0.201.R36x_v20101103.jar,plugins/org.eclipse.datatools.enablement.ibm.db2.luw_1.0.2.v201005211230.jar,plugins/com.ibm.xtools.emf.collections_7.60.0.v20100715_2051.jar,plugins/com.ibm.xtools.umldt.rt.ui.diagrams_1.50.0.v20110326_0744.jar,plugins/net.sourceforge.lpg.lpgjavaruntime_1.1.0.v201004271650.jar,plugins/com.ibm.xtools.transform.java.jet2templates_1.0.100.v20110117_1549.jar,plugins/org.eclipse.datatools.modelbase.sql_1.0.4.v201002250945.jar,plugins/com.ibm.xtools.umlsljavatransformation_1.1.0.v20110331_1459.jar,plugins/com.ibm.cic.licensing.feature.uid_1.0.2.v20101007_1238.jar,plugins/org.eclipse.emf.mapping.ecore2ecore_2.5.0.v20100521-1847.jar,plugins/org.eclipse.jst.ws.jaxrs.ui.source_1.0.301.v201012020511.jar,plugins/org.mortbay.jetty.util_6.1.23.v201004211559.jar,plugins/org.eclipse.ui.workbench.source_3.6.2.M20110210-1200.jar,plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/,plugins/org.junit_3.8.2.v3_8_2_v20100427-1100/,plugins/com.ibm.xtools.reqpro.modelupgrade_7.0.401.v20110407_2222/,plugins/org.eclipse.ant.core_3.2.201.v20110203_r362.jar,plugins/org.eclipse.epf.richtext_1.5.0.v20080714-1745/,plugins/org.eclipse.jst.ws.doc.user_1.0.600.v201005192217.jar,plugins/com.ibm.xtools.patterns.ui.providers_7.60.0.v20100929_0755.jar,plugins/com.ibm.xtools.uml.ui_7.70.300.v20110514_0146.jar,plugins/com.ibm.xtools.transform.uml2.java5.varargextension_7.5.5.v20100929_0755.jar,plugins/com.ibm.xtools.sample.uml2.xsd.extension_1.0.20.v20110112_2333.jar,plugins/org.apache.batik.extension_1.6.0.v200805290154.jar,plugins/org.eclipse.emf.codegen.ui.source_2.6.0.v20100914-1218.jar,plugins/org.eclipse.birt.report.data.oda.sampledb.ui.source_2.6.2.r262_v20110127.jar,plugins/com.ibm.xtools.transform.cpp.profile.feature.uid_1.0.2.v20110427_0740.jar,plugins/com.ibm.ccl.linkability.store.reqpro_7.0.200.v20100715_2051.jar,plugins/com.ibm.xtools.umldt.rt.umlal.core.resources_1.0.0.v20101203_1715.jar,plugins/com.ibm.process.context.rsx_7.0.0.v20100929_0755.jar,plugins/com.ibm.xtools.patterns.core_7.60.0.v20100929_0755.jar,plugins/org.eclipse.datatools.doc.user_1.7.0.20090521092446.jar,plugins/org.eclipse.gmf.runtime.diagram.ui.providers.ide.source_1.2.0.v20090403-1720.jar,plugins/org.eclipse.equinox.security.win32.x86_1.0.200.v20100503.jar,plugins/org.apache.batik.xml_1.6.0.v200805290154.jar,plugins/com.ibm.xtools.modeler.ui.diagrams.activity_7.60.200.v20110216_0205.jar,plugins/com.ibm.xtools.rumv.ui.workingsets_7.60.0.v20100715_2051.jar,plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar,plugins/org.eclipse.ui.intro.universal_3.2.402.r36_v20100702/,plugins/org.eclipse.equinox.p2.garbagecollector_1.0.100.v20100503.jar,plugins/org.eclipse.wst.command.env.core_1.0.205.v201004211805.jar,plugins/com.ibm.xtools.transform.core.doc.isv_7.0.400.v20110525_0547.jar,plugins/com.ibm.xtools.uml.navigator_7.60.300.v20110510_2201.jar,plugins/org.eclipse.core.databinding.property.source_1.3.0.I20100601-0800.jar,plugins/com.ibm.xtools.modeler.ui.viz.j2se_7.0.200.v20101021_2044.jar,plugins/org.eclipse.emf.transaction.examples_1.2.100.v200901271819.jar,plugins/org.eclipse.core.filesystem.win32.x86_1.1.201.R36x_v20100727-0745.jar,plugins/org.eclipse.tptp.platform.models_4.6.103.v201105161135.jar,plugins/org.eclipse.core.expressions.source_3.4.200.v20100505.jar,plugins/org.eclipse.emf.edit.ui.source_2.6.0.v20100914-1218.jar,plugins/com.ibm.xtools.transform.uml2.java5.morph_7.0.300.v20100929_0755.jar,plugins/com.ibm.xtools.ras.repository.client.workgroup_7.0.100.v20100805_2013/,plugins/org.eclipse.ui.navigator.resources_3.4.202.M20101124-0800.jar,plugins/org.eclipse.ecf.filetransfer_4.0.0.v20100906-1425.jar,plugins/org.eclipse.cdt.core.source_5.2.1.201102110609.jar,plugins/com.ibm.ccl.oda.emf.ui_1.60.200.v20101224_0201.jar,plugins/com.ibm.xtools.modeler.ui.views_7.60.200.v20101217_0201.jar,plugins/org.eclipse.uml2.codegen.ecore.ui_1.6.0.v201005031530.jar,plugins/com.ibm.ccl.tdi.reqpro.uml.traceability.ide.uid_1.0.2.v20110427_0740.jar,plugins/ilog.views.eclipse.graphlayout.runtime_8.7.6.v20101108/,plugins/com.ibm.help.common.rational.doc_7.6.0.v20110517_1103.jar,plugins/org.eclipse.datatools.sqltools.db.generic_1.0.0.v200906020900.jar,plugins/org.eclipse.help.appserver.source_3.1.400.v20100427.jar,plugins/org.eclipse.wst.ws.infopop_1.0.300.v200805140230.jar,plugins/org.eclipse.cdt.dsf_2.1.1.201102110609.jar,plugins/org.apache.lucene.analysis_1.9.1.v20100518-1140.jar,plugins/org.eclipse.wst.wsdl.ui_1.2.305.v201103170010.jar,plugins/org.apache.batik.css.source_1.6.0.v200912221622.jar,plugins/com.ibm.xtools.transform.authoring.uid_1.0.2.v20110127_0205.jar,plugins/org.eclipse.emf.ecore.change.edit.source_2.5.0.v20100521-1846.jar,plugins/org.eclipse.birt.core.ui_2.6.2.r262_v20101014.jar,plugins/com.ibm.xtools.transform.utility.marking_1.0.300.v20110525_0547.jar,plugins/com.ibm.xtools.transform.soa.util.feature.uid_1.0.2.v20110427_0740.jar,plugins/org.apache.batik.transcoder_1.6.0.v200805290154.jar,plugins/com.ibm.xtools.ruml.base.feature.uid_1.0.2.v20110510_2201.jar,plugins/org.eclipse.wst.ws.parser_1.0.403.v201004211805.jar,plugins/com.ibm.xtools.modeler.ui.navigator_7.60.300.v20110510_2201.jar,plugins/com.ibm.ccl.welcome.roles.feature.uid_1.0.2.v20101016_0104.jar,plugins/org.eclipse.birt.chart.ui.extension.source_2.6.2.r262_v20110127.jar,plugins/org.eclipse.wst.jsdt.debug.rhino.debugger.source_1.0.1.v201008170101.jar,plugins/org.eclipse.jst.jsf.doc.user_1.2.1.v20100827.jar,plugins/com.ibm.xtools.modeler.rt.ui.diagrams.statechart_1.50.0.v20110515_0735.jar,plugins/com.ibm.xtools.uml.transform.core.uid_1.0.2.v20101020_0109.jar,plugins/org.eclipse.gmf.common.source_1.2.0.v20100226-2359.jar,plugins/com.ibm.xtools.visualization.common.feature.uid_1.0.2.v20101020_0109.jar'/>
<property name='org.eclipse.update.site.policy' value='USER-INCLUDE'/>
</properties>
<mappings size='3'>
@@ -20238,16 +20238,6 @@
<property name='artifact.reference' value='file:/C:/Program%20Files%20(x86)/IBM/SDPShared/features/org.eclipse.birt.chart_2.6.2.r262_v20101008-7f9T7OFPWowQ1naKt1Wwu4/'/>
</repositoryProperties>
</artifact>
- <artifact classifier='osgi.bundle' id='org.eclipse.update.configurator' version='3.3.100.v20100512'>
- <properties size='2'>
- <property name='artifact.size' value='99899'/>
- <property name='download.size' value='99899'/>
- </properties>
- <repositoryProperties size='2'>
- <property name='file.name' value='C:\Program Files (x86)\IBM\SDPShared\plugins\org.eclipse.update.configurator_3.3.100.v20100512.jar'/>
- <property name='artifact.reference' value='file:/C:/Program%20Files%20(x86)/IBM/SDPShared/plugins/org.eclipse.update.configurator_3.3.100.v20100512.jar'/>
- </repositoryProperties>
- </artifact>
<artifact classifier='osgi.bundle' id='com.ibm.ccl.tdi.reqpro.uml.traceability.ide.uid' version='1.0.2.v20110427_0740'>
<properties size='2'>
<property name='artifact.size' value='2875'/>
@@ -26483,16 +26473,6 @@
<property name='artifact.reference' value='file:/C:/Program%20Files%20(x86)/IBM/SDPShared/plugins/org.uddi4j_2.0.5.v200805270300.jar'/>
</repositoryProperties>
</artifact>
- <artifact classifier='osgi.bundle' id='org.eclipse.update.configurator.source' version='3.3.100.v20100512'>
- <properties size='2'>
- <property name='artifact.size' value='80494'/>
- <property name='download.size' value='80494'/>
- </properties>
- <repositoryProperties size='2'>
- <property name='file.name' value='C:\Program Files (x86)\IBM\SDPShared\plugins\org.eclipse.update.configurator.source_3.3.100.v20100512.jar'/>
- <property name='artifact.reference' value='file:/C:/Program%20Files%20(x86)/IBM/SDPShared/plugins/org.eclipse.update.configurator.source_3.3.100.v20100512.jar'/>
- </repositoryProperties>
- </artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.jst.ws.source' version='1.0.507.v201004211805'>
<properties size='2'>
<property name='artifact.size' value='120011'/>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/eclipseTouchpoint/features/org.eclipse.rcp_3.3.0.v20070607-8y8eE8NEbsN3X_fjWS8HPNG/feature.xml b/bundles/org.eclipse.equinox.p2.tests/testData/eclipseTouchpoint/features/org.eclipse.rcp_3.3.0.v20070607-8y8eE8NEbsN3X_fjWS8HPNG/feature.xml
index 11ef188a8..566fd1be9 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/eclipseTouchpoint/features/org.eclipse.rcp_3.3.0.v20070607-8y8eE8NEbsN3X_fjWS8HPNG/feature.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/eclipseTouchpoint/features/org.eclipse.rcp_3.3.0.v20070607-8y8eE8NEbsN3X_fjWS8HPNG/feature.xml
@@ -139,13 +139,6 @@
unpack="false"/>
<plugin
- id="org.eclipse.update.configurator"
- download-size="0"
- install-size="0"
- version="3.2.100.v20070615"
- unpack="false"/>
-
- <plugin
id="org.eclipse.swt.win32.win32.x86"
os="win32"
ws="win32"
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/extensionlocation/features/org.eclipse.rcp_3.3.0.v20070607-8y8eE8NEbsN3X_fjWS8HPNG/feature.xml b/bundles/org.eclipse.equinox.p2.tests/testData/extensionlocation/features/org.eclipse.rcp_3.3.0.v20070607-8y8eE8NEbsN3X_fjWS8HPNG/feature.xml
index 11ef188a8..566fd1be9 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/extensionlocation/features/org.eclipse.rcp_3.3.0.v20070607-8y8eE8NEbsN3X_fjWS8HPNG/feature.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/extensionlocation/features/org.eclipse.rcp_3.3.0.v20070607-8y8eE8NEbsN3X_fjWS8HPNG/feature.xml
@@ -139,13 +139,6 @@
unpack="false"/>
<plugin
- id="org.eclipse.update.configurator"
- download-size="0"
- install-size="0"
- version="3.2.100.v20070615"
- unpack="false"/>
-
- <plugin
id="org.eclipse.swt.win32.win32.x86"
os="win32"
ws="win32"
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/generator/Europa/site.xml b/bundles/org.eclipse.equinox.p2.tests/testData/generator/Europa/site.xml
index a9bf0170d..d9102ed21 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/generator/Europa/site.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/generator/Europa/site.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<site digestURL="http://download.eclipse.org/releases/europa/" mirrorsURL="http://www.eclipse.org/downloads/download.php?file=/releases/europa/site.xml&amp;format=xml&amp;protocol=http" pack200="true">
+<site digestURL="https://download.eclipse.org/releases/europa/" mirrorsURL="http://www.eclipse.org/downloads/download.php?file=/releases/europa/site.xml&amp;format=xml&amp;protocol=http" pack200="true">
<description url="http://www.eclipse.org/europa/">
This Europa Discovery Site contains a number of Eclipse based projects
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/generator/eclipse3.3/features/org.eclipse.platform.source_3.3.0.v20070612-_19UEkLEzwsdF9jSqQ-G/feature.xml b/bundles/org.eclipse.equinox.p2.tests/testData/generator/eclipse3.3/features/org.eclipse.platform.source_3.3.0.v20070612-_19UEkLEzwsdF9jSqQ-G/feature.xml
index b9cb4db57..5357a19cc 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/generator/eclipse3.3/features/org.eclipse.platform.source_3.3.0.v20070612-_19UEkLEzwsdF9jSqQ-G/feature.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/generator/eclipse3.3/features/org.eclipse.platform.source_3.3.0.v20070612-_19UEkLEzwsdF9jSqQ-G/feature.xml
@@ -10,9 +10,9 @@
%license
</license>
<url>
- <update label="%updateSiteName" url="http://update.eclipse.org/updates/3.3"/>
- <discovery label="%updateSiteName" url="http://update.eclipse.org/updates/3.3"/>
- <discovery label="%secondaryUpdateSiteName" url="http://download.eclipse.org/releases/europa"/>
+ <update label="%updateSiteName" url="https://update.eclipse.org/updates/3.3"/>
+ <discovery label="%updateSiteName" url="https://update.eclipse.org/updates/3.3"/>
+ <discovery label="%secondaryUpdateSiteName" url="https://download.eclipse.org/releases/europa"/>
</url>
<includes id="org.eclipse.rcp.source" version="3.3.0.v20070607-8y8eE8NEbsN3X_fjWS8HPNG"/>
<plugin fragment="false" unpack="false" download-size="0" install-size="0" id="org.eclipse.platform.doc.isv" version="3.3.0.v20070621"/>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/generator/eclipse3.3/features/org.eclipse.platform_3.3.0.v20070612-_19UEkLEzwsdF9jSqQ-G/feature.xml b/bundles/org.eclipse.equinox.p2.tests/testData/generator/eclipse3.3/features/org.eclipse.platform_3.3.0.v20070612-_19UEkLEzwsdF9jSqQ-G/feature.xml
index e4974b851..8f1ffb44d 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/generator/eclipse3.3/features/org.eclipse.platform_3.3.0.v20070612-_19UEkLEzwsdF9jSqQ-G/feature.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/generator/eclipse3.3/features/org.eclipse.platform_3.3.0.v20070612-_19UEkLEzwsdF9jSqQ-G/feature.xml
@@ -19,9 +19,9 @@
</license>
<url>
- <update label="%updateSiteName" url="http://update.eclipse.org/updates/3.3"/>
- <discovery label="%updateSiteName" url="http://update.eclipse.org/updates/3.3"/>
- <discovery label="%secondaryUpdateSiteName" url="http://download.eclipse.org/releases/europa"/>
+ <update label="%updateSiteName" url="https://update.eclipse.org/updates/3.3"/>
+ <discovery label="%updateSiteName" url="https://update.eclipse.org/updates/3.3"/>
+ <discovery label="%secondaryUpdateSiteName" url="https://download.eclipse.org/releases/europa"/>
</url>
<plugin
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/generator/eclipse3.3/features/org.eclipse.rcp_3.3.0.v20070607-8y8eE8NEbsN3X_fjWS8HPNG/feature.xml b/bundles/org.eclipse.equinox.p2.tests/testData/generator/eclipse3.3/features/org.eclipse.rcp_3.3.0.v20070607-8y8eE8NEbsN3X_fjWS8HPNG/feature.xml
index 11ef188a8..566fd1be9 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/generator/eclipse3.3/features/org.eclipse.rcp_3.3.0.v20070607-8y8eE8NEbsN3X_fjWS8HPNG/feature.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/generator/eclipse3.3/features/org.eclipse.rcp_3.3.0.v20070607-8y8eE8NEbsN3X_fjWS8HPNG/feature.xml
@@ -139,13 +139,6 @@
unpack="false"/>
<plugin
- id="org.eclipse.update.configurator"
- download-size="0"
- install-size="0"
- version="3.2.100.v20070615"
- unpack="false"/>
-
- <plugin
id="org.eclipse.swt.win32.win32.x86"
os="win32"
ws="win32"
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/generator/eclipse3.3/features/org.eclipse.sdk_3.3.0.v20070607-7M7J-BIolz-OcxWxvWAPSfLPqevO/feature.xml b/bundles/org.eclipse.equinox.p2.tests/testData/generator/eclipse3.3/features/org.eclipse.sdk_3.3.0.v20070607-7M7J-BIolz-OcxWxvWAPSfLPqevO/feature.xml
index 0b59abbde..87abcbbfd 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/generator/eclipse3.3/features/org.eclipse.sdk_3.3.0.v20070607-7M7J-BIolz-OcxWxvWAPSfLPqevO/feature.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/generator/eclipse3.3/features/org.eclipse.sdk_3.3.0.v20070607-7M7J-BIolz-OcxWxvWAPSfLPqevO/feature.xml
@@ -19,9 +19,9 @@
</license>
<url>
- <update label="%updateSiteName" url="http://update.eclipse.org/updates/3.3"/>
- <discovery label="%updateSiteName" url="http://update.eclipse.org/updates/3.3"/>
- <discovery label="%secondaryUpdateSiteName" url="http://download.eclipse.org/releases/europa"/>
+ <update label="%updateSiteName" url="https://update.eclipse.org/updates/3.3"/>
+ <discovery label="%updateSiteName" url="https://update.eclipse.org/updates/3.3"/>
+ <discovery label="%secondaryUpdateSiteName" url="https://download.eclipse.org/releases/europa"/>
</url>
<includes
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/importexport/unknownformat.p2f b/bundles/org.eclipse.equinox.p2.tests/testData/importexport/unknownformat.p2f
index 9ae98bf32..56e172939 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/importexport/unknownformat.p2f
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/importexport/unknownformat.p2f
@@ -131,7 +131,7 @@
</unit>
</units>
<repositories>
- <repository uri='http://download.eclipse.org/releases/helios'/>
+ <repository uri='https://download.eclipse.org/releases/helios'/>
<repository uri='file:/folk/kzhu0/tmp/plugins/'/>
<repository uri='http://hge.javaforge.com/hgeclipse'/>
</repositories>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/unencodedreporeferences/content.xml b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/unencodedreporeferences/content.xml
index 3d6cd6174..814936f0c 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/unencodedreporeferences/content.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/metadataRepo/unencodedreporeferences/content.xml
@@ -2,9 +2,9 @@
<?metadataRepository class='org.eclipse.equinox.internal.p2.metadata.repository.LocalMetadataRepository' version='1.0.0'?>
<repository name='update site: file:/C:/1target/provmiddle/org.eclipse.equinox.p2.tests/testData/updatesite/site' type='org.eclipse.equinox.internal.p2.metadata.repository.LocalMetadataRepository' version='1'>
<references size='4'>
- <repository url='http://download.eclipse.org/url/with/spaces/a b' type='0' options='0'/>
+ <repository url='https://download.eclipse.org/url/with/spaces/a b' type='0' options='0'/>
<repository url='file:/c:/tmp/url with spaces/' type='1' options='0'/>
- <repository uri='http://download.eclipse.org/uri/with/spaces/a%20b' type='0' options='0'/>
+ <repository uri='https://download.eclipse.org/uri/with/spaces/a%20b' type='0' options='0'/>
<repository uri='file:/c:/tmp/uri%20with%20spaces/' type='1' options='0'/>
</references>
<properties size='3'>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/mirror/mirrorSourceRepoWithRefs/content.xml b/bundles/org.eclipse.equinox.p2.tests/testData/mirror/mirrorSourceRepoWithRefs/content.xml
index 3a3575af8..d53fba1e4 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/mirror/mirrorSourceRepoWithRefs/content.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/mirror/mirrorSourceRepoWithRefs/content.xml
@@ -6,10 +6,10 @@
<property name='p2.timestamp' value='1222693511921'/>
</properties>
<references size='4'>
- <repository uri='http://download.eclipse.org/eclipse/updates/3.5/' url='http://download.eclipse.org/eclipse/updates/3.5/' type='0' options='0'/>
- <repository uri='http://download.eclipse.org/eclipse/updates/3.5/' url='http://download.eclipse.org/eclipse/updates/3.5/' type='1' options='0'/>
- <repository uri='http://download.eclipse.org/eclipse/updates/3.6/' url='http://download.eclipse.org/eclipse/updates/3.6/' type='0' options='0'/>
- <repository uri='http://download.eclipse.org/eclipse/updates/3.6/' url='http://download.eclipse.org/eclipse/updates/3.6/' type='1' options='0'/>
+ <repository uri='https://download.eclipse.org/eclipse/updates/3.5/' url='https://download.eclipse.org/eclipse/updates/3.5/' type='0' options='0'/>
+ <repository uri='https://download.eclipse.org/eclipse/updates/3.5/' url='https://download.eclipse.org/eclipse/updates/3.5/' type='1' options='0'/>
+ <repository uri='https://download.eclipse.org/eclipse/updates/3.6/' url='https://download.eclipse.org/eclipse/updates/3.6/' type='0' options='0'/>
+ <repository uri='https://download.eclipse.org/eclipse/updates/3.6/' url='https://download.eclipse.org/eclipse/updates/3.6/' type='1' options='0'/>
</references>
<units size='8'>
<unit id='helloworldfeature.feature.jar' version='1.0.1'>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pausefeature/artifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/pausefeature/artifacts.xml
index baf533cae..a9f083ecd 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/pausefeature/artifacts.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pausefeature/artifacts.xml
@@ -12,14 +12,14 @@
</properties>
<mappings size='5'>
<rule filter='(&amp; (classifier=osgi.bundle) (format=packed))'
- output='http://download.eclipse.org/eclipse/updates/3.7/R-3.7.2-201202080800/plugins/${id}_${version}.jar.pack.gz' />
- <rule filter='(&amp; (classifier=osgi.bundle))' output='http://download.eclipse.org/eclipse/updates/3.7/R-3.7.2-201202080800/plugins/${id}_${version}.jar' />
- <rule filter='(&amp; (classifier=binary))' output='http://download.eclipse.org/eclipse/updates/3.7/R-3.7.2-201202080800/binary/${id}_${version}' />
+ output='https://download.eclipse.org/eclipse/updates/3.7/R-3.7.2-201202080800/plugins/${id}_${version}.jar.pack.gz' />
+ <rule filter='(&amp; (classifier=osgi.bundle))' output='https://download.eclipse.org/eclipse/updates/3.7/R-3.7.2-201202080800/plugins/${id}_${version}.jar' />
+ <rule filter='(&amp; (classifier=binary))' output='https://download.eclipse.org/eclipse/updates/3.7/R-3.7.2-201202080800/binary/${id}_${version}' />
<rule
filter='(&amp; (classifier=org.eclipse.update.feature) (format=packed))'
- output='http://download.eclipse.org/eclipse/updates/3.7/R-3.7.2-201202080800/features/${id}_${version}.jar.pack.gz' />
+ output='https://download.eclipse.org/eclipse/updates/3.7/R-3.7.2-201202080800/features/${id}_${version}.jar.pack.gz' />
<rule filter='(&amp; (classifier=org.eclipse.update.feature))'
- output='http://download.eclipse.org/eclipse/updates/3.7/R-3.7.2-201202080800/features/${id}_${version}.jar' />
+ output='https://download.eclipse.org/eclipse/updates/3.7/R-3.7.2-201202080800/features/${id}_${version}.jar' />
</mappings>
<artifacts size='13433'>
<artifact classifier='binary'
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoMissingPublicKey/artifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoMissingPublicKey/artifacts.xml
new file mode 100644
index 000000000..2ffef6a9f
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoMissingPublicKey/artifacts.xml
@@ -0,0 +1,36 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<?artifactRepository version='1.1.0'?>
+<repository name='file:/home/mistria/sandbox/repo/ - artifacts' type='org.eclipse.equinox.p2.artifact.repository.simpleRepository' version='1'>
+ <properties size='2'>
+ <property name='p2.timestamp' value='1618433231272'/>
+ <property name='p2.compressed' value='false'/>
+ <!-- See PGPSignatureVerifierTest about this public key-->
+ </properties>
+ <mappings size='3'>
+ <rule filter='(&amp; (classifier=osgi.bundle))' output='${repoUrl}/plugins/${id}_${version}.jar'/>
+ <rule filter='(&amp; (classifier=binary))' output='${repoUrl}/binary/${id}_${version}'/>
+ <rule filter='(&amp; (classifier=org.eclipse.update.feature))' output='${repoUrl}/features/${id}_${version}.jar'/>
+ </mappings>
+ <artifacts size='1'>
+ <artifact classifier='osgi.bundle' id='blah' version='1.0.0.123456'>
+ <properties size='1'>
+ <!-- gpg -u signer1@fakeuser.eclipse.org -a -detach-sig plugins/blah_1.0.0.123456.jar -->
+ <property name='pgp.signatures' value='-----BEGIN PGP SIGNATURE-----
+
+iQHRBAABCAA7FiEE6ZbGcKp/ZUCb9dtWE5442Q3tEfAFAmB4Bf8dHHNpZ25lcjFA
+ZmFrZXVzZXIuZWNsaXBzZS5vcmcACgkQE5442Q3tEfBPuAwAhE4zA7BswKFhEtzm
+DS3EbyRr/U13sV01YxqGtxYDCfrOt8TGVPXJSvo0AVP4vLFc5b+0jtVFoarFJNBu
+xhbVuyC72YdqudNbncSlW6KG5SgeWIM//ThKfl95pOWRWvJEoKJhmDwbDqhZYtL5
+SECegnWGtGx/klFtZihzHYJE/nfSnhySDaz5lCvXFFYRhIbNmNm2Yq7ztCOsN4Ys
+3uN+GEdoXGvv1DFg/xZPvwCOhZGsSQfkl1jmUwVltgKrw9OCFbdfYz7H6dbGWhRu
+2XpuKxPXGavKfpSvssVQIZ6aWi5W6wp5lZAQQddZvYAv3Gi5CZZcUT7ayFJYdD23
+p9jz76G7MXm0f0uNT9B57T72QryokUIEIJYsCb6lNjWUQB4cd0+JesM7sHwweOQ3
+7iTFc+WgVJkP0e695mm1tcvtQHUPbIItYJUsndyLgGInzglxN8+F4U4k8uapydI9
+RmV2NVAifYp8z95Am5AnlG8lqjwrWk5bMbJH82QsQESrNT/h
+=8Vrn
+-----END PGP SIGNATURE-----
+'/>
+ </properties>
+ </artifact>
+ </artifacts>
+</repository>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoMissingPublicKey/content.xml b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoMissingPublicKey/content.xml
new file mode 100644
index 000000000..db8f67ba2
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoMissingPublicKey/content.xml
@@ -0,0 +1,49 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<?metadataRepository version='1.2.0'?>
+<repository name='file:/home/mistria/sandbox/repo/ - metadata' type='org.eclipse.equinox.internal.p2.metadata.repository.LocalMetadataRepository' version='1'>
+ <properties size='2'>
+ <property name='p2.timestamp' value='1618433231272'/>
+ <property name='p2.compressed' value='false'/>
+ </properties>
+ <units size='2'>
+ <unit id='blah' version='1.0.0.123456' singleton='false'>
+ <update id='blah' range='[0.0.0,1.0.0.123456)' severity='0'/>
+ <provides size='4'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='blah' version='1.0.0.123456'/>
+ <provided namespace='osgi.bundle' name='blah' version='1.0.0.123456'/>
+ <provided namespace='osgi.identity' name='blah' version='1.0.0.123456'>
+ <properties size='1'>
+ <property name='type' value='osgi.bundle'/>
+ </properties>
+ </provided>
+ <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
+ </provides>
+ <artifacts size='1'>
+ <artifact classifier='osgi.bundle' id='blah' version='1.0.0.123456'/>
+ </artifacts>
+ <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
+ <touchpointData size='1'>
+ <instructions size='2'>
+ <instruction key='zipped'>
+ true
+ </instruction>
+ <instruction key='manifest'>
+ Bundle-SymbolicName: blah&#xA;Bundle-Version: 1.0.0.qualifier&#xA;
+ </instruction>
+ </instructions>
+ </touchpointData>
+ </unit>
+ <unit id='Category' version='0.0.0'>
+ <properties size='3'>
+ <property name='org.eclipse.equinox.p2.type.category' value='true'/>
+ </properties>
+ <provides size='1'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='Category' version='0.0.0'/>
+ </provides>
+ <requires size='1'>
+ <required namespace='org.eclipse.equinox.p2.iu' name='blah' range='[1.0.0.123456,1.0.0.123456]'/>
+ </requires>
+ <touchpoint id='null' version='0.0.0'/>
+ </unit>
+ </units>
+</repository>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoMissingPublicKey/plugins/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoMissingPublicKey/plugins/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..b9fdcbf2f
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoMissingPublicKey/plugins/META-INF/MANIFEST.MF
@@ -0,0 +1,4 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: blah
+Bundle-Version: 1.0.0.qualifier
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoMissingPublicKey/plugins/blah_1.0.0.123456.jar b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoMissingPublicKey/plugins/blah_1.0.0.123456.jar
new file mode 100644
index 000000000..9cc7b8da0
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoMissingPublicKey/plugins/blah_1.0.0.123456.jar
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoMissingPublicKey/plugins/blah_1.0.0.123456.jar.asc b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoMissingPublicKey/plugins/blah_1.0.0.123456.jar.asc
new file mode 100644
index 000000000..1489f2552
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoMissingPublicKey/plugins/blah_1.0.0.123456.jar.asc
@@ -0,0 +1,14 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQHRBAABCAA7FiEE6ZbGcKp/ZUCb9dtWE5442Q3tEfAFAmB4Bf8dHHNpZ25lcjFA
+ZmFrZXVzZXIuZWNsaXBzZS5vcmcACgkQE5442Q3tEfBPuAwAhE4zA7BswKFhEtzm
+DS3EbyRr/U13sV01YxqGtxYDCfrOt8TGVPXJSvo0AVP4vLFc5b+0jtVFoarFJNBu
+xhbVuyC72YdqudNbncSlW6KG5SgeWIM//ThKfl95pOWRWvJEoKJhmDwbDqhZYtL5
+SECegnWGtGx/klFtZihzHYJE/nfSnhySDaz5lCvXFFYRhIbNmNm2Yq7ztCOsN4Ys
+3uN+GEdoXGvv1DFg/xZPvwCOhZGsSQfkl1jmUwVltgKrw9OCFbdfYz7H6dbGWhRu
+2XpuKxPXGavKfpSvssVQIZ6aWi5W6wp5lZAQQddZvYAv3Gi5CZZcUT7ayFJYdD23
+p9jz76G7MXm0f0uNT9B57T72QryokUIEIJYsCb6lNjWUQB4cd0+JesM7sHwweOQ3
+7iTFc+WgVJkP0e695mm1tcvtQHUPbIItYJUsndyLgGInzglxN8+F4U4k8uapydI9
+RmV2NVAifYp8z95Am5AnlG8lqjwrWk5bMbJH82QsQESrNT/h
+=8Vrn
+-----END PGP SIGNATURE-----
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoNoPGP/artifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoNoPGP/artifacts.xml
new file mode 100644
index 000000000..68b911bfa
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoNoPGP/artifacts.xml
@@ -0,0 +1,16 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<?artifactRepository version='1.1.0'?>
+<repository name='file:/home/mistria/sandbox/repo/ - artifacts' type='org.eclipse.equinox.p2.artifact.repository.simpleRepository' version='1'>
+ <properties size='2'>
+ <property name='p2.timestamp' value='1618433231272'/>
+ <property name='p2.compressed' value='false'/>
+ </properties>
+ <mappings size='3'>
+ <rule filter='(&amp; (classifier=osgi.bundle))' output='${repoUrl}/plugins/${id}_${version}.jar'/>
+ <rule filter='(&amp; (classifier=binary))' output='${repoUrl}/binary/${id}_${version}'/>
+ <rule filter='(&amp; (classifier=org.eclipse.update.feature))' output='${repoUrl}/features/${id}_${version}.jar'/>
+ </mappings>
+ <artifacts size='1'>
+ <artifact classifier='osgi.bundle' id='blah' version='1.0.0.123456'/>
+ </artifacts>
+</repository>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoNoPGP/content.xml b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoNoPGP/content.xml
new file mode 100644
index 000000000..db8f67ba2
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoNoPGP/content.xml
@@ -0,0 +1,49 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<?metadataRepository version='1.2.0'?>
+<repository name='file:/home/mistria/sandbox/repo/ - metadata' type='org.eclipse.equinox.internal.p2.metadata.repository.LocalMetadataRepository' version='1'>
+ <properties size='2'>
+ <property name='p2.timestamp' value='1618433231272'/>
+ <property name='p2.compressed' value='false'/>
+ </properties>
+ <units size='2'>
+ <unit id='blah' version='1.0.0.123456' singleton='false'>
+ <update id='blah' range='[0.0.0,1.0.0.123456)' severity='0'/>
+ <provides size='4'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='blah' version='1.0.0.123456'/>
+ <provided namespace='osgi.bundle' name='blah' version='1.0.0.123456'/>
+ <provided namespace='osgi.identity' name='blah' version='1.0.0.123456'>
+ <properties size='1'>
+ <property name='type' value='osgi.bundle'/>
+ </properties>
+ </provided>
+ <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
+ </provides>
+ <artifacts size='1'>
+ <artifact classifier='osgi.bundle' id='blah' version='1.0.0.123456'/>
+ </artifacts>
+ <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
+ <touchpointData size='1'>
+ <instructions size='2'>
+ <instruction key='zipped'>
+ true
+ </instruction>
+ <instruction key='manifest'>
+ Bundle-SymbolicName: blah&#xA;Bundle-Version: 1.0.0.qualifier&#xA;
+ </instruction>
+ </instructions>
+ </touchpointData>
+ </unit>
+ <unit id='Category' version='0.0.0'>
+ <properties size='3'>
+ <property name='org.eclipse.equinox.p2.type.category' value='true'/>
+ </properties>
+ <provides size='1'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='Category' version='0.0.0'/>
+ </provides>
+ <requires size='1'>
+ <required namespace='org.eclipse.equinox.p2.iu' name='blah' range='[1.0.0.123456,1.0.0.123456]'/>
+ </requires>
+ <touchpoint id='null' version='0.0.0'/>
+ </unit>
+ </units>
+</repository>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoNoPGP/plugins/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoNoPGP/plugins/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..b9fdcbf2f
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoNoPGP/plugins/META-INF/MANIFEST.MF
@@ -0,0 +1,4 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: blah
+Bundle-Version: 1.0.0.qualifier
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoNoPGP/plugins/blah_1.0.0.123456.jar b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoNoPGP/plugins/blah_1.0.0.123456.jar
new file mode 100644
index 000000000..9cc7b8da0
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoNoPGP/plugins/blah_1.0.0.123456.jar
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoNoPGP/plugins/blah_1.0.0.123456.jar.asc b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoNoPGP/plugins/blah_1.0.0.123456.jar.asc
new file mode 100644
index 000000000..1489f2552
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoNoPGP/plugins/blah_1.0.0.123456.jar.asc
@@ -0,0 +1,14 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQHRBAABCAA7FiEE6ZbGcKp/ZUCb9dtWE5442Q3tEfAFAmB4Bf8dHHNpZ25lcjFA
+ZmFrZXVzZXIuZWNsaXBzZS5vcmcACgkQE5442Q3tEfBPuAwAhE4zA7BswKFhEtzm
+DS3EbyRr/U13sV01YxqGtxYDCfrOt8TGVPXJSvo0AVP4vLFc5b+0jtVFoarFJNBu
+xhbVuyC72YdqudNbncSlW6KG5SgeWIM//ThKfl95pOWRWvJEoKJhmDwbDqhZYtL5
+SECegnWGtGx/klFtZihzHYJE/nfSnhySDaz5lCvXFFYRhIbNmNm2Yq7ztCOsN4Ys
+3uN+GEdoXGvv1DFg/xZPvwCOhZGsSQfkl1jmUwVltgKrw9OCFbdfYz7H6dbGWhRu
+2XpuKxPXGavKfpSvssVQIZ6aWi5W6wp5lZAQQddZvYAv3Gi5CZZcUT7ayFJYdD23
+p9jz76G7MXm0f0uNT9B57T72QryokUIEIJYsCb6lNjWUQB4cd0+JesM7sHwweOQ3
+7iTFc+WgVJkP0e695mm1tcvtQHUPbIItYJUsndyLgGInzglxN8+F4U4k8uapydI9
+RmV2NVAifYp8z95Am5AnlG8lqjwrWk5bMbJH82QsQESrNT/h
+=8Vrn
+-----END PGP SIGNATURE-----
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK/artifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK/artifacts.xml
new file mode 100644
index 000000000..4ddbddbb3
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK/artifacts.xml
@@ -0,0 +1,78 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<?artifactRepository version='1.1.0'?>
+<repository name='file:/home/mistria/sandbox/repo/ - artifacts' type='org.eclipse.equinox.p2.artifact.repository.simpleRepository' version='1'>
+ <properties size='3'>
+ <property name='p2.timestamp' value='1618433231272'/>
+ <property name='p2.compressed' value='false'/>
+ <!-- See PGPSignatureVerifierTest about this public key-->
+ <property name='pgp.publicKeys' value='-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQGNBGB1bugBDADQ5l7YnS9hNFRkBKSrvVNHt/TxeHaNNIHkdTC56I1QdThsOt4Y
+oQRI27AEOaY1GFEi6+QqwxALcMMMSTgkCRs2NFGqlWMVzNYE7bJMWChVa7uQ/9CG
+1HRbXwVwQx3hFgU4kmw1Kl/IH4LX76d9gAMyFANPjYZJSjbAv54wOlKruDRgpQFF
+pZeuXW7SnerL6sgd/+ZroikdkrjIs5t18C2ofzf6YnOokYkEEJSAEoQK5svVzT4G
+H3sw6FlE41RvnYKpuhvvyQhKjISDYfRaIL4JIpvR9Uko48eN9x654lJaucbMiLP4
+ROI9q7RQ6t1IMCiIN9QKgS+nVtHnN9MnXS0czGxfLdStv6bB+xgUoyBc7Uiqf4X0
+x8z9PE6O1L6Rgy2JMJHPgLWCF8h/u1FO88Br3I7TMzu2q/cg3k18L7eujnxVyYiD
+YIMxDBXBNnGCKRC4shgt8e+PzAPXIDFvbv7HOaERnx5c6eLl0tD12ocQeZHp1VlW
+nQteQ6CfvN07dNUAEQEAAbQ3RWNsaXBzZSBwMiB0ZXN0IFNpZ25lciAxIDxzaWdu
+ZXIxQGZha2V1c2VyLmVjbGlwc2Uub3JnPokB1AQTAQgAPhYhBOmWxnCqf2VAm/Xb
+VhOeONkN7RHwBQJgdW7oAhsDBQkDwmcABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheA
+AAoJEBOeONkN7RHwuXYL/Ri2gHoXELN79dWnuC5hjh7XgKquqlZg3qLgkLyA/54/
+ERx7HLLMHjU5tVIVacZ9UWb30Bzx6iVx2hMtL/0FFJ1S0iwwTDXft/9EoPvsmmEx
+VYEiSx5HxsPXM+XofMvi75nN34iMUIU3SgKLzHqlWcC3T7XjDWKC8TkTcutIAaIz
+BMRssktJR3OYzWbbwzgz83sVpofWGfxIW91H19Zr8rjIXiNyy1ulRnfsaz+xXeXf
+KxZZs00FtIIOeWBhCtsb8/8Uv3FRDK6+lX3xAqfMG67azJXpFafWJGiymypfSwi6
+JA866WOzw9DfbqWIlY/EMIhyZrsWnGiGhhAavwOiSWYV65ooFYooKHNmIekpvRZS
+wlGuwvnZr+2471urkCoG8Yz2Ey28Qjc0NgXlXAkqFUkO2gNPFsXkk1EC+vzO2llp
+qROS9pt25dEBcUSgfcjFOFWv2Z5IdmGjFEe46CJNEVzNgkP+97wJP7wpcOCSF/nn
+eOBj4b7Q0suJ+MsE/Fx6SbkBjQRgdW7oAQwAst4QGHd9w+V3UHgRMYZISfYApcAK
+2qBT1Zvf01QE38JUtDPKJarDlgxcaXuX6jOcbF60OMd59dhNmpaZYpocJZMgnESj
+0/Tn4cZfWwtOo1Pom8Lbg1zGKIYAaR2mTb8mkCwJwsZCUZCmh+zspacxdVRdmWmC
+XcFxFc/6gBKxcPFZf93JZaI33qsLpxyA57AJV5ck/TY1iFmA6HFxehamsAVdd56g
+uyORekJJlZHXE9pICVEGqVUfdbSQXEiS386kZDftXe36phdj1gtFsRLHoBI8+L7o
+2vrdnj1UZgtvxBbJJ+QAfhF8+f84RFIi9CTY8cheX+YfDMEdg9J9LG54X5P3O1ZX
+eEvudKk/hqWBf+2rrdkhdFyyGRK0yTrO+PQ+tZHhcHPqfo4EiVktC4BTpB6QtLBY
+NAGYMRddmZMgp4lE2xGib8SYwonct3y1fmB+x67lq65IFVM/IAwN6BuMXtgb+Zkm
+iT+eKgc1pK4uCsZJbQAlPzkDGQV69GNyjlphABEBAAGJAbwEGAEIACYWIQTplsZw
+qn9lQJv121YTnjjZDe0R8AUCYHVu6AIbDAUJA8JnAAAKCRATnjjZDe0R8Oe8DADQ
+CTBXxrmTJTSZUeKVo0C1kDHQaaV+RiRmquYR3WxFI6ugJFFWpzgG9V8Q7vYGeZFM
+HYM/tDuY/gdMwHBcR13yYyozslar7qas4LL/bYgOqq+SiSGTDEBW+00+5Wlwmlrv
+ubLc6ow9q2sTmOprq3Q7fei+sEANVnymBxnVV/ZIVGPpm/Rkh1JFGT/8SEyKkCut
+G23JMM/06cIhZwdD6aWSZK4EFw0lwfXyr8l3ZqH0WydVEef1DUNIRM48O0YdwS9u
+jd5iKKKJlb4XxwGi6IKSzpXF7pFrm6vqS306u3Fnak5hb2gs8dpnNo7UL1gUm5pr
+8vJ3xhg15KCjYKz8k6ZDsIWULTXUJ23i8ZwqyQaj1bajwN0+/MfC0ZkoQtQ2I/TH
+cKLSMOR+Tji6n7FjOcVl6VoDKTjdxj9OgAlbZ7W9jEArrUjDdCk/m4jq9h9phpli
+BHoul/nauwtlUnQes1V+39Rk9l7gddKWg3dlwg6CjB5MkmcaeyxgANcyKgrunpg=
+=JYpC
+-----END PGP PUBLIC KEY BLOCK-----
+'/>
+ </properties>
+ <mappings size='3'>
+ <rule filter='(&amp; (classifier=osgi.bundle))' output='${repoUrl}/plugins/${id}_${version}.jar'/>
+ <rule filter='(&amp; (classifier=binary))' output='${repoUrl}/binary/${id}_${version}'/>
+ <rule filter='(&amp; (classifier=org.eclipse.update.feature))' output='${repoUrl}/features/${id}_${version}.jar'/>
+ </mappings>
+ <artifacts size='1'>
+ <artifact classifier='osgi.bundle' id='blah' version='1.0.0.123456'>
+ <properties size='1'>
+ <!-- gpg -u signer1@fakeuser.eclipse.org -a -detach-sig plugins/blah_1.0.0.123456.jar -->
+ <property name='pgp.signatures' value='-----BEGIN PGP SIGNATURE-----
+
+iQHRBAABCAA7FiEE6ZbGcKp/ZUCb9dtWE5442Q3tEfAFAmB4Bf8dHHNpZ25lcjFA
+ZmFrZXVzZXIuZWNsaXBzZS5vcmcACgkQE5442Q3tEfBPuAwAhE4zA7BswKFhEtzm
+DS3EbyRr/U13sV01YxqGtxYDCfrOt8TGVPXJSvo0AVP4vLFc5b+0jtVFoarFJNBu
+xhbVuyC72YdqudNbncSlW6KG5SgeWIM//ThKfl95pOWRWvJEoKJhmDwbDqhZYtL5
+SECegnWGtGx/klFtZihzHYJE/nfSnhySDaz5lCvXFFYRhIbNmNm2Yq7ztCOsN4Ys
+3uN+GEdoXGvv1DFg/xZPvwCOhZGsSQfkl1jmUwVltgKrw9OCFbdfYz7H6dbGWhRu
+2XpuKxPXGavKfpSvssVQIZ6aWi5W6wp5lZAQQddZvYAv3Gi5CZZcUT7ayFJYdD23
+p9jz76G7MXm0f0uNT9B57T72QryokUIEIJYsCb6lNjWUQB4cd0+JesM7sHwweOQ3
+7iTFc+WgVJkP0e695mm1tcvtQHUPbIItYJUsndyLgGInzglxN8+F4U4k8uapydI9
+RmV2NVAifYp8z95Am5AnlG8lqjwrWk5bMbJH82QsQESrNT/h
+=8Vrn
+-----END PGP SIGNATURE-----
+'/>
+ </properties>
+ </artifact>
+ </artifacts>
+</repository>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK/content.xml b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK/content.xml
new file mode 100644
index 000000000..db8f67ba2
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK/content.xml
@@ -0,0 +1,49 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<?metadataRepository version='1.2.0'?>
+<repository name='file:/home/mistria/sandbox/repo/ - metadata' type='org.eclipse.equinox.internal.p2.metadata.repository.LocalMetadataRepository' version='1'>
+ <properties size='2'>
+ <property name='p2.timestamp' value='1618433231272'/>
+ <property name='p2.compressed' value='false'/>
+ </properties>
+ <units size='2'>
+ <unit id='blah' version='1.0.0.123456' singleton='false'>
+ <update id='blah' range='[0.0.0,1.0.0.123456)' severity='0'/>
+ <provides size='4'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='blah' version='1.0.0.123456'/>
+ <provided namespace='osgi.bundle' name='blah' version='1.0.0.123456'/>
+ <provided namespace='osgi.identity' name='blah' version='1.0.0.123456'>
+ <properties size='1'>
+ <property name='type' value='osgi.bundle'/>
+ </properties>
+ </provided>
+ <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
+ </provides>
+ <artifacts size='1'>
+ <artifact classifier='osgi.bundle' id='blah' version='1.0.0.123456'/>
+ </artifacts>
+ <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
+ <touchpointData size='1'>
+ <instructions size='2'>
+ <instruction key='zipped'>
+ true
+ </instruction>
+ <instruction key='manifest'>
+ Bundle-SymbolicName: blah&#xA;Bundle-Version: 1.0.0.qualifier&#xA;
+ </instruction>
+ </instructions>
+ </touchpointData>
+ </unit>
+ <unit id='Category' version='0.0.0'>
+ <properties size='3'>
+ <property name='org.eclipse.equinox.p2.type.category' value='true'/>
+ </properties>
+ <provides size='1'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='Category' version='0.0.0'/>
+ </provides>
+ <requires size='1'>
+ <required namespace='org.eclipse.equinox.p2.iu' name='blah' range='[1.0.0.123456,1.0.0.123456]'/>
+ </requires>
+ <touchpoint id='null' version='0.0.0'/>
+ </unit>
+ </units>
+</repository>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK/plugins/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK/plugins/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..b9fdcbf2f
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK/plugins/META-INF/MANIFEST.MF
@@ -0,0 +1,4 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: blah
+Bundle-Version: 1.0.0.qualifier
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK/plugins/blah_1.0.0.123456.jar b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK/plugins/blah_1.0.0.123456.jar
new file mode 100644
index 000000000..9cc7b8da0
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK/plugins/blah_1.0.0.123456.jar
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK/plugins/blah_1.0.0.123456.jar.asc b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK/plugins/blah_1.0.0.123456.jar.asc
new file mode 100644
index 000000000..1489f2552
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK/plugins/blah_1.0.0.123456.jar.asc
@@ -0,0 +1,14 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQHRBAABCAA7FiEE6ZbGcKp/ZUCb9dtWE5442Q3tEfAFAmB4Bf8dHHNpZ25lcjFA
+ZmFrZXVzZXIuZWNsaXBzZS5vcmcACgkQE5442Q3tEfBPuAwAhE4zA7BswKFhEtzm
+DS3EbyRr/U13sV01YxqGtxYDCfrOt8TGVPXJSvo0AVP4vLFc5b+0jtVFoarFJNBu
+xhbVuyC72YdqudNbncSlW6KG5SgeWIM//ThKfl95pOWRWvJEoKJhmDwbDqhZYtL5
+SECegnWGtGx/klFtZihzHYJE/nfSnhySDaz5lCvXFFYRhIbNmNm2Yq7ztCOsN4Ys
+3uN+GEdoXGvv1DFg/xZPvwCOhZGsSQfkl1jmUwVltgKrw9OCFbdfYz7H6dbGWhRu
+2XpuKxPXGavKfpSvssVQIZ6aWi5W6wp5lZAQQddZvYAv3Gi5CZZcUT7ayFJYdD23
+p9jz76G7MXm0f0uNT9B57T72QryokUIEIJYsCb6lNjWUQB4cd0+JesM7sHwweOQ3
+7iTFc+WgVJkP0e695mm1tcvtQHUPbIItYJUsndyLgGInzglxN8+F4U4k8uapydI9
+RmV2NVAifYp8z95Am5AnlG8lqjwrWk5bMbJH82QsQESrNT/h
+=8Vrn
+-----END PGP SIGNATURE-----
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK_encoded/artifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK_encoded/artifacts.xml
new file mode 100644
index 000000000..43557706b
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK_encoded/artifacts.xml
@@ -0,0 +1,25 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<?artifactRepository version='1.1.0'?>
+<repository name='file:/home/mistria/sandbox/repo/ - artifacts' type='org.eclipse.equinox.p2.artifact.repository.simpleRepository' version='1'>
+ <properties size='3'>
+ <property name='p2.timestamp' value='1618433231272'/>
+ <property name='p2.compressed' value='false'/>
+ <!-- See PGPSignatureVerifierTest about this public key -->
+ <!-- encoded with org.eclipse.equinox.internal.p2.persistence.XMLWriter.escape() -->
+ <property name='pgp.publicKeys' value='-----BEGIN PGP PUBLIC KEY BLOCK-----&#xA;&#xA;mQGNBGB1bugBDADQ5l7YnS9hNFRkBKSrvVNHt/TxeHaNNIHkdTC56I1QdThsOt4Y&#xA;oQRI27AEOaY1GFEi6+QqwxALcMMMSTgkCRs2NFGqlWMVzNYE7bJMWChVa7uQ/9CG&#xA;1HRbXwVwQx3hFgU4kmw1Kl/IH4LX76d9gAMyFANPjYZJSjbAv54wOlKruDRgpQFF&#xA;pZeuXW7SnerL6sgd/+ZroikdkrjIs5t18C2ofzf6YnOokYkEEJSAEoQK5svVzT4G&#xA;H3sw6FlE41RvnYKpuhvvyQhKjISDYfRaIL4JIpvR9Uko48eN9x654lJaucbMiLP4&#xA;ROI9q7RQ6t1IMCiIN9QKgS+nVtHnN9MnXS0czGxfLdStv6bB+xgUoyBc7Uiqf4X0&#xA;x8z9PE6O1L6Rgy2JMJHPgLWCF8h/u1FO88Br3I7TMzu2q/cg3k18L7eujnxVyYiD&#xA;YIMxDBXBNnGCKRC4shgt8e+PzAPXIDFvbv7HOaERnx5c6eLl0tD12ocQeZHp1VlW&#xA;nQteQ6CfvN07dNUAEQEAAbQ3RWNsaXBzZSBwMiB0ZXN0IFNpZ25lciAxIDxzaWdu&#xA;ZXIxQGZha2V1c2VyLmVjbGlwc2Uub3JnPokB1AQTAQgAPhYhBOmWxnCqf2VAm/Xb&#xA;VhOeONkN7RHwBQJgdW7oAhsDBQkDwmcABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheA&#xA;AAoJEBOeONkN7RHwuXYL/Ri2gHoXELN79dWnuC5hjh7XgKquqlZg3qLgkLyA/54/&#xA;ERx7HLLMHjU5tVIVacZ9UWb30Bzx6iVx2hMtL/0FFJ1S0iwwTDXft/9EoPvsmmEx&#xA;VYEiSx5HxsPXM+XofMvi75nN34iMUIU3SgKLzHqlWcC3T7XjDWKC8TkTcutIAaIz&#xA;BMRssktJR3OYzWbbwzgz83sVpofWGfxIW91H19Zr8rjIXiNyy1ulRnfsaz+xXeXf&#xA;KxZZs00FtIIOeWBhCtsb8/8Uv3FRDK6+lX3xAqfMG67azJXpFafWJGiymypfSwi6&#xA;JA866WOzw9DfbqWIlY/EMIhyZrsWnGiGhhAavwOiSWYV65ooFYooKHNmIekpvRZS&#xA;wlGuwvnZr+2471urkCoG8Yz2Ey28Qjc0NgXlXAkqFUkO2gNPFsXkk1EC+vzO2llp&#xA;qROS9pt25dEBcUSgfcjFOFWv2Z5IdmGjFEe46CJNEVzNgkP+97wJP7wpcOCSF/nn&#xA;eOBj4b7Q0suJ+MsE/Fx6SbkBjQRgdW7oAQwAst4QGHd9w+V3UHgRMYZISfYApcAK&#xA;2qBT1Zvf01QE38JUtDPKJarDlgxcaXuX6jOcbF60OMd59dhNmpaZYpocJZMgnESj&#xA;0/Tn4cZfWwtOo1Pom8Lbg1zGKIYAaR2mTb8mkCwJwsZCUZCmh+zspacxdVRdmWmC&#xA;XcFxFc/6gBKxcPFZf93JZaI33qsLpxyA57AJV5ck/TY1iFmA6HFxehamsAVdd56g&#xA;uyORekJJlZHXE9pICVEGqVUfdbSQXEiS386kZDftXe36phdj1gtFsRLHoBI8+L7o&#xA;2vrdnj1UZgtvxBbJJ+QAfhF8+f84RFIi9CTY8cheX+YfDMEdg9J9LG54X5P3O1ZX&#xA;eEvudKk/hqWBf+2rrdkhdFyyGRK0yTrO+PQ+tZHhcHPqfo4EiVktC4BTpB6QtLBY&#xA;NAGYMRddmZMgp4lE2xGib8SYwonct3y1fmB+x67lq65IFVM/IAwN6BuMXtgb+Zkm&#xA;iT+eKgc1pK4uCsZJbQAlPzkDGQV69GNyjlphABEBAAGJAbwEGAEIACYWIQTplsZw&#xA;qn9lQJv121YTnjjZDe0R8AUCYHVu6AIbDAUJA8JnAAAKCRATnjjZDe0R8Oe8DADQ&#xA;CTBXxrmTJTSZUeKVo0C1kDHQaaV+RiRmquYR3WxFI6ugJFFWpzgG9V8Q7vYGeZFM&#xA;HYM/tDuY/gdMwHBcR13yYyozslar7qas4LL/bYgOqq+SiSGTDEBW+00+5Wlwmlrv&#xA;ubLc6ow9q2sTmOprq3Q7fei+sEANVnymBxnVV/ZIVGPpm/Rkh1JFGT/8SEyKkCut&#xA;G23JMM/06cIhZwdD6aWSZK4EFw0lwfXyr8l3ZqH0WydVEef1DUNIRM48O0YdwS9u&#xA;jd5iKKKJlb4XxwGi6IKSzpXF7pFrm6vqS306u3Fnak5hb2gs8dpnNo7UL1gUm5pr&#xA;8vJ3xhg15KCjYKz8k6ZDsIWULTXUJ23i8ZwqyQaj1bajwN0+/MfC0ZkoQtQ2I/TH&#xA;cKLSMOR+Tji6n7FjOcVl6VoDKTjdxj9OgAlbZ7W9jEArrUjDdCk/m4jq9h9phpli&#xA;BHoul/nauwtlUnQes1V+39Rk9l7gddKWg3dlwg6CjB5MkmcaeyxgANcyKgrunpg=&#xA;=JYpC&#xA;-----END PGP PUBLIC KEY BLOCK-----&#xA;'/>
+ </properties>
+ <mappings size='3'>
+ <rule filter='(&amp; (classifier=osgi.bundle))' output='${repoUrl}/plugins/${id}_${version}.jar'/>
+ <rule filter='(&amp; (classifier=binary))' output='${repoUrl}/binary/${id}_${version}'/>
+ <rule filter='(&amp; (classifier=org.eclipse.update.feature))' output='${repoUrl}/features/${id}_${version}.jar'/>
+ </mappings>
+ <artifacts size='1'>
+ <artifact classifier='osgi.bundle' id='blah' version='1.0.0.123456'>
+ <properties size='1'>
+ <!-- gpg -u signer1@fakeuser.eclipse.org -a -detach-sig plugins/blah_1.0.0.123456.jar -->
+ <!-- encoded with org.eclipse.equinox.internal.p2.persistence.XMLWriter.escape() -->
+ <property name='pgp.signatures' value='-----BEGIN PGP SIGNATURE-----&#xA;&#xA;iQHRBAABCAA7FiEE6ZbGcKp/ZUCb9dtWE5442Q3tEfAFAmB4Bf8dHHNpZ25lcjFA&#xA;ZmFrZXVzZXIuZWNsaXBzZS5vcmcACgkQE5442Q3tEfBPuAwAhE4zA7BswKFhEtzm&#xA;DS3EbyRr/U13sV01YxqGtxYDCfrOt8TGVPXJSvo0AVP4vLFc5b+0jtVFoarFJNBu&#xA;xhbVuyC72YdqudNbncSlW6KG5SgeWIM//ThKfl95pOWRWvJEoKJhmDwbDqhZYtL5&#xA;SECegnWGtGx/klFtZihzHYJE/nfSnhySDaz5lCvXFFYRhIbNmNm2Yq7ztCOsN4Ys&#xA;3uN+GEdoXGvv1DFg/xZPvwCOhZGsSQfkl1jmUwVltgKrw9OCFbdfYz7H6dbGWhRu&#xA;2XpuKxPXGavKfpSvssVQIZ6aWi5W6wp5lZAQQddZvYAv3Gi5CZZcUT7ayFJYdD23&#xA;p9jz76G7MXm0f0uNT9B57T72QryokUIEIJYsCb6lNjWUQB4cd0+JesM7sHwweOQ3&#xA;7iTFc+WgVJkP0e695mm1tcvtQHUPbIItYJUsndyLgGInzglxN8+F4U4k8uapydI9&#xA;RmV2NVAifYp8z95Am5AnlG8lqjwrWk5bMbJH82QsQESrNT/h&#xA;=8Vrn&#xA;-----END PGP SIGNATURE-----&#xA;'/>
+ </properties>
+ </artifact>
+ </artifacts>
+</repository>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK_encoded/content.xml b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK_encoded/content.xml
new file mode 100644
index 000000000..db8f67ba2
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK_encoded/content.xml
@@ -0,0 +1,49 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<?metadataRepository version='1.2.0'?>
+<repository name='file:/home/mistria/sandbox/repo/ - metadata' type='org.eclipse.equinox.internal.p2.metadata.repository.LocalMetadataRepository' version='1'>
+ <properties size='2'>
+ <property name='p2.timestamp' value='1618433231272'/>
+ <property name='p2.compressed' value='false'/>
+ </properties>
+ <units size='2'>
+ <unit id='blah' version='1.0.0.123456' singleton='false'>
+ <update id='blah' range='[0.0.0,1.0.0.123456)' severity='0'/>
+ <provides size='4'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='blah' version='1.0.0.123456'/>
+ <provided namespace='osgi.bundle' name='blah' version='1.0.0.123456'/>
+ <provided namespace='osgi.identity' name='blah' version='1.0.0.123456'>
+ <properties size='1'>
+ <property name='type' value='osgi.bundle'/>
+ </properties>
+ </provided>
+ <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
+ </provides>
+ <artifacts size='1'>
+ <artifact classifier='osgi.bundle' id='blah' version='1.0.0.123456'/>
+ </artifacts>
+ <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
+ <touchpointData size='1'>
+ <instructions size='2'>
+ <instruction key='zipped'>
+ true
+ </instruction>
+ <instruction key='manifest'>
+ Bundle-SymbolicName: blah&#xA;Bundle-Version: 1.0.0.qualifier&#xA;
+ </instruction>
+ </instructions>
+ </touchpointData>
+ </unit>
+ <unit id='Category' version='0.0.0'>
+ <properties size='3'>
+ <property name='org.eclipse.equinox.p2.type.category' value='true'/>
+ </properties>
+ <provides size='1'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='Category' version='0.0.0'/>
+ </provides>
+ <requires size='1'>
+ <required namespace='org.eclipse.equinox.p2.iu' name='blah' range='[1.0.0.123456,1.0.0.123456]'/>
+ </requires>
+ <touchpoint id='null' version='0.0.0'/>
+ </unit>
+ </units>
+</repository>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK_encoded/plugins/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK_encoded/plugins/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..b9fdcbf2f
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK_encoded/plugins/META-INF/MANIFEST.MF
@@ -0,0 +1,4 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: blah
+Bundle-Version: 1.0.0.qualifier
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK_encoded/plugins/blah_1.0.0.123456.jar b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK_encoded/plugins/blah_1.0.0.123456.jar
new file mode 100644
index 000000000..9cc7b8da0
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK_encoded/plugins/blah_1.0.0.123456.jar
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK_encoded/plugins/blah_1.0.0.123456.jar.asc b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK_encoded/plugins/blah_1.0.0.123456.jar.asc
new file mode 100644
index 000000000..1489f2552
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoPGPOK_encoded/plugins/blah_1.0.0.123456.jar.asc
@@ -0,0 +1,14 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQHRBAABCAA7FiEE6ZbGcKp/ZUCb9dtWE5442Q3tEfAFAmB4Bf8dHHNpZ25lcjFA
+ZmFrZXVzZXIuZWNsaXBzZS5vcmcACgkQE5442Q3tEfBPuAwAhE4zA7BswKFhEtzm
+DS3EbyRr/U13sV01YxqGtxYDCfrOt8TGVPXJSvo0AVP4vLFc5b+0jtVFoarFJNBu
+xhbVuyC72YdqudNbncSlW6KG5SgeWIM//ThKfl95pOWRWvJEoKJhmDwbDqhZYtL5
+SECegnWGtGx/klFtZihzHYJE/nfSnhySDaz5lCvXFFYRhIbNmNm2Yq7ztCOsN4Ys
+3uN+GEdoXGvv1DFg/xZPvwCOhZGsSQfkl1jmUwVltgKrw9OCFbdfYz7H6dbGWhRu
+2XpuKxPXGavKfpSvssVQIZ6aWi5W6wp5lZAQQddZvYAv3Gi5CZZcUT7ayFJYdD23
+p9jz76G7MXm0f0uNT9B57T72QryokUIEIJYsCb6lNjWUQB4cd0+JesM7sHwweOQ3
+7iTFc+WgVJkP0e695mm1tcvtQHUPbIItYJUsndyLgGInzglxN8+F4U4k8uapydI9
+RmV2NVAifYp8z95Am5AnlG8lqjwrWk5bMbJH82QsQESrNT/h
+=8Vrn
+-----END PGP SIGNATURE-----
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoSignatureDoesntMatchContent/artifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoSignatureDoesntMatchContent/artifacts.xml
new file mode 100644
index 000000000..67aec85fb
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoSignatureDoesntMatchContent/artifacts.xml
@@ -0,0 +1,78 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<?artifactRepository version='1.1.0'?>
+<repository name='file:/home/mistria/sandbox/repo/ - artifacts' type='org.eclipse.equinox.p2.artifact.repository.simpleRepository' version='1'>
+ <properties size='3'>
+ <property name='p2.timestamp' value='1618433231272'/>
+ <property name='p2.compressed' value='false'/>
+ <!-- See PGPSignatureVerifierTest about this public key-->
+ <property name='pgp.publicKeys' value='-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQGNBGB1bugBDADQ5l7YnS9hNFRkBKSrvVNHt/TxeHaNNIHkdTC56I1QdThsOt4Y
+oQRI27AEOaY1GFEi6+QqwxALcMMMSTgkCRs2NFGqlWMVzNYE7bJMWChVa7uQ/9CG
+1HRbXwVwQx3hFgU4kmw1Kl/IH4LX76d9gAMyFANPjYZJSjbAv54wOlKruDRgpQFF
+pZeuXW7SnerL6sgd/+ZroikdkrjIs5t18C2ofzf6YnOokYkEEJSAEoQK5svVzT4G
+H3sw6FlE41RvnYKpuhvvyQhKjISDYfRaIL4JIpvR9Uko48eN9x654lJaucbMiLP4
+ROI9q7RQ6t1IMCiIN9QKgS+nVtHnN9MnXS0czGxfLdStv6bB+xgUoyBc7Uiqf4X0
+x8z9PE6O1L6Rgy2JMJHPgLWCF8h/u1FO88Br3I7TMzu2q/cg3k18L7eujnxVyYiD
+YIMxDBXBNnGCKRC4shgt8e+PzAPXIDFvbv7HOaERnx5c6eLl0tD12ocQeZHp1VlW
+nQteQ6CfvN07dNUAEQEAAbQ3RWNsaXBzZSBwMiB0ZXN0IFNpZ25lciAxIDxzaWdu
+ZXIxQGZha2V1c2VyLmVjbGlwc2Uub3JnPokB1AQTAQgAPhYhBOmWxnCqf2VAm/Xb
+VhOeONkN7RHwBQJgdW7oAhsDBQkDwmcABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheA
+AAoJEBOeONkN7RHwuXYL/Ri2gHoXELN79dWnuC5hjh7XgKquqlZg3qLgkLyA/54/
+ERx7HLLMHjU5tVIVacZ9UWb30Bzx6iVx2hMtL/0FFJ1S0iwwTDXft/9EoPvsmmEx
+VYEiSx5HxsPXM+XofMvi75nN34iMUIU3SgKLzHqlWcC3T7XjDWKC8TkTcutIAaIz
+BMRssktJR3OYzWbbwzgz83sVpofWGfxIW91H19Zr8rjIXiNyy1ulRnfsaz+xXeXf
+KxZZs00FtIIOeWBhCtsb8/8Uv3FRDK6+lX3xAqfMG67azJXpFafWJGiymypfSwi6
+JA866WOzw9DfbqWIlY/EMIhyZrsWnGiGhhAavwOiSWYV65ooFYooKHNmIekpvRZS
+wlGuwvnZr+2471urkCoG8Yz2Ey28Qjc0NgXlXAkqFUkO2gNPFsXkk1EC+vzO2llp
+qROS9pt25dEBcUSgfcjFOFWv2Z5IdmGjFEe46CJNEVzNgkP+97wJP7wpcOCSF/nn
+eOBj4b7Q0suJ+MsE/Fx6SbkBjQRgdW7oAQwAst4QGHd9w+V3UHgRMYZISfYApcAK
+2qBT1Zvf01QE38JUtDPKJarDlgxcaXuX6jOcbF60OMd59dhNmpaZYpocJZMgnESj
+0/Tn4cZfWwtOo1Pom8Lbg1zGKIYAaR2mTb8mkCwJwsZCUZCmh+zspacxdVRdmWmC
+XcFxFc/6gBKxcPFZf93JZaI33qsLpxyA57AJV5ck/TY1iFmA6HFxehamsAVdd56g
+uyORekJJlZHXE9pICVEGqVUfdbSQXEiS386kZDftXe36phdj1gtFsRLHoBI8+L7o
+2vrdnj1UZgtvxBbJJ+QAfhF8+f84RFIi9CTY8cheX+YfDMEdg9J9LG54X5P3O1ZX
+eEvudKk/hqWBf+2rrdkhdFyyGRK0yTrO+PQ+tZHhcHPqfo4EiVktC4BTpB6QtLBY
+NAGYMRddmZMgp4lE2xGib8SYwonct3y1fmB+x67lq65IFVM/IAwN6BuMXtgb+Zkm
+iT+eKgc1pK4uCsZJbQAlPzkDGQV69GNyjlphABEBAAGJAbwEGAEIACYWIQTplsZw
+qn9lQJv121YTnjjZDe0R8AUCYHVu6AIbDAUJA8JnAAAKCRATnjjZDe0R8Oe8DADQ
+CTBXxrmTJTSZUeKVo0C1kDHQaaV+RiRmquYR3WxFI6ugJFFWpzgG9V8Q7vYGeZFM
+HYM/tDuY/gdMwHBcR13yYyozslar7qas4LL/bYgOqq+SiSGTDEBW+00+5Wlwmlrv
+ubLc6ow9q2sTmOprq3Q7fei+sEANVnymBxnVV/ZIVGPpm/Rkh1JFGT/8SEyKkCut
+G23JMM/06cIhZwdD6aWSZK4EFw0lwfXyr8l3ZqH0WydVEef1DUNIRM48O0YdwS9u
+jd5iKKKJlb4XxwGi6IKSzpXF7pFrm6vqS306u3Fnak5hb2gs8dpnNo7UL1gUm5pr
+8vJ3xhg15KCjYKz8k6ZDsIWULTXUJ23i8ZwqyQaj1bajwN0+/MfC0ZkoQtQ2I/TH
+cKLSMOR+Tji6n7FjOcVl6VoDKTjdxj9OgAlbZ7W9jEArrUjDdCk/m4jq9h9phpli
+BHoul/nauwtlUnQes1V+39Rk9l7gddKWg3dlwg6CjB5MkmcaeyxgANcyKgrunpg=
+=JYpC
+-----END PGP PUBLIC KEY BLOCK-----
+'/>
+ </properties>
+ <mappings size='3'>
+ <rule filter='(&amp; (classifier=osgi.bundle))' output='${repoUrl}/plugins/${id}_${version}.jar'/>
+ <rule filter='(&amp; (classifier=binary))' output='${repoUrl}/binary/${id}_${version}'/>
+ <rule filter='(&amp; (classifier=org.eclipse.update.feature))' output='${repoUrl}/features/${id}_${version}.jar'/>
+ </mappings>
+ <artifacts size='1'>
+ <artifact classifier='osgi.bundle' id='blah' version='1.0.0.123456'>
+ <properties size='1'>
+ <!-- gpg -u signer1@fakeuser.eclipse.org -a -detach-sig plugins/blah_1.0.0.123456.jar -->
+ <property name='pgp.signatures' value='-----BEGIN PGP SIGNATURE-----
+
+iQHRBAABCAA7FiEE6ZbGcKp/ZUCb9dtWE5442Q3tEfAFAmB1+EodHHNpZ25lcjFA
+ZmFrZXVzZXIuZWNsaXBzZS5vcmcACgkQE5442Q3tEfD5LAwAyPl8TBsC0bYZAsRX
+BSGXjlJ+oBKci5VH6bgM/ldnZD5SsYv6PVoxxdOJA2R6S88xxd0DuWivYuG+9aiZ
+w98hx6g0vNH8AWL+yd+l+2yIS8i/MJ57MCvVztexq935fIYU5KGdUNNEjDIrGHQQ
+AR5QWfTiy9EGracG4W6F9twmMOfDlCJ3eRCetp5OTvqBzS2gLom8ECaw7tezYvA/
+09Ok88j7vMI5kL3FO3WzzR+obeYUc19F6602h4cEJs/yOTOj/gz6GCXsAnuYQs1L
+yhjv4Cp4sBnMw+zPX0jFeNHu35mPt8oOFz1NLN85GHO7v3FFXmtwxj8bVBWBQR3R
+Vfi+n8SfR3WO5pYpsqPHZgP95K+W53ere1BZd67cT6uuJDtoDWC6TYPjndm5tnN1
++AzDQO12cC4w2cgIt3ElNYK0T8ADvrmCMPZPRPJ+GeZb0jb871SLDU1MPGZ9NHUl
+hiuiOU3vTN/X/SbZM/Zcz2eahRAOBOc8sXzqcbjQHN/Akzbg
+=acJE
+-----END PGP SIGNATURE-----
+'/>
+ </properties>
+ </artifact>
+ </artifacts>
+</repository>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoSignatureDoesntMatchContent/content.xml b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoSignatureDoesntMatchContent/content.xml
new file mode 100644
index 000000000..db8f67ba2
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoSignatureDoesntMatchContent/content.xml
@@ -0,0 +1,49 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<?metadataRepository version='1.2.0'?>
+<repository name='file:/home/mistria/sandbox/repo/ - metadata' type='org.eclipse.equinox.internal.p2.metadata.repository.LocalMetadataRepository' version='1'>
+ <properties size='2'>
+ <property name='p2.timestamp' value='1618433231272'/>
+ <property name='p2.compressed' value='false'/>
+ </properties>
+ <units size='2'>
+ <unit id='blah' version='1.0.0.123456' singleton='false'>
+ <update id='blah' range='[0.0.0,1.0.0.123456)' severity='0'/>
+ <provides size='4'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='blah' version='1.0.0.123456'/>
+ <provided namespace='osgi.bundle' name='blah' version='1.0.0.123456'/>
+ <provided namespace='osgi.identity' name='blah' version='1.0.0.123456'>
+ <properties size='1'>
+ <property name='type' value='osgi.bundle'/>
+ </properties>
+ </provided>
+ <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
+ </provides>
+ <artifacts size='1'>
+ <artifact classifier='osgi.bundle' id='blah' version='1.0.0.123456'/>
+ </artifacts>
+ <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
+ <touchpointData size='1'>
+ <instructions size='2'>
+ <instruction key='zipped'>
+ true
+ </instruction>
+ <instruction key='manifest'>
+ Bundle-SymbolicName: blah&#xA;Bundle-Version: 1.0.0.qualifier&#xA;
+ </instruction>
+ </instructions>
+ </touchpointData>
+ </unit>
+ <unit id='Category' version='0.0.0'>
+ <properties size='3'>
+ <property name='org.eclipse.equinox.p2.type.category' value='true'/>
+ </properties>
+ <provides size='1'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='Category' version='0.0.0'/>
+ </provides>
+ <requires size='1'>
+ <required namespace='org.eclipse.equinox.p2.iu' name='blah' range='[1.0.0.123456,1.0.0.123456]'/>
+ </requires>
+ <touchpoint id='null' version='0.0.0'/>
+ </unit>
+ </units>
+</repository>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoSignatureDoesntMatchContent/plugins/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoSignatureDoesntMatchContent/plugins/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..b9fdcbf2f
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoSignatureDoesntMatchContent/plugins/META-INF/MANIFEST.MF
@@ -0,0 +1,4 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: blah
+Bundle-Version: 1.0.0.qualifier
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoSignatureDoesntMatchContent/plugins/blah_1.0.0.123456.jar b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoSignatureDoesntMatchContent/plugins/blah_1.0.0.123456.jar
new file mode 100644
index 000000000..9cc7b8da0
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoSignatureDoesntMatchContent/plugins/blah_1.0.0.123456.jar
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoSignatureDoesntMatchContent/plugins/blah_1.0.0.123456.jar.asc b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoSignatureDoesntMatchContent/plugins/blah_1.0.0.123456.jar.asc
new file mode 100644
index 000000000..1489f2552
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoSignatureDoesntMatchContent/plugins/blah_1.0.0.123456.jar.asc
@@ -0,0 +1,14 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQHRBAABCAA7FiEE6ZbGcKp/ZUCb9dtWE5442Q3tEfAFAmB4Bf8dHHNpZ25lcjFA
+ZmFrZXVzZXIuZWNsaXBzZS5vcmcACgkQE5442Q3tEfBPuAwAhE4zA7BswKFhEtzm
+DS3EbyRr/U13sV01YxqGtxYDCfrOt8TGVPXJSvo0AVP4vLFc5b+0jtVFoarFJNBu
+xhbVuyC72YdqudNbncSlW6KG5SgeWIM//ThKfl95pOWRWvJEoKJhmDwbDqhZYtL5
+SECegnWGtGx/klFtZihzHYJE/nfSnhySDaz5lCvXFFYRhIbNmNm2Yq7ztCOsN4Ys
+3uN+GEdoXGvv1DFg/xZPvwCOhZGsSQfkl1jmUwVltgKrw9OCFbdfYz7H6dbGWhRu
+2XpuKxPXGavKfpSvssVQIZ6aWi5W6wp5lZAQQddZvYAv3Gi5CZZcUT7ayFJYdD23
+p9jz76G7MXm0f0uNT9B57T72QryokUIEIJYsCb6lNjWUQB4cd0+JesM7sHwweOQ3
+7iTFc+WgVJkP0e695mm1tcvtQHUPbIItYJUsndyLgGInzglxN8+F4U4k8uapydI9
+RmV2NVAifYp8z95Am5AnlG8lqjwrWk5bMbJH82QsQESrNT/h
+=8Vrn
+-----END PGP SIGNATURE-----
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoTamperedInvalidSignature/artifacts.xml b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoTamperedInvalidSignature/artifacts.xml
new file mode 100644
index 000000000..0d7b0204e
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoTamperedInvalidSignature/artifacts.xml
@@ -0,0 +1,78 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<?artifactRepository version='1.1.0'?>
+<repository name='file:/home/mistria/sandbox/repo/ - artifacts' type='org.eclipse.equinox.p2.artifact.repository.simpleRepository' version='1'>
+ <properties size='3'>
+ <property name='p2.timestamp' value='1618433231272'/>
+ <property name='p2.compressed' value='false'/>
+ <!-- See PGPSignatureVerifierTest about this public key-->
+ <property name='pgp.publicKeys' value='-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQGNBGB1bugBDADQ5l7YnS9hNFRkBKSrvVNHt/TxeHaNNIHkdTC56I1QdThsOt4Y
+oQRI27AEOaY1GFEi6+QqwxALcMMMSTgkCRs2NFGqlWMVzNYE7bJMWChVa7uQ/9CG
+1HRbXwVwQx3hFgU4kmw1Kl/IH4LX76d9gAMyFANPjYZJSjbAv54wOlKruDRgpQFF
+pZeuXW7SnerL6sgd/+ZroikdkrjIs5t18C2ofzf6YnOokYkEEJSAEoQK5svVzT4G
+H3sw6FlE41RvnYKpuhvvyQhKjISDYfRaIL4JIpvR9Uko48eN9x654lJaucbMiLP4
+ROI9q7RQ6t1IMCiIN9QKgS+nVtHnN9MnXS0czGxfLdStv6bB+xgUoyBc7Uiqf4X0
+x8z9PE6O1L6Rgy2JMJHPgLWCF8h/u1FO88Br3I7TMzu2q/cg3k18L7eujnxVyYiD
+YIMxDBXBNnGCKRC4shgt8e+PzAPXIDFvbv7HOaERnx5c6eLl0tD12ocQeZHp1VlW
+nQteQ6CfvN07dNUAEQEAAbQ3RWNsaXBzZSBwMiB0ZXN0IFNpZ25lciAxIDxzaWdu
+ZXIxQGZha2V1c2VyLmVjbGlwc2Uub3JnPokB1AQTAQgAPhYhBOmWxnCqf2VAm/Xb
+VhOeONkN7RHwBQJgdW7oAhsDBQkDwmcABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheA
+AAoJEBOeONkN7RHwuXYL/Ri2gHoXELN79dWnuC5hjh7XgKquqlZg3qLgkLyA/54/
+ERx7HLLMHjU5tVIVacZ9UWb30Bzx6iVx2hMtL/0FFJ1S0iwwTDXft/9EoPvsmmEx
+VYEiSx5HxsPXM+XofMvi75nN34iMUIU3SgKLzHqlWcC3T7XjDWKC8TkTcutIAaIz
+BMRssktJR3OYzWbbwzgz83sVpofWGfxIW91H19Zr8rjIXiNyy1ulRnfsaz+xXeXf
+KxZZs00FtIIOeWBhCtsb8/8Uv3FRDK6+lX3xAqfMG67azJXpFafWJGiymypfSwi6
+JA866WOzw9DfbqWIlY/EMIhyZrsWnGiGhhAavwOiSWYV65ooFYooKHNmIekpvRZS
+wlGuwvnZr+2471urkCoG8Yz2Ey28Qjc0NgXlXAkqFUkO2gNPFsXkk1EC+vzO2llp
+qROS9pt25dEBcUSgfcjFOFWv2Z5IdmGjFEe46CJNEVzNgkP+97wJP7wpcOCSF/nn
+eOBj4b7Q0suJ+MsE/Fx6SbkBjQRgdW7oAQwAst4QGHd9w+V3UHgRMYZISfYApcAK
+2qBT1Zvf01QE38JUtDPKJarDlgxcaXuX6jOcbF60OMd59dhNmpaZYpocJZMgnESj
+0/Tn4cZfWwtOo1Pom8Lbg1zGKIYAaR2mTb8mkCwJwsZCUZCmh+zspacxdVRdmWmC
+XcFxFc/6gBKxcPFZf93JZaI33qsLpxyA57AJV5ck/TY1iFmA6HFxehamsAVdd56g
+uyORekJJlZHXE9pICVEGqVUfdbSQXEiS386kZDftXe36phdj1gtFsRLHoBI8+L7o
+2vrdnj1UZgtvxBbJJ+QAfhF8+f84RFIi9CTY8cheX+YfDMEdg9J9LG54X5P3O1ZX
+eEvudKk/hqWBf+2rrdkhdFyyGRK0yTrO+PQ+tZHhcHPqfo4EiVktC4BTpB6QtLBY
+NAGYMRddmZMgp4lE2xGib8SYwonct3y1fmB+x67lq65IFVM/IAwN6BuMXtgb+Zkm
+iT+eKgc1pK4uCsZJbQAlPzkDGQV69GNyjlphABEBAAGJAbwEGAEIACYWIQTplsZw
+qn9lQJv121YTnjjZDe0R8AUCYHVu6AIbDAUJA8JnAAAKCRATnjjZDe0R8Oe8DADQ
+CTBXxrmTJTSZUeKVo0C1kDHQaaV+RiRmquYR3WxFI6ugJFFWpzgG9V8Q7vYGeZFM
+HYM/tDuY/gdMwHBcR13yYyozslar7qas4LL/bYgOqq+SiSGTDEBW+00+5Wlwmlrv
+ubLc6ow9q2sTmOprq3Q7fei+sEANVnymBxnVV/ZIVGPpm/Rkh1JFGT/8SEyKkCut
+G23JMM/06cIhZwdD6aWSZK4EFw0lwfXyr8l3ZqH0WydVEef1DUNIRM48O0YdwS9u
+jd5iKKKJlb4XxwGi6IKSzpXF7pFrm6vqS306u3Fnak5hb2gs8dpnNo7UL1gUm5pr
+8vJ3xhg15KCjYKz8k6ZDsIWULTXUJ23i8ZwqyQaj1bajwN0+/MfC0ZkoQtQ2I/TH
+cKLSMOR+Tji6n7FjOcVl6VoDKTjdxj9OgAlbZ7W9jEArrUjDdCk/m4jq9h9phpli
+BHoul/nauwtlUnQes1V+39Rk9l7gddKWg3dlwg6CjB5MkmcaeyxgANcyKgrunpg=
+=JYpC
+-----END PGP PUBLIC KEY BLOCK-----
+'/>
+ </properties>
+ <mappings size='3'>
+ <rule filter='(&amp; (classifier=osgi.bundle))' output='${repoUrl}/plugins/${id}_${version}.jar'/>
+ <rule filter='(&amp; (classifier=binary))' output='${repoUrl}/binary/${id}_${version}'/>
+ <rule filter='(&amp; (classifier=org.eclipse.update.feature))' output='${repoUrl}/features/${id}_${version}.jar'/>
+ </mappings>
+ <artifacts size='1'>
+ <artifact classifier='osgi.bundle' id='blah' version='1.0.0.123456'>
+ <properties size='1'>
+ <!-- gpg -u signer1@fakeuser.eclipse.org -a -detach-sig plugins/blah_1.0.0.123456.jar -->
+ <property name='pgp.signatures' value='-----BEGIN PGP SIGNATURE-----
+
+iQHRBAABCAA7FiEE6ZbGcKp/ZUCb9dtWE5442Q3tEfAFAmB4Bf8dHHNpZ25lcjFA
+ZmFrZXVzZXIuZWNsaXBzZS5vcmcACgkQE5442Q3tEfBPuAwAhE4zA7BswKFhEtzm
+DS3EbyRr/U13sV01YxqGtxYDCfrOt8TGVPXJSvo0AVP4vLFc5b+0jtVFoarFJNBu
+xhbVuyC72YdqudNbncSlW6KG5SgeWIM//ThKfl95pOWRWvJEoKJhmDwbDqhZYtL5
+SECegnWG____TAMPERED_____________________________________COsN4Ys
+3uN+GEdoXGvv1DFg/xZPvwCOhZGsSQfkl1jmUwVltgKrw9OCFbdfYz7H6dbGWhRu
+2XpuKxPXGavKfpSvssVQIZ6aWi5W6wp5lZAQQddZvYAv3Gi5CZZcUT7ayFJYdD23
+p9jz76G7MXm0f0uNT9B57T72QryokUIEIJYsCb6lNjWUQB4cd0+JesM7sHwweOQ3
+7iTFc+WgVJkP0e695mm1tcvtQHUPbIItYJUsndyLgGInzglxN8+F4U4k8uapydI9
+RmV2NVAifYp8z95Am5AnlG8lqjwrWk5bMbJH82QsQESrNT/h
+=8Vrn
+-----END PGP SIGNATURE-----
+'/>
+ </properties>
+ </artifact>
+ </artifacts>
+</repository>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoTamperedInvalidSignature/content.xml b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoTamperedInvalidSignature/content.xml
new file mode 100644
index 000000000..db8f67ba2
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoTamperedInvalidSignature/content.xml
@@ -0,0 +1,49 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<?metadataRepository version='1.2.0'?>
+<repository name='file:/home/mistria/sandbox/repo/ - metadata' type='org.eclipse.equinox.internal.p2.metadata.repository.LocalMetadataRepository' version='1'>
+ <properties size='2'>
+ <property name='p2.timestamp' value='1618433231272'/>
+ <property name='p2.compressed' value='false'/>
+ </properties>
+ <units size='2'>
+ <unit id='blah' version='1.0.0.123456' singleton='false'>
+ <update id='blah' range='[0.0.0,1.0.0.123456)' severity='0'/>
+ <provides size='4'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='blah' version='1.0.0.123456'/>
+ <provided namespace='osgi.bundle' name='blah' version='1.0.0.123456'/>
+ <provided namespace='osgi.identity' name='blah' version='1.0.0.123456'>
+ <properties size='1'>
+ <property name='type' value='osgi.bundle'/>
+ </properties>
+ </provided>
+ <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
+ </provides>
+ <artifacts size='1'>
+ <artifact classifier='osgi.bundle' id='blah' version='1.0.0.123456'/>
+ </artifacts>
+ <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
+ <touchpointData size='1'>
+ <instructions size='2'>
+ <instruction key='zipped'>
+ true
+ </instruction>
+ <instruction key='manifest'>
+ Bundle-SymbolicName: blah&#xA;Bundle-Version: 1.0.0.qualifier&#xA;
+ </instruction>
+ </instructions>
+ </touchpointData>
+ </unit>
+ <unit id='Category' version='0.0.0'>
+ <properties size='3'>
+ <property name='org.eclipse.equinox.p2.type.category' value='true'/>
+ </properties>
+ <provides size='1'>
+ <provided namespace='org.eclipse.equinox.p2.iu' name='Category' version='0.0.0'/>
+ </provides>
+ <requires size='1'>
+ <required namespace='org.eclipse.equinox.p2.iu' name='blah' range='[1.0.0.123456,1.0.0.123456]'/>
+ </requires>
+ <touchpoint id='null' version='0.0.0'/>
+ </unit>
+ </units>
+</repository>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoTamperedInvalidSignature/plugins/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoTamperedInvalidSignature/plugins/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..b9fdcbf2f
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoTamperedInvalidSignature/plugins/META-INF/MANIFEST.MF
@@ -0,0 +1,4 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: blah
+Bundle-Version: 1.0.0.qualifier
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoTamperedInvalidSignature/plugins/blah_1.0.0.123456.jar b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoTamperedInvalidSignature/plugins/blah_1.0.0.123456.jar
new file mode 100644
index 000000000..9cc7b8da0
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoTamperedInvalidSignature/plugins/blah_1.0.0.123456.jar
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoTamperedInvalidSignature/plugins/blah_1.0.0.123456.jar.asc b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoTamperedInvalidSignature/plugins/blah_1.0.0.123456.jar.asc
new file mode 100644
index 000000000..1489f2552
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/repoTamperedInvalidSignature/plugins/blah_1.0.0.123456.jar.asc
@@ -0,0 +1,14 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQHRBAABCAA7FiEE6ZbGcKp/ZUCb9dtWE5442Q3tEfAFAmB4Bf8dHHNpZ25lcjFA
+ZmFrZXVzZXIuZWNsaXBzZS5vcmcACgkQE5442Q3tEfBPuAwAhE4zA7BswKFhEtzm
+DS3EbyRr/U13sV01YxqGtxYDCfrOt8TGVPXJSvo0AVP4vLFc5b+0jtVFoarFJNBu
+xhbVuyC72YdqudNbncSlW6KG5SgeWIM//ThKfl95pOWRWvJEoKJhmDwbDqhZYtL5
+SECegnWGtGx/klFtZihzHYJE/nfSnhySDaz5lCvXFFYRhIbNmNm2Yq7ztCOsN4Ys
+3uN+GEdoXGvv1DFg/xZPvwCOhZGsSQfkl1jmUwVltgKrw9OCFbdfYz7H6dbGWhRu
+2XpuKxPXGavKfpSvssVQIZ6aWi5W6wp5lZAQQddZvYAv3Gi5CZZcUT7ayFJYdD23
+p9jz76G7MXm0f0uNT9B57T72QryokUIEIJYsCb6lNjWUQB4cd0+JesM7sHwweOQ3
+7iTFc+WgVJkP0e695mm1tcvtQHUPbIItYJUsndyLgGInzglxN8+F4U4k8uapydI9
+RmV2NVAifYp8z95Am5AnlG8lqjwrWk5bMbJH82QsQESrNT/h
+=8Vrn
+-----END PGP SIGNATURE-----
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/pgp/signer2-publickey.asc b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/signer2-publickey.asc
new file mode 100644
index 000000000..0218bdce7
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/pgp/signer2-publickey.asc
@@ -0,0 +1,29 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBGHUyxYBEADATeNx4XA4H2fP9mD5xwlIyh7qvHLezgXpqCwNS9ATqBwnfrCV
+06a+pfSLsLoXrP/sdaB5WhijfuxTis18RMfoDVwGMRqyD2GiBCl2vwJDg3BUwHnc
+H7W6XkWKO7dkPmF+TUbD3cTWZ7cvrPmMjinmXaq8htuktGuE2VEGZRnuG1m+ChDM
+PnSb1ioFS2+MJv13P2fagVk2qC95DkPJGpMk3CY3ghLDEaY/KaJl+8axAlUUUk9N
+d3k/KVxxf5k3g26EVQkWWgH2mmolptGO101xW64iked97Cy4NK2yafOF/wmpsavx
+PGpOewnDgAJBBPkum6mPH0vcOZgxmLyh4uqfPfr3IaBQlbJLN2dXaDsV83j5t1wZ
+2qxOPcWBfORm6W7dC0TQgCXbEG0geMBpJtvnMX83Q2ORqDpjbHRJsV2k+8NxaXON
+pYXGr+Lj/9n0xfNEDXhCdGab0XP2tVZ5jfr2OQ5dAomEaPqK5Kq7akoWMddpDLNC
+G4IvH8G0cxwruJk00uwd6Nd2NVqVMRYCsBbA89VanUnutLUIpVnnOAetlX9blXHO
+JtmiCPGgHyp+iYGhKYVzfuZQyFhonbi0AhidJDvbHsoLT3p4Mcog1B9y6MODBE7R
+jwrU+qMqYsYeFhGYKbYyXv9TfEyUvtCQ/GnTtRJAQyicFdOdbK37WecS6QARAQAB
+tDdFY2xpcHNlIHAyIHRlc3QgU2lnbmVyIDIgPHNpZ25lcjJAZmFrZXVzZXIuZWNs
+aXBzZS5vcmc+iQJYBBMBCABCFiEEzZ1aK4a8T+GDlFHh4vaU9BsKs3AFAmHUyxYC
+GwMFCQPCZwAFCwkIBwIDIgIBBhUKCQgLAgQWAgMBAh4HAheAAAoJEOL2lPQbCrNw
+wH4QAIiCaw1mREgt4ldz7hQvmGxdMuQwVKZPzbOIAlYbZBo0q9SmeMf/CBCO90hg
+LFmJmsZV4KUU5NKI7UwkDVrpUCl00Ok6+gtiUTId2tRcwXI+25I478VX27j6OkQj
+7Xr6giv8cn8nstt5CF6xxeqrxvpmnZC0u30jE6CL6SdXSd0vViFDPQj3KgGJCRc9
+St+LHB3XJTsadihzQnscqI4E2i5Z3Uj1GogqxtR59M1NAXubl5dySM0qHhwn8O+6
+lcgCCeuyMLLde1M1v8w07jdRUM+IFqHrRnE89EPH3MQeZbQ3UfFXK2r7wx2BJCqL
+Irtn68kz834ByKchGR6DqaAw0q+iF2QkgzYxpwai41BgmtUCYnj+HxQNIF4KTzDe
+nd8mDAPWttGCoVuV2Tyu9peYOaqyAZ2PZwUEH5MqihPCbenU17RLXzRu/IT/SH47
+NGrN3yKGgLZr2EVWPWFibpoxP4G4NUCHsY75uiL2EWPVSjK/+OOeHIE5k3U3lYwB
+7clhBwMkIhQHJ+a0SHRkKixkwrQDw4veKY4LaD0NCBLHFoV5L9orH1ToGM729kr/
++4I1VQFkL3KvfLjmRbTUgwHeqEquQ96JtqowbNwlpujfHXQKDNsuiKGP5OazXll5
+sH2CR7e4ePqhhzxjLvi9e/79Khq+08eqllS3rs06EXEAJYTo
+=807V
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/sat4j/Bug247638.opb b/bundles/org.eclipse.equinox.p2.tests/testData/sat4j/Bug247638.opb
index d20fd6ada..b043c4614 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/sat4j/Bug247638.opb
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/sat4j/Bug247638.opb
@@ -1474,8 +1474,6 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
-1 x636 +1 x21 >= 0;
* org.eclipse.pde.api.tools 1.0.0.v20080529-1150 requires either org.eclipse.pde.core 3.4.0.v20080604-2000
-1 x636 +1 x637 >= 0;
-* org.eclipse.pde.api.tools 1.0.0.v20080529-1150 requires either org.eclipse.update.configurator 3.2.200.v20080417
--1 x636 +1 x638 >= 0;
* org.eclipse.pde.api.tools 1.0.0.v20080529-1150 requires either org.eclipse.jdt.core 3.4.0.v_874
-1 x636 +1 x70 >= 0;
* org.eclipse.pde.api.tools 1.0.0.v20080529-1150 requires either org.eclipse.jdt.launching 3.4.0.v20080529-1300
@@ -1566,7 +1564,7 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
-1 x655 +1 x23 >= 0;
* toolingorg.eclipse.equinox.launcher 1.0.100.v20080509-1800 requires either org.eclipse.equinox.launcher 1.0.100.v20080509-1800
-1 x656 +1 x657 >= 0;
-* toolingorg.eclipse.equinox.launcher 1.0.100.v20080509-1800 requires either org.python.pydev.core 0.9.7 org.eclipse.m2m.qvt.oml.trace.edit 1.0.0.v20080611-1330 org.eclipse.emf.codegen.ecore 2.4.0.v200806091234 org.eclipse.uml2.common.edit 1.4.0.v200805131030 org.eclipse.core.runtime 3.4.0.v20080512 org.python.pydev.core 1.3.9 javax.xml.soap 1.2.0.v200806030421 org.eclipse.gmf.runtime.common.ui.action.ide 1.1.0.v20080425-1959 org.eclipse.emf.cdo.edit 1.0.0.v200806180411 org.eclipse.ecf.provider.msn 1.2.0.v20080623-0046 org.eclipse.equinox.frameworkadmin.equinox 1.0.0.v20080529-1225 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.1 org.eclipse.equinox.http.servletbridge 1.0.0.v20080427-0830 org.python.pydev 0.9.5 org.python.pydev.parser 1.2.3 org.eclipse.emf.example.installer 1.0.0.v200806091234 com.instantiations.assist.eclipse 5.5.0 org.eclipse.wst.common.environment 1.0.201.v200805140020 org.eclipse.zest.source 1.0.0.v20080115-53-8xB4CE899O274A org.eclipse.emf.ant 2.4.0.v200806091234 com.instantiations.eclipse.mail 5.5.1 org.python.pydev.parser 1.3.1 org.eclipse.birt.chart.engine 2.3.0.v20080606 org.eclipse.core.resources 3.4.0.v20080604-1400 org.eclipse.birt.report.engine.emitter.postscript 2.3.0.v20080610 org.python.pydev.jython 1.1.0 org.eclipse.ui.workbench.compatibility 3.2.0.I20080509-2000 com.nordea.cd.dev.plugin.builderruntime 1.0.0 org.eclipse.m2m.atl.adt.editor 2.0.0.v200806101117 org.eclipse.equinox.p2.director.app 1.0.0.v20080604 org.eclipse.mylyn.tasks.core 3.0.0.v20080619-1900 org.python.pydev.ast 1.0.4 org.eclipse.m2m.atl.compilers.atl2006 2.0.0.v200806101117 org.eclipse.datatools.enablement.sybase.asa.ui 1.0.1.v200805310538 org.eclipse.emf.mapping.ecore2xml.ui 2.4.0.v200806091234 org.eclipse.wst.dtd.ui 1.0.301.v200808072012 org.eclipse.birt.chart.engine.extension 2.3.0.v20080611 org.eclipse.jface.databinding 1.2.0.I20080515-2000a org.eclipse.birt.chart.reportitem.ui 2.3.0.v20080610 org.eclipse.datatools.enablement.hsqldb.ui 1.0.0.v200805152355 org.eclipse.mylyn.ide.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.security.ui 1.0.0.v20080603-1810 org.eclipse.wst.common.emfworkbench.integration 1.1.201.v200808071700 org.eclipse.gmf.validate 1.1.0.v20080603-1553 org.eclipse.emf.mapping.ecore2ecore.editor 2.4.0.v200806091234 org.eclipse.ecf.provider.irc 1.3.0.v20080623-0046 org.eclipse.emf.validation.doc 1.2.0.v200805130238 org.python.pydev.ast 1.2.8 org.eclipse.emf.teneo.doc 1.0.0.v200806111928 org.python.pydev.jython 1.3.12 org.eclipse.emf.ecoretools.source 0.8.0.v200806130600 org.eclipse.equinox.p2.updatesite 1.0.0.v20080529-1800 org.eclipse.ecf.presence.bot 1.2.0.v20080623-0046 com.swtdesigner.properties.java5 1.0.0 org.eclipse.platform.doc.isv 3.4.0.v20080613-1330 org.python.pydev.core 1.2.3 org.eclipse.datatools.connectivity.db.generic 1.0.0.v200805152355 org.eclipse.uml2.diagram.clazz 0.8.0.v200806112132 org.eclipse.birt.report.designer.ui.views 2.3.0.v20080606 org.eclipse.mylyn.monitor.core 3.0.2.v20080918-1100-e3x com.instantiations.eclipse.debug 5.3.2.200806270030 org.eclipse.gmf.runtime.common.ui.action 1.1.0.v20080425-1959 org.eclipse.equinox.useradmin 1.1.0.v20080508-1815 org.eclipse.mylyn.commons.ui 3.0.2.v20080918-1100-e3x org.eclipse.equinox.cm 1.0.0.v20080509-1800 org.eclipse.uml2.diagram.component 0.8.0.v200806112132 org.eclipse.swt.layout.grouplayout 1.1.0 org.python.pydev 1.2.4 javax.servlet 2.4.0.v200806031604 org.eclipse.uml2.examples.uml.ui 2.2.0.v200805131030 org.python.pydev.ast 1.3.10 org.eclipse.birt.report.designer.ui.ide 2.3.0.v20080606 org.python.pydev.parser 1.3.18 com.swtdesigner.layout.group 6.7.0.200806270151 org.eclipse.m2m.qvt.oml.runtime.source 1.0.0.v20080611-1330-5--AgI99m9cDD4DNN9 org.eclipse.mylyn.tasks.ui 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.3.13 org.eclipse.emf.teneo.jpox.eclipse 1.0.0.v200806111928 org.eclipse.equinox.transforms.xslt 1.0.0.v20080610 org.python.pydev.core 1.0.7 org.eclipse.datatools.enablement.ibm.db2.zseries.ui 1.0.0.v200805160737 org.eclipse.mylyn.resources.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.enablement.oda.ws 1.1.0.v200805261930 org.eclipse.equinox.frameworkadmin 1.0.0.v20080430-1750 org.eclipse.birt.chart.device.extension 2.3.0.v20080424 org.eclipse.net4j.jvm 1.0.0.v200806180305 org.eclipse.emf.cdo.migrator 1.0.0.v200806180411 org.python.pydev.jython 1.3.1 org.eclipse.m2m.qvt.oml.cst.parser 1.0.0.v20080611-1330 com.xored.composer.ui 1.3.4.200809042225 org.eclipse.datatools.enablement.sybase.ui 1.0.0.v200806041138 org.eclipse.ecf.remoteservice.ui 2.0.0.v20080623-0046 org.eclipse.net4j.db.mysql 1.0.0.v200806180305 org.eclipse.update.scheduler 3.2.100.v20080404 org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide 1.1.0.v20080425-1959 org.eclipse.wst.dtdeditor.doc.user 1.0.400.v200805150028 org.eclipse.wst.xmleditor.doc.user 1.0.401.v200808071323 org.eclipse.gmf.runtime.common.ui.services.dnd 1.1.0.v20080425-1959 org.eclipse.uml2.common 1.4.0.v200805131030 org.apache.jasper 5.5.17.v200806031609 org.python.pydev 1.0.8 org.eclipse.datatools.doc.user 1.6.0.20080606124249 org.objectweb.asm 3.1.0.v200803061910 org.eclipse.emf.cdo.doc 1.0.0.v200806180411 org.python.pydev.core 1.3.17 org.eclipse.core.resources.compatibility 3.4.0.v20080604-1400 com.instantiations.eclipse.startup 5.3.2.200806270030 org.eclipse.datatools.connectivity.apache.derby.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.graphdef.codegen 2.0.100.v20080528-1052 org.eclipse.emf.common 2.4.0.v200806091234 org.eclipse.wst.xml.ui.infopop 1.0.300.v200805140200 org.python.pydev.core 1.3.0 org.eclipse.equinox.p2.touchpoint.natives 1.0.0.v20080505-1850 org.eclipse.ant.core 3.2.0.v20080529 org.eclipse.ui.workbench 3.4.0.I20080606-1300 org.eclipse.ecf.provider.xmpp.ui 2.0.0.v20080623-0046 org.w3c.sac 1.3.0.v20070710 org.python.pydev.jython 1.2.3 org.eclipse.mylyn.context.ui 3.0.0.v20080619-1900 org.eclipse.ecf.doc 1.3.0.v20080623-0046 org.eclipse.ecf.provider.bittorrent.ui 0.2.0.v20080623-0046 com.xored.swt.composer 1.3.4.200809042225 org.python.pydev.parser 1.0.4 org.eclipse.help.webapp 3.3.100.v20080528 org.eclipse.uml2.diagram.deploy 0.8.0.v200806112132 org.eclipse.ecf.provider.irc.ui 1.3.0.v20080623-0046 org.python.pydev 1.3.18 org.eclipse.m2m.atl.source 2.0.0.v200806101117 org.eclipse.mylyn.tasks.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.identity 2.0.0.v20080611-1715 org.eclipse.ocl.ecore 1.2.0.v200805130238 org.eclipse.core.expressions 3.4.0.v20080603-2000 org.eclipse.core.runtime.compatibility.registry 3.2.200.v20080610 org.eclipse.tptp.platform.la.core 4.3.200.v200805231116 org.eclipse.m2m.atl.service.core 2.0.0.v200806101117 org.apache.commons.logging 1.0.4.v20080605-1930 org.eclipse.platform.doc.user 3.4.0.v20080612-1340 com.windowtester.runtime.junit4 3.5.0.200806270034 org.python.pydev.parser 1.2.8 org.eclipse.uml2.examples.source 2.2.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.providers 1.1.0.v20080503-1740 org.python.pydev.jython 1.3.20 org.python.pydev.jython 1.0.7 org.eclipse.m2m.qvt.oml.common 1.0.0.v20080611-1330 org.eclipse.wst.sse.ui 1.1.0.v200806041847 org.eclipse.core.resources.win32.x86 3.4.0.v20071204 org.eclipse.swt.widgets.baseline 1.1.0 com.xored.swt.composer.win32.win32.x86 1.3.4.200809042225 org.eclipse.datatools.enablement.mysql.ui 1.0.0.v200805152355 org.eclipse.m2m.atl.ocl.core 2.0.0.v200806101117 org.eclipse.emf.codegen.ecore.ui 2.4.0.v200806091234 org.eclipse.equinox.http.servlet 1.0.100.v20080427-0830 org.python.pydev.ast 1.3.2 org.python.pydev 1.3.6 org.eclipse.birt.report.viewer 2.3.0.v20080606 org.apache.batik.extension 1.6.0.v200805290154 org.eclipse.uml2.diagram.statemachine 0.8.0.v200806112132 org.python.pydev.parser 1.3.10 org.eclipse.equinox.p2.ui.admin.rcp 1.0.0.v20080604 org.eclipse.emf.compare.match 0.8.0.v200806180301 org.eclipse.datatools.enablement.oracle.ui 1.0.0.v200805240040 org.python.pydev 0.7.1 com.lowagie.itext 1.5.4.v20080228 org.eclipse.birt.report.designer.ui.preview.web 2.3.0.v200806102 org.eclipse.birt.report.designer.ui.samples.ide 2.3.0.v20080606 org.eclipse.xsd.ecore.converter 2.4.0.v200806091234 org.eclipse.jdt.compiler.tool 1.0.100.v_874 org.eclipse.equinox.registry 3.4.0.v20080516-0950 org.eclipse.wst.dtd.ui.infopop 1.0.300.v200805140200 org.python.pydev.ast 0.9.5 org.eclipse.ui.workbench.texteditor 3.4.0.v20080603-2000 org.eclipse.cvs 1.0.100.v20080603 org.eclipse.uml2.search.ui 0.7.0.v200806130939 org.eclipse.gmf.common 1.1.1.v20080610-1132 org.eclipse.uml2.uml.editor 2.2.0.v200805131030 org.eclipse.m2m.atl.engine 2.0.0.v200806101117 org.eclipse.net4j.http.common 1.0.0.v200806180305 org.eclipse.ecf.presence.ui 1.2.0.v20080623-0046 org.python.pydev.parser 1.2.2 org.eclipse.emf.cdo.tests.model3.edit 1.0.0.v200806180411 org.eclipse.emf.cdo.tests.model1 1.0.0.v200806180411 org.eclipse.m2m.atl.engine.vm 2.0.0.v200806101117 com.instantiations.eclipse.mail 5.5.0 org.eclipse.emf.ocl.source 1.1.100.v200805130238-108Y7w311916241349 com.windowtester.swt.runtime.legacy 3.5.1.200809042232 org.eclipse.uml2tools 0.8.0.v200806112132 org.eclipse.emf.search.genmodel.ui 0.7.0.v200806130939 org.eclipse.mylyn.jira.core 3.0.2.v20080918-1100-e3x org.eclipse.uml2.uml.ecore.importer 2.2.0.v200805131030 org.eclipse.emf.transaction.doc 1.2.0.v200805130238 org.eclipse.tptp.platform.logging.events 4.3.200.v200805310100 org.python.pydev.core 1.3.8 org.eclipse.xsd.ecore.importer 2.4.0.v200806091234 org.eclipse.emf.teneo.source 1.0.0.v200806111928-78--DUUEFDEz0MMNLVD org.eclipse.uml2 2.1.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.render 1.1.0.v20080603-1553 com.windowtester.swt.runtime.os.win32 3.5.0.200806270034 org.eclipse.rcp 3.4.0.v20080507 org.eclipse.xsd.mapping 2.4.0.v200806091234 org.eclipse.emf.workspace.doc 1.2.0.v200805130238 org.eclipse.pde.api.tools 1.0.0.v20080529-1150 org.eclipse.emf.mapping.ecore2xml 2.4.0.v200806091234 org.eclipse.swt.win32.win32.x86 3.4.0.v3448f org.apache.derby 10.1.2.1_v200803061811 org.eclipse.m2m.qvt.oml.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.python.pydev.parser 1.3.0 org.eclipse.ecf.protocol.msn 1.2.0.v20080623-0046 com.instantiations.eclipse.ui 5.3.2.200809042027 org.eclipse.jet.core 1.1.0.v20080415 org.eclipse.datatools.enablement.sybase.ase.models 1.0.1.v200805152355 com.nordea.cd.dev.plugin.builderruntime 1.0.1 com.instantiations.assist.eclipse.core 5.5.0 org.python.pydev.ast 1.0.5 org.eclipse.ecf.filetransfer 2.0.0.v20080611-1715 org.python.pydev.parser 0.9.5 org.python.pydev.core 1.2.2 org.eclipse.emf.transaction.ui 1.2.0.v200805130238 org.eclipse.gmf.runtime.gef.ui 1.1.0.v20080503-1740 org.eclipse.wst.xml.core 1.1.301.v200808072008 org.eclipse.uml2.diagram.clazz.search 0.7.0.v200806130939 org.sat4j.core 2.0.0.v20080602 org.eclipse.datatools.connectivity.ui 1.1.0.v200806040132 org.eclipse.birt.report.designer.ui.editors 2.3.0.v20080610a org.eclipse.equinox.p2.reconciler.dropins 1.0.0.v20080611 org.eclipse.wst.common.project.facet.core 1.3.1.v200807031821 org.python.pydev.jython 1.3.11 org.eclipse.datatools.enablement.postgresql 1.0.1.v200805152355 org.eclipse.ltk.ui.refactoring 3.4.0.v20080605-1800 org.eclipse.datatools.enablement.sybase.ase 1.0.1.v200806040735 org.python.pydev.ast 1.2.9 org.eclipse.datatools.connectivity.oda 3.1.2.v200805152355 org.eclipse.wst.common.emf 1.1.201.v200808071700 org.apache.batik.dom.svg 1.6.0.v200805290154 org.eclipse.birt.chart 2.3.0.v20080304 org.python.pydev.jython 1.2.9 org.python.pydev.ast 1.3.11 org.eclipse.datatools.enablement.mysql.dbdefinition 1.0.1.v200805170742 org.python.pydev.parser 1.3.19 org.python.pydev.core 1.0.6 org.eclipse.uml2.diagram 0.8.0.v200806112132 org.eclipse.jdt.junit4.runtime 1.0.200.v20080603-2000 org.python.pydev.ast 1.3.12 org.eclipse.swt 3.4.0.v3448f org.eclipse.emf.ecoretools.diagram.search 0.7.0.v200806130939 org.eclipse.pde.ui.templates 3.4.0.v20080514-1500 com.instantiations.packager.ui 2.5.1 org.eclipse.emf.cdo.server.db 1.0.0.v200806180411 org.eclipse.datatools.enablement.sybase.asa 1.0.1.v200805310538 org.eclipse.emf.compare 0.8.0.v200806180301 org.eclipse.datatools.enablement.oda.ws.ui 1.1.0.v200805261930 org.eclipse.jdt.launching 3.4.0.v20080529-1300 org.eclipse.mylyn.tasks.ui 3.0.0.v20080619-1900 org.apache.ws.jaxme 0.5.1.v20080530-1550 org.eclipse.mylyn.bugzilla.ui 3.0.0.v20080619-1900 org.apache.commons.el 1.0.0.v200806031608 org.python.pydev 1.2.3 org.w3c.dom.smil 1.0.0.v200806040011 org.eclipse.wst.validation.infopop 1.0.300.v200806041506 org.python.pydev 1.0.7 org.eclipse.net4j.source 1.0.0.v200806180305 org.eclipse.m2m.qvt.oml.ocl 1.0.0.v20080611-1330 org.eclipse.uml2.uml.edit 2.2.0.v200805131030 org.eclipse.emf.search.ui 0.7.0.v200806130939 org.python.pydev.core 1.3.16 org.eclipse.emf.validation.ui 1.2.0.v200805130238 org.eclipse.datatools.enablement.oda.xml 1.1.0.v200805270900 org.eclipse.ltk.core.refactoring 3.4.0.v20080603-2000 org.python.pydev.jython 1.3.2 com.windowtester.swt.codegen 3.5.0.200806270034 org.eclipse.datatools.sqltools.ddlgen.ui 1.0.0.v200805152355 org.apache.xerces 2.9.0.v200805270400 org.eclipse.birt.report.engine.dataextraction 2.3.0.v20080611 org.eclipse.equinox.jmx.vm 1.0.0.v20070515 org.eclipse.birt.report.data.oda.jdbc.ui 2.3.0.v20080606 org.eclipse.equinox.ds 1.0.0.v20080427-0830 org.eclipse.mylyn.bugzilla.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.http.jetty 2.0.0.v20080425 org.eclipse.mylyn.team.ui 3.0.2.v20080918-1100-e3x org.python.pydev.jython 1.2.4 org.eclipse.birt.chart.device.svg 2.3.0.v20080526 org.python.pydev.parser 1.0.5 org.eclipse.ui.presentations.r21 3.2.100.I20080512-2000 org.eclipse.mylyn 3.0.0.v20080619-1900 org.eclipse.m2m.qvt.oml.doc 1.0.0.v20080611-1330 org.eclipse.team.svn.nl1.sources 0.7.1.I20080612-1500 org.eclipse.mylyn.resources.ui 3.0.0.v20080619-1900 org.eclipse.datatools.enablement.ibm.db2.luw 1.0.0.v200805152355 org.python.pydev.core 1.3.1 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.1 org.eclipse.ecf.provider.filetransfer 2.0.0.v20080611-1715 org.eclipse.emf.cdo.tests.mango.edit 1.0.0.v200806180411 org.python.pydev.parser 1.2.9 org.eclipse.m2m.qvt.oml.emf.util 1.0.0.v20080611-1330 org.eclipse.team.cvs.ssh 3.2.100.I20080604 org.python.pydev.jython 1.3.19 org.python.pydev.jython 1.0.8 org.python.pydev.ast 1.2.1 org.eclipse.m2m.qvt.oml.project 1.0.0.v20080611-1330 com.instantiations.assist.eclipse.core.ui 5.5.1 org.eclipse.datatools.enablement.ibm.db2.zseries.dbdefinition 1.0.0.v200805152355 org.eclipse.datatools.enablement.ibm.db2.iseries 1.0.0.v200805152355 com.swtdesigner.fragment.jdt.core 6.7.1.200809050053 org.eclipse.equinox.device 1.0.1.v20080303 org.eclipse.equinox.http.jetty 1.1.0.v20080425 org.eclipse.emf.cdo.tests.model3 1.0.0.v200806180411 org.eclipse.emf.teneo.hibernate.mapper 1.0.0.v200806111928 org.eclipse.compare 3.4.0.I20080604 org.polarion.eclipse.team.svn.connector.javahl 2.0.1.I20080612-1500 org.eclipse.gmf.runtime.diagram.ui.geoshapes 1.1.0.v20080503-1740 org.eclipse.emf.mint.ui 0.7.0.v200806172223 org.eclipse.ui.win32 3.2.100.v20080408-0800 org.eclipse.jet.source 0.9.0.v20080516 org.python.pydev 1.3.17 com.windowtester.runtime.junit4 3.5.1.200809042232 org.eclipse.ecf.examples.remoteservices.server 1.0.100.v20080623-0046 org.eclipse.text 3.4.0.v20080605-1800 org.eclipse.uml2.diagram.common 0.8.0.v200806112132 org.eclipse.datatools.connectivity.sqm.core.ui 1.1.0.v200806070326 org.python.pydev.core 0.9.7.99 org.eclipse.net4j.jms 1.0.0.v200806180305 org.junit4 4.3.1 org.eclipse.epp.usagedata.recording 1.0.0.R200806162215 org.eclipse.buckminster.remote 1.0.0.r09326 org.eclipse.gmf.tooling 2.1.0.v20080425-1959 org.eclipse.emf.cdo.tests.model2 1.0.0.v200806180411 org.eclipse.emf.ecore.sdo.editor 2.4.0.v200806091234 com.instantiations.swt.graph 5.5.0 org.eclipse.uml2.search 0.7.0.v200806130939 org.python.pydev 1.3.5 org.python.pydev.ast 1.3.3 org.eclipse.update.configurator 3.2.200.v20080417 org.eclipse.datatools.enablement.msft.sqlserver 1.0.1.v200805152355 org.python.pydev.parser 1.3.11 org.eclipse.datatools.enablement.sap.maxdb.dbdefinition 1.0.0.v200805152355 com.windowtester.swing.recorder 3.5.0.200806270034 org.eclipse.gmf.runtime.common.ui.printing.win32 1.1.0.v20080612-1355 org.python.pydev.ast 1.3.20 org.eclipse.wst.common.snippets 1.1.200.v200805140415 org.eclipse.mylyn.commons.core 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.tasks.core 3.0.2.v20080918-1100-e3x org.eclipse.jdt.doc.user 3.4.0.v20080612-1340 org.eclipse.birt.chart.ui 2.3.0.v20080522 org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb 2.3.0.v20080606 org.eclipse.uml2.diagram.examples.clazz 0.8.0.v200806112132 org.eclipse.ecf.provider.msn.ui 1.3.0.v20080623-0046 org.python.pydev.parser 1.3.3 org.eclipse.ui.ide.application 1.0.0.I20080603-2000 org.python.pydev.ast 1.0.6 org.eclipse.equinox.jsp.jasper.registry 1.0.0.v20080427-0830 org.eclipse.equinox.p2.engine 1.0.0.v20080522-1735 com.nordea.cd.dev.plugin.builderruntime 1.0.2 com.instantiations.assist.eclipse.core 5.5.1 org.eclipse.m2m.qvt.oml 1.0.0.v20080611-1330 org.eclipse.mylyn.commons.ui 3.0.1.v20080721-2100-e3x org.eclipse.update.core.win32 3.2.100.v20080107 org.eclipse.datatools.sqltools.db.derby 1.0.0.v200805152355 com.instantiations.assist.eclipse.admin 5.5.0 org.eclipse.ecf.telephony.call 1.2.0.v20080623-0046 org.eclipse.mylyn.monitor.core 3.0.0.v20080619-1900 org.eclipse.epp.usagedata.ui 1.0.0.R200806162215 org.eclipse.ui.ide 3.4.0.I20080606-1300 org.eclipse.hyades.lta.sdb 4.5.0.v200806051823 org.eclipse.birt.report.model.adapter.oda 2.3.0.v20080523 org.eclipse.emf.compare.doc 0.8.0.v200806180301 org.eclipse.equinox.servletbridge 1.0.100.v20080427-0830 com.instantiations.common.help 5.3.2.200809042027 org.eclipse.jdt.core 3.4.0.v_874 org.eclipse.equinox.p2.director 1.0.0.v20080604 org.eclipse.gmf.runtime.emf.ui.properties 1.1.0.v20080425-1959 org.eclipse.emf.exporter 2.4.0.v200806091234 org.python.pydev.core 1.3.7 org.eclipse.uml2.diagram.def 0.8.0.v200806112132 org.python.pydev.parser 1.2.1 org.eclipse.wst.command.env.ui 1.1.0.v200805140415 org.eclipse.wst.common.modulecore 1.1.200.v200806091800 org.python.pydev 0.9.7 org.eclipse.gmf.graphdef.edit 2.0.100.v20080610-1132 org.eclipse.birt.report.designer.ui.cubebuilder 2.3.0.v20080606 org.eclipse.m2m.atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.actions 1.1.0.v20080603-1553 com.instantiations.common.core 5.3.2.200806270030 org.eclipse.datatools.enablement.ibm.informix 1.0.0.v200805152355 org.eclipse.net4j.tcp 1.0.0.v200806180305 org.eclipse.wst.common.environment 1.0.202.v200807161459 com.instantiations.common.core 5.3.2.200809042027 org.eclipse.birt.report.data.oda.xml 2.3.0.v20080606 org.eclipse.pde.api.tools.ui 1.0.0.v20080603 org.eclipse.debug.ui 3.4.0.v20080529-1300 org.python.pydev 1.2.2 org.eclipse.team.svn.ui.nl1 0.7.1.I20080612-1500 org.apache.batik.transcoder 1.6.0.v200805290154 org.eclipse.emf.ecore.sdo.edit 2.4.0.v200806091234 org.python.pydev.parser 1.3.16 org.eclipse.wst.command.env.ui 1.1.1.v200807162242 org.eclipse.uml2.diagram.codegen.edit 0.8.0.v200806112132 org.eclipse.datatools.connectivity.db.generic.ui 1.0.1.v200805152355 org.eclipse.mylyn.resources.ui 3.0.2.v20080918-1100-e3x org.python.pydev.ast 1.3.8 org.python.pydev 1.3.0 org.eclipse.net4j.db 1.0.0.v200806180305 org.python.pydev.ast 1.3.15 org.eclipse.uml2.codegen.ecore 1.4.0.v200805201126 org.eclipse.gmf.sdk 1.0.0.v20080425-1959 org.eclipse.equinox.p2.core 1.0.0.v20080530-1237 org.python.pydev.jython 1.3.10 org.eclipse.emf.cdo 1.0.0.v200806180411 org.eclipse.emf.search.genmodel 0.7.0.v200806130939 org.eclipse.ui.navigator 3.3.100.I20080606-1300 org.eclipse.team.svn.mylyn 0.7.1.I20080612-1500 org.python.pydev.core 1.2.5 org.eclipse.tptp.platform.lta.la.core 4.5.0.v200805132041 org.eclipse.wst.sse.core 1.1.301.v200808072008 org.eclipse.tptp.platform.lta.log.views 4.5.0.v200806051823 org.eclipse.mylyn.java.ui 3.0.2.v20080918-1100-e3x org.eclipse.emf.search.codegen 0.7.0.v200806130939 com.instantiations.common.ui 5.3.2.200806270030 org.eclipse.ecf 2.0.0.v20080611-1715 org.eclipse.equinox.p2.ui.sdk 1.0.0.v20080605-1731 org.apache.commons.discovery 0.2.0.v200806030120 org.eclipse.datatools.help 1.5.0.v200805152355 org.python.pydev.parser 0.9.7.99 org.w3c.css.sac 1.3.0.v200805290154 org.eclipse.jet.examples 0.9.0.v20080211 org.eclipse.mylyn.bugzilla.ide 3.0.2.v20080918-1100-e3x org.eclipse.pde.junit.runtime 3.4.0.v20080529-1800 org.eclipse.emf.commonj.sdo 2.4.0.v200806091234 org.python.pydev.jython 1.2.1 com.instantiations.tools 5.3.2.200806270030 com.windowtester.runtime 3.5.1.200809042232 org.eclipse.wst.validation 1.2.0.v200806051402 org.eclipse.ecf.docshare 2.0.0.v20080623-0046 com.instantiations.eclipse.model.jsp 5.5.1 org.eclipse.emf.teneo.hibernate.eclipse 1.0.0.v200806111928 com.jcraft.jsch 0.1.37.v200803061811 org.python.pydev.parser 1.0.6 org.eclipse.emf.converter 2.4.0.v200806091234 org.eclipse.equinox.common 3.4.0.v20080421-2006 org.eclipse.buckminster.ui 1.0.0.r09319 org.eclipse.datatools.sqltools.tablewizard 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.0 org.eclipse.uml2.source 2.2.0.v200805201126 org.eclipse.team.cvs.ui 3.3.100.I20080604 org.python.pydev.jython 1.3.3 org.eclipse.emf.search.ocl 0.7.0.v200806130939 org.eclipse.datatools.enablement.sybase.asa.models 1.0.0.v200805152355 org.eclipse.sdk 3.4.0.v200806172000 org.eclipse.xsd.ecore.exporter 2.4.0.v200806091234 org.apache.commons.codec 1.3.0.v20080530-1600 org.eclipse.equinox.p2.exemplarysetup 1.0.0.v20080427-2136 org.eclipse.equinox.io 1.0.0.v20080218 org.eclipse.wst.common.project.facet.core 1.3.0.v200805140020 org.eclipse.wst.common.ui 1.1.301.v200805140415 org.eclipse.emf.databinding.edit 1.0.0.v200806091234 org.mortbay.jetty.server 6.1.7.v200806031612 org.eclipse.wst.dtd.core 1.1.200.v200805140200 org.python.pydev 1.0.6 org.eclipse.uml2.diagram.activity 0.8.0.v200806112132 org.eclipse.emf.importer.rose 2.4.0.v200806091234 org.eclipse.core.net.win32.x86 1.0.0.I20080521 javax.activation 1.1.0.v200804101140 org.python.pydev.core 1.3.15 org.python.pydev.parser 1.3.8 com.instantiations.assist.eclipse.coverage.ui 5.5.1.200809042337 org.eclipse.emf.ecoretools.filters 0.8.0.v200806130600 org.python.pydev.ast 1.3.0 org.eclipse.birt.report.data.oda.xml.ui 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase 1.0.1.v200805310538 org.python.pydev 1.3.8 org.eclipse.equinox.ip 1.0.0.v20080218 org.eclipse.datatools.connectivity.console.profile 1.0.0.v200805231345 org.eclipse.ecf.sharedobject 1.3.0.v20080623-0046 org.eclipse.debug.core 3.4.0.v20080612 org.eclipse.wst.xmleditor.doc.user 1.0.400.v200805211530 org.eclipse.datatools.enablement.sap.maxdb 1.0.0.v200805152355 org.python.pydev.ast 0.9.7 com.windowtester.swt.runtime.legacy 3.5.0.200806270034 org.eclipse.equinox.simpleconfigurator.manipulator 1.0.0.v20080427-2136 org.eclipse.equinox.p2.touchpoint.eclipse 1.0.0.v20080529-1225 com.instantiations.swt.graph 5.5.1 org.eclipse.gmf.doc 1.2.0.v20080516-1143 org.python.pydev 1.3.20 com.windowtester.swing.runtime 3.5.1.200809042232 org.eclipse.datatools.enablement.ibm.db2.iseries.ui 1.0.0.v200805160737 org.eclipse.datatools.connectivity.oda.profile 3.0.6.v200805152355 org.eclipse.mylyn.pde.ui 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.commons.ui 3.0.0.v20080619-1900 org.eclipse.emf.workspace.source 1.2.0.v200805130238-23-8s733I3C59379I org.eclipse.core.boot 3.1.100.v20080218 org.python.pydev.ast 1.2.2 org.eclipse.birt.doc 2.3.0.v20080617a com.instantiations.assist.eclipse.core.ui 5.5.0 org.python.pydev.jython 1.3.18 org.python.pydev.jython 1.0.5 org.eclipse.emf.validation 1.2.0.v200805170232 org.eclipse.equinox.jmx.client.rmi 1.0.0 org.eclipse.emf.mapping.ecore 2.4.0.v200806091234 com.instantiations.assist.eclipse.coverage 5.5.1.200809042337 com.instantiations.helpeditor.ui 1.3.4.200806270212 org.eclipse.emf.edit.ui 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editor.script 2.3.0.v200806102 org.eclipse.gmf.ecore.editor 2.0.100.v20080610-1132 com.windowtester.swt.recorder 3.5.1.200809042232 org.eclipse.uml2.diagram.source 0.8.0.v200806112132 org.eclipse.equinox.util 1.0.0.v20080414 org.eclipse.ecf.examples.source 2.0.0.v20080623-0046 org.eclipse.emf.mapping.xsd2ecore.editor 2.4.0.v200806091234 org.eclipse.pde.p2.ui 1.0.0.v20080604-2000 org.eclipse.birt.resources 2.3.0.v20080313 org.eclipse.emf.query.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.emf.ecore.change.edit 2.4.0.v200806091234 org.eclipse.datatools.sqltools.editor.core 1.0.0.v200805152355 org.polarion.eclipse.team.svn.connector.svnkit 2.0.1.I20080612-1500 org.eclipse.buckminster.download 1.1.0.r09319 com.swtdesigner 6.7.0.200806270151 org.python.pydev.parser 1.3.2 org.eclipse.jdt.compiler.apt 1.0.100.v20080513-1235 org.python.pydev.ast 1.0.7 com.windowtester.swt.gef.codegen 3.5.0.200806270034 org.eclipse.emf.ecore 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editors.schematic 2.3.0.v200806102 org.eclipse.pde.build 3.4.0.v20080604 com.instantiations.assist.eclipse 5.5.1 org.eclipse.birt.report.designer.ui.editor.xml.wtp 2.3.0.v200806102 org.eclipse.emf.cdo.tests.model1.edit 1.0.0.v200806180411 org.python.pydev 0.9.8 javax.xml 1.3.4.v200806030440 org.python.pydev 0.4.2 org.polarion.eclipse.team.svn.connector.javahl.win32 2.0.1.I20080612-1500 org.apache.ws.commons.util 1.0.0.v20080530-1550 org.apache.batik.bridge 1.6.0.v200805290154 org.eclipse.emf.search 0.7.0.v200806130939 org.eclipse.datatools.sqltools.parsers.sql.xml.query 1.0.0.v200805152355 org.eclipse.team.core 3.4.0.I20080605 org.eclipse.tptp.platform.execution 4.4.100.v200806050100 org.eclipse.uml2.diagram.parser 0.8.0.v200806112132 org.eclipse.birt.report.item.crosstab.core 2.3.0.v20080606 org.python.pydev.core 0.9.8 org.eclipse.uml2.search.common.ui 0.7.0.v200806130939 org.eclipse.mylyn.ide.ui 3.0.0.v20080619-1900 org.eclipse.xsd.cheatsheets 2.3.0.v200806091234 org.eclipse.wst.xsd.core 1.1.300.v200805282012 org.eclipse.net4j.http 1.0.0.v200806180305 org.python.pydev.core 1.3.6 org.eclipse.ui.externaltools 3.2.0.v20080514-1542 org.eclipse.birt.report.engine.emitter.prototype.excel 2.3.0.v20080606 org.python.pydev.parser 1.3.17 com.instantiations.eclipse.util 5.3.2.200806270030 org.eclipse.ui.editors 3.4.0.v20080603-2000 org.eclipse.buckminster.slf4j 1.0.0 org.python.pydev.ast 1.3.9 org.eclipse.gef.source 3.4.0.v20080115-677-8082A5696H274A org.python.pydev.core 1.0.8 org.python.pydev.ast 1.3.14 org.eclipse.team.ui 3.4.0.I20080604 org.eclipse.emf.query.ocl.source 1.2.0.v200805130238-11-7w311916241349 com.windowtester.swt.runtime 3.5.0.200806270034 org.eclipse.osgi.jmx 1.0.0.v20080610-1530 org.eclipse.net4j.examples.source 1.0.0.v200806180305 org.eclipse.tptp.monitoring.lta.symptom.doc.user 4.5.0.v200805132041 org.eclipse.equinox.p2.updatechecker 1.0.0.v20080427-2136 org.eclipse.ui.views 3.3.0.I20080509-2000 org.eclipse.emf.search.ocl.ui 0.7.0.v200806130939 javax.mail 1.4.0.v200804091730 ch.ethz.iks.slp 1.0.0.RC4_v200806091030 org.eclipse.core.resources.jmx 1.0.0.v20070510 javax.wsdl 1.4.0.v200806030407 org.eclipse.wst.xml.ui 1.0.401.v200807240448 org.python.pydev 1.2.1 org.eclipse.birt.chart.ui.extension 2.3.0.v20080610 org.python.pydev.core 0.9.8.3 org.python.pydev.parser 0.9.7 org.eclipse.jem.util 2.0.100.v200805140020 org.eclipse.tptp.monitoring.lta.la.core 4.5.0.v200805270100 org.python.pydev.core 0.9.8.2 org.eclipse.jdt.junit.runtime 3.3.0.v20080603-2000 org.python.pydev.core 1.2.4 org.python.pydev.core 0.9.8.1 org.eclipse.ecf.discovery 2.0.0.v20080623-0046 org.apache.xml.serializer 2.7.1.v200806030322 org.python.pydev.core 0.9.8.7 org.python.pydev.core 0.9.8.6 org.eclipse.gmf.runtime.draw2d.ui.render.awt 1.1.0.v20080603-1553 com.windowtester.eclipse.help 3.5.1.200809042232 org.python.pydev.core 0.9.8.5 org.python.pydev.core 0.9.8.4 org.python.pydev 0.9.8.7 org.eclipse.birt.report.engine.emitter.ppt 2.3.0.v20080606 org.apache.commons.httpclient 3.1.0.v20080605-1935 com.windowtester.runtime.legacy 3.5.0.200806270034 org.eclipse.datatools.enablement.oda.xml.ui 1.1.0.v200805270900 org.python.pydev 0.9.8.3 org.eclipse.mylyn.compatibility 3.0.2.v20080918-1100-e3x org.python.pydev 0.9.8.4 org.python.pydev 0.9.8.5 org.eclipse.wst.common.project.facet.ui 1.3.0.v200805281731 org.eclipse.gmf.tooldef 2.0.0.v20080417-1610 org.python.pydev 0.9.8.6 org.eclipse.core.commands 3.4.0.I20080509-2000 org.python.pydev.jython 1.3.9 org.eclipse.datatools.modelbase.sql.edit 1.0.0.v200805152355 org.python.pydev 0.9.8.2 org.python.pydev 0.9.8.1 org.eclipse.emf.cdo.server.hibernate.libraries 1.0.0.v200806180411 org.eclipse.equinox.p2.ui.admin 1.0.0.v20080522-1735 org.eclipse.wst.common.core 1.1.201.v200806010600 org.eclipse.emf.compare.diff.edit 0.8.0.v200806180301 com.swtdesigner.layout.group.designer 6.7.0.200806270151 org.eclipse.ui.views.properties.tabbed 3.4.0.I20080527-2000 org.python.pydev.jython 1.2.2 org.eclipse.wst.common.emf 1.1.200.v200805140020 com.instantiations.packager.refactoring 2.5.1 com.instantiations.assist.eclipse.fragment.jdt 5.5.1 org.eclipse.datatools.connectivity.dbdefinition.genericJDBC 1.0.0.v200805152355 org.python.pydev.parser 1.0.7 org.eclipse.datatools.sqltools.data.ui 1.1.0.v200805310400 org.eclipse.buckminster.core 1.1.0.r09336 org.eclipse.mylyn.tasks.core 3.0.1.v20080721-2100-e3x org.eclipse.birt.report.designer.ui.samplesview 2.3.0.v20080606 org.eclipse.equinox.launcher 1.0.100.v20080509-1800 org.eclipse.birt.report.item.crosstab.ui 2.3.0.v20080606 org.eclipse.m2m.atl.adt.perspective 2.0.0.v200806101117 javax.servlet.jsp 2.0.0.v200806031607 com.swtdesigner 6.7.1.200809050053 org.eclipse.jet.ui 0.9.0.v20080527 org.eclipse.m2m.qvt.oml.common.ui 1.0.0.v20080611-1330 com.swtdesigner.layout.group 6.7.1.200809050053 org.eclipse.gmf.runtime.common.ui.services.action 1.1.0.v20080507-2230 org.eclipse.emf.search.ecore.ui 0.7.0.v200806130939 org.python.pydev 1.0.5 org.eclipse.emf.workspace.ui 1.2.0.v200805130238 com.instantiations.helpeditor.core.toc 1.3.4.200809042225 org.slf4j.extendable 1.4.3 org.python.pydev.core 1.3.14 org.eclipse.hyades.logging.core 4.3.200.v200804110100 org.eclipse.datatools.enablement.postgresql.ui 1.0.0.v200806060334 org.eclipse.gmf.graphdef 2.0.100.v20080528-1052 org.eclipse.mylyn.help.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.protocol.bittorrent 0.3.0 org.eclipse.birt.report.engine 2.3.0.v20080616 org.eclipse.datatools.connectivity.ui.dse 1.1.0.v200805152355 org.eclipse.mylyn.bugzilla.core 3.0.0.v20080619-1900 org.python.pydev.jython 1.3.4 org.python.pydev 0.9.0 org.eclipse.equinox.preferences.jmx 1.0.0.v20070510 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.1 org.eclipse.datatools.enablement.postgresql.dbdefinition 1.0.0.v200805152355 org.eclipse.m2m.qvt.oml.common.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.eclipse.tptp.monitoring.lta.logui 4.5.0.v200805141427 org.eclipse.birt.report.debug.ui 2.3.0.v200806102 org.eclipse.gmf.runtime.emf.ui 1.1.0.v20080516-1748 org.eclipse.ui.cheatsheets 3.3.100.v20080508 org.python.pydev 1.2.9 org.eclipse.birt.report.engine.emitter.wpml 2.3.0.v20080606 org.eclipse.help.appserver 3.1.300.v20080507 org.python.pydev.parser 1.3.9 com.xored.composer.ui 1.3.4.200806270212 org.eclipse.datatools.sqltools.tabledataeditor 1.0.0.v200805240400 org.eclipse.gmf.runtime.emf.type.core 1.1.0.v20080425-1959 org.python.pydev 1.3.7 com.ibm.icu.base 3.8.1.v20080530 org.python.pydev.ast 1.3.1 org.apache.batik.pdf 1.6.0.v200806031500 org.eclipse.emf.mapping.ui 2.4.0.v200806091234 org.eclipse.net4j.db.derby 1.0.0.v200806180305 org.eclipse.net4j.http.server 1.0.0.v200806180305 org.python.pydev.jython 1.3.17 org.python.pydev.jython 1.0.6 org.python.pydev.ast 1.2.3 org.eclipse.team.svn.sources 0.7.1.I20080612-1500 org.eclipse.uml2.diagram.usecase 0.8.0.v200806112132 org.eclipse.wst.sse.core 1.1.300.v200805221633 org.eclipse.birt.report.designer.ui 2.3.0.v20080606 org.eclipse.jdt.apt.ui 3.3.100.v20080407-1345 com.instantiations.eclipse.debug 5.3.2.200809042027 org.eclipse.gmf.codegen.ui 1.1.0.v20080512-1200 com.instantiations.designer.databinding 6.7.1.200809050053 org.python.pydev.core 1.0.1 com.windowtester.swt.runtime.gef 3.5.0.200806270034 com.instantiations.common.ui 5.3.2.200809042027 org.python.pydev 1.3.19 org.eclipse.ui.forms 3.3.100.v20080611 org.eclipse.birt.data 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase.ase.ui 1.0.1.v200805310538 org.polarion.eclipse.team.svn.connector 2.0.1.I20080612-1500 org.eclipse.emf.common.ui 2.4.0.v200806091234 org.eclipse.datatools.enablement.ibm.informix.dbdefinition 1.0.0.v200805152355 org.eclipse.wst.xsdeditor.doc.user 1.0.400.v200805150028 org.eclipse.emf.mint.doc 0.7.0.v200806172223 org.eclipse.buckminster.generic 1.0.0.r09319 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.1 org.eclipse.emf.validation.examples 1.2.0.v200805280204 org.eclipse.team.svn.core 0.7.1.I20080612-1500 org.python.pydev.ast 1.2.4 org.eclipse.emf.cdo.server.hibernate 1.0.0.v200806180411 org.python.pydev.jython 1.3.8 org.eclipse.gmf.xpand 1.1.0.v20080528-1052 org.eclipse.datatools.sqltools.data.core 1.0.0.v200805152355 org.eclipse.emf.ecoretools 0.8.0.v200806130600 org.python.pydev.core 1.3.18 org.eclipse.gmf.runtime.common.core 1.1.0.v20080425-1959 org.eclipse.emf 2.4.0.v200806091234 org.eclipse.emf.ecoretools.properties 0.8.0.v200806130600 org.python.pydev.core 1.2.7 org.python.pydev.parser 0.9.8 org.eclipse.datatools.enablement.ibm.db2.luw.ui 1.0.0.v200805160737 org.eclipse.mylyn.team.ui 3.0.0.v20080619-1900 org.eclipse.help.base 3.3.100.v20080617 org.eclipse.m2m.atl.doc 2.0.0.v200806101117 org.eclipse.net4j.examples 1.0.0.v200806180305 org.eclipse.birt.data.aggregation 2.3.0.v20080606 org.eclipse.gmf.examples 1.0.100.v20080425-1959 org.eclipse.emf.search.common 0.7.0.v200806130939 org.python.pydev.ast 1.3.17 org.eclipse.ecf.provider.filetransfer.ssl 1.0.0.v20080611-1715 org.python.pydev.core 1.0.3 org.eclipse.team.svn.core.nl1 0.7.1.I20080612-1500 org.eclipse.emf.cdo.server.hibernate.teneo 1.0.0.v200806180411 org.eclipse.wst.validation.ui 1.2.1.v200807292117 org.python.pydev.parser 1.0.3 org.python.pydev.ast 1.3.6 org.eclipse.search 3.4.0.v20080603-2000 org.eclipse.jet 0.9.0.v20080527 org.python.pydev 1.3.2 org.python.pydev.jython 1.2.6 org.python.pydev.parser 1.3.14 org.eclipse.datatools.oda.cshelp 1.0.0.v200805152355 org.eclipse.jdt.junit 3.4.0.v20080603-2000 org.eclipse.datatools.sqltools.debugger.core 1.0.0.v200805152355 org.mortbay.jetty 5.1.14.v200806031611 org.eclipse.equinox.p2.garbagecollector 1.0.0.v20080506-1939 org.eclipse.m2m.atl.adt.debug 2.0.0.v200806101117 org.eclipse.equinox.jmx.client 1.0.0.v20070515 org.python.pydev.core 1.3.5 org.eclipse.mylyn.bugzilla.core 3.0.1.v20080721-2100-e3x org.python.pydev.parser 0.9.8.3 org.python.pydev.parser 0.9.8.2 org.python.pydev.parser 0.9.8.1 org.eclipse.osgi.services 3.1.200.v20071203 org.python.pydev 1.0.4 org.eclipse.hyades.lta.logging.adapter 4.5.0.v200806121215 org.eclipse.datatools.sqltools.sqleditor 1.0.0.v200805152355 org.python.pydev.parser 0.9.8.7 org.python.pydev.parser 0.9.8.6 org.eclipse.gmf.runtime.emf.core 1.1.0.v20080425-1959 org.python.pydev.parser 0.9.8.5 org.eclipse.core.contenttype 3.3.0.v20080604-1400 org.eclipse.ecf.datashare 1.3.0.v20080623-0046 org.python.pydev.parser 0.9.8.4 org.eclipse.tptp.platform.common.ui 4.4.100.v200806110100 org.junit 3.8.2.v20080602-1318 com.instantiations.assist.eclipse.coverage 5.5.0.200806270255 javax.activation 1.1.0.v200806101325 com.instantiations.assist.eclipse.scheduler 5.5.1 javax.management 1.2.0.v200803061811 org.eclipse.emf.edit 2.4.0.v200806091234 org.eclipse.ecf.provider.discovery 2.0.0.v20080623-0046 org.eclipse.birt.chart.device.pdf 2.3.0.v20080417 org.eclipse.equinox.wireadmin 1.0.0.v20080407 org.python.pydev.ast 1.0.8 org.eclipse.net4j.buddies.server 1.0.0.v200806180305 org.eclipse.wst.internet.cache 1.0.301.v200805140020 com.windowtester.runtime 3.5.0.200806270034 org.mx4j.jmx 3.0.3.v200802291451 org.eclipse.pde.ui 3.4.0.v20080530 org.eclipse.ocl 1.2.0.v200806091438 org.eclipse.birt.cshelp 2.3.0.v20080617 org.eclipse.emf.query.doc 1.2.0.v200805130238 org.eclipse.pde.runtime 3.4.0.v20080530-1200 org.apache.axis 1.4.0.v200807230600 org.apache.log4j 1.2.13.v200806030600 org.eclipse.ui.intro 3.2.200.v20080610 com.instantiations.assist.eclipse.pattern 5.5.1 com.xored.swt.composer 1.3.4.200806270212 org.apache.batik.ext.awt 1.6.0.v200805290154 org.eclipse.emf.cdo.ui 1.0.0.v200806180411 org.eclipse.jface 3.4.0.I20080606-1300 com.windowtester.swt.runtime.gef 3.5.1.200809042232 org.eclipse.gmf.runtime.emf.type.ui 1.1.0.v20080425-1959 org.eclipse.uml2.uml 2.2.0.v200805141133 org.objectweb.asm 3.0.0.v200803061811 org.python.pydev.core 1.1.0 org.eclipse.ecf.discovery.ui 2.0.0.v20080623-0046 org.python.pydev 1.3.14 org.eclipse.gmf.runtime.diagram.ui.printing 1.1.0.v20080501-1739 org.eclipse.mylyn.ide.ant 3.0.2.v20080918-1100-e3x org.eclipse.xsd.example.installer 1.0.0.v200806091234 org.eclipse.uml2.diagram.examples.profile 0.8.0.v200806112132 org.eclipse.ui.intro.universal 3.2.200.v20080508 org.python.pydev.ast 0.9.7.99 org.eclipse.emf.codegen 2.4.0.v200806091234 org.eclipse.equinox.p2.metadata 1.0.0.v20080514-1900 org.eclipse.ecf.example.collab 1.3.0.v20080623-0046 org.python.pydev.parser 1.2.4 org.eclipse.birt.report.engine.emitter.html 2.3.0.v20080606 org.python.pydev.jython 1.3.16 org.eclipse.osgi 3.4.0.v20080605-1900 org.eclipse.emf.databinding 1.0.0.v200806091234 org.eclipse.help 3.3.100.v20080610 org.eclipse.net4j.db.hsqldb 1.0.0.v200806180305 org.eclipse.gmf.runtime.diagram.ui.dnd 1.1.0.v20080425-1959 org.eclipse.birt.report.model 2.3.0.v20080605 org.eclipse.datatools.enablement.finfo 1.5.1.v200805152355 org.eclipse.jsch.ui 1.1.100.I20080415 org.python.pydev 1.3.10 org.python.pydev.parser 1.3.6 org.eclipse.emf.mapping.ecore.editor 2.4.0.v200806091234 org.eclipse.datatools.sqltools.common.ui 1.0.0.v200805152355 org.eclipse.birt.report.engine.emitter.pdf 2.3.0.v20080606 org.python.pydev 1.2.8 com.instantiations.packager.help 2.5.1 org.eclipse.equinox.p2.directorywatcher 1.0.0.v20080505-1850 org.eclipse.draw2d 3.4.0.v20080529 org.eclipse.draw2d.source 3.4.0.v20080115-33-7w3119163_ org.eclipse.ecf.ui 2.0.0.v20080623-0046 org.eclipse.birt.report.data.oda.jdbc.dbprofile 2.3.0.v20080606 org.eclipse.equinox.security.win32.x86 1.0.0.v20080529-1600 org.eclipse.wst.xml.ui 1.0.400.v200806051910 org.eclipse.jdt.ui 3.4.0.v20080603-2000 org.eclipse.equinox.p2.ui 1.0.0.v20080530-1237 org.eclipse.hyades.lta.logging.adapter.ui 4.5.0.v200805132041 org.eclipse.mylyn.monitor.ui 3.0.0.v20080619-1900 org.python.pydev 0.9.1 org.eclipse.emf.ecore.sdo.doc 2.4.0.v200806091234 com.instantiations.eclipse.ast.editor 5.5.1 org.eclipse.ant.ui 3.3.0.v20080529 org.python.pydev.core 1.3.13 org.eclipse.gef.doc.isv 3.4.0.v20080606 org.apache.xml.resolver 1.2.0.v200806030312 org.eclipse.datatools.enablement.ibm.db2.iseries.dbdefinition 1.0.0.v200806100223 org.eclipse.birt 2.3.0.v20080304 org.eclipse.equinox.security 1.0.0.v20080512-1800 com.instantiations.tools 5.3.2.200809042027 org.eclipse.jdt.core.manipulation 1.2.0.v20080603-2000 org.eclipse.gmf.runtime.diagram.ui.printing.render 1.1.0.v20080425-1959 org.eclipse.net4j.buddies.ui 1.0.0.v200806180305 org.eclipse.emf.codegen.ui 2.4.0.v200806091234 org.eclipse.team.svn 0.7.1.I20080612-1500 org.eclipse.wst.command.env.infopop 1.0.100.v200805301544 org.eclipse.datatools.enablement.hsqldb.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.runtime.common.ui.services.properties 1.1.0.v20080425-1959 org.eclipse.emf.cheatsheets 2.4.0.v200806091234 org.eclipse.ecf.presence.collab.ui 1.2.0.v20080623-0046 org.eclipse.update.core 3.2.200.v20080515 org.eclipse.wst.command.env.core 1.0.204.v200805140020 org.apache.batik.swing 1.6.0.v200805290154 org.eclipse.birt.report.designer.samplereports 2.3.0.v20080606 org.python.pydev.parser 1.0.8 org.eclipse.xsd 2.4.0.v200806091234 com.instantiations.assist.eclipse.fragment.jdt 5.5.0 org.eclipse.emf.transaction 1.2.0.v200805130238 org.eclipse.mylyn.team.cvs 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.ui 1.0.0.v20080611-1330 org.eclipse.emf.validation.source 1.2.0.v200805130238-35-9oA55S5J8H5ADM org.eclipse.datatools.enablement.hsqldb 1.0.0.v200805152355 org.eclipse.wst.common.uriresolver 1.1.301.v200805140415 org.eclipse.equinox.jsp.jasper 1.0.100.v20080427-0830 org.eclipse.osgi.util 3.1.300.v20080303 org.eclipse.datatools.connectivity.oda.consumer 3.1.2.v200805230718 org.eclipse.emf.compare.source 0.8.0.v200806180301 org.python.pydev.core 1.3.19 org.eclipse.emf.query.examples 1.2.0.v200805130238 org.eclipse.buckminster.runtime 1.1.0.r09338 org.eclipse.datatools.enablement.sybase.asa.dbdefinition 1.0.0.v200805240040 org.eclipse.datatools.sqltools.sql 1.0.0.v200805152355 org.apache.batik.svggen 1.6.0.v200805290154 org.eclipse.buckminster.cvs 1.0.0.r09319 org.python.pydev.core 1.2.6 org.eclipse.equinox.simpleconfigurator 1.0.0.v20080604 org.eclipse.help.ui 3.3.100.v20080521 org.apache.batik.dom 1.6.0.v200805290154 org.python.pydev.parser 1.1.0 org.eclipse.ecf.server.generic 1.2.0.v20080623-0046 com.windowtester.swt.runtime.win32 3.5.0.200806270034 org.eclipse.emf.cdo.examples 1.0.0.v200806180411 org.eclipse.ecf.provider.remoteservice 1.3.0.v20080623-0046 org.eclipse.gmf.runtime.notation.edit 1.1.0.v20080507-1326 org.eclipse.core.filesystem 1.2.0.v20080604-1400 org.eclipse.m2m.qvt.oml.runtime.ui 1.0.0.v20080611-1330 org.eclipse.emf.cdo.server.hibernate.source 1.0.0.v200806180411 org.python.pydev.jython 1.3.7 org.eclipse.gmf.codegen.edit 2.1.0.v20080610-1132 org.eclipse.buckminster.pde 1.1.0.r09351 org.python.pydev.ast 1.2.5 org.python.pydev.core 1.0.2 org.python.pydev.ast 1.3.16 org.apache.batik.parser 1.6.0.v200805290154 org.python.pydev.parser 1.0.2 org.eclipse.wst.common.infopop 1.0.100.v200805301550 org.eclipse.ecf.remoteservice 2.0.0.v20080623-0046 org.python.pydev 1.3.1 org.python.pydev.jython 1.2.5 org.eclipse.emf.mapping 2.4.0.v200806091234 org.eclipse.emf.cdo.server.hibernate.id 1.0.0.v200806180411 com.windowtester.runtime.legacy 3.5.1.200809042232 org.python.pydev.ast 1.3.7 org.eclipse.datatools.enablement.oracle 1.0.0.v200805152355 org.python.pydev.parser 1.3.15 org.eclipse.emf.importer 2.4.0.v200806091234 org.eclipse.birt.example 2.3.0.v20080304 org.eclipse.birt.report.designer.ui.lib 2.3.0.v20080606 org.eclipse.emf.cdo.server.source 1.0.0.v200806180411 org.eclipse.gmf.runtime.common.ui.services 1.1.0.v20080612-1229 org.eclipse.datatools.sqltools.db.generic 1.0.0.v200805152355 org.eclipse.net4j 1.0.0.v200806180305 org.eclipse.jdt 3.4.0.v20080603-2000 org.eclipse.emf.cdo.source 1.0.0.v200806180411 org.eclipse.datatools.connectivity 1.1.0.v200805160228 com.instantiations.assist.eclipse.scheduler 5.5.0 org.eclipse.emf.ecore.sdo.source 2.4.0.v200806091234 org.eclipse.wst.sse.doc.user 1.1.0.v200805211530 org.python.pydev 0.9.7.99 org.eclipse.emf.transaction.source 1.2.0.v200805130238-23-8s733I3C59379I org.w3c.dom.svg 1.1.0.v200806040011 org.python.pydev.core 1.3.4 javax.xml.rpc 1.1.0.v200806030420 org.eclipse.ocl.uml.source 1.2.0.v200805130238-11-7w311916241349 com.instantiations.eclipse.ui 5.3.2.200806270030 org.eclipse.jface.text 3.4.0.v20080603-2000 org.apache.batik.xml 1.6.0.v200805290154 org.python.pydev 1.0.3 org.eclipse.gmf.bridge.ui.dashboard 2.0.0.v20080417-1610 org.apache.lucene 1.9.1.v20080530-1600 org.eclipse.emf.query.ocl 1.2.0.v200805130238 org.eclipse.uml2.uml.resources 2.2.0.v200805131030 org.eclipse.ecf.provider.r_osgi 2.0.0.v20080623-0046 org.eclipse.emf.importer.java 2.4.0.v200806091234 org.python.pydev.debug 1.3.20 org.eclipse.emf.ecore.xmi 2.4.0.v200806091234 org.python.pydev.mylyn 0.3.0 com.instantiations.assist.eclipse.pattern 5.5.0 org.eclipse.emf.source 2.4.0.v200806091234 org.eclipse.ui.browser 3.2.200.v20080507 org.eclipse.tptp.lta.sdb.epi 4.5.0.v200805132041 org.eclipse.net4j.doc 1.0.0.v200806180305 org.eclipse.gmf.bridge 1.1.0.v20080528-1052 com.instantiations.assist.eclipse.admin 5.5.1 org.eclipse.ecf.presence 1.3.0.v20080623-0046 org.eclipse.jet.editor 0.9.0.v20080226 org.eclipse.emf.mint 0.7.0.v200806172223 org.eclipse.ecf.provider 1.3.0.v20080623-0046 com.instantiations.assist.eclipse.core.ant 5.5.0 org.apache.axis 1.4.0.v200806030120 org.eclipse.equinox.p2.metadata.repository 1.0.0.v20080604 com.ibm.icu 3.8.1.v20080530 org.eclipse.gmf.runtime.diagram.ui.properties 1.1.0.v20080603-1553 org.eclipse.team.svn.mylyn.source 0.7.1.I20080612-1500 org.eclipse.ecf.provider.datashare 1.3.0.v20080623-0046 org.eclipse.birt.report.data.oda.sampledb 2.3.0.v20080606 org.eclipse.m2m.atl.drivers.emf4atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.providers.ide 1.1.0.v20080425-1959 org.python.pydev 0.8.0 org.eclipse.datatools.connectivity.sqm.server.ui 1.1.0.v200806050117 com.nordea.cd.dev.plugin.stubbuilder 1.0.2 org.eclipse.emf.mapping.xsd2ecore 2.4.0.v200806091234 org.python.pydev.parser 1.2.5 org.eclipse.xsd.mapping.editor 2.4.0.v200806091234 org.python.pydev.jython 1.3.15 org.eclipse.gmf.xpand.editor 1.0.0.v20080425-1959 org.eclipse.tptp.platform.lta.common 4.5.0.v200806050100 org.eclipse.buckminster.pde.ui 1.0.0.r09319 org.eclipse.emf.validation.ocl 1.2.0.v200805130238 org.eclipse.ui.console 3.3.0.v20080529-1300 org.eclipse.net4j.ui 1.0.0.v200806180305 org.eclipse.emf.workspace 1.2.0.v200805130238 org.python.pydev.ast 0.9.8.6 org.python.pydev.ast 0.9.8.5 org.eclipse.emf.teneo.annotations 1.0.0.v200806111928 org.python.pydev.ast 0.9.8.4 org.eclipse.ui.net 1.0.0.I20080605 org.python.pydev.ast 0.9.8.3 org.eclipse.net4j.db.source 1.0.0.v200806180305 org.eclipse.zest.core 1.0.0.v20080115 org.python.pydev.ast 0.9.8.2 org.eclipse.tptp.lta.log.epi 4.5.0.v200805132041 org.python.pydev.ast 0.9.8.1 org.python.pydev 1.3.13 org.eclipse.equinox.app 1.1.0.v20080421-2006 org.eclipse.equinox.p2.metadata.generator 1.0.0.v20080604 org.python.pydev 1.2.7 org.eclipse.emf.ocl.examples 1.2.0.v200805130238 org.eclipse.mylyn.jira.core 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.commons.net 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql.query 1.0.1.v200805152355 org.eclipse.datatools.sqltools.plan 1.0.0.v200805152355 com.swtdesigner.help 6.7.1.200809050053 org.eclipse.ecf.ssl 1.0.0.v20080611-1715 org.eclipse.team.cvs.core 3.3.100.I20080605 org.python.pydev.ast 0.9.8 com.instantiations.helpeditor.core.toc 1.3.4.200806270212 org.eclipse.core.databinding 1.1.0.I20080527-2000 org.eclipse.tptp.platform.common 4.3.200.v200805300100 org.eclipse.net4j.util.ui 1.0.0.v200806180305 org.eclipse.mylyn.commons.core 3.0.0.v20080619-1900 org.python.pydev 1.3.9 org.eclipse.emf.search.common.ui 0.7.0.v200806130939 org.eclipse.m2m.atl.engine.emfvm 2.0.0.v200806101117 org.eclipse.uml2.diagram.csd 0.8.0.v200806112132 org.python.pydev.parser 1.3.7 org.eclipse.team.svn.ui 0.7.1.I20080612-1500 org.python.pydev.core 1.3.12 org.eclipse.datatools.modelbase.sql.query.edit 1.0.0.v200806070329 com.instantiations.packager.core 2.5.1 com.windowtester.swing.runtime 3.5.0.200806270034 org.eclipse.update.ui 3.2.100.v20080318 org.apache.commons.codec 1.2.0.v20080530-1550 org.eclipse.mylyn.bugzilla.core 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.editor.ui 1.0.0.v20080611-1330 org.eclipse.m2m.qvt.oml.samples 1.0.0.v20080611-1330 org.eclipse.mylyn.context.core 3.0.0.v20080619-1900 org.eclipse.xsd.source 2.4.0.v200806091234 org.eclipse.gmf.runtime.diagram.core 1.1.0.v20080425-1959 org.eclipse.m2m.atl.drivers.uml24atl 2.0.0.v200806101117 com.instantiations.eclipse.util 5.3.2.200809042027 org.eclipse.emf.ecore.sdo 2.4.0.v200806091234 com.instantiations.eclipse.startup 5.3.2.200809042027 org.eclipse.gmf 1.0.0.v20080425-1959 org.python.pydev 0.9.2 org.apache.batik.util.gui 1.6.0.v200805290154 org.python.pydev.ast 0.9.8.7 com.nordea.cd.dev.plugin.wsdl2java 1.0.2 org.eclipse.datatools.enablement.sybase.models 1.0.0.v200805152355 org.python.pydev.ast 1.0.1 org.eclipse.emf.compare.diff 0.8.0.v200806180301 org.eclipse.birt.report.designer 2.3.0.v200806102 org.eclipse.equinox.http.registry 1.0.100.v20080427-0830 ch.ethz.iks.r_osgi.remote 1.0.0.RC2_v20080623-0046 org.eclipse.gmf.graphdef.codegen.ui 1.0.100.v20080425-1959 org.eclipse.m2m.qvt.oml.editor.source 1.0.0.v20080611-1330-1--7w3119172202441 org.sat4j.pb 2.0.0.v20080602 org.eclipse.wst.validation 1.2.1.v200807292117 org.apache.batik.util 1.6.0.v200805290154 org.eclipse.equinox.transforms.hook 1.0.0.v20080610 org.eclipse.emf.teneo.hibernate 1.0.0.v200806111928 org.eclipse.uml2.examples 2.1.0.v200805131030 org.eclipse.mylyn.java.tasks 3.0.2.v20080918-1100-e3x org.eclipse.equinox.preferences 3.2.200.v20080421-2006 com.instantiations.assist.eclipse.fragment.swt 5.5.0 org.eclipse.ocl.doc 1.2.0.v200805130238 org.eclipse.jdt.apt.core 3.3.100.v20080513-1235 org.eclipse.birt.report.engine.fonts 2.3.0.v20080606 org.eclipse.mylyn.monitor.ui 3.0.2.v20080918-1100-e3x org.eclipse.gmf.tooldef.edit 2.0.0.v20080610-1132 org.eclipse.gmf.runtime.draw2d.ui.render 1.1.0.v20080507-2230 com.windowtester.swt.platform.ext 3.5.0.200806270034 org.eclipse.ecf.example.clients 1.3.0.v20080623-0046 org.eclipse.core.net 1.1.0.I20080604 org.eclipse.wst.xsd.core 1.1.301.v200807240448 org.eclipse.datatools.connectivity.oda.flatfile 3.0.6.v200805261930 org.python.pydev.refactoring 1.3.20 org.python.pydev.parser 1.0.1 org.python.pydev.ast 1.3.19 org.eclipse.equinox.registry.jmx 1.0.0.v20080610-1530 com.instantiations.eclipse.model.jsp 5.5.0 org.eclipse.mylyn.context.ui 3.0.2.v20080918-1100-e3x org.python.pydev.core 1.0.5 org.eclipse.hyades.lta.resources.database 4.5.0.v200805271330 org.python.pydev 0.6.1 org.python.pydev.parser 1.3.12 org.eclipse.equinox.p2.console 1.0.0.v20080514-1900 org.eclipse.mylyn.commons.net 3.0.1.v20080721-2100-e3x org.eclipse.net4j.jms.api 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.lexer 1.0.1.v200805152355 org.python.pydev.ast 1.3.4 org.python.pydev 1.3.4 org.python.pydev.jython 1.2.8 org.python.pydev 0.8.5 org.python.pydev 0.5.3 org.eclipse.wst.sse.ui 1.1.1.v200808141919 org.eclipse.emf.query 1.2.0.v200805130238 org.eclipse.core.runtime.compatibility 3.2.0.v20071008 org.eclipse.gmf.runtime.notation 1.1.0.v20080507-1326 org.eclipse.birt.report.data.oda.sampledb.ui 2.3.0.v20080606 org.python.pydev.ast 1.2.6 com.instantiations.eclipse.mail.ui 5.5.1 org.eclipse.zest.layouts 1.0.0.v20080226 org.python.pydev.jython 1.3.6 org.eclipse.net4j.jms.admin 1.0.0.v200806180305 org.eclipse.core.databinding.beans 1.1.0.I20080508-2000a org.python.pydev 1.1.0 org.python.pydev.core 1.3.20 org.eclipse.gmf.runtime.emf.commands.core 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.common.ui.services.dnd.ide 1.1.0.v20080425-1959 org.eclipse.datatools.connectivity.apache.derby 1.0.1.v200805152355 org.python.pydev.core 1.2.9 org.eclipse.mylyn.context.core 3.0.2.v20080918-1100-e3x org.eclipse.equinox.p2.artifact.repository 1.0.0.v20080609-0850 org.eclipse.gef 3.4.0.v20080526 org.eclipse.gmf.runtime.common.ui 1.1.0.v20080512-1200 org.eclipse.emf.ecoretools.tabbedproperties 0.8.0.v200806130600 com.instantiations.assist.eclipse.core.ant 5.5.1 org.eclipse.emf.ecore.change 2.4.0.v200806091234 org.eclipse.jet.doc 0.9.0.v20080522 org.eclipse.emf.transaction.examples 1.2.0.v200806051817 org.eclipse.gmf.runtime.draw2d.ui 1.1.0.v20080610-1132 org.eclipse.equinox.jmx.server.rmi 1.0.0.v20070510 org.eclipse.ecf.examples.remoteservices.common 1.0.100.v20080623-0046 org.eclipse.wst.standard.schemas 1.0.102.v200807220733 org.eclipse.equinox.p2.jarprocessor 1.0.0.v20080514-1900 org.eclipse.birt.report.data.oda.jdbc 2.3.0.v20080610 com.windowtester.runner 3.5.0.200806270034 com.windowtester.swt.codegen 3.5.1.200809042232 org.eclipse.emf.cdo.tests.model2.edit 1.0.0.v200806180411 javax.wsdl 1.5.1.v200806030408 org.eclipse.datatools.enablement.sap.maxdb.ui 1.0.0.v200805152355 org.eclipse.equinox.launcher.win32.win32.x86 1.0.100.v20080509-1800 org.eclipse.birt.core 2.3.0.v20080606 javax.servlet 2.5.0.v200806031605 org.eclipse.uml2.codegen.ecore.ui 1.4.0.v200805131030 com.windowtester.swt.recorder 3.5.0.200806270034 org.eclipse.mylyn 3.0.1.v20080721-2100-e3x org.eclipse.uml2.search.ocl 0.7.0.v200806130939 org.python.pydev.core 1.3.3 org.eclipse.core.jobs 3.4.0.v20080512 org.python.pydev.core 0.9.5 org.eclipse.emf.validation.ui.ide 1.2.0.v200805130238 org.python.pydev 1.0.2 org.eclipse.wst.validation.ui 1.2.0.v200805262011 com.windowtester.swing.recorder 3.5.1.200809042232 com.instantiations.helpeditor.help 1.3.4.200809042225 org.eclipse.gmf.map.edit 2.1.0.v20080610-1132 org.eclipse.emf.ecore.edit 2.4.0.v200806091234 org.eclipse.datatools.enablement.msft.sqlserver.dbdefinition 1.0.0.v200805152355 org.mortbay.jetty.util 6.1.7.v200806031612 org.eclipse.datatools.sqltools.parsers.sql 1.0.1.v200805152355 org.eclipse.xsd.doc 2.4.0.v200806091234 org.eclipse.jdt.doc.isv 3.4.0.v20080612-1340 org.eclipse.jdt.apt.pluggable.core 1.0.100.v20080407-1345 org.eclipse.ecf.provider.bittorrent 0.3.0.v20080623-0046 org.eclipse.mylyn.monitor.ui 3.0.1.v20080721-2100-e3x org.python.pydev.jython 1.0.4 org.eclipse.wst.common.project.facet.ui 1.3.1.v200807301432 javax.xml.bind 2.0.0.v20080604-1500 org.apache.derby.core 10.3.1.4 org.eclipse.birt.report.debug.core 2.3.0.v200806102 org.python.pydev.parser 1.3.4 org.eclipse.jdt.debug.ui 3.3.0.v20080603 org.python.pydev.help 1.3.20 org.python.pydev 1.3.12 org.eclipse.gef.examples.ui.pde 3.4.0.v20080226 org.eclipse.ecf.provider.jmdns 2.0.0.v20080623-0046 org.eclipse.xsd.editor 2.4.0.v200806091234 org.python.pydev 1.2.6 org.eclipse.buckminster.generic.ui 1.0.0.r09319 org.eclipse.emf.ocl 1.1.100.v200805130238 org.eclipse.emf.search.ecore 0.7.0.v200806130939 org.eclipse.wst.common.frameworks.ui 1.1.200.v200805221400 org.eclipse.emf.ecoretools.doc 0.8.0.v200806130600 org.eclipse.wst.sse.ui.infopop 1.0.200.v200805301545 org.eclipse.tptp.platform.common.ui.trace 4.3.200.v200805290100 org.eclipse.net4j.jms.server 1.0.0.v200806180305 org.eclipse.ecf.filetransfer.ui 1.4.0.v20080623-0046 org.eclipse.birt.chart.device.swt 2.3.0.v20080522 org.eclipse.wst.xsd.ui 1.2.101.v200806051910 org.eclipse.emf.cdo.examples.source 1.0.0.v200806180411 org.eclipse.birt.report.designer.ui.lib.explorer 2.3.0.v20080606 org.mozilla.rhino 1.6.7.v20080214 org.python.pydev 1.3.16 org.eclipse.buckminster.ant 1.1.0.r09351 org.eclipse.equinox.metatype 1.0.0.v20070827 org.eclipse.m2m.atl.adt.wizard 2.0.0.v200806101117 org.eclipse.wst.command.env 1.0.305.v200805281530 org.eclipse.swt.jmx 1.0.0.v20070510 org.eclipse.emf.cdo.common 1.0.0.v200806180411 org.eclipse.ecf.examples.remoteservices.client 1.0.100.v20080623-0046 org.python.pydev.jython 1.3.14 org.python.pydev.parser 1.2.6 org.eclipse.emf.ecoretools.diagram.ui.outline 0.8.0.v200806130600 org.eclipse.emf.teneo.eclipse 1.0.0.v200806111928 org.eclipse.emf.cdo.tests.mango 1.0.0.v200806180411 org.eclipse.net4j.buddies.common 1.0.0.v200806180305 org.eclipse.net4j.buddies.chat 1.0.0.v200806180305 org.eclipse.mylyn.bugzilla.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.0 org.eclipse.datatools.enablement.sybase.ase.dbdefinition 1.0.0.v200805240040 org.apache.ant 1.7.0.v200803061910 org.eclipse.datatools.connectivity.oda.design 3.0.6.v200805152355 org.eclipse.emf.ocl.doc 1.1.100.v200805130238 org.eclipse.tptp.lta.gla.ui.epi 4.5.0.v200805160100 org.eclipse.equinox.jmx.server 1.0.0.v20071015 org.eclipse.wst.xml.core 1.1.300.v200806051910 org.eclipse.datatools.connectivity.oda.template.ui 3.0.6.v200805152355 org.python.pydev.ast 1.0.2 org.eclipse.birt.report.data.adapter 2.3.0.v20080606 org.eclipse.birt.chart.runtime 2.3.0.v20080304 org.eclipse.net4j.ui.source 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.query 1.0.1.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.1 org.eclipse.wst.dtd.ui 1.0.300.v200805152207 org.eclipse.mylyn.java.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.connectivity.oda.design.ui 3.0.6.v200805152355 org.eclipse.birt.report.designer.core 2.3.0.v200806102 org.eclipse.buckminster.jdt 1.0.0.r09319 org.eclipse.buckminster.p4 1.0.0.r09319 org.eclipse.ecf.core.source 2.0.0.v20080623-0046 org.eclipse.birt.report.runtime 2.3.0.v20080304 org.python.pydev.ast 1.1.0 com.windowtester.swt.runtime 3.5.1.200809042232 org.eclipse.uml2.doc 2.2.0.v200805201350 org.eclipse.mylyn.context.core 3.0.1.v20080721-2100-e3x org.eclipse.gmf.runtime.notation.providers 1.1.0.v20080425-1959 org.eclipse.tptp.platform.lta.log.doc.user 4.5.0.v200805132041 org.eclipse.team.svn.help 0.7.1.I20080612-1500 org.python.pydev 0.9.3 com.windowtester.swt.runtime.win32 3.5.1.200809042232 org.eclipse.m2m.qvt.oml.ocl.emf.libraries 1.0.0.v20080611-1330 org.eclipse.hyades.lta.analysis.engine 4.5.0.v200805271330 org.python.pydev.core 1.3.11 org.eclipse.datatools.connectivity.sqm.core 1.0.1.v200806041052 org.eclipse.equinox.jmx.server.xmlrpc 1.0.0.v20070608 org.eclipse.platform 3.3.100.v200806172000 org.eclipse.ui 3.4.0.I20080610-1200 org.eclipse.net4j.buddies.chat.ui 1.0.0.v200806180305 org.eclipse.emf.search.ecore.ocl 0.7.0.v200806130939 org.eclipse.gmf.codegen 2.1.0.v20080610-1132 org.eclipse.emf.teneo 1.0.0.v200806111928 org.eclipse.datatools.connectivity.oda.flatfile.ui 3.0.6.v200805261930 org.python.pydev.core 1.0.4 org.eclipse.equinox.p2.extensionlocation 1.0.0.v20080523-0001 org.eclipse.buckminster.remote.cloudsmith 1.0.0.r09319 org.python.pydev.ast 1.3.18 org.eclipse.birt.report.engine.dataextraction.csv 2.3.0.v200806102 org.eclipse.equinox.log 1.1.0.v20080414 org.python.pydev.parser 1.3.13 org.python.pydev 1.3.3 com.windowtester.eclipse.help 3.5.0.200806270034 org.python.pydev.jython 1.2.7 org.eclipse.m2m.qvt.oml.emf.util.ui 1.0.0.v20080611-1330 org.eclipse.gmf.runtime.common.ui.printing 1.1.0.v20080425-1959 org.python.pydev.ast 1.3.5 org.eclipse.uml2.uml.ecore.exporter 2.2.0.v200805131030 org.eclipse.equinox.event 1.1.0.v20080225 org.eclipse.epp.usagedata.gathering 1.0.0.R200806162215 com.instantiations.assist.eclipse.fragment.swt 5.5.1 org.eclipse.emf.cdo.server 1.0.0.v200806180411 org.eclipse.core.filesystem.win32.x86 1.1.0.v20080604-1400 org.eclipse.datatools.enablement.ibm.db2.zseries 1.0.0.v200805152355 com.windowtester.swt.platform.ext 3.5.1.200809042232 org.eclipse.birt.chart.examples 2.3.0.v20080612 org.eclipse.gmf.bridge.ui 1.1.100.v20080417-1610 org.eclipse.emf.doc 2.4.0.v200806091234 org.eclipse.emf.ecoretools.diagram 0.8.0.v200806130600 org.eclipse.ecf.provider.filetransfer.efs 1.5.0.v20080623-0046 org.eclipse.mylyn.commons.net 3.0.0.v20080619-1900 org.python.pydev.core 1.2.8 org.eclipse.datatools.modelbase.dbdefinition 1.0.0.v200805152355 javax.management.remote 1.0.0.v200803061811 org.eclipse.net4j.util 1.0.0.v200806180305 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.0 org.eclipse.ui.navigator.resources 3.3.100.I20080606-1300 org.apache.lucene.analysis 1.9.1.v20080530-1600 org.python.pydev.jython 1.3.5 org.eclipse.m2m.atl.adt.builder 2.0.0.v200806101117 org.eclipse.mylyn.monitor.core 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.2.7 com.instantiations.eclipse.mail.ui 5.5.0 org.eclipse.tptp.platform.models.lta 4.5.0.v200805132041 org.eclipse.mylyn.commons.core 3.0.1.v20080721-2100-e3x org.eclipse.team.svn.nl1 0.7.1.I20080612-1500 org.eclipse.birt.report.data.oda.jdbc.dbprofile.ui 2.3.0.v20080606 org.eclipse.pde 3.4.0.v20080603 org.eclipse.net4j.jms.server.jdbc 1.0.0.v200806180305 org.eclipse.pde.doc.user 3.3.0.v20080611-1530 org.eclipse.core.runtime.compatibility.auth 3.2.100.v20070502 org.eclipse.tptp.platform.iac.administrator 4.4.100.v200806120100 org.eclipse.emf.importer.ecore 2.4.0.v200806091234 org.eclipse.equinox.jmx.client.xmlrpc 1.0.0.v20070515 org.eclipse.equinox.jmx.common 1.0.0.v20070510 org.eclipse.datatools.enablement.ibm.informix.ui 1.0.0.v200805160737 com.instantiations.installer 2.5.1 org.eclipse.hyades.lta.logging.parsers 4.5.0.v200805271330 org.eclipse.uml2.diagram.profile 0.8.0.v200806112132 org.eclipse.datatools.enablement.jdt.classpath 1.0.1.v200805152355 org.eclipse.emf.validation.ocl.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.net4j.buddies 1.0.0.v200806180305 net.sourceforge.lpg.lpgjavaruntime 1.1.0.v200803061910 org.eclipse.emf.ecore.editor 2.4.0.v200806091234 org.apache.commons.lang 2.3.0.v200803061910 org.eclipse.ocl.uml 1.2.0.v200805130238 org.eclipse.emf.mapping.ecore2ecore 2.4.0.v200806091234 com.swtdesigner.fragment.jdt.core 6.7.0.200806270151 org.eclipse.ecf.provider.xmpp 2.0.0.v20080623-0046 org.eclipse.wst.common.modulecore 1.1.201.v200808071700 org.eclipse.mylyn.jira.ui 3.0.2.v20080918-1100-e3x org.eclipse.draw2d.doc.isv 3.4.0.v20080606 org.python.pydev.core 1.3.2 org.eclipse.mylyn.compatibility 3.0.0.v20080619-1900 org.eclipse.buckminster.maven 1.1.0.r09319 org.eclipse.buckminster.cmdline 1.0.0.r09319 org.apache.batik.css 1.6.0.v200805290154 org.eclipse.ecf.telephony.call.ui 1.2.0.v20080623-0046 org.eclipse.wst.common.emfworkbench.integration 1.1.200.v200805140020 org.python.pydev 1.0.1 org.eclipse.datatools.enablement.ibm.db2.luw.dbdefinition 1.0.0.v200805152355 org.eclipse.team.svn.resource.ignore.rules.jdt.source 0.7.1.I20080612-1500 org.eclipse.ecf.server 1.3.0.v20080623-0046 org.python.pydev 1.2.5 org.python.pydev.core 1.2.1 org.eclipse.datatools.sqltools.sqlscrapbook 1.0.0.v200806021003 org.eclipse.birt.chart.reportitem 2.3.0.v20080610 org.eclipse.uml2.diagram.codegen 0.8.0.v200806112132 org.eclipse.xsd.edit 2.4.0.v200806091234 org.eclipse.buckminster.opml 1.0.0.r09319 org.python.pydev.parser 1.3.5 org.eclipse.gmf.runtime.diagram.ui 1.1.0.v20080610-1132 org.eclipse.ocl.source 1.2.0.v200805130238-34-9oA55S5I6M7JBK com.windowtester.eclipse.ui 3.5.0.200806270034 org.eclipse.tptp.platform.agentcontroller 4.2.200.v200806162043 org.python.pydev 1.3.11 org.eclipse.datatools.connectivity.apache.derby.ui 1.0.0.v200805160737 org.eclipse.datatools.sqltools.routineeditor 1.0.0.v200805261703 org.eclipse.wst.xsd.ui 1.2.102.v200808141745 org.eclipse.equinox.http 1.0.200.v20080421-2006 org.jivesoftware.smack 2.2.1 org.eclipse.mylyn.compatibility 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.java.ui 3.0.0.v20080619-1900 org.eclipse.core.variables 3.2.100.v20080529-1300 org.python.pydev.jython 1.3.13 org.python.pydev.parser 1.3.20 org.eclipse.tptp.platform.models.hierarchy 4.5.0.v200806120100 org.eclipse.ecf.examples.updatesite.client 1.0.100.v20080623-0046 org.eclipse.datatools.enablement.msft.sqlserver.ui 1.0.0.v200805160737 org.eclipse.datatools.enablement.mysql 1.0.0.v200805152355 org.eclipse.jdt.debug 3.4.0.v20080604 org.antlr.runtime 3.0.0.v200803061811 org.python.pydev.parser 1.2.7 org.eclipse.hyades.execution 4.4.200.v200806120100 org.eclipse.ecf.provider.ui 1.3.0.v20080623-0046 org.eclipse.birt.chart.cshelp 2.3.0.v20080616 org.eclipse.buckminster.p4.ui 1.0.0.r09319 org.python.pydev 1.3.15 org.eclipse.datatools.enablement.ibm.ui 1.0.0.v200805152355 org.eclipse.buckminster.sax 1.0.0.r09175 org.eclipse.equinox.supplement 1.1.0.v20080421-2006 org.eclipse.wst.common.frameworks 1.1.200.v200805140020 org.eclipse.mylyn 3.0.2.v20080918-1100-e3x org.eclipse.gmf.map 2.1.0.v20080521 org.eclipse.wst.standard.schemas 1.0.101.v200806010600 org.python.pydev.ast 1.0.3 org.eclipse.m2m.qvt.oml.runtime 1.0.0.v20080611-1330 org.eclipse.mylyn.ide.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.sqltools.sqlbuilder 1.0.0.v200806070500 org.eclipse.datatools.modelbase.derby 1.0.0.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.0 org.eclipse.emf.compare.ui 0.8.0.v200806180301 org.eclipse.ecf.provider.filetransfer.scp 2.0.0.v20080623-0046 org.eclipse.uml2.search.ocl.ui 0.7.0.v200806130939 org.eclipse.mylyn.context.ui 3.0.1.v20080721-2100-e3x org.python.pydev.templates 1.3.20 org.eclipse.gmf.runtime.diagram.ui.resources.editor 1.1.0.v20080425-1959 org.eclipse.gmf.examples.ui.pde 1.0.200.v20080425-1959 org.eclipse.buckminster.installer 1.0.0.r09319 org.eclipse.m2m.atl.examples 2.0.0.v200806101117 org.eclipse.datatools.modelbase.sql.xml.query 1.0.0.v200805152355 org.eclipse.emf.search.doc 0.7.0.v200806130939 org.eclipse.datatools.enablement.oracle.dbdefinition 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.0 javax.xml.bind 2.0.0.v200803061811 org.apache.xmlrpc 3.0.0.v20080530-1550 org.eclipse.ui.views.log 1.0.0.v20080522-2200 org.python.pydev.core 1.3.10 org.eclipse.ecf.examples.updatesite.server 1.0.100.v20080623-0046 org.eclipse.birt.core.ui 2.3.0.v20080515 org.eclipse.core.filebuffers 3.4.0.v20080603-2000 org.eclipse.mylyn.team.ui 3.0.1.v20080721-2100-e3x org.eclipse.wst.command.env 1.0.306.v200807231700 org.eclipse.team.cvs.ssh2 3.2.200.I20080604 org.eclipse.emf.search.ecore.ocl.ui 0.7.0.v200806130939 org.eclipse.ecf.example.collab.editor 1.0.200.v20080623-0046 org.eclipse.ecf.provider.jslp 2.0.0.v20080623-0046 org.eclipse.datatools.sqltools.result 1.0.0.v200805301309 org.eclipse.emf.teneo.jpox 1.0.0.v200806111928 org.eclipse.gmf.runtime.emf.clipboard.core 1.1.0.v20080425-1959 com.instantiations.eclipse.ast.editor 5.5.0 org.eclipse.mylyn.tasks.bugs 3.0.2.v20080918-1100-e3x org.eclipse.jsch.core 1.1.100.I20080604 org.eclipse.pde.core 3.4.0.v20080604-2000 org.python.pydev 0.9.4 org.python.pydev.jython 1.3.0
+* toolingorg.eclipse.equinox.launcher 1.0.100.v20080509-1800 requires either org.python.pydev.core 0.9.7 org.eclipse.m2m.qvt.oml.trace.edit 1.0.0.v20080611-1330 org.eclipse.emf.codegen.ecore 2.4.0.v200806091234 org.eclipse.uml2.common.edit 1.4.0.v200805131030 org.eclipse.core.runtime 3.4.0.v20080512 org.python.pydev.core 1.3.9 javax.xml.soap 1.2.0.v200806030421 org.eclipse.gmf.runtime.common.ui.action.ide 1.1.0.v20080425-1959 org.eclipse.emf.cdo.edit 1.0.0.v200806180411 org.eclipse.ecf.provider.msn 1.2.0.v20080623-0046 org.eclipse.equinox.frameworkadmin.equinox 1.0.0.v20080529-1225 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.1 org.eclipse.equinox.http.servletbridge 1.0.0.v20080427-0830 org.python.pydev 0.9.5 org.python.pydev.parser 1.2.3 org.eclipse.emf.example.installer 1.0.0.v200806091234 com.instantiations.assist.eclipse 5.5.0 org.eclipse.wst.common.environment 1.0.201.v200805140020 org.eclipse.zest.source 1.0.0.v20080115-53-8xB4CE899O274A org.eclipse.emf.ant 2.4.0.v200806091234 com.instantiations.eclipse.mail 5.5.1 org.python.pydev.parser 1.3.1 org.eclipse.birt.chart.engine 2.3.0.v20080606 org.eclipse.core.resources 3.4.0.v20080604-1400 org.eclipse.birt.report.engine.emitter.postscript 2.3.0.v20080610 org.python.pydev.jython 1.1.0 org.eclipse.ui.workbench.compatibility 3.2.0.I20080509-2000 com.nordea.cd.dev.plugin.builderruntime 1.0.0 org.eclipse.m2m.atl.adt.editor 2.0.0.v200806101117 org.eclipse.equinox.p2.director.app 1.0.0.v20080604 org.eclipse.mylyn.tasks.core 3.0.0.v20080619-1900 org.python.pydev.ast 1.0.4 org.eclipse.m2m.atl.compilers.atl2006 2.0.0.v200806101117 org.eclipse.datatools.enablement.sybase.asa.ui 1.0.1.v200805310538 org.eclipse.emf.mapping.ecore2xml.ui 2.4.0.v200806091234 org.eclipse.wst.dtd.ui 1.0.301.v200808072012 org.eclipse.birt.chart.engine.extension 2.3.0.v20080611 org.eclipse.jface.databinding 1.2.0.I20080515-2000a org.eclipse.birt.chart.reportitem.ui 2.3.0.v20080610 org.eclipse.datatools.enablement.hsqldb.ui 1.0.0.v200805152355 org.eclipse.mylyn.ide.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.security.ui 1.0.0.v20080603-1810 org.eclipse.wst.common.emfworkbench.integration 1.1.201.v200808071700 org.eclipse.gmf.validate 1.1.0.v20080603-1553 org.eclipse.emf.mapping.ecore2ecore.editor 2.4.0.v200806091234 org.eclipse.ecf.provider.irc 1.3.0.v20080623-0046 org.eclipse.emf.validation.doc 1.2.0.v200805130238 org.python.pydev.ast 1.2.8 org.eclipse.emf.teneo.doc 1.0.0.v200806111928 org.python.pydev.jython 1.3.12 org.eclipse.emf.ecoretools.source 0.8.0.v200806130600 org.eclipse.equinox.p2.updatesite 1.0.0.v20080529-1800 org.eclipse.ecf.presence.bot 1.2.0.v20080623-0046 com.swtdesigner.properties.java5 1.0.0 org.eclipse.platform.doc.isv 3.4.0.v20080613-1330 org.python.pydev.core 1.2.3 org.eclipse.datatools.connectivity.db.generic 1.0.0.v200805152355 org.eclipse.uml2.diagram.clazz 0.8.0.v200806112132 org.eclipse.birt.report.designer.ui.views 2.3.0.v20080606 org.eclipse.mylyn.monitor.core 3.0.2.v20080918-1100-e3x com.instantiations.eclipse.debug 5.3.2.200806270030 org.eclipse.gmf.runtime.common.ui.action 1.1.0.v20080425-1959 org.eclipse.equinox.useradmin 1.1.0.v20080508-1815 org.eclipse.mylyn.commons.ui 3.0.2.v20080918-1100-e3x org.eclipse.equinox.cm 1.0.0.v20080509-1800 org.eclipse.uml2.diagram.component 0.8.0.v200806112132 org.eclipse.swt.layout.grouplayout 1.1.0 org.python.pydev 1.2.4 javax.servlet 2.4.0.v200806031604 org.eclipse.uml2.examples.uml.ui 2.2.0.v200805131030 org.python.pydev.ast 1.3.10 org.eclipse.birt.report.designer.ui.ide 2.3.0.v20080606 org.python.pydev.parser 1.3.18 com.swtdesigner.layout.group 6.7.0.200806270151 org.eclipse.m2m.qvt.oml.runtime.source 1.0.0.v20080611-1330-5--AgI99m9cDD4DNN9 org.eclipse.mylyn.tasks.ui 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.3.13 org.eclipse.emf.teneo.jpox.eclipse 1.0.0.v200806111928 org.eclipse.equinox.transforms.xslt 1.0.0.v20080610 org.python.pydev.core 1.0.7 org.eclipse.datatools.enablement.ibm.db2.zseries.ui 1.0.0.v200805160737 org.eclipse.mylyn.resources.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.enablement.oda.ws 1.1.0.v200805261930 org.eclipse.equinox.frameworkadmin 1.0.0.v20080430-1750 org.eclipse.birt.chart.device.extension 2.3.0.v20080424 org.eclipse.net4j.jvm 1.0.0.v200806180305 org.eclipse.emf.cdo.migrator 1.0.0.v200806180411 org.python.pydev.jython 1.3.1 org.eclipse.m2m.qvt.oml.cst.parser 1.0.0.v20080611-1330 com.xored.composer.ui 1.3.4.200809042225 org.eclipse.datatools.enablement.sybase.ui 1.0.0.v200806041138 org.eclipse.ecf.remoteservice.ui 2.0.0.v20080623-0046 org.eclipse.net4j.db.mysql 1.0.0.v200806180305 org.eclipse.update.scheduler 3.2.100.v20080404 org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide 1.1.0.v20080425-1959 org.eclipse.wst.dtdeditor.doc.user 1.0.400.v200805150028 org.eclipse.wst.xmleditor.doc.user 1.0.401.v200808071323 org.eclipse.gmf.runtime.common.ui.services.dnd 1.1.0.v20080425-1959 org.eclipse.uml2.common 1.4.0.v200805131030 org.apache.jasper 5.5.17.v200806031609 org.python.pydev 1.0.8 org.eclipse.datatools.doc.user 1.6.0.20080606124249 org.objectweb.asm 3.1.0.v200803061910 org.eclipse.emf.cdo.doc 1.0.0.v200806180411 org.python.pydev.core 1.3.17 org.eclipse.core.resources.compatibility 3.4.0.v20080604-1400 com.instantiations.eclipse.startup 5.3.2.200806270030 org.eclipse.datatools.connectivity.apache.derby.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.graphdef.codegen 2.0.100.v20080528-1052 org.eclipse.emf.common 2.4.0.v200806091234 org.eclipse.wst.xml.ui.infopop 1.0.300.v200805140200 org.python.pydev.core 1.3.0 org.eclipse.equinox.p2.touchpoint.natives 1.0.0.v20080505-1850 org.eclipse.ant.core 3.2.0.v20080529 org.eclipse.ui.workbench 3.4.0.I20080606-1300 org.eclipse.ecf.provider.xmpp.ui 2.0.0.v20080623-0046 org.w3c.sac 1.3.0.v20070710 org.python.pydev.jython 1.2.3 org.eclipse.mylyn.context.ui 3.0.0.v20080619-1900 org.eclipse.ecf.doc 1.3.0.v20080623-0046 org.eclipse.ecf.provider.bittorrent.ui 0.2.0.v20080623-0046 com.xored.swt.composer 1.3.4.200809042225 org.python.pydev.parser 1.0.4 org.eclipse.help.webapp 3.3.100.v20080528 org.eclipse.uml2.diagram.deploy 0.8.0.v200806112132 org.eclipse.ecf.provider.irc.ui 1.3.0.v20080623-0046 org.python.pydev 1.3.18 org.eclipse.m2m.atl.source 2.0.0.v200806101117 org.eclipse.mylyn.tasks.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.identity 2.0.0.v20080611-1715 org.eclipse.ocl.ecore 1.2.0.v200805130238 org.eclipse.core.expressions 3.4.0.v20080603-2000 org.eclipse.core.runtime.compatibility.registry 3.2.200.v20080610 org.eclipse.tptp.platform.la.core 4.3.200.v200805231116 org.eclipse.m2m.atl.service.core 2.0.0.v200806101117 org.apache.commons.logging 1.0.4.v20080605-1930 org.eclipse.platform.doc.user 3.4.0.v20080612-1340 com.windowtester.runtime.junit4 3.5.0.200806270034 org.python.pydev.parser 1.2.8 org.eclipse.uml2.examples.source 2.2.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.providers 1.1.0.v20080503-1740 org.python.pydev.jython 1.3.20 org.python.pydev.jython 1.0.7 org.eclipse.m2m.qvt.oml.common 1.0.0.v20080611-1330 org.eclipse.wst.sse.ui 1.1.0.v200806041847 org.eclipse.core.resources.win32.x86 3.4.0.v20071204 org.eclipse.swt.widgets.baseline 1.1.0 com.xored.swt.composer.win32.win32.x86 1.3.4.200809042225 org.eclipse.datatools.enablement.mysql.ui 1.0.0.v200805152355 org.eclipse.m2m.atl.ocl.core 2.0.0.v200806101117 org.eclipse.emf.codegen.ecore.ui 2.4.0.v200806091234 org.eclipse.equinox.http.servlet 1.0.100.v20080427-0830 org.python.pydev.ast 1.3.2 org.python.pydev 1.3.6 org.eclipse.birt.report.viewer 2.3.0.v20080606 org.apache.batik.extension 1.6.0.v200805290154 org.eclipse.uml2.diagram.statemachine 0.8.0.v200806112132 org.python.pydev.parser 1.3.10 org.eclipse.equinox.p2.ui.admin.rcp 1.0.0.v20080604 org.eclipse.emf.compare.match 0.8.0.v200806180301 org.eclipse.datatools.enablement.oracle.ui 1.0.0.v200805240040 org.python.pydev 0.7.1 com.lowagie.itext 1.5.4.v20080228 org.eclipse.birt.report.designer.ui.preview.web 2.3.0.v200806102 org.eclipse.birt.report.designer.ui.samples.ide 2.3.0.v20080606 org.eclipse.xsd.ecore.converter 2.4.0.v200806091234 org.eclipse.jdt.compiler.tool 1.0.100.v_874 org.eclipse.equinox.registry 3.4.0.v20080516-0950 org.eclipse.wst.dtd.ui.infopop 1.0.300.v200805140200 org.python.pydev.ast 0.9.5 org.eclipse.ui.workbench.texteditor 3.4.0.v20080603-2000 org.eclipse.cvs 1.0.100.v20080603 org.eclipse.uml2.search.ui 0.7.0.v200806130939 org.eclipse.gmf.common 1.1.1.v20080610-1132 org.eclipse.uml2.uml.editor 2.2.0.v200805131030 org.eclipse.m2m.atl.engine 2.0.0.v200806101117 org.eclipse.net4j.http.common 1.0.0.v200806180305 org.eclipse.ecf.presence.ui 1.2.0.v20080623-0046 org.python.pydev.parser 1.2.2 org.eclipse.emf.cdo.tests.model3.edit 1.0.0.v200806180411 org.eclipse.emf.cdo.tests.model1 1.0.0.v200806180411 org.eclipse.m2m.atl.engine.vm 2.0.0.v200806101117 com.instantiations.eclipse.mail 5.5.0 org.eclipse.emf.ocl.source 1.1.100.v200805130238-108Y7w311916241349 com.windowtester.swt.runtime.legacy 3.5.1.200809042232 org.eclipse.uml2tools 0.8.0.v200806112132 org.eclipse.emf.search.genmodel.ui 0.7.0.v200806130939 org.eclipse.mylyn.jira.core 3.0.2.v20080918-1100-e3x org.eclipse.uml2.uml.ecore.importer 2.2.0.v200805131030 org.eclipse.emf.transaction.doc 1.2.0.v200805130238 org.eclipse.tptp.platform.logging.events 4.3.200.v200805310100 org.python.pydev.core 1.3.8 org.eclipse.xsd.ecore.importer 2.4.0.v200806091234 org.eclipse.emf.teneo.source 1.0.0.v200806111928-78--DUUEFDEz0MMNLVD org.eclipse.uml2 2.1.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.render 1.1.0.v20080603-1553 com.windowtester.swt.runtime.os.win32 3.5.0.200806270034 org.eclipse.rcp 3.4.0.v20080507 org.eclipse.xsd.mapping 2.4.0.v200806091234 org.eclipse.emf.workspace.doc 1.2.0.v200805130238 org.eclipse.pde.api.tools 1.0.0.v20080529-1150 org.eclipse.emf.mapping.ecore2xml 2.4.0.v200806091234 org.eclipse.swt.win32.win32.x86 3.4.0.v3448f org.apache.derby 10.1.2.1_v200803061811 org.eclipse.m2m.qvt.oml.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.python.pydev.parser 1.3.0 org.eclipse.ecf.protocol.msn 1.2.0.v20080623-0046 com.instantiations.eclipse.ui 5.3.2.200809042027 org.eclipse.jet.core 1.1.0.v20080415 org.eclipse.datatools.enablement.sybase.ase.models 1.0.1.v200805152355 com.nordea.cd.dev.plugin.builderruntime 1.0.1 com.instantiations.assist.eclipse.core 5.5.0 org.python.pydev.ast 1.0.5 org.eclipse.ecf.filetransfer 2.0.0.v20080611-1715 org.python.pydev.parser 0.9.5 org.python.pydev.core 1.2.2 org.eclipse.emf.transaction.ui 1.2.0.v200805130238 org.eclipse.gmf.runtime.gef.ui 1.1.0.v20080503-1740 org.eclipse.wst.xml.core 1.1.301.v200808072008 org.eclipse.uml2.diagram.clazz.search 0.7.0.v200806130939 org.sat4j.core 2.0.0.v20080602 org.eclipse.datatools.connectivity.ui 1.1.0.v200806040132 org.eclipse.birt.report.designer.ui.editors 2.3.0.v20080610a org.eclipse.equinox.p2.reconciler.dropins 1.0.0.v20080611 org.eclipse.wst.common.project.facet.core 1.3.1.v200807031821 org.python.pydev.jython 1.3.11 org.eclipse.datatools.enablement.postgresql 1.0.1.v200805152355 org.eclipse.ltk.ui.refactoring 3.4.0.v20080605-1800 org.eclipse.datatools.enablement.sybase.ase 1.0.1.v200806040735 org.python.pydev.ast 1.2.9 org.eclipse.datatools.connectivity.oda 3.1.2.v200805152355 org.eclipse.wst.common.emf 1.1.201.v200808071700 org.apache.batik.dom.svg 1.6.0.v200805290154 org.eclipse.birt.chart 2.3.0.v20080304 org.python.pydev.jython 1.2.9 org.python.pydev.ast 1.3.11 org.eclipse.datatools.enablement.mysql.dbdefinition 1.0.1.v200805170742 org.python.pydev.parser 1.3.19 org.python.pydev.core 1.0.6 org.eclipse.uml2.diagram 0.8.0.v200806112132 org.eclipse.jdt.junit4.runtime 1.0.200.v20080603-2000 org.python.pydev.ast 1.3.12 org.eclipse.swt 3.4.0.v3448f org.eclipse.emf.ecoretools.diagram.search 0.7.0.v200806130939 org.eclipse.pde.ui.templates 3.4.0.v20080514-1500 com.instantiations.packager.ui 2.5.1 org.eclipse.emf.cdo.server.db 1.0.0.v200806180411 org.eclipse.datatools.enablement.sybase.asa 1.0.1.v200805310538 org.eclipse.emf.compare 0.8.0.v200806180301 org.eclipse.datatools.enablement.oda.ws.ui 1.1.0.v200805261930 org.eclipse.jdt.launching 3.4.0.v20080529-1300 org.eclipse.mylyn.tasks.ui 3.0.0.v20080619-1900 org.apache.ws.jaxme 0.5.1.v20080530-1550 org.eclipse.mylyn.bugzilla.ui 3.0.0.v20080619-1900 org.apache.commons.el 1.0.0.v200806031608 org.python.pydev 1.2.3 org.w3c.dom.smil 1.0.0.v200806040011 org.eclipse.wst.validation.infopop 1.0.300.v200806041506 org.python.pydev 1.0.7 org.eclipse.net4j.source 1.0.0.v200806180305 org.eclipse.m2m.qvt.oml.ocl 1.0.0.v20080611-1330 org.eclipse.uml2.uml.edit 2.2.0.v200805131030 org.eclipse.emf.search.ui 0.7.0.v200806130939 org.python.pydev.core 1.3.16 org.eclipse.emf.validation.ui 1.2.0.v200805130238 org.eclipse.datatools.enablement.oda.xml 1.1.0.v200805270900 org.eclipse.ltk.core.refactoring 3.4.0.v20080603-2000 org.python.pydev.jython 1.3.2 com.windowtester.swt.codegen 3.5.0.200806270034 org.eclipse.datatools.sqltools.ddlgen.ui 1.0.0.v200805152355 org.apache.xerces 2.9.0.v200805270400 org.eclipse.birt.report.engine.dataextraction 2.3.0.v20080611 org.eclipse.equinox.jmx.vm 1.0.0.v20070515 org.eclipse.birt.report.data.oda.jdbc.ui 2.3.0.v20080606 org.eclipse.equinox.ds 1.0.0.v20080427-0830 org.eclipse.mylyn.bugzilla.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.http.jetty 2.0.0.v20080425 org.eclipse.mylyn.team.ui 3.0.2.v20080918-1100-e3x org.python.pydev.jython 1.2.4 org.eclipse.birt.chart.device.svg 2.3.0.v20080526 org.python.pydev.parser 1.0.5 org.eclipse.ui.presentations.r21 3.2.100.I20080512-2000 org.eclipse.mylyn 3.0.0.v20080619-1900 org.eclipse.m2m.qvt.oml.doc 1.0.0.v20080611-1330 org.eclipse.team.svn.nl1.sources 0.7.1.I20080612-1500 org.eclipse.mylyn.resources.ui 3.0.0.v20080619-1900 org.eclipse.datatools.enablement.ibm.db2.luw 1.0.0.v200805152355 org.python.pydev.core 1.3.1 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.1 org.eclipse.ecf.provider.filetransfer 2.0.0.v20080611-1715 org.eclipse.emf.cdo.tests.mango.edit 1.0.0.v200806180411 org.python.pydev.parser 1.2.9 org.eclipse.m2m.qvt.oml.emf.util 1.0.0.v20080611-1330 org.eclipse.team.cvs.ssh 3.2.100.I20080604 org.python.pydev.jython 1.3.19 org.python.pydev.jython 1.0.8 org.python.pydev.ast 1.2.1 org.eclipse.m2m.qvt.oml.project 1.0.0.v20080611-1330 com.instantiations.assist.eclipse.core.ui 5.5.1 org.eclipse.datatools.enablement.ibm.db2.zseries.dbdefinition 1.0.0.v200805152355 org.eclipse.datatools.enablement.ibm.db2.iseries 1.0.0.v200805152355 com.swtdesigner.fragment.jdt.core 6.7.1.200809050053 org.eclipse.equinox.device 1.0.1.v20080303 org.eclipse.equinox.http.jetty 1.1.0.v20080425 org.eclipse.emf.cdo.tests.model3 1.0.0.v200806180411 org.eclipse.emf.teneo.hibernate.mapper 1.0.0.v200806111928 org.eclipse.compare 3.4.0.I20080604 org.polarion.eclipse.team.svn.connector.javahl 2.0.1.I20080612-1500 org.eclipse.gmf.runtime.diagram.ui.geoshapes 1.1.0.v20080503-1740 org.eclipse.emf.mint.ui 0.7.0.v200806172223 org.eclipse.ui.win32 3.2.100.v20080408-0800 org.eclipse.jet.source 0.9.0.v20080516 org.python.pydev 1.3.17 com.windowtester.runtime.junit4 3.5.1.200809042232 org.eclipse.ecf.examples.remoteservices.server 1.0.100.v20080623-0046 org.eclipse.text 3.4.0.v20080605-1800 org.eclipse.uml2.diagram.common 0.8.0.v200806112132 org.eclipse.datatools.connectivity.sqm.core.ui 1.1.0.v200806070326 org.python.pydev.core 0.9.7.99 org.eclipse.net4j.jms 1.0.0.v200806180305 org.junit4 4.3.1 org.eclipse.epp.usagedata.recording 1.0.0.R200806162215 org.eclipse.buckminster.remote 1.0.0.r09326 org.eclipse.gmf.tooling 2.1.0.v20080425-1959 org.eclipse.emf.cdo.tests.model2 1.0.0.v200806180411 org.eclipse.emf.ecore.sdo.editor 2.4.0.v200806091234 com.instantiations.swt.graph 5.5.0 org.eclipse.uml2.search 0.7.0.v200806130939 org.python.pydev 1.3.5 org.python.pydev.ast 1.3.3 org.eclipse.datatools.enablement.msft.sqlserver 1.0.1.v200805152355 org.python.pydev.parser 1.3.11 org.eclipse.datatools.enablement.sap.maxdb.dbdefinition 1.0.0.v200805152355 com.windowtester.swing.recorder 3.5.0.200806270034 org.eclipse.gmf.runtime.common.ui.printing.win32 1.1.0.v20080612-1355 org.python.pydev.ast 1.3.20 org.eclipse.wst.common.snippets 1.1.200.v200805140415 org.eclipse.mylyn.commons.core 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.tasks.core 3.0.2.v20080918-1100-e3x org.eclipse.jdt.doc.user 3.4.0.v20080612-1340 org.eclipse.birt.chart.ui 2.3.0.v20080522 org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb 2.3.0.v20080606 org.eclipse.uml2.diagram.examples.clazz 0.8.0.v200806112132 org.eclipse.ecf.provider.msn.ui 1.3.0.v20080623-0046 org.python.pydev.parser 1.3.3 org.eclipse.ui.ide.application 1.0.0.I20080603-2000 org.python.pydev.ast 1.0.6 org.eclipse.equinox.jsp.jasper.registry 1.0.0.v20080427-0830 org.eclipse.equinox.p2.engine 1.0.0.v20080522-1735 com.nordea.cd.dev.plugin.builderruntime 1.0.2 com.instantiations.assist.eclipse.core 5.5.1 org.eclipse.m2m.qvt.oml 1.0.0.v20080611-1330 org.eclipse.mylyn.commons.ui 3.0.1.v20080721-2100-e3x org.eclipse.update.core.win32 3.2.100.v20080107 org.eclipse.datatools.sqltools.db.derby 1.0.0.v200805152355 com.instantiations.assist.eclipse.admin 5.5.0 org.eclipse.ecf.telephony.call 1.2.0.v20080623-0046 org.eclipse.mylyn.monitor.core 3.0.0.v20080619-1900 org.eclipse.epp.usagedata.ui 1.0.0.R200806162215 org.eclipse.ui.ide 3.4.0.I20080606-1300 org.eclipse.hyades.lta.sdb 4.5.0.v200806051823 org.eclipse.birt.report.model.adapter.oda 2.3.0.v20080523 org.eclipse.emf.compare.doc 0.8.0.v200806180301 org.eclipse.equinox.servletbridge 1.0.100.v20080427-0830 com.instantiations.common.help 5.3.2.200809042027 org.eclipse.jdt.core 3.4.0.v_874 org.eclipse.equinox.p2.director 1.0.0.v20080604 org.eclipse.gmf.runtime.emf.ui.properties 1.1.0.v20080425-1959 org.eclipse.emf.exporter 2.4.0.v200806091234 org.python.pydev.core 1.3.7 org.eclipse.uml2.diagram.def 0.8.0.v200806112132 org.python.pydev.parser 1.2.1 org.eclipse.wst.command.env.ui 1.1.0.v200805140415 org.eclipse.wst.common.modulecore 1.1.200.v200806091800 org.python.pydev 0.9.7 org.eclipse.gmf.graphdef.edit 2.0.100.v20080610-1132 org.eclipse.birt.report.designer.ui.cubebuilder 2.3.0.v20080606 org.eclipse.m2m.atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.actions 1.1.0.v20080603-1553 com.instantiations.common.core 5.3.2.200806270030 org.eclipse.datatools.enablement.ibm.informix 1.0.0.v200805152355 org.eclipse.net4j.tcp 1.0.0.v200806180305 org.eclipse.wst.common.environment 1.0.202.v200807161459 com.instantiations.common.core 5.3.2.200809042027 org.eclipse.birt.report.data.oda.xml 2.3.0.v20080606 org.eclipse.pde.api.tools.ui 1.0.0.v20080603 org.eclipse.debug.ui 3.4.0.v20080529-1300 org.python.pydev 1.2.2 org.eclipse.team.svn.ui.nl1 0.7.1.I20080612-1500 org.apache.batik.transcoder 1.6.0.v200805290154 org.eclipse.emf.ecore.sdo.edit 2.4.0.v200806091234 org.python.pydev.parser 1.3.16 org.eclipse.wst.command.env.ui 1.1.1.v200807162242 org.eclipse.uml2.diagram.codegen.edit 0.8.0.v200806112132 org.eclipse.datatools.connectivity.db.generic.ui 1.0.1.v200805152355 org.eclipse.mylyn.resources.ui 3.0.2.v20080918-1100-e3x org.python.pydev.ast 1.3.8 org.python.pydev 1.3.0 org.eclipse.net4j.db 1.0.0.v200806180305 org.python.pydev.ast 1.3.15 org.eclipse.uml2.codegen.ecore 1.4.0.v200805201126 org.eclipse.gmf.sdk 1.0.0.v20080425-1959 org.eclipse.equinox.p2.core 1.0.0.v20080530-1237 org.python.pydev.jython 1.3.10 org.eclipse.emf.cdo 1.0.0.v200806180411 org.eclipse.emf.search.genmodel 0.7.0.v200806130939 org.eclipse.ui.navigator 3.3.100.I20080606-1300 org.eclipse.team.svn.mylyn 0.7.1.I20080612-1500 org.python.pydev.core 1.2.5 org.eclipse.tptp.platform.lta.la.core 4.5.0.v200805132041 org.eclipse.wst.sse.core 1.1.301.v200808072008 org.eclipse.tptp.platform.lta.log.views 4.5.0.v200806051823 org.eclipse.mylyn.java.ui 3.0.2.v20080918-1100-e3x org.eclipse.emf.search.codegen 0.7.0.v200806130939 com.instantiations.common.ui 5.3.2.200806270030 org.eclipse.ecf 2.0.0.v20080611-1715 org.eclipse.equinox.p2.ui.sdk 1.0.0.v20080605-1731 org.apache.commons.discovery 0.2.0.v200806030120 org.eclipse.datatools.help 1.5.0.v200805152355 org.python.pydev.parser 0.9.7.99 org.w3c.css.sac 1.3.0.v200805290154 org.eclipse.jet.examples 0.9.0.v20080211 org.eclipse.mylyn.bugzilla.ide 3.0.2.v20080918-1100-e3x org.eclipse.pde.junit.runtime 3.4.0.v20080529-1800 org.eclipse.emf.commonj.sdo 2.4.0.v200806091234 org.python.pydev.jython 1.2.1 com.instantiations.tools 5.3.2.200806270030 com.windowtester.runtime 3.5.1.200809042232 org.eclipse.wst.validation 1.2.0.v200806051402 org.eclipse.ecf.docshare 2.0.0.v20080623-0046 com.instantiations.eclipse.model.jsp 5.5.1 org.eclipse.emf.teneo.hibernate.eclipse 1.0.0.v200806111928 com.jcraft.jsch 0.1.37.v200803061811 org.python.pydev.parser 1.0.6 org.eclipse.emf.converter 2.4.0.v200806091234 org.eclipse.equinox.common 3.4.0.v20080421-2006 org.eclipse.buckminster.ui 1.0.0.r09319 org.eclipse.datatools.sqltools.tablewizard 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.0 org.eclipse.uml2.source 2.2.0.v200805201126 org.eclipse.team.cvs.ui 3.3.100.I20080604 org.python.pydev.jython 1.3.3 org.eclipse.emf.search.ocl 0.7.0.v200806130939 org.eclipse.datatools.enablement.sybase.asa.models 1.0.0.v200805152355 org.eclipse.sdk 3.4.0.v200806172000 org.eclipse.xsd.ecore.exporter 2.4.0.v200806091234 org.apache.commons.codec 1.3.0.v20080530-1600 org.eclipse.equinox.p2.exemplarysetup 1.0.0.v20080427-2136 org.eclipse.equinox.io 1.0.0.v20080218 org.eclipse.wst.common.project.facet.core 1.3.0.v200805140020 org.eclipse.wst.common.ui 1.1.301.v200805140415 org.eclipse.emf.databinding.edit 1.0.0.v200806091234 org.mortbay.jetty.server 6.1.7.v200806031612 org.eclipse.wst.dtd.core 1.1.200.v200805140200 org.python.pydev 1.0.6 org.eclipse.uml2.diagram.activity 0.8.0.v200806112132 org.eclipse.emf.importer.rose 2.4.0.v200806091234 org.eclipse.core.net.win32.x86 1.0.0.I20080521 javax.activation 1.1.0.v200804101140 org.python.pydev.core 1.3.15 org.python.pydev.parser 1.3.8 com.instantiations.assist.eclipse.coverage.ui 5.5.1.200809042337 org.eclipse.emf.ecoretools.filters 0.8.0.v200806130600 org.python.pydev.ast 1.3.0 org.eclipse.birt.report.data.oda.xml.ui 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase 1.0.1.v200805310538 org.python.pydev 1.3.8 org.eclipse.equinox.ip 1.0.0.v20080218 org.eclipse.datatools.connectivity.console.profile 1.0.0.v200805231345 org.eclipse.ecf.sharedobject 1.3.0.v20080623-0046 org.eclipse.debug.core 3.4.0.v20080612 org.eclipse.wst.xmleditor.doc.user 1.0.400.v200805211530 org.eclipse.datatools.enablement.sap.maxdb 1.0.0.v200805152355 org.python.pydev.ast 0.9.7 com.windowtester.swt.runtime.legacy 3.5.0.200806270034 org.eclipse.equinox.simpleconfigurator.manipulator 1.0.0.v20080427-2136 org.eclipse.equinox.p2.touchpoint.eclipse 1.0.0.v20080529-1225 com.instantiations.swt.graph 5.5.1 org.eclipse.gmf.doc 1.2.0.v20080516-1143 org.python.pydev 1.3.20 com.windowtester.swing.runtime 3.5.1.200809042232 org.eclipse.datatools.enablement.ibm.db2.iseries.ui 1.0.0.v200805160737 org.eclipse.datatools.connectivity.oda.profile 3.0.6.v200805152355 org.eclipse.mylyn.pde.ui 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.commons.ui 3.0.0.v20080619-1900 org.eclipse.emf.workspace.source 1.2.0.v200805130238-23-8s733I3C59379I org.eclipse.core.boot 3.1.100.v20080218 org.python.pydev.ast 1.2.2 org.eclipse.birt.doc 2.3.0.v20080617a com.instantiations.assist.eclipse.core.ui 5.5.0 org.python.pydev.jython 1.3.18 org.python.pydev.jython 1.0.5 org.eclipse.emf.validation 1.2.0.v200805170232 org.eclipse.equinox.jmx.client.rmi 1.0.0 org.eclipse.emf.mapping.ecore 2.4.0.v200806091234 com.instantiations.assist.eclipse.coverage 5.5.1.200809042337 com.instantiations.helpeditor.ui 1.3.4.200806270212 org.eclipse.emf.edit.ui 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editor.script 2.3.0.v200806102 org.eclipse.gmf.ecore.editor 2.0.100.v20080610-1132 com.windowtester.swt.recorder 3.5.1.200809042232 org.eclipse.uml2.diagram.source 0.8.0.v200806112132 org.eclipse.equinox.util 1.0.0.v20080414 org.eclipse.ecf.examples.source 2.0.0.v20080623-0046 org.eclipse.emf.mapping.xsd2ecore.editor 2.4.0.v200806091234 org.eclipse.pde.p2.ui 1.0.0.v20080604-2000 org.eclipse.birt.resources 2.3.0.v20080313 org.eclipse.emf.query.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.emf.ecore.change.edit 2.4.0.v200806091234 org.eclipse.datatools.sqltools.editor.core 1.0.0.v200805152355 org.polarion.eclipse.team.svn.connector.svnkit 2.0.1.I20080612-1500 org.eclipse.buckminster.download 1.1.0.r09319 com.swtdesigner 6.7.0.200806270151 org.python.pydev.parser 1.3.2 org.eclipse.jdt.compiler.apt 1.0.100.v20080513-1235 org.python.pydev.ast 1.0.7 com.windowtester.swt.gef.codegen 3.5.0.200806270034 org.eclipse.emf.ecore 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editors.schematic 2.3.0.v200806102 org.eclipse.pde.build 3.4.0.v20080604 com.instantiations.assist.eclipse 5.5.1 org.eclipse.birt.report.designer.ui.editor.xml.wtp 2.3.0.v200806102 org.eclipse.emf.cdo.tests.model1.edit 1.0.0.v200806180411 org.python.pydev 0.9.8 javax.xml 1.3.4.v200806030440 org.python.pydev 0.4.2 org.polarion.eclipse.team.svn.connector.javahl.win32 2.0.1.I20080612-1500 org.apache.ws.commons.util 1.0.0.v20080530-1550 org.apache.batik.bridge 1.6.0.v200805290154 org.eclipse.emf.search 0.7.0.v200806130939 org.eclipse.datatools.sqltools.parsers.sql.xml.query 1.0.0.v200805152355 org.eclipse.team.core 3.4.0.I20080605 org.eclipse.tptp.platform.execution 4.4.100.v200806050100 org.eclipse.uml2.diagram.parser 0.8.0.v200806112132 org.eclipse.birt.report.item.crosstab.core 2.3.0.v20080606 org.python.pydev.core 0.9.8 org.eclipse.uml2.search.common.ui 0.7.0.v200806130939 org.eclipse.mylyn.ide.ui 3.0.0.v20080619-1900 org.eclipse.xsd.cheatsheets 2.3.0.v200806091234 org.eclipse.wst.xsd.core 1.1.300.v200805282012 org.eclipse.net4j.http 1.0.0.v200806180305 org.python.pydev.core 1.3.6 org.eclipse.ui.externaltools 3.2.0.v20080514-1542 org.eclipse.birt.report.engine.emitter.prototype.excel 2.3.0.v20080606 org.python.pydev.parser 1.3.17 com.instantiations.eclipse.util 5.3.2.200806270030 org.eclipse.ui.editors 3.4.0.v20080603-2000 org.eclipse.buckminster.slf4j 1.0.0 org.python.pydev.ast 1.3.9 org.eclipse.gef.source 3.4.0.v20080115-677-8082A5696H274A org.python.pydev.core 1.0.8 org.python.pydev.ast 1.3.14 org.eclipse.team.ui 3.4.0.I20080604 org.eclipse.emf.query.ocl.source 1.2.0.v200805130238-11-7w311916241349 com.windowtester.swt.runtime 3.5.0.200806270034 org.eclipse.osgi.jmx 1.0.0.v20080610-1530 org.eclipse.net4j.examples.source 1.0.0.v200806180305 org.eclipse.tptp.monitoring.lta.symptom.doc.user 4.5.0.v200805132041 org.eclipse.equinox.p2.updatechecker 1.0.0.v20080427-2136 org.eclipse.ui.views 3.3.0.I20080509-2000 org.eclipse.emf.search.ocl.ui 0.7.0.v200806130939 javax.mail 1.4.0.v200804091730 ch.ethz.iks.slp 1.0.0.RC4_v200806091030 org.eclipse.core.resources.jmx 1.0.0.v20070510 javax.wsdl 1.4.0.v200806030407 org.eclipse.wst.xml.ui 1.0.401.v200807240448 org.python.pydev 1.2.1 org.eclipse.birt.chart.ui.extension 2.3.0.v20080610 org.python.pydev.core 0.9.8.3 org.python.pydev.parser 0.9.7 org.eclipse.jem.util 2.0.100.v200805140020 org.eclipse.tptp.monitoring.lta.la.core 4.5.0.v200805270100 org.python.pydev.core 0.9.8.2 org.eclipse.jdt.junit.runtime 3.3.0.v20080603-2000 org.python.pydev.core 1.2.4 org.python.pydev.core 0.9.8.1 org.eclipse.ecf.discovery 2.0.0.v20080623-0046 org.apache.xml.serializer 2.7.1.v200806030322 org.python.pydev.core 0.9.8.7 org.python.pydev.core 0.9.8.6 org.eclipse.gmf.runtime.draw2d.ui.render.awt 1.1.0.v20080603-1553 com.windowtester.eclipse.help 3.5.1.200809042232 org.python.pydev.core 0.9.8.5 org.python.pydev.core 0.9.8.4 org.python.pydev 0.9.8.7 org.eclipse.birt.report.engine.emitter.ppt 2.3.0.v20080606 org.apache.commons.httpclient 3.1.0.v20080605-1935 com.windowtester.runtime.legacy 3.5.0.200806270034 org.eclipse.datatools.enablement.oda.xml.ui 1.1.0.v200805270900 org.python.pydev 0.9.8.3 org.eclipse.mylyn.compatibility 3.0.2.v20080918-1100-e3x org.python.pydev 0.9.8.4 org.python.pydev 0.9.8.5 org.eclipse.wst.common.project.facet.ui 1.3.0.v200805281731 org.eclipse.gmf.tooldef 2.0.0.v20080417-1610 org.python.pydev 0.9.8.6 org.eclipse.core.commands 3.4.0.I20080509-2000 org.python.pydev.jython 1.3.9 org.eclipse.datatools.modelbase.sql.edit 1.0.0.v200805152355 org.python.pydev 0.9.8.2 org.python.pydev 0.9.8.1 org.eclipse.emf.cdo.server.hibernate.libraries 1.0.0.v200806180411 org.eclipse.equinox.p2.ui.admin 1.0.0.v20080522-1735 org.eclipse.wst.common.core 1.1.201.v200806010600 org.eclipse.emf.compare.diff.edit 0.8.0.v200806180301 com.swtdesigner.layout.group.designer 6.7.0.200806270151 org.eclipse.ui.views.properties.tabbed 3.4.0.I20080527-2000 org.python.pydev.jython 1.2.2 org.eclipse.wst.common.emf 1.1.200.v200805140020 com.instantiations.packager.refactoring 2.5.1 com.instantiations.assist.eclipse.fragment.jdt 5.5.1 org.eclipse.datatools.connectivity.dbdefinition.genericJDBC 1.0.0.v200805152355 org.python.pydev.parser 1.0.7 org.eclipse.datatools.sqltools.data.ui 1.1.0.v200805310400 org.eclipse.buckminster.core 1.1.0.r09336 org.eclipse.mylyn.tasks.core 3.0.1.v20080721-2100-e3x org.eclipse.birt.report.designer.ui.samplesview 2.3.0.v20080606 org.eclipse.equinox.launcher 1.0.100.v20080509-1800 org.eclipse.birt.report.item.crosstab.ui 2.3.0.v20080606 org.eclipse.m2m.atl.adt.perspective 2.0.0.v200806101117 javax.servlet.jsp 2.0.0.v200806031607 com.swtdesigner 6.7.1.200809050053 org.eclipse.jet.ui 0.9.0.v20080527 org.eclipse.m2m.qvt.oml.common.ui 1.0.0.v20080611-1330 com.swtdesigner.layout.group 6.7.1.200809050053 org.eclipse.gmf.runtime.common.ui.services.action 1.1.0.v20080507-2230 org.eclipse.emf.search.ecore.ui 0.7.0.v200806130939 org.python.pydev 1.0.5 org.eclipse.emf.workspace.ui 1.2.0.v200805130238 com.instantiations.helpeditor.core.toc 1.3.4.200809042225 org.slf4j.extendable 1.4.3 org.python.pydev.core 1.3.14 org.eclipse.hyades.logging.core 4.3.200.v200804110100 org.eclipse.datatools.enablement.postgresql.ui 1.0.0.v200806060334 org.eclipse.gmf.graphdef 2.0.100.v20080528-1052 org.eclipse.mylyn.help.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.protocol.bittorrent 0.3.0 org.eclipse.birt.report.engine 2.3.0.v20080616 org.eclipse.datatools.connectivity.ui.dse 1.1.0.v200805152355 org.eclipse.mylyn.bugzilla.core 3.0.0.v20080619-1900 org.python.pydev.jython 1.3.4 org.python.pydev 0.9.0 org.eclipse.equinox.preferences.jmx 1.0.0.v20070510 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.1 org.eclipse.datatools.enablement.postgresql.dbdefinition 1.0.0.v200805152355 org.eclipse.m2m.qvt.oml.common.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.eclipse.tptp.monitoring.lta.logui 4.5.0.v200805141427 org.eclipse.birt.report.debug.ui 2.3.0.v200806102 org.eclipse.gmf.runtime.emf.ui 1.1.0.v20080516-1748 org.eclipse.ui.cheatsheets 3.3.100.v20080508 org.python.pydev 1.2.9 org.eclipse.birt.report.engine.emitter.wpml 2.3.0.v20080606 org.eclipse.help.appserver 3.1.300.v20080507 org.python.pydev.parser 1.3.9 com.xored.composer.ui 1.3.4.200806270212 org.eclipse.datatools.sqltools.tabledataeditor 1.0.0.v200805240400 org.eclipse.gmf.runtime.emf.type.core 1.1.0.v20080425-1959 org.python.pydev 1.3.7 com.ibm.icu.base 3.8.1.v20080530 org.python.pydev.ast 1.3.1 org.apache.batik.pdf 1.6.0.v200806031500 org.eclipse.emf.mapping.ui 2.4.0.v200806091234 org.eclipse.net4j.db.derby 1.0.0.v200806180305 org.eclipse.net4j.http.server 1.0.0.v200806180305 org.python.pydev.jython 1.3.17 org.python.pydev.jython 1.0.6 org.python.pydev.ast 1.2.3 org.eclipse.team.svn.sources 0.7.1.I20080612-1500 org.eclipse.uml2.diagram.usecase 0.8.0.v200806112132 org.eclipse.wst.sse.core 1.1.300.v200805221633 org.eclipse.birt.report.designer.ui 2.3.0.v20080606 org.eclipse.jdt.apt.ui 3.3.100.v20080407-1345 com.instantiations.eclipse.debug 5.3.2.200809042027 org.eclipse.gmf.codegen.ui 1.1.0.v20080512-1200 com.instantiations.designer.databinding 6.7.1.200809050053 org.python.pydev.core 1.0.1 com.windowtester.swt.runtime.gef 3.5.0.200806270034 com.instantiations.common.ui 5.3.2.200809042027 org.python.pydev 1.3.19 org.eclipse.ui.forms 3.3.100.v20080611 org.eclipse.birt.data 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase.ase.ui 1.0.1.v200805310538 org.polarion.eclipse.team.svn.connector 2.0.1.I20080612-1500 org.eclipse.emf.common.ui 2.4.0.v200806091234 org.eclipse.datatools.enablement.ibm.informix.dbdefinition 1.0.0.v200805152355 org.eclipse.wst.xsdeditor.doc.user 1.0.400.v200805150028 org.eclipse.emf.mint.doc 0.7.0.v200806172223 org.eclipse.buckminster.generic 1.0.0.r09319 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.1 org.eclipse.emf.validation.examples 1.2.0.v200805280204 org.eclipse.team.svn.core 0.7.1.I20080612-1500 org.python.pydev.ast 1.2.4 org.eclipse.emf.cdo.server.hibernate 1.0.0.v200806180411 org.python.pydev.jython 1.3.8 org.eclipse.gmf.xpand 1.1.0.v20080528-1052 org.eclipse.datatools.sqltools.data.core 1.0.0.v200805152355 org.eclipse.emf.ecoretools 0.8.0.v200806130600 org.python.pydev.core 1.3.18 org.eclipse.gmf.runtime.common.core 1.1.0.v20080425-1959 org.eclipse.emf 2.4.0.v200806091234 org.eclipse.emf.ecoretools.properties 0.8.0.v200806130600 org.python.pydev.core 1.2.7 org.python.pydev.parser 0.9.8 org.eclipse.datatools.enablement.ibm.db2.luw.ui 1.0.0.v200805160737 org.eclipse.mylyn.team.ui 3.0.0.v20080619-1900 org.eclipse.help.base 3.3.100.v20080617 org.eclipse.m2m.atl.doc 2.0.0.v200806101117 org.eclipse.net4j.examples 1.0.0.v200806180305 org.eclipse.birt.data.aggregation 2.3.0.v20080606 org.eclipse.gmf.examples 1.0.100.v20080425-1959 org.eclipse.emf.search.common 0.7.0.v200806130939 org.python.pydev.ast 1.3.17 org.eclipse.ecf.provider.filetransfer.ssl 1.0.0.v20080611-1715 org.python.pydev.core 1.0.3 org.eclipse.team.svn.core.nl1 0.7.1.I20080612-1500 org.eclipse.emf.cdo.server.hibernate.teneo 1.0.0.v200806180411 org.eclipse.wst.validation.ui 1.2.1.v200807292117 org.python.pydev.parser 1.0.3 org.python.pydev.ast 1.3.6 org.eclipse.search 3.4.0.v20080603-2000 org.eclipse.jet 0.9.0.v20080527 org.python.pydev 1.3.2 org.python.pydev.jython 1.2.6 org.python.pydev.parser 1.3.14 org.eclipse.datatools.oda.cshelp 1.0.0.v200805152355 org.eclipse.jdt.junit 3.4.0.v20080603-2000 org.eclipse.datatools.sqltools.debugger.core 1.0.0.v200805152355 org.mortbay.jetty 5.1.14.v200806031611 org.eclipse.equinox.p2.garbagecollector 1.0.0.v20080506-1939 org.eclipse.m2m.atl.adt.debug 2.0.0.v200806101117 org.eclipse.equinox.jmx.client 1.0.0.v20070515 org.python.pydev.core 1.3.5 org.eclipse.mylyn.bugzilla.core 3.0.1.v20080721-2100-e3x org.python.pydev.parser 0.9.8.3 org.python.pydev.parser 0.9.8.2 org.python.pydev.parser 0.9.8.1 org.eclipse.osgi.services 3.1.200.v20071203 org.python.pydev 1.0.4 org.eclipse.hyades.lta.logging.adapter 4.5.0.v200806121215 org.eclipse.datatools.sqltools.sqleditor 1.0.0.v200805152355 org.python.pydev.parser 0.9.8.7 org.python.pydev.parser 0.9.8.6 org.eclipse.gmf.runtime.emf.core 1.1.0.v20080425-1959 org.python.pydev.parser 0.9.8.5 org.eclipse.core.contenttype 3.3.0.v20080604-1400 org.eclipse.ecf.datashare 1.3.0.v20080623-0046 org.python.pydev.parser 0.9.8.4 org.eclipse.tptp.platform.common.ui 4.4.100.v200806110100 org.junit 3.8.2.v20080602-1318 com.instantiations.assist.eclipse.coverage 5.5.0.200806270255 javax.activation 1.1.0.v200806101325 com.instantiations.assist.eclipse.scheduler 5.5.1 javax.management 1.2.0.v200803061811 org.eclipse.emf.edit 2.4.0.v200806091234 org.eclipse.ecf.provider.discovery 2.0.0.v20080623-0046 org.eclipse.birt.chart.device.pdf 2.3.0.v20080417 org.eclipse.equinox.wireadmin 1.0.0.v20080407 org.python.pydev.ast 1.0.8 org.eclipse.net4j.buddies.server 1.0.0.v200806180305 org.eclipse.wst.internet.cache 1.0.301.v200805140020 com.windowtester.runtime 3.5.0.200806270034 org.mx4j.jmx 3.0.3.v200802291451 org.eclipse.pde.ui 3.4.0.v20080530 org.eclipse.ocl 1.2.0.v200806091438 org.eclipse.birt.cshelp 2.3.0.v20080617 org.eclipse.emf.query.doc 1.2.0.v200805130238 org.eclipse.pde.runtime 3.4.0.v20080530-1200 org.apache.axis 1.4.0.v200807230600 org.apache.log4j 1.2.13.v200806030600 org.eclipse.ui.intro 3.2.200.v20080610 com.instantiations.assist.eclipse.pattern 5.5.1 com.xored.swt.composer 1.3.4.200806270212 org.apache.batik.ext.awt 1.6.0.v200805290154 org.eclipse.emf.cdo.ui 1.0.0.v200806180411 org.eclipse.jface 3.4.0.I20080606-1300 com.windowtester.swt.runtime.gef 3.5.1.200809042232 org.eclipse.gmf.runtime.emf.type.ui 1.1.0.v20080425-1959 org.eclipse.uml2.uml 2.2.0.v200805141133 org.objectweb.asm 3.0.0.v200803061811 org.python.pydev.core 1.1.0 org.eclipse.ecf.discovery.ui 2.0.0.v20080623-0046 org.python.pydev 1.3.14 org.eclipse.gmf.runtime.diagram.ui.printing 1.1.0.v20080501-1739 org.eclipse.mylyn.ide.ant 3.0.2.v20080918-1100-e3x org.eclipse.xsd.example.installer 1.0.0.v200806091234 org.eclipse.uml2.diagram.examples.profile 0.8.0.v200806112132 org.eclipse.ui.intro.universal 3.2.200.v20080508 org.python.pydev.ast 0.9.7.99 org.eclipse.emf.codegen 2.4.0.v200806091234 org.eclipse.equinox.p2.metadata 1.0.0.v20080514-1900 org.eclipse.ecf.example.collab 1.3.0.v20080623-0046 org.python.pydev.parser 1.2.4 org.eclipse.birt.report.engine.emitter.html 2.3.0.v20080606 org.python.pydev.jython 1.3.16 org.eclipse.osgi 3.4.0.v20080605-1900 org.eclipse.emf.databinding 1.0.0.v200806091234 org.eclipse.help 3.3.100.v20080610 org.eclipse.net4j.db.hsqldb 1.0.0.v200806180305 org.eclipse.gmf.runtime.diagram.ui.dnd 1.1.0.v20080425-1959 org.eclipse.birt.report.model 2.3.0.v20080605 org.eclipse.datatools.enablement.finfo 1.5.1.v200805152355 org.eclipse.jsch.ui 1.1.100.I20080415 org.python.pydev 1.3.10 org.python.pydev.parser 1.3.6 org.eclipse.emf.mapping.ecore.editor 2.4.0.v200806091234 org.eclipse.datatools.sqltools.common.ui 1.0.0.v200805152355 org.eclipse.birt.report.engine.emitter.pdf 2.3.0.v20080606 org.python.pydev 1.2.8 com.instantiations.packager.help 2.5.1 org.eclipse.equinox.p2.directorywatcher 1.0.0.v20080505-1850 org.eclipse.draw2d 3.4.0.v20080529 org.eclipse.draw2d.source 3.4.0.v20080115-33-7w3119163_ org.eclipse.ecf.ui 2.0.0.v20080623-0046 org.eclipse.birt.report.data.oda.jdbc.dbprofile 2.3.0.v20080606 org.eclipse.equinox.security.win32.x86 1.0.0.v20080529-1600 org.eclipse.wst.xml.ui 1.0.400.v200806051910 org.eclipse.jdt.ui 3.4.0.v20080603-2000 org.eclipse.equinox.p2.ui 1.0.0.v20080530-1237 org.eclipse.hyades.lta.logging.adapter.ui 4.5.0.v200805132041 org.eclipse.mylyn.monitor.ui 3.0.0.v20080619-1900 org.python.pydev 0.9.1 org.eclipse.emf.ecore.sdo.doc 2.4.0.v200806091234 com.instantiations.eclipse.ast.editor 5.5.1 org.eclipse.ant.ui 3.3.0.v20080529 org.python.pydev.core 1.3.13 org.eclipse.gef.doc.isv 3.4.0.v20080606 org.apache.xml.resolver 1.2.0.v200806030312 org.eclipse.datatools.enablement.ibm.db2.iseries.dbdefinition 1.0.0.v200806100223 org.eclipse.birt 2.3.0.v20080304 org.eclipse.equinox.security 1.0.0.v20080512-1800 com.instantiations.tools 5.3.2.200809042027 org.eclipse.jdt.core.manipulation 1.2.0.v20080603-2000 org.eclipse.gmf.runtime.diagram.ui.printing.render 1.1.0.v20080425-1959 org.eclipse.net4j.buddies.ui 1.0.0.v200806180305 org.eclipse.emf.codegen.ui 2.4.0.v200806091234 org.eclipse.team.svn 0.7.1.I20080612-1500 org.eclipse.wst.command.env.infopop 1.0.100.v200805301544 org.eclipse.datatools.enablement.hsqldb.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.runtime.common.ui.services.properties 1.1.0.v20080425-1959 org.eclipse.emf.cheatsheets 2.4.0.v200806091234 org.eclipse.ecf.presence.collab.ui 1.2.0.v20080623-0046 org.eclipse.update.core 3.2.200.v20080515 org.eclipse.wst.command.env.core 1.0.204.v200805140020 org.apache.batik.swing 1.6.0.v200805290154 org.eclipse.birt.report.designer.samplereports 2.3.0.v20080606 org.python.pydev.parser 1.0.8 org.eclipse.xsd 2.4.0.v200806091234 com.instantiations.assist.eclipse.fragment.jdt 5.5.0 org.eclipse.emf.transaction 1.2.0.v200805130238 org.eclipse.mylyn.team.cvs 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.ui 1.0.0.v20080611-1330 org.eclipse.emf.validation.source 1.2.0.v200805130238-35-9oA55S5J8H5ADM org.eclipse.datatools.enablement.hsqldb 1.0.0.v200805152355 org.eclipse.wst.common.uriresolver 1.1.301.v200805140415 org.eclipse.equinox.jsp.jasper 1.0.100.v20080427-0830 org.eclipse.osgi.util 3.1.300.v20080303 org.eclipse.datatools.connectivity.oda.consumer 3.1.2.v200805230718 org.eclipse.emf.compare.source 0.8.0.v200806180301 org.python.pydev.core 1.3.19 org.eclipse.emf.query.examples 1.2.0.v200805130238 org.eclipse.buckminster.runtime 1.1.0.r09338 org.eclipse.datatools.enablement.sybase.asa.dbdefinition 1.0.0.v200805240040 org.eclipse.datatools.sqltools.sql 1.0.0.v200805152355 org.apache.batik.svggen 1.6.0.v200805290154 org.eclipse.buckminster.cvs 1.0.0.r09319 org.python.pydev.core 1.2.6 org.eclipse.equinox.simpleconfigurator 1.0.0.v20080604 org.eclipse.help.ui 3.3.100.v20080521 org.apache.batik.dom 1.6.0.v200805290154 org.python.pydev.parser 1.1.0 org.eclipse.ecf.server.generic 1.2.0.v20080623-0046 com.windowtester.swt.runtime.win32 3.5.0.200806270034 org.eclipse.emf.cdo.examples 1.0.0.v200806180411 org.eclipse.ecf.provider.remoteservice 1.3.0.v20080623-0046 org.eclipse.gmf.runtime.notation.edit 1.1.0.v20080507-1326 org.eclipse.core.filesystem 1.2.0.v20080604-1400 org.eclipse.m2m.qvt.oml.runtime.ui 1.0.0.v20080611-1330 org.eclipse.emf.cdo.server.hibernate.source 1.0.0.v200806180411 org.python.pydev.jython 1.3.7 org.eclipse.gmf.codegen.edit 2.1.0.v20080610-1132 org.eclipse.buckminster.pde 1.1.0.r09351 org.python.pydev.ast 1.2.5 org.python.pydev.core 1.0.2 org.python.pydev.ast 1.3.16 org.apache.batik.parser 1.6.0.v200805290154 org.python.pydev.parser 1.0.2 org.eclipse.wst.common.infopop 1.0.100.v200805301550 org.eclipse.ecf.remoteservice 2.0.0.v20080623-0046 org.python.pydev 1.3.1 org.python.pydev.jython 1.2.5 org.eclipse.emf.mapping 2.4.0.v200806091234 org.eclipse.emf.cdo.server.hibernate.id 1.0.0.v200806180411 com.windowtester.runtime.legacy 3.5.1.200809042232 org.python.pydev.ast 1.3.7 org.eclipse.datatools.enablement.oracle 1.0.0.v200805152355 org.python.pydev.parser 1.3.15 org.eclipse.emf.importer 2.4.0.v200806091234 org.eclipse.birt.example 2.3.0.v20080304 org.eclipse.birt.report.designer.ui.lib 2.3.0.v20080606 org.eclipse.emf.cdo.server.source 1.0.0.v200806180411 org.eclipse.gmf.runtime.common.ui.services 1.1.0.v20080612-1229 org.eclipse.datatools.sqltools.db.generic 1.0.0.v200805152355 org.eclipse.net4j 1.0.0.v200806180305 org.eclipse.jdt 3.4.0.v20080603-2000 org.eclipse.emf.cdo.source 1.0.0.v200806180411 org.eclipse.datatools.connectivity 1.1.0.v200805160228 com.instantiations.assist.eclipse.scheduler 5.5.0 org.eclipse.emf.ecore.sdo.source 2.4.0.v200806091234 org.eclipse.wst.sse.doc.user 1.1.0.v200805211530 org.python.pydev 0.9.7.99 org.eclipse.emf.transaction.source 1.2.0.v200805130238-23-8s733I3C59379I org.w3c.dom.svg 1.1.0.v200806040011 org.python.pydev.core 1.3.4 javax.xml.rpc 1.1.0.v200806030420 org.eclipse.ocl.uml.source 1.2.0.v200805130238-11-7w311916241349 com.instantiations.eclipse.ui 5.3.2.200806270030 org.eclipse.jface.text 3.4.0.v20080603-2000 org.apache.batik.xml 1.6.0.v200805290154 org.python.pydev 1.0.3 org.eclipse.gmf.bridge.ui.dashboard 2.0.0.v20080417-1610 org.apache.lucene 1.9.1.v20080530-1600 org.eclipse.emf.query.ocl 1.2.0.v200805130238 org.eclipse.uml2.uml.resources 2.2.0.v200805131030 org.eclipse.ecf.provider.r_osgi 2.0.0.v20080623-0046 org.eclipse.emf.importer.java 2.4.0.v200806091234 org.python.pydev.debug 1.3.20 org.eclipse.emf.ecore.xmi 2.4.0.v200806091234 org.python.pydev.mylyn 0.3.0 com.instantiations.assist.eclipse.pattern 5.5.0 org.eclipse.emf.source 2.4.0.v200806091234 org.eclipse.ui.browser 3.2.200.v20080507 org.eclipse.tptp.lta.sdb.epi 4.5.0.v200805132041 org.eclipse.net4j.doc 1.0.0.v200806180305 org.eclipse.gmf.bridge 1.1.0.v20080528-1052 com.instantiations.assist.eclipse.admin 5.5.1 org.eclipse.ecf.presence 1.3.0.v20080623-0046 org.eclipse.jet.editor 0.9.0.v20080226 org.eclipse.emf.mint 0.7.0.v200806172223 org.eclipse.ecf.provider 1.3.0.v20080623-0046 com.instantiations.assist.eclipse.core.ant 5.5.0 org.apache.axis 1.4.0.v200806030120 org.eclipse.equinox.p2.metadata.repository 1.0.0.v20080604 com.ibm.icu 3.8.1.v20080530 org.eclipse.gmf.runtime.diagram.ui.properties 1.1.0.v20080603-1553 org.eclipse.team.svn.mylyn.source 0.7.1.I20080612-1500 org.eclipse.ecf.provider.datashare 1.3.0.v20080623-0046 org.eclipse.birt.report.data.oda.sampledb 2.3.0.v20080606 org.eclipse.m2m.atl.drivers.emf4atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.providers.ide 1.1.0.v20080425-1959 org.python.pydev 0.8.0 org.eclipse.datatools.connectivity.sqm.server.ui 1.1.0.v200806050117 com.nordea.cd.dev.plugin.stubbuilder 1.0.2 org.eclipse.emf.mapping.xsd2ecore 2.4.0.v200806091234 org.python.pydev.parser 1.2.5 org.eclipse.xsd.mapping.editor 2.4.0.v200806091234 org.python.pydev.jython 1.3.15 org.eclipse.gmf.xpand.editor 1.0.0.v20080425-1959 org.eclipse.tptp.platform.lta.common 4.5.0.v200806050100 org.eclipse.buckminster.pde.ui 1.0.0.r09319 org.eclipse.emf.validation.ocl 1.2.0.v200805130238 org.eclipse.ui.console 3.3.0.v20080529-1300 org.eclipse.net4j.ui 1.0.0.v200806180305 org.eclipse.emf.workspace 1.2.0.v200805130238 org.python.pydev.ast 0.9.8.6 org.python.pydev.ast 0.9.8.5 org.eclipse.emf.teneo.annotations 1.0.0.v200806111928 org.python.pydev.ast 0.9.8.4 org.eclipse.ui.net 1.0.0.I20080605 org.python.pydev.ast 0.9.8.3 org.eclipse.net4j.db.source 1.0.0.v200806180305 org.eclipse.zest.core 1.0.0.v20080115 org.python.pydev.ast 0.9.8.2 org.eclipse.tptp.lta.log.epi 4.5.0.v200805132041 org.python.pydev.ast 0.9.8.1 org.python.pydev 1.3.13 org.eclipse.equinox.app 1.1.0.v20080421-2006 org.eclipse.equinox.p2.metadata.generator 1.0.0.v20080604 org.python.pydev 1.2.7 org.eclipse.emf.ocl.examples 1.2.0.v200805130238 org.eclipse.mylyn.jira.core 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.commons.net 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql.query 1.0.1.v200805152355 org.eclipse.datatools.sqltools.plan 1.0.0.v200805152355 com.swtdesigner.help 6.7.1.200809050053 org.eclipse.ecf.ssl 1.0.0.v20080611-1715 org.eclipse.team.cvs.core 3.3.100.I20080605 org.python.pydev.ast 0.9.8 com.instantiations.helpeditor.core.toc 1.3.4.200806270212 org.eclipse.core.databinding 1.1.0.I20080527-2000 org.eclipse.tptp.platform.common 4.3.200.v200805300100 org.eclipse.net4j.util.ui 1.0.0.v200806180305 org.eclipse.mylyn.commons.core 3.0.0.v20080619-1900 org.python.pydev 1.3.9 org.eclipse.emf.search.common.ui 0.7.0.v200806130939 org.eclipse.m2m.atl.engine.emfvm 2.0.0.v200806101117 org.eclipse.uml2.diagram.csd 0.8.0.v200806112132 org.python.pydev.parser 1.3.7 org.eclipse.team.svn.ui 0.7.1.I20080612-1500 org.python.pydev.core 1.3.12 org.eclipse.datatools.modelbase.sql.query.edit 1.0.0.v200806070329 com.instantiations.packager.core 2.5.1 com.windowtester.swing.runtime 3.5.0.200806270034 org.eclipse.update.ui 3.2.100.v20080318 org.apache.commons.codec 1.2.0.v20080530-1550 org.eclipse.mylyn.bugzilla.core 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.editor.ui 1.0.0.v20080611-1330 org.eclipse.m2m.qvt.oml.samples 1.0.0.v20080611-1330 org.eclipse.mylyn.context.core 3.0.0.v20080619-1900 org.eclipse.xsd.source 2.4.0.v200806091234 org.eclipse.gmf.runtime.diagram.core 1.1.0.v20080425-1959 org.eclipse.m2m.atl.drivers.uml24atl 2.0.0.v200806101117 com.instantiations.eclipse.util 5.3.2.200809042027 org.eclipse.emf.ecore.sdo 2.4.0.v200806091234 com.instantiations.eclipse.startup 5.3.2.200809042027 org.eclipse.gmf 1.0.0.v20080425-1959 org.python.pydev 0.9.2 org.apache.batik.util.gui 1.6.0.v200805290154 org.python.pydev.ast 0.9.8.7 com.nordea.cd.dev.plugin.wsdl2java 1.0.2 org.eclipse.datatools.enablement.sybase.models 1.0.0.v200805152355 org.python.pydev.ast 1.0.1 org.eclipse.emf.compare.diff 0.8.0.v200806180301 org.eclipse.birt.report.designer 2.3.0.v200806102 org.eclipse.equinox.http.registry 1.0.100.v20080427-0830 ch.ethz.iks.r_osgi.remote 1.0.0.RC2_v20080623-0046 org.eclipse.gmf.graphdef.codegen.ui 1.0.100.v20080425-1959 org.eclipse.m2m.qvt.oml.editor.source 1.0.0.v20080611-1330-1--7w3119172202441 org.sat4j.pb 2.0.0.v20080602 org.eclipse.wst.validation 1.2.1.v200807292117 org.apache.batik.util 1.6.0.v200805290154 org.eclipse.equinox.transforms.hook 1.0.0.v20080610 org.eclipse.emf.teneo.hibernate 1.0.0.v200806111928 org.eclipse.uml2.examples 2.1.0.v200805131030 org.eclipse.mylyn.java.tasks 3.0.2.v20080918-1100-e3x org.eclipse.equinox.preferences 3.2.200.v20080421-2006 com.instantiations.assist.eclipse.fragment.swt 5.5.0 org.eclipse.ocl.doc 1.2.0.v200805130238 org.eclipse.jdt.apt.core 3.3.100.v20080513-1235 org.eclipse.birt.report.engine.fonts 2.3.0.v20080606 org.eclipse.mylyn.monitor.ui 3.0.2.v20080918-1100-e3x org.eclipse.gmf.tooldef.edit 2.0.0.v20080610-1132 org.eclipse.gmf.runtime.draw2d.ui.render 1.1.0.v20080507-2230 com.windowtester.swt.platform.ext 3.5.0.200806270034 org.eclipse.ecf.example.clients 1.3.0.v20080623-0046 org.eclipse.core.net 1.1.0.I20080604 org.eclipse.wst.xsd.core 1.1.301.v200807240448 org.eclipse.datatools.connectivity.oda.flatfile 3.0.6.v200805261930 org.python.pydev.refactoring 1.3.20 org.python.pydev.parser 1.0.1 org.python.pydev.ast 1.3.19 org.eclipse.equinox.registry.jmx 1.0.0.v20080610-1530 com.instantiations.eclipse.model.jsp 5.5.0 org.eclipse.mylyn.context.ui 3.0.2.v20080918-1100-e3x org.python.pydev.core 1.0.5 org.eclipse.hyades.lta.resources.database 4.5.0.v200805271330 org.python.pydev 0.6.1 org.python.pydev.parser 1.3.12 org.eclipse.equinox.p2.console 1.0.0.v20080514-1900 org.eclipse.mylyn.commons.net 3.0.1.v20080721-2100-e3x org.eclipse.net4j.jms.api 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.lexer 1.0.1.v200805152355 org.python.pydev.ast 1.3.4 org.python.pydev 1.3.4 org.python.pydev.jython 1.2.8 org.python.pydev 0.8.5 org.python.pydev 0.5.3 org.eclipse.wst.sse.ui 1.1.1.v200808141919 org.eclipse.emf.query 1.2.0.v200805130238 org.eclipse.core.runtime.compatibility 3.2.0.v20071008 org.eclipse.gmf.runtime.notation 1.1.0.v20080507-1326 org.eclipse.birt.report.data.oda.sampledb.ui 2.3.0.v20080606 org.python.pydev.ast 1.2.6 com.instantiations.eclipse.mail.ui 5.5.1 org.eclipse.zest.layouts 1.0.0.v20080226 org.python.pydev.jython 1.3.6 org.eclipse.net4j.jms.admin 1.0.0.v200806180305 org.eclipse.core.databinding.beans 1.1.0.I20080508-2000a org.python.pydev 1.1.0 org.python.pydev.core 1.3.20 org.eclipse.gmf.runtime.emf.commands.core 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.common.ui.services.dnd.ide 1.1.0.v20080425-1959 org.eclipse.datatools.connectivity.apache.derby 1.0.1.v200805152355 org.python.pydev.core 1.2.9 org.eclipse.mylyn.context.core 3.0.2.v20080918-1100-e3x org.eclipse.equinox.p2.artifact.repository 1.0.0.v20080609-0850 org.eclipse.gef 3.4.0.v20080526 org.eclipse.gmf.runtime.common.ui 1.1.0.v20080512-1200 org.eclipse.emf.ecoretools.tabbedproperties 0.8.0.v200806130600 com.instantiations.assist.eclipse.core.ant 5.5.1 org.eclipse.emf.ecore.change 2.4.0.v200806091234 org.eclipse.jet.doc 0.9.0.v20080522 org.eclipse.emf.transaction.examples 1.2.0.v200806051817 org.eclipse.gmf.runtime.draw2d.ui 1.1.0.v20080610-1132 org.eclipse.equinox.jmx.server.rmi 1.0.0.v20070510 org.eclipse.ecf.examples.remoteservices.common 1.0.100.v20080623-0046 org.eclipse.wst.standard.schemas 1.0.102.v200807220733 org.eclipse.equinox.p2.jarprocessor 1.0.0.v20080514-1900 org.eclipse.birt.report.data.oda.jdbc 2.3.0.v20080610 com.windowtester.runner 3.5.0.200806270034 com.windowtester.swt.codegen 3.5.1.200809042232 org.eclipse.emf.cdo.tests.model2.edit 1.0.0.v200806180411 javax.wsdl 1.5.1.v200806030408 org.eclipse.datatools.enablement.sap.maxdb.ui 1.0.0.v200805152355 org.eclipse.equinox.launcher.win32.win32.x86 1.0.100.v20080509-1800 org.eclipse.birt.core 2.3.0.v20080606 javax.servlet 2.5.0.v200806031605 org.eclipse.uml2.codegen.ecore.ui 1.4.0.v200805131030 com.windowtester.swt.recorder 3.5.0.200806270034 org.eclipse.mylyn 3.0.1.v20080721-2100-e3x org.eclipse.uml2.search.ocl 0.7.0.v200806130939 org.python.pydev.core 1.3.3 org.eclipse.core.jobs 3.4.0.v20080512 org.python.pydev.core 0.9.5 org.eclipse.emf.validation.ui.ide 1.2.0.v200805130238 org.python.pydev 1.0.2 org.eclipse.wst.validation.ui 1.2.0.v200805262011 com.windowtester.swing.recorder 3.5.1.200809042232 com.instantiations.helpeditor.help 1.3.4.200809042225 org.eclipse.gmf.map.edit 2.1.0.v20080610-1132 org.eclipse.emf.ecore.edit 2.4.0.v200806091234 org.eclipse.datatools.enablement.msft.sqlserver.dbdefinition 1.0.0.v200805152355 org.mortbay.jetty.util 6.1.7.v200806031612 org.eclipse.datatools.sqltools.parsers.sql 1.0.1.v200805152355 org.eclipse.xsd.doc 2.4.0.v200806091234 org.eclipse.jdt.doc.isv 3.4.0.v20080612-1340 org.eclipse.jdt.apt.pluggable.core 1.0.100.v20080407-1345 org.eclipse.ecf.provider.bittorrent 0.3.0.v20080623-0046 org.eclipse.mylyn.monitor.ui 3.0.1.v20080721-2100-e3x org.python.pydev.jython 1.0.4 org.eclipse.wst.common.project.facet.ui 1.3.1.v200807301432 javax.xml.bind 2.0.0.v20080604-1500 org.apache.derby.core 10.3.1.4 org.eclipse.birt.report.debug.core 2.3.0.v200806102 org.python.pydev.parser 1.3.4 org.eclipse.jdt.debug.ui 3.3.0.v20080603 org.python.pydev.help 1.3.20 org.python.pydev 1.3.12 org.eclipse.gef.examples.ui.pde 3.4.0.v20080226 org.eclipse.ecf.provider.jmdns 2.0.0.v20080623-0046 org.eclipse.xsd.editor 2.4.0.v200806091234 org.python.pydev 1.2.6 org.eclipse.buckminster.generic.ui 1.0.0.r09319 org.eclipse.emf.ocl 1.1.100.v200805130238 org.eclipse.emf.search.ecore 0.7.0.v200806130939 org.eclipse.wst.common.frameworks.ui 1.1.200.v200805221400 org.eclipse.emf.ecoretools.doc 0.8.0.v200806130600 org.eclipse.wst.sse.ui.infopop 1.0.200.v200805301545 org.eclipse.tptp.platform.common.ui.trace 4.3.200.v200805290100 org.eclipse.net4j.jms.server 1.0.0.v200806180305 org.eclipse.ecf.filetransfer.ui 1.4.0.v20080623-0046 org.eclipse.birt.chart.device.swt 2.3.0.v20080522 org.eclipse.wst.xsd.ui 1.2.101.v200806051910 org.eclipse.emf.cdo.examples.source 1.0.0.v200806180411 org.eclipse.birt.report.designer.ui.lib.explorer 2.3.0.v20080606 org.mozilla.rhino 1.6.7.v20080214 org.python.pydev 1.3.16 org.eclipse.buckminster.ant 1.1.0.r09351 org.eclipse.equinox.metatype 1.0.0.v20070827 org.eclipse.m2m.atl.adt.wizard 2.0.0.v200806101117 org.eclipse.wst.command.env 1.0.305.v200805281530 org.eclipse.swt.jmx 1.0.0.v20070510 org.eclipse.emf.cdo.common 1.0.0.v200806180411 org.eclipse.ecf.examples.remoteservices.client 1.0.100.v20080623-0046 org.python.pydev.jython 1.3.14 org.python.pydev.parser 1.2.6 org.eclipse.emf.ecoretools.diagram.ui.outline 0.8.0.v200806130600 org.eclipse.emf.teneo.eclipse 1.0.0.v200806111928 org.eclipse.emf.cdo.tests.mango 1.0.0.v200806180411 org.eclipse.net4j.buddies.common 1.0.0.v200806180305 org.eclipse.net4j.buddies.chat 1.0.0.v200806180305 org.eclipse.mylyn.bugzilla.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.0 org.eclipse.datatools.enablement.sybase.ase.dbdefinition 1.0.0.v200805240040 org.apache.ant 1.7.0.v200803061910 org.eclipse.datatools.connectivity.oda.design 3.0.6.v200805152355 org.eclipse.emf.ocl.doc 1.1.100.v200805130238 org.eclipse.tptp.lta.gla.ui.epi 4.5.0.v200805160100 org.eclipse.equinox.jmx.server 1.0.0.v20071015 org.eclipse.wst.xml.core 1.1.300.v200806051910 org.eclipse.datatools.connectivity.oda.template.ui 3.0.6.v200805152355 org.python.pydev.ast 1.0.2 org.eclipse.birt.report.data.adapter 2.3.0.v20080606 org.eclipse.birt.chart.runtime 2.3.0.v20080304 org.eclipse.net4j.ui.source 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.query 1.0.1.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.1 org.eclipse.wst.dtd.ui 1.0.300.v200805152207 org.eclipse.mylyn.java.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.connectivity.oda.design.ui 3.0.6.v200805152355 org.eclipse.birt.report.designer.core 2.3.0.v200806102 org.eclipse.buckminster.jdt 1.0.0.r09319 org.eclipse.buckminster.p4 1.0.0.r09319 org.eclipse.ecf.core.source 2.0.0.v20080623-0046 org.eclipse.birt.report.runtime 2.3.0.v20080304 org.python.pydev.ast 1.1.0 com.windowtester.swt.runtime 3.5.1.200809042232 org.eclipse.uml2.doc 2.2.0.v200805201350 org.eclipse.mylyn.context.core 3.0.1.v20080721-2100-e3x org.eclipse.gmf.runtime.notation.providers 1.1.0.v20080425-1959 org.eclipse.tptp.platform.lta.log.doc.user 4.5.0.v200805132041 org.eclipse.team.svn.help 0.7.1.I20080612-1500 org.python.pydev 0.9.3 com.windowtester.swt.runtime.win32 3.5.1.200809042232 org.eclipse.m2m.qvt.oml.ocl.emf.libraries 1.0.0.v20080611-1330 org.eclipse.hyades.lta.analysis.engine 4.5.0.v200805271330 org.python.pydev.core 1.3.11 org.eclipse.datatools.connectivity.sqm.core 1.0.1.v200806041052 org.eclipse.equinox.jmx.server.xmlrpc 1.0.0.v20070608 org.eclipse.platform 3.3.100.v200806172000 org.eclipse.ui 3.4.0.I20080610-1200 org.eclipse.net4j.buddies.chat.ui 1.0.0.v200806180305 org.eclipse.emf.search.ecore.ocl 0.7.0.v200806130939 org.eclipse.gmf.codegen 2.1.0.v20080610-1132 org.eclipse.emf.teneo 1.0.0.v200806111928 org.eclipse.datatools.connectivity.oda.flatfile.ui 3.0.6.v200805261930 org.python.pydev.core 1.0.4 org.eclipse.equinox.p2.extensionlocation 1.0.0.v20080523-0001 org.eclipse.buckminster.remote.cloudsmith 1.0.0.r09319 org.python.pydev.ast 1.3.18 org.eclipse.birt.report.engine.dataextraction.csv 2.3.0.v200806102 org.eclipse.equinox.log 1.1.0.v20080414 org.python.pydev.parser 1.3.13 org.python.pydev 1.3.3 com.windowtester.eclipse.help 3.5.0.200806270034 org.python.pydev.jython 1.2.7 org.eclipse.m2m.qvt.oml.emf.util.ui 1.0.0.v20080611-1330 org.eclipse.gmf.runtime.common.ui.printing 1.1.0.v20080425-1959 org.python.pydev.ast 1.3.5 org.eclipse.uml2.uml.ecore.exporter 2.2.0.v200805131030 org.eclipse.equinox.event 1.1.0.v20080225 org.eclipse.epp.usagedata.gathering 1.0.0.R200806162215 com.instantiations.assist.eclipse.fragment.swt 5.5.1 org.eclipse.emf.cdo.server 1.0.0.v200806180411 org.eclipse.core.filesystem.win32.x86 1.1.0.v20080604-1400 org.eclipse.datatools.enablement.ibm.db2.zseries 1.0.0.v200805152355 com.windowtester.swt.platform.ext 3.5.1.200809042232 org.eclipse.birt.chart.examples 2.3.0.v20080612 org.eclipse.gmf.bridge.ui 1.1.100.v20080417-1610 org.eclipse.emf.doc 2.4.0.v200806091234 org.eclipse.emf.ecoretools.diagram 0.8.0.v200806130600 org.eclipse.ecf.provider.filetransfer.efs 1.5.0.v20080623-0046 org.eclipse.mylyn.commons.net 3.0.0.v20080619-1900 org.python.pydev.core 1.2.8 org.eclipse.datatools.modelbase.dbdefinition 1.0.0.v200805152355 javax.management.remote 1.0.0.v200803061811 org.eclipse.net4j.util 1.0.0.v200806180305 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.0 org.eclipse.ui.navigator.resources 3.3.100.I20080606-1300 org.apache.lucene.analysis 1.9.1.v20080530-1600 org.python.pydev.jython 1.3.5 org.eclipse.m2m.atl.adt.builder 2.0.0.v200806101117 org.eclipse.mylyn.monitor.core 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.2.7 com.instantiations.eclipse.mail.ui 5.5.0 org.eclipse.tptp.platform.models.lta 4.5.0.v200805132041 org.eclipse.mylyn.commons.core 3.0.1.v20080721-2100-e3x org.eclipse.team.svn.nl1 0.7.1.I20080612-1500 org.eclipse.birt.report.data.oda.jdbc.dbprofile.ui 2.3.0.v20080606 org.eclipse.pde 3.4.0.v20080603 org.eclipse.net4j.jms.server.jdbc 1.0.0.v200806180305 org.eclipse.pde.doc.user 3.3.0.v20080611-1530 org.eclipse.core.runtime.compatibility.auth 3.2.100.v20070502 org.eclipse.tptp.platform.iac.administrator 4.4.100.v200806120100 org.eclipse.emf.importer.ecore 2.4.0.v200806091234 org.eclipse.equinox.jmx.client.xmlrpc 1.0.0.v20070515 org.eclipse.equinox.jmx.common 1.0.0.v20070510 org.eclipse.datatools.enablement.ibm.informix.ui 1.0.0.v200805160737 com.instantiations.installer 2.5.1 org.eclipse.hyades.lta.logging.parsers 4.5.0.v200805271330 org.eclipse.uml2.diagram.profile 0.8.0.v200806112132 org.eclipse.datatools.enablement.jdt.classpath 1.0.1.v200805152355 org.eclipse.emf.validation.ocl.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.net4j.buddies 1.0.0.v200806180305 net.sourceforge.lpg.lpgjavaruntime 1.1.0.v200803061910 org.eclipse.emf.ecore.editor 2.4.0.v200806091234 org.apache.commons.lang 2.3.0.v200803061910 org.eclipse.ocl.uml 1.2.0.v200805130238 org.eclipse.emf.mapping.ecore2ecore 2.4.0.v200806091234 com.swtdesigner.fragment.jdt.core 6.7.0.200806270151 org.eclipse.ecf.provider.xmpp 2.0.0.v20080623-0046 org.eclipse.wst.common.modulecore 1.1.201.v200808071700 org.eclipse.mylyn.jira.ui 3.0.2.v20080918-1100-e3x org.eclipse.draw2d.doc.isv 3.4.0.v20080606 org.python.pydev.core 1.3.2 org.eclipse.mylyn.compatibility 3.0.0.v20080619-1900 org.eclipse.buckminster.maven 1.1.0.r09319 org.eclipse.buckminster.cmdline 1.0.0.r09319 org.apache.batik.css 1.6.0.v200805290154 org.eclipse.ecf.telephony.call.ui 1.2.0.v20080623-0046 org.eclipse.wst.common.emfworkbench.integration 1.1.200.v200805140020 org.python.pydev 1.0.1 org.eclipse.datatools.enablement.ibm.db2.luw.dbdefinition 1.0.0.v200805152355 org.eclipse.team.svn.resource.ignore.rules.jdt.source 0.7.1.I20080612-1500 org.eclipse.ecf.server 1.3.0.v20080623-0046 org.python.pydev 1.2.5 org.python.pydev.core 1.2.1 org.eclipse.datatools.sqltools.sqlscrapbook 1.0.0.v200806021003 org.eclipse.birt.chart.reportitem 2.3.0.v20080610 org.eclipse.uml2.diagram.codegen 0.8.0.v200806112132 org.eclipse.xsd.edit 2.4.0.v200806091234 org.eclipse.buckminster.opml 1.0.0.r09319 org.python.pydev.parser 1.3.5 org.eclipse.gmf.runtime.diagram.ui 1.1.0.v20080610-1132 org.eclipse.ocl.source 1.2.0.v200805130238-34-9oA55S5I6M7JBK com.windowtester.eclipse.ui 3.5.0.200806270034 org.eclipse.tptp.platform.agentcontroller 4.2.200.v200806162043 org.python.pydev 1.3.11 org.eclipse.datatools.connectivity.apache.derby.ui 1.0.0.v200805160737 org.eclipse.datatools.sqltools.routineeditor 1.0.0.v200805261703 org.eclipse.wst.xsd.ui 1.2.102.v200808141745 org.eclipse.equinox.http 1.0.200.v20080421-2006 org.jivesoftware.smack 2.2.1 org.eclipse.mylyn.compatibility 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.java.ui 3.0.0.v20080619-1900 org.eclipse.core.variables 3.2.100.v20080529-1300 org.python.pydev.jython 1.3.13 org.python.pydev.parser 1.3.20 org.eclipse.tptp.platform.models.hierarchy 4.5.0.v200806120100 org.eclipse.ecf.examples.updatesite.client 1.0.100.v20080623-0046 org.eclipse.datatools.enablement.msft.sqlserver.ui 1.0.0.v200805160737 org.eclipse.datatools.enablement.mysql 1.0.0.v200805152355 org.eclipse.jdt.debug 3.4.0.v20080604 org.antlr.runtime 3.0.0.v200803061811 org.python.pydev.parser 1.2.7 org.eclipse.hyades.execution 4.4.200.v200806120100 org.eclipse.ecf.provider.ui 1.3.0.v20080623-0046 org.eclipse.birt.chart.cshelp 2.3.0.v20080616 org.eclipse.buckminster.p4.ui 1.0.0.r09319 org.python.pydev 1.3.15 org.eclipse.datatools.enablement.ibm.ui 1.0.0.v200805152355 org.eclipse.buckminster.sax 1.0.0.r09175 org.eclipse.equinox.supplement 1.1.0.v20080421-2006 org.eclipse.wst.common.frameworks 1.1.200.v200805140020 org.eclipse.mylyn 3.0.2.v20080918-1100-e3x org.eclipse.gmf.map 2.1.0.v20080521 org.eclipse.wst.standard.schemas 1.0.101.v200806010600 org.python.pydev.ast 1.0.3 org.eclipse.m2m.qvt.oml.runtime 1.0.0.v20080611-1330 org.eclipse.mylyn.ide.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.sqltools.sqlbuilder 1.0.0.v200806070500 org.eclipse.datatools.modelbase.derby 1.0.0.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.0 org.eclipse.emf.compare.ui 0.8.0.v200806180301 org.eclipse.ecf.provider.filetransfer.scp 2.0.0.v20080623-0046 org.eclipse.uml2.search.ocl.ui 0.7.0.v200806130939 org.eclipse.mylyn.context.ui 3.0.1.v20080721-2100-e3x org.python.pydev.templates 1.3.20 org.eclipse.gmf.runtime.diagram.ui.resources.editor 1.1.0.v20080425-1959 org.eclipse.gmf.examples.ui.pde 1.0.200.v20080425-1959 org.eclipse.buckminster.installer 1.0.0.r09319 org.eclipse.m2m.atl.examples 2.0.0.v200806101117 org.eclipse.datatools.modelbase.sql.xml.query 1.0.0.v200805152355 org.eclipse.emf.search.doc 0.7.0.v200806130939 org.eclipse.datatools.enablement.oracle.dbdefinition 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.0 javax.xml.bind 2.0.0.v200803061811 org.apache.xmlrpc 3.0.0.v20080530-1550 org.eclipse.ui.views.log 1.0.0.v20080522-2200 org.python.pydev.core 1.3.10 org.eclipse.ecf.examples.updatesite.server 1.0.100.v20080623-0046 org.eclipse.birt.core.ui 2.3.0.v20080515 org.eclipse.core.filebuffers 3.4.0.v20080603-2000 org.eclipse.mylyn.team.ui 3.0.1.v20080721-2100-e3x org.eclipse.wst.command.env 1.0.306.v200807231700 org.eclipse.team.cvs.ssh2 3.2.200.I20080604 org.eclipse.emf.search.ecore.ocl.ui 0.7.0.v200806130939 org.eclipse.ecf.example.collab.editor 1.0.200.v20080623-0046 org.eclipse.ecf.provider.jslp 2.0.0.v20080623-0046 org.eclipse.datatools.sqltools.result 1.0.0.v200805301309 org.eclipse.emf.teneo.jpox 1.0.0.v200806111928 org.eclipse.gmf.runtime.emf.clipboard.core 1.1.0.v20080425-1959 com.instantiations.eclipse.ast.editor 5.5.0 org.eclipse.mylyn.tasks.bugs 3.0.2.v20080918-1100-e3x org.eclipse.jsch.core 1.1.100.I20080604 org.eclipse.pde.core 3.4.0.v20080604-2000 org.python.pydev 0.9.4 org.python.pydev.jython 1.3.0
-1 x656 +1 x16 +1 x528 +1 x118 +1 x17 +1 x21 +1 x34 +1 x599 +1 x658 +1 x659 +1 x35 +1 x660 +1 x40 +1 x44 +1 x661 +1 x50 +1 x662 +1 x51 +1 x101 +1 x103 +1 x112 +1 x663 +1 x125 +1 x191 +1 x53 +1 x664 +1 x665 +1 x666 +1 x162 +1 x167 +1 x667 +1 x326 +1 x188 +1 x187 +1 x173 +1 x203 +1 x192 +1 x190 +1 x668 +1 x578 +1 x669 +1 x670 +1 x208 +1 x213 +1 x671 +1 x223 +1 x672 +1 x229 +1 x230 +1 x231 +1 x673 +1 x674 +1 x675 +1 x676 +1 x248 +1 x251 +1 x252 +1 x677 +1 x678 +1 x253 +1 x260 +1 x87 +1 x264 +1 x267 +1 x272 +1 x291 +1 x679 +1 x680 +1 x681 +1 x46 +1 x682 +1 x297 +1 x298 +1 x313 +1 x683 +1 x684 +1 x314 +1 x685 +1 x686 +1 x333 +1 x498 +1 x334 +1 x687 +1 x339 +1 x688 +1 x348 +1 x350 +1 x689 +1 x355 +1 x357 +1 x690 +1 x185 +1 x691 +1 x360 +1 x692 +1 x693 +1 x694 +1 x366 +1 x695 +1 x18 +1 x367 +1 x382 +1 x696 +1 x392 +1 x697 +1 x461 +1 x698 +1 x95 +1 x617 +1 x699 +1 x114 +1 x413 +1 x464 +1 x700 +1 x80 +1 x65 +1 x701 +1 x702 +1 x422 +1 x703 +1 x423 +1 x704 +1 x427 +1 x705 +1 x429 +1 x706 +1 x707 +1 x708 +1 x432 +1 x433 +1 x709 +1 x710 +1 x159 +1 x711 +1 x712 +1 x434 +1 x331 +1 x713 +1 x714 +1 x715 +1 x436 +1 x444 +1 x451 +1 x501 +1 x519 +1 x197 +1 x513 +1 x512 +1 x716 +1 x514 +1 x717 +1 x516 +1 x47 +1 x718 +1 x719 +1 x534 +1 x720 +1 x721 +1 x722 +1 x530 +1 x723 +1 x724 +1 x532 +1 x531 +1 x533 +1 x725 +1 x726 +1 x402 +1 x26 +1 x727 +1 x552 +1 x41 +1 x728 +1 x729 +1 x560 +1 x730 +1 x168 +1 x731 +1 x582 +1 x592 +1 x586 +1 x593 +1 x595 +1 x732 +1 x733 +1 x596 +1 x734 +1 x735 +1 x597 +1 x602 +1 x610 +1 x129 +1 x460 +1 x736 +1 x623 +1 x737 +1 x738 +1 x739 +1 x634 +1 x740 +1 x635 +1 x636 +1 x204 +1 x645 +1 x741 +1 x647 +1 x648 +1 x38 +1 x649 +1 x652 +1 x742 +1 x380 +1 x88 +1 x653 +1 x655 +1 x743 +1 x477 +1 x744 +1 x745 +1 x198 +1 x746 +1 x747 +1 x175 +1 x303 +1 x748 +1 x220 +1 x749 +1 x750 +1 x751 +1 x752 +1 x753 +1 x340 +1 x217 +1 x754 +1 x755 +1 x756 +1 x757 +1 x758 +1 x759 +1 x492 +1 x760 +1 x408 +1 x761 +1 x72 +1 x762 +1 x763 +1 x764 +1 x765 +1 x184 +1 x766 +1 x510 +1 x73 +1 x767 +1 x768 +1 x769 +1 x374 +1 x770 +1 x771 +1 x14 +1 x772 +1 x773 +1 x774 +1 x775 +1 x776 +1 x454 +1 x777 +1 x344 +1 x178 +1 x778 +1 x779 +1 x186 +1 x347 +1 x780 +1 x781 +1 x782 +1 x783 +1 x784 +1 x785 +1 x786 +1 x787 +1 x788 +1 x789 +1 x790 +1 x791 +1 x792 +1 x625 +1 x793 +1 x794 +1 x472 +1 x795 +1 x796 +1 x797 +1 x798 +1 x521 +1 x799 +1 x800 +1 x801 +1 x802 +1 x525 +1 x91 +1 x803 +1 x804 +1 x805 +1 x806 +1 x807 +1 x587 +1 x808 +1 x315 +1 x809 +1 x810 +1 x811 +1 x812 +1 x813 +1 x814 +1 x815 +1 x816 +1 x68 +1 x817 +1 x179 +1 x486 +1 x818 +1 x410 +1 x819 +1 x820 +1 x821 +1 x822 +1 x823 +1 x824 +1 x825 +1 x826 +1 x827 +1 x638 +1 x828 +1 x829 +1 x830 +1 x372 +1 x831 +1 x832 +1 x9 +1 x263 +1 x324 +1 x411 +1 x833 +1 x834 +1 x835 +1 x836 +1 x837 +1 x838 +1 x839 +1 x430 +1 x840 +1 x381 +1 x89 +1 x518 +1 x328 +1 x841 +1 x621 +1 x842 +1 x843 +1 x330 +1 x844 +1 x57 +1 x153 +1 x845 +1 x846 +1 x48 +1 x847 +1 x70 +1 x848 +1 x849 +1 x850 +1 x467 +1 x851 +1 x852 +1 x853 +1 x854 +1 x855 +1 x856 +1 x857 +1 x858 +1 x447 +1 x83 +1 x859 +1 x860 +1 x861 +1 x82 +1 x862 +1 x863 +1 x74 +1 x864 +1 x632 +1 x865 +1 x866 +1 x867 +1 x5 +1 x868 +1 x869 +1 x870 +1 x871 +1 x872 +1 x361 +1 x873 +1 x604 +1 x874 +1 x875 +1 x876 +1 x594 +1 x877 +1 x183 +1 x289 +1 x495 +1 x138 +1 x194 +1 x143 +1 x878 +1 x879 +1 x85 +1 x36 +1 x880 +1 x881 +1 x177 +1 x882 +1 x883 +1 x884 +1 x885 +1 x886 +1 x887 +1 x888 +1 x889 +1 x370 +1 x219 +1 x890 +1 x891 +1 x892 +1 x893 +1 x894 +1 x895 +1 x24 +1 x896 +1 x897 +1 x898 +1 x899 +1 x900 +1 x901 +1 x902 +1 x180 +1 x903 +1 x904 +1 x349 +1 x905 +1 x906 +1 x221 +1 x10 +1 x907 +1 x908 +1 x193 +1 x909 +1 x910 +1 x911 +1 x912 +1 x913 +1 x474 +1 x914 +1 x915 +1 x244 +1 x916 +1 x917 +1 x176 +1 x918 +1 x919 +1 x920 +1 x921 +1 x75 +1 x922 +1 x923 +1 x924 +1 x925 +1 x926 +1 x927 +1 x928 +1 x929 +1 x930 +1 x931 +1 x932 +1 x343 +1 x933 +1 x327 +1 x934 +1 x935 +1 x936 +1 x937 +1 x90 +1 x938 +1 x939 +1 x940 +1 x941 +1 x643 +1 x942 +1 x943 +1 x147 +1 x944 +1 x945 +1 x946 +1 x947 +1 x948 +1 x949 +1 x950 +1 x165 +1 x951 +1 x952 +1 x953 +1 x954 +1 x955 +1 x956 +1 x249 +1 x957 +1 x401 +1 x958 +1 x959 +1 x132 +1 x304 +1 x960 +1 x961 +1 x962 +1 x963 +1 x964 +1 x371 +1 x965 +1 x966 +1 x967 +1 x968 +1 x969 +1 x970 +1 x971 +1 x972 +1 x973 +1 x974 +1 x470 +1 x975 +1 x976 +1 x590 +1 x977 +1 x978 +1 x473 +1 x523 +1 x579 +1 x979 +1 x97 +1 x61 +1 x980 +1 x981 +1 x982 +1 x478 +1 x983 +1 x984 +1 x985 +1 x986 +1 x987 +1 x988 +1 x155 +1 x989 +1 x59 +1 x990 +1 x991 +1 x992 +1 x993 +1 x345 +1 x201 +1 x994 +1 x995 +1 x481 +1 x996 +1 x215 +1 x151 +1 x482 +1 x407 +1 x484 +1 x483 +1 x997 +1 x998 +1 x485 +1 x488 +1 x999 +1 x1000 +1 x489 +1 x490 +1 x1001 +1 x1002 +1 x1003 +1 x1004 +1 x511 +1 x1005 +1 x1006 +1 x1007 +1 x1008 +1 x1009 +1 x1010 +1 x1011 +1 x1012 +1 x1013 +1 x1014 +1 x1015 +1 x1016 +1 x1017 +1 x1018 +1 x1019 +1 x1020 +1 x1021 +1 x136 +1 x1022 +1 x216 +1 x1023 +1 x1024 +1 x1025 +1 x1026 +1 x1027 +1 x384 +1 x325 +1 x1028 +1 x657 +1 x1029 +1 x1030 +1 x368 +1 x250 +1 x1031 +1 x520 +1 x1032 +1 x266 +1 x1033 +1 x1034 +1 x1035 +1 x1036 +1 x1037 +1 x466 +1 x149 +1 x1038 +1 x1039 +1 x1040 +1 x1041 +1 x258 +1 x1042 +1 x1043 +1 x1044 +1 x1045 +1 x1046 +1 x1047 +1 x1048 +1 x1049 +1 x152 +1 x1050 +1 x1051 +1 x305 +1 x1052 +1 x1053 +1 x1054 +1 x1055 +1 x1056 +1 x1057 +1 x1058 +1 x1059 +1 x553 +1 x1060 +1 x1061 +1 x224 +1 x1062 +1 x1063 +1 x1064 +1 x1065 +1 x1066 +1 x1067 +1 x1068 +1 x195 +1 x259 +1 x399 +1 x86 +1 x1069 +1 x1070 +1 x494 +1 x1071 +1 x84 +1 x1072 +1 x140 +1 x256 +1 x1073 +1 x1074 +1 x146 +1 x1075 +1 x1076 +1 x1077 +1 x1078 +1 x1079 +1 x1080 +1 x628 +1 x1081 +1 x1082 +1 x1083 +1 x562 +1 x1084 +1 x239 +1 x458 +1 x1085 +1 x1086 +1 x241 +1 x462 +1 x1087 +1 x1088 +1 x1089 +1 x78 +1 x1090 +1 x1091 +1 x1092 +1 x1093 +1 x1094 +1 x1095 +1 x1096 +1 x469 +1 x631 +1 x1097 +1 x12 +1 x1098 +1 x1099 +1 x81 +1 x1100 +1 x1101 +1 x1102 +1 x1103 +1 x1104 +1 x406 +1 x1105 +1 x1106 +1 x1107 +1 x169 +1 x1108 +1 x476 +1 x1109 +1 x1110 +1 x1111 +1 x1112 +1 x49 +1 x1113 +1 x150 +1 x1114 +1 x1115 +1 x1116 +1 x1117 +1 x1118 +1 x28 +1 x1119 +1 x1120 +1 x137 +1 x409 +1 x1121 +1 x1122 +1 x99 +1 x1123 +1 x145 +1 x1124 +1 x1125 +1 x1126 +1 x1127 +1 x1128 +1 x11 +1 x373 +1 x1129 +1 x308 +1 x358 +1 x1130 +1 x1131 +1 x1132 +1 x600 +1 x1133 +1 x424 +1 x1134 +1 x1135 +1 x1136 +1 x1137 +1 x561 +1 x1138 +1 x1139 +1 x603 +1 x1140 +1 x456 +1 x1141 +1 x1142 +1 x1143 +1 x1144 +1 x1145 +1 x1146 +1 x425 +1 x1147 +1 x115 +1 x1148 +1 x1149 +1 x1150 +1 x1151 +1 x1152 +1 x23 +1 x1153 +1 x76 +1 x1154 +1 x1155 +1 x300 +1 x1156 +1 x1157 +1 x1158 +1 x1159 +1 x1160 +1 x1161 +1 x1162 +1 x1163 +1 x1164 +1 x1165 +1 x575 +1 x1166 +1 x583 +1 x1167 +1 x1168 +1 x200 +1 x71 +1 x1169 +1 x1170 +1 x322 +1 x1171 +1 x1172 +1 x1173 +1 x397 +1 x480 +1 x1174 +1 x1175 +1 x1176 +1 x576 +1 x209 +1 x1177 +1 x403 +1 x1178 +1 x1179 +1 x416 +1 x1180 +1 x13 +1 x1181 +1 x1182 +1 x1183 +1 x1184 +1 x1185 +1 x1186 +1 x1187 +1 x1188 +1 x1189 +1 x310 +1 x1190 +1 x1191 +1 x1192 +1 x524 +1 x1193 +1 x1194 +1 x202 +1 x1195 +1 x102 +1 x1196 +1 x1197 +1 x452 +1 x1198 +1 x386 +1 x1199 +1 x1200 +1 x1201 +1 x1202 +1 x457 +1 x1203 +1 x79 +1 x1204 +1 x1205 +1 x1206 +1 x1207 +1 x1208 +1 x1209 +1 x1210 +1 x160 +1 x527 +1 x1211 +1 x1212 +1 x1213 +1 x1214 +1 x1215 +1 x463 +1 x1216 +1 x1217 +1 x1218 +1 x7 +1 x1219 +1 x1220 +1 x1221 +1 x642 +1 x1222 +1 x1223 +1 x1224 +1 x1225 +1 x1226 +1 x605 +1 x1227 +1 x301 +1 x1228 +1 x449 +1 x1229 +1 x353 +1 x396 +1 x1230 +1 x174 +1 x98 +1 x1231 +1 x1232 +1 x1233 +1 x1234 +1 x1235 +1 x479 +1 x598 +1 x1236 +1 x1237 +1 x63 +1 x1238 +1 x1239 +1 x1240 +1 x1241 +1 x1242 +1 x1243 +1 x1244 +1 x1245 +1 x1246 +1 x170 +1 x1247 +1 x1248 +1 x1249 +1 x317 +1 x226 +1 x1250 +1 x1251 +1 x1252 +1 x37 +1 x1253 +1 x1254 +1 x1255 +1 x1256 +1 x601 +1 x1257 +1 x142 +1 x446 +1 x1258 +1 x1259 +1 x1260 +1 x1261 +1 x1262 +1 x1263 +1 x182 +1 x1264 +1 x1265 +1 x1266 +1 x1267 +1 x1268 +1 x1269 +1 x139 +1 x1270 +1 x1271 +1 x133 +1 x1272 +1 x1273 +1 x1274 +1 x1275 +1 x1276 +1 x1277 +1 x1278 +1 x1279 +1 x1280 +1 x1281 +1 x1282 +1 x1283 +1 x1284 +1 x1285 +1 x32 +1 x1286 +1 x1287 +1 x1288 +1 x1289 +1 x275 +1 x1290 +1 x1291 +1 x1292 +1 x1293 +1 x1294 +1 x1295 +1 x1296 +1 x1297 +1 x131 +1 x1298 +1 x262 +1 x1299 +1 x1300 +1 x503 +1 x1301 +1 x1302 +1 x629 +1 x475 +1 x1303 +1 x1304 +1 x1305 +1 x1306 +1 x1307 +1 x1308 +1 x1309 +1 x1310 +1 x319 +1 x1311 +1 x1312 +1 x1313 +1 x96 +1 x1314 +1 x94 +1 x1315 +1 x1316 +1 x1317 +1 x1318 +1 x1319 +1 x1320 +1 x1321 +1 x1322 +1 x1323 +1 x431 +1 x1324 +1 x1325 +1 x1326 +1 x1327 +1 x218 +1 x1328 +1 x1329 +1 x1330 +1 x1331 +1 x1332 +1 x27 +1 x1333 +1 x1334 +1 x398 +1 x1335 +1 x321 +1 x1336 +1 x1337 +1 x1338 +1 x1339 +1 x316 +1 x1340 +1 x1341 +1 x1342 +1 x1343 +1 x1344 +1 x1345 +1 x1346 +1 x1347 +1 x459 +1 x135 +1 x1348 +1 x1349 +1 x1350 +1 x277 +1 x1351 +1 x1352 +1 x1353 +1 x1354 +1 x1355 +1 x1356 +1 x1357 +1 x196 +1 x1358 +1 x52 +1 x1359 +1 x1360 +1 x1361 +1 x92 +1 x1362 +1 x1363 +1 x1364 +1 x1365 +1 x1366 +1 x468 +1 x448 +1 x1367 +1 x619 +1 x471 +1 x318 +1 x1368 +1 x254 +1 x265 +1 x242 +1 x1369 +1 x20 +1 x1370 +1 x1371 +1 x1372 +1 x1373 +1 x1374 +1 x1375 +1 x1376 +1 x1377 +1 x1378 +1 x1379 +1 x1380 +1 x1381 +1 x1382 +1 x1383 +1 x299 +1 x45 +1 x1384 +1 x1385 +1 x1386 +1 x1387 +1 x491 +1 x25 +1 x493 +1 x1388 +1 x1389 +1 x1390 +1 x369 +1 x1391 +1 x1392 +1 x19 +1 x1393 +1 x1394 +1 x1395 +1 x589 +1 x1396 +1 x400 +1 x1397 +1 x323 +1 x1398 +1 x8 +1 x1399 +1 x1400 +1 x1401 +1 x1402 +1 x404 +1 x1403 +1 x1404 +1 x1405 +1 x1406 +1 x1407 +1 x1408 +1 x1409 +1 x1410 +1 x1411 +1 x6 +1 x1412 +1 x1413 +1 x144 +1 x1414 +1 x1415 +1 x1416 +1 x1417 +1 x1418 +1 x302 +1 x1419 +1 x1420 +1 x1421 +1 x1422 +1 x1423 +1 x1424 +1 x1425 +1 x1426 +1 x1427 +1 x1428 +1 x1429 +1 x243 +1 x1430 +1 x1431 +1 x1432 +1 x1433 +1 x1434 +1 x1435 +1 x1436 +1 x1437 +1 x113 +1 x1438 +1 x1439 +1 x1440 +1 x1441 +1 x199 +1 x1442 +1 x1443 +1 x1444 +1 x1445 +1 x1446 +1 x1447 +1 x1448 +1 x1449 +1 x1450 +1 x257 +1 x255 +1 x1451 +1 x1452 +1 x1453 +1 x1454 +1 x1455 +1 x1456 +1 x1457 +1 x320 +1 x1458 +1 x154 +1 x1459 +1 x1460 +1 x1461 +1 x1462 +1 x134 +1 x497 +1 x181 +1 x1463 +1 x148 +1 x54 +1 x1464 +1 x1465 +1 x1466 +1 x1467 +1 x1468 +1 x453 +1 x1469 +1 x1470 +1 x1471 +1 x1472 +1 x1473 +1 x1474 +1 x1475 +1 x1476 +1 x1477 +1 x522 +1 x1478 +1 x1479 +1 x1480 +1 x1481 +1 x1482 +1 x1483 +1 x1484 +1 x1485 +1 x335 +1 x1486 +1 x1487 +1 x1488 +1 x1489 +1 x240 +1 x1490 +1 x276 +1 x465 +1 x1491 +1 x1492 +1 x1493 +1 x1494 +1 x1495 +1 x1496 +1 x1497 +1 x1498 +1 x329 +1 x1499 +1 x93 +1 x130 +1 x261 +1 x630 +1 x1500 +1 x1501 +1 x1502 +1 x1503 +1 x31 +1 x1504 +1 x1505 +1 x1506 +1 x1507 +1 x1508 +1 x1509 +1 x141 +1 x1510 +1 x1511 +1 x1512 +1 x1513 +1 x1514 +1 x225 +1 x1515 +1 x1516 +1 x205 +1 x1517 +1 x1518 +1 x1519 +1 x1520 +1 x1521 +1 x496 +1 x1522 +1 x387 +1 x1523 +1 x1524 +1 x1525 +1 x1526 +1 x1527 +1 x1528 +1 x1529 +1 x1530 +1 x1531 +1 x455 +1 x1532 +1 x577 +1 x1533 +1 x1534 +1 x1535 +1 x1536 +1 x445 +1 x1537 +1 x1538 +1 x1539 +1 x1540 +1 x618 +1 x1541 +1 x1542 +1 x1543 +1 x1544 +1 x1545 +1 x1546 +1 x414 +1 x1547 +1 x1548 +1 x1549 +1 x1550 +1 x1551 +1 x515 +1 x405 +1 x1552 +1 x1553 +1 x1554 +1 x1555 +1 x1556 +1 x1557 +1 x1558 +1 x336 +1 x385 +1 x39 +1 x214 +1 x1559 +1 x1560 +1 x1561 +1 x1562 +1 x526 +1 x1563 +1 x1564 +1 x620 +1 x1565 +1 x1566 +1 x1567 +1 x1568 +1 x1569 +1 x1570 +1 x1571 +1 x1572 +1 x1573 +1 x504 +1 x1574 +1 x1575 +1 x1576 +1 x1577 +1 x1578 +1 x1579 +1 x1580 +1 x487 +1 x1581 +1 x1582 +1 x639 +1 x1583 +1 x1584 +1 x1585 +1 x1586 +1 x1587 +1 x1588 +1 x1589 +1 x1590 +1 x1591 +1 x1592 +1 x1593 +1 x1594 +1 x637 +1 x1595 +1 x1596 >= 0;
* org.eclipse.datatools.connectivity.ui 1.1.0.v200806040132 requires either org.eclipse.core.runtime 3.4.0.v20080512
-1 x175 +1 x21 >= 0;
@@ -2190,7 +2188,7 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
-1 x799 +1 x1294 >= 0;
* org.eclipse.team.cvs.ssh 3.2.100.I20080604 requires either org.eclipse.team.core 3.4.0.I20080605
-1 x799 +1 x971 >= 0;
-* tooling.source.default 1.0.0 requires optionaly either org.eclipse.gmf.runtime.diagram.ui.providers.ide.source 1.1.0.v20080425-1959 org.eclipse.equinox.io.source 1.0.0.v20080218 org.eclipse.equinox.simpleconfigurator.manipulator.source 1.0.0.v20080427-2136 org.eclipse.jdt.debug.ui.source 3.3.0.v20080603 org.eclipse.ui.win32.source 3.2.100.v20080408-0800 org.junit4.source 4.3.1 org.eclipse.osgi.services.source 3.1.200.v20071203 org.eclipse.update.core.win32.source 3.2.100.v20080107 org.eclipse.cvs.source 1.0.100.v20080603 org.eclipse.text.source 3.4.0.v20080605-1800 org.eclipse.equinox.http.registry.source 1.0.100.v20080427-0830 org.eclipse.equinox.transforms.hook.source 1.0.0.v20080610 org.eclipse.jface.databinding.source 1.2.0.I20080515-2000a org.eclipse.gmf.runtime.emf.core.source 1.1.0.v20080425-1959 org.eclipse.mylyn.trac.core.source 3.0.2.v20080918-1100-e3x org.eclipse.ui.intro.source 3.2.200.v20080610 org.eclipse.jface.source 3.4.0.I20080606-1300 org.eclipse.jdt.launching.source 3.4.0.v20080529-1300 org.eclipse.equinox.jsp.jasper.registry.source 1.0.0.v20080427-0830 org.eclipse.equinox.jsp.jasper.source 1.0.100.v20080427-0830 org.eclipse.ui.editors.source 3.4.0.v20080603-2000 org.eclipse.gmf.bridge.ui.source 1.1.100.v20080417-1610 org.eclipse.equinox.p2.directorywatcher.source 1.0.0.v20080505-1850 org.eclipse.equinox.http.jetty.source 1.1.0.v20080425 org.eclipse.equinox.log.source 1.1.0.v20080414 org.eclipse.equinox.servletbridge.source 1.0.100.v20080427-0830 org.eclipse.help.appserver.source 3.1.300.v20080507 org.eclipse.equinox.ds.source 1.0.0.v20080427-0830 org.eclipse.gmf.codegen.source 2.1.0.v20080610-1132 org.eclipse.equinox.security.source 1.0.0.v20080512-1800 org.eclipse.jdt.ui.source 3.4.0.v20080603-2000 org.eclipse.help.source 3.3.100.v20080610 org.eclipse.gmf.map.source 2.1.0.v20080521 org.eclipse.core.databinding.source 1.1.0.I20080527-2000 org.eclipse.gmf.runtime.diagram.ui.source 1.1.0.v20080610-1132 org.eclipse.osgi.source 3.4.0.v20080605-1900 org.eclipse.equinox.p2.updatechecker.source 1.0.0.v20080427-2136 javax.servlet.jsp.source 2.0.0.v200806031607 org.apache.ant.source 1.7.0.v200803061910 org.eclipse.pde.ui.templates.source 3.4.0.v20080514-1500 org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.source 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.common.ui.services.properties.source 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.notation.edit.source 1.1.0.v20080507-1326 org.eclipse.gmf.runtime.draw2d.ui.render.awt.source 1.1.0.v20080603-1553 org.apache.lucene.source 1.9.1.v20080530-1600 org.eclipse.gmf.runtime.common.ui.action.source 1.1.0.v20080425-1959 org.eclipse.core.commands.source 3.4.0.I20080509-2000 org.eclipse.ui.externaltools.source 3.2.0.v20080514-1542 org.eclipse.ui.workbench.source 3.4.0.I20080606-1300 org.eclipse.gmf.graphdef.source 2.0.100.v20080528-1052 org.eclipse.pde.api.tools.source 1.0.0.v20080529-1150 org.eclipse.gmf.tooldef.edit.source 2.0.0.v20080610-1132 org.eclipse.ui.source 3.4.0.I20080610-1200 org.eclipse.jdt.compiler.apt.source 1.0.100.v20080513-1235 org.eclipse.equinox.p2.artifact.repository.source 1.0.0.v20080609-0850 org.eclipse.pde.build.source 3.4.0.v20080604 org.eclipse.equinox.p2.garbagecollector.source 1.0.0.v20080506-1939 org.eclipse.equinox.p2.engine.source 1.0.0.v20080522-1735 org.eclipse.ui.console.source 3.3.0.v20080529-1300 org.eclipse.rcp.source 3.4.0.v20080507 org.eclipse.gmf.graphdef.codegen.ui.source 1.0.100.v20080425-1959 org.eclipse.gmf.graphdef.codegen.source 2.0.100.v20080528-1052 org.eclipse.core.resources.compatibility.source 3.4.0.v20080604-1400 org.eclipse.gmf.runtime.emf.ui.properties.source 1.1.0.v20080425-1959 org.eclipse.equinox.p2.touchpoint.natives.source 1.0.0.v20080505-1850 org.eclipse.equinox.device.source 1.0.1.v20080303 org.eclipse.gmf.validate.source 1.1.0.v20080603-1553 org.eclipse.jsch.core.source 1.1.100.I20080604 org.eclipse.team.cvs.ui.source 3.3.100.I20080604 org.eclipse.jdt.junit.source 3.4.0.v20080603-2000 org.eclipse.jdt.debug.source 3.4.0.v20080604 org.eclipse.equinox.p2.exemplarysetup.source 1.0.0.v20080427-2136 org.eclipse.ui.presentations.r21.source 3.2.100.I20080512-2000 org.eclipse.ant.ui.source 3.3.0.v20080529 org.eclipse.gmf.runtime.draw2d.ui.source 1.1.0.v20080610-1132 org.eclipse.jdt.core.source 3.4.0.v_874 org.eclipse.equinox.p2.ui.sdk.source 1.0.0.v20080605-1731 org.eclipse.jdt.core.manipulation.source 1.2.0.v20080603-2000 org.eclipse.equinox.launcher.source 1.0.100.v20080509-1800 org.eclipse.ui.net.source 1.0.0.I20080605 org.eclipse.gmf.codegen.edit.source 2.1.0.v20080610-1132 org.eclipse.update.core.source 3.2.200.v20080515 org.eclipse.ui.workbench.compatibility.source 3.2.0.I20080509-2000 org.objectweb.asm.source 3.1.0.v200803061910 org.eclipse.equinox.p2.extensionlocation.source 1.0.0.v20080523-0001 org.eclipse.gmf.xpand.editor.source 1.0.0.v20080425-1959 org.eclipse.team.cvs.ssh2.source 3.2.200.I20080604 org.eclipse.core.expressions.source 3.4.0.v20080603-2000 org.eclipse.gmf.bridge.ui.dashboard.source 2.0.0.v20080417-1610 org.eclipse.equinox.preferences.source 3.2.200.v20080421-2006 org.eclipse.gmf.runtime.common.ui.source 1.1.0.v20080512-1200 org.eclipse.gmf.runtime.common.ui.printing.source 1.1.0.v20080425-1959 org.eclipse.team.ui.source 3.4.0.I20080604 org.eclipse.gmf.runtime.common.ui.services.dnd.source 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.notation.source 1.1.0.v20080507-1326 org.eclipse.jdt.apt.core.source 3.3.100.v20080513-1235 org.eclipse.jdt.junit4.runtime.source 1.0.200.v20080603-2000 org.eclipse.ant.core.source 3.2.0.v20080529 org.eclipse.gmf.runtime.common.ui.printing.win32.source 1.1.0.v20080612-1355 org.eclipse.core.resources.source 3.4.0.v20080604-1400 org.eclipse.emf.mint.source 0.7.0.v200806172223 org.eclipse.equinox.p2.metadata.repository.source 1.0.0.v20080604 org.eclipse.pde.junit.runtime.source 3.4.0.v20080529-1800 org.eclipse.compare.source 3.4.0.I20080604 org.eclipse.equinox.event.source 1.1.0.v20080225 org.eclipse.jdt.apt.pluggable.core.source 1.0.100.v20080407-1345 org.eclipse.update.scheduler.source 3.2.100.v20080404 org.eclipse.gmf.runtime.draw2d.ui.render.source 1.1.0.v20080507-2230 net.sourceforge.lpg.lpgjavaruntime.source 1.1.0.v200803061910 org.eclipse.gmf.runtime.diagram.ui.printing.render.source 1.1.0.v20080425-1959 org.eclipse.core.jobs.source 3.4.0.v20080512 org.eclipse.pde.api.tools.ui.source 1.0.0.v20080603 org.eclipse.ui.intro.universal.source 3.2.200.v20080508 org.eclipse.equinox.security.win32.x86.source 1.0.0.v20080529-1600 org.eclipse.gmf.xpand.source 1.1.0.v20080528-1052 org.eclipse.jface.text.source 3.4.0.v20080603-2000 org.eclipse.ui.views.source 3.3.0.I20080509-2000 org.eclipse.update.ui.source 3.2.100.v20080318 org.eclipse.ui.ide.source 3.4.0.I20080606-1300 org.eclipse.equinox.p2.jarprocessor.source 1.0.0.v20080514-1900 org.eclipse.gmf.ecore.editor.source 2.0.100.v20080610-1132 org.eclipse.pde.core.source 3.4.0.v20080604-2000 org.eclipse.equinox.http.servletbridge.source 1.0.0.v20080427-0830 org.eclipse.ui.ide.application.source 1.0.0.I20080603-2000 org.eclipse.gmf.tooling.source 2.1.0.v20080425-1959 org.eclipse.osgi.util.source 3.1.300.v20080303 org.eclipse.update.configurator.source 3.2.200.v20080417 org.apache.commons.logging.source 1.0.4.v20080605-1930 org.eclipse.gmf.runtime.diagram.ui.providers.source 1.1.0.v20080503-1740 org.eclipse.equinox.util.source 1.0.0.v20080414 org.eclipse.jdt.compiler.tool.source 1.0.100.v_874 org.eclipse.gmf.runtime.emf.type.core.source 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.emf.ui.source 1.1.0.v20080516-1748 org.junit.source 3.8.2.v20080602-1318 org.eclipse.gmf.runtime.common.ui.action.ide.source 1.1.0.v20080425-1959 org.eclipse.mylyn.jira.core.source 3.0.2.v20080918-1100-e3x org.eclipse.pde.source 3.4.0.v20080603 org.eclipse.core.contenttype.source 3.3.0.v20080604-1400 org.eclipse.gmf.runtime.common.ui.services.dnd.ide.source 1.1.0.v20080425-1959 org.eclipse.equinox.ip.source 1.0.0.v20080218 org.eclipse.jdt.junit.runtime.source 3.3.0.v20080603-2000 org.eclipse.gmf.runtime.diagram.ui.dnd.source 1.1.0.v20080425-1959 org.eclipse.equinox.registry.source 3.4.0.v20080516-0950 org.eclipse.gmf.runtime.common.ui.services.source 1.1.0.v20080612-1229 org.eclipse.equinox.p2.metadata.generator.source 1.0.0.v20080604 org.eclipse.gmf.tooldef.source 2.0.0.v20080417-1610 org.eclipse.gmf.runtime.common.ui.services.action.source 1.1.0.v20080507-2230 org.eclipse.ui.views.log.source 1.0.0.v20080522-2200 org.eclipse.equinox.app.source 1.1.0.v20080421-2006 org.eclipse.equinox.p2.director.source 1.0.0.v20080604 org.eclipse.gmf.graphdef.edit.source 2.0.100.v20080610-1132 org.eclipse.equinox.cm.source 1.0.0.v20080509-1800 org.eclipse.mylyn.trac.ui.source 3.0.2.v20080918-1100-e3x org.eclipse.core.filesystem.source 1.2.0.v20080604-1400 org.eclipse.gmf.common.source 1.1.1.v20080610-1132 org.eclipse.equinox.http.servlet.source 1.0.100.v20080427-0830 org.eclipse.core.databinding.beans.source 1.1.0.I20080508-2000a org.eclipse.gmf.runtime.notation.providers.source 1.1.0.v20080425-1959 org.eclipse.equinox.frameworkadmin.source 1.0.0.v20080430-1750 org.eclipse.equinox.p2.ui.source 1.0.0.v20080530-1237 org.eclipse.ui.navigator.resources.source 3.3.100.I20080606-1300 org.eclipse.gmf.runtime.diagram.ui.properties.source 1.1.0.v20080603-1553 org.eclipse.gmf.runtime.emf.clipboard.core.source 1.1.0.v20080425-1959 org.apache.lucene.analysis.source 1.9.1.v20080530-1600 org.eclipse.equinox.metatype.source 1.0.0.v20070827 org.eclipse.ui.views.properties.tabbed.source 3.4.0.I20080527-2000 org.apache.jasper.source 5.5.17.v200806031609 org.eclipse.gmf.runtime.emf.type.ui.source 1.1.0.v20080425-1959 org.eclipse.help.ui.source 3.3.100.v20080521 org.eclipse.gmf.bridge.source 1.1.0.v20080528-1052 org.eclipse.core.filebuffers.source 3.4.0.v20080603-2000 org.mortbay.jetty.source 5.1.14.v200806031611 org.eclipse.equinox.frameworkadmin.equinox.source 1.0.0.v20080529-1225 org.eclipse.jsch.ui.source 1.1.100.I20080415 org.eclipse.equinox.p2.metadata.source 1.0.0.v20080514-1900 org.eclipse.gmf.runtime.diagram.ui.geoshapes.source 1.1.0.v20080503-1740 org.eclipse.team.cvs.ssh.source 3.2.100.I20080604 org.eclipse.gmf.runtime.common.core.source 1.1.0.v20080425-1959 org.eclipse.equinox.wireadmin.source 1.0.0.v20080407 org.eclipse.core.runtime.compatibility.auth.source 3.2.100.v20070502 org.eclipse.ui.browser.source 3.2.200.v20080507 org.eclipse.ltk.ui.refactoring.source 3.4.0.v20080605-1800 org.eclipse.gmf.runtime.gef.ui.source 1.1.0.v20080503-1740 org.eclipse.equinox.p2.reconciler.dropins.source 1.0.0.v20080611 org.eclipse.equinox.p2.touchpoint.eclipse.source 1.0.0.v20080529-1225 org.eclipse.core.runtime.source 3.4.0.v20080512 org.eclipse.mylyn.jira.ui.source 3.0.2.v20080918-1100-e3x org.eclipse.core.variables.source 3.2.100.v20080529-1300 org.eclipse.gmf.runtime.diagram.ui.resources.editor.source 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.diagram.ui.actions.source 1.1.0.v20080603-1553 org.eclipse.pde.ui.source 3.4.0.v20080530 org.eclipse.search.source 3.4.0.v20080603-2000 org.eclipse.ui.workbench.texteditor.source 3.4.0.v20080603-2000 org.eclipse.equinox.p2.updatesite.source 1.0.0.v20080529-1800 org.eclipse.team.core.source 3.4.0.I20080605 org.eclipse.equinox.common.source 3.4.0.v20080421-2006 org.eclipse.equinox.simpleconfigurator.source 1.0.0.v20080604 org.eclipse.equinox.p2.core.source 1.0.0.v20080530-1237 org.apache.commons.el.source 1.0.0.v200806031608 org.eclipse.gmf.map.edit.source 2.1.0.v20080610-1132 org.eclipse.help.webapp.source 3.3.100.v20080528 org.eclipse.gmf.runtime.diagram.ui.printing.source 1.1.0.v20080501-1739 org.eclipse.equinox.transforms.xslt.source 1.0.0.v20080610 org.eclipse.pde.runtime.source 3.4.0.v20080530-1200 org.eclipse.ltk.core.refactoring.source 3.4.0.v20080603-2000 org.eclipse.jdt.apt.ui.source 3.3.100.v20080407-1345 org.eclipse.gmf.codegen.ui.source 1.1.0.v20080512-1200 org.eclipse.gmf.runtime.diagram.ui.render.source 1.1.0.v20080603-1553 org.eclipse.ui.navigator.source 3.3.100.I20080606-1300 org.eclipse.platform.source 3.3.100.v200806172000 org.eclipse.jdt.source 3.4.0.v20080603-2000 com.ibm.icu.source 3.8.1.v20080530 org.eclipse.gmf.runtime.emf.commands.core.source 1.1.0.v20080425-1959 org.eclipse.debug.ui.source 3.4.0.v20080529-1300 org.eclipse.equinox.p2.console.source 1.0.0.v20080514-1900 org.eclipse.debug.core.source 3.4.0.v20080612 org.eclipse.help.base.source 3.3.100.v20080617 org.eclipse.equinox.p2.director.app.source 1.0.0.v20080604 org.eclipse.gmf.source 1.0.0.v20080425-1959 org.eclipse.equinox.useradmin.source 1.1.0.v20080508-1815 org.eclipse.equinox.http.source 1.0.200.v20080421-2006 org.eclipse.pde.p2.ui.source 1.0.0.v20080604-2000 org.eclipse.core.runtime.compatibility.source 3.2.0.v20071008 org.eclipse.ui.cheatsheets.source 3.3.100.v20080508 org.eclipse.emf.mint.ui.source 0.7.0.v200806172223 org.eclipse.core.net.source 1.1.0.I20080604 org.eclipse.ui.forms.source 3.3.100.v20080611 org.eclipse.swt.win32.win32.x86.source 3.4.0.v3448f javax.servlet.source 2.4.0.v200806031604 org.eclipse.equinox.security.ui.source 1.0.0.v20080603-1810 org.eclipse.team.cvs.core.source 3.3.100.I20080605 org.eclipse.core.runtime.compatibility.registry.source 3.2.200.v20080610 org.eclipse.gmf.runtime.diagram.core.source 1.1.0.v20080425-1959
+* tooling.source.default 1.0.0 requires optionaly either org.eclipse.gmf.runtime.diagram.ui.providers.ide.source 1.1.0.v20080425-1959 org.eclipse.equinox.io.source 1.0.0.v20080218 org.eclipse.equinox.simpleconfigurator.manipulator.source 1.0.0.v20080427-2136 org.eclipse.jdt.debug.ui.source 3.3.0.v20080603 org.eclipse.ui.win32.source 3.2.100.v20080408-0800 org.junit4.source 4.3.1 org.eclipse.osgi.services.source 3.1.200.v20071203 org.eclipse.update.core.win32.source 3.2.100.v20080107 org.eclipse.cvs.source 1.0.100.v20080603 org.eclipse.text.source 3.4.0.v20080605-1800 org.eclipse.equinox.http.registry.source 1.0.100.v20080427-0830 org.eclipse.equinox.transforms.hook.source 1.0.0.v20080610 org.eclipse.jface.databinding.source 1.2.0.I20080515-2000a org.eclipse.gmf.runtime.emf.core.source 1.1.0.v20080425-1959 org.eclipse.mylyn.trac.core.source 3.0.2.v20080918-1100-e3x org.eclipse.ui.intro.source 3.2.200.v20080610 org.eclipse.jface.source 3.4.0.I20080606-1300 org.eclipse.jdt.launching.source 3.4.0.v20080529-1300 org.eclipse.equinox.jsp.jasper.registry.source 1.0.0.v20080427-0830 org.eclipse.equinox.jsp.jasper.source 1.0.100.v20080427-0830 org.eclipse.ui.editors.source 3.4.0.v20080603-2000 org.eclipse.gmf.bridge.ui.source 1.1.100.v20080417-1610 org.eclipse.equinox.p2.directorywatcher.source 1.0.0.v20080505-1850 org.eclipse.equinox.http.jetty.source 1.1.0.v20080425 org.eclipse.equinox.log.source 1.1.0.v20080414 org.eclipse.equinox.servletbridge.source 1.0.100.v20080427-0830 org.eclipse.help.appserver.source 3.1.300.v20080507 org.eclipse.equinox.ds.source 1.0.0.v20080427-0830 org.eclipse.gmf.codegen.source 2.1.0.v20080610-1132 org.eclipse.equinox.security.source 1.0.0.v20080512-1800 org.eclipse.jdt.ui.source 3.4.0.v20080603-2000 org.eclipse.help.source 3.3.100.v20080610 org.eclipse.gmf.map.source 2.1.0.v20080521 org.eclipse.core.databinding.source 1.1.0.I20080527-2000 org.eclipse.gmf.runtime.diagram.ui.source 1.1.0.v20080610-1132 org.eclipse.osgi.source 3.4.0.v20080605-1900 org.eclipse.equinox.p2.updatechecker.source 1.0.0.v20080427-2136 javax.servlet.jsp.source 2.0.0.v200806031607 org.apache.ant.source 1.7.0.v200803061910 org.eclipse.pde.ui.templates.source 3.4.0.v20080514-1500 org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.source 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.common.ui.services.properties.source 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.notation.edit.source 1.1.0.v20080507-1326 org.eclipse.gmf.runtime.draw2d.ui.render.awt.source 1.1.0.v20080603-1553 org.apache.lucene.source 1.9.1.v20080530-1600 org.eclipse.gmf.runtime.common.ui.action.source 1.1.0.v20080425-1959 org.eclipse.core.commands.source 3.4.0.I20080509-2000 org.eclipse.ui.externaltools.source 3.2.0.v20080514-1542 org.eclipse.ui.workbench.source 3.4.0.I20080606-1300 org.eclipse.gmf.graphdef.source 2.0.100.v20080528-1052 org.eclipse.pde.api.tools.source 1.0.0.v20080529-1150 org.eclipse.gmf.tooldef.edit.source 2.0.0.v20080610-1132 org.eclipse.ui.source 3.4.0.I20080610-1200 org.eclipse.jdt.compiler.apt.source 1.0.100.v20080513-1235 org.eclipse.equinox.p2.artifact.repository.source 1.0.0.v20080609-0850 org.eclipse.pde.build.source 3.4.0.v20080604 org.eclipse.equinox.p2.garbagecollector.source 1.0.0.v20080506-1939 org.eclipse.equinox.p2.engine.source 1.0.0.v20080522-1735 org.eclipse.ui.console.source 3.3.0.v20080529-1300 org.eclipse.rcp.source 3.4.0.v20080507 org.eclipse.gmf.graphdef.codegen.ui.source 1.0.100.v20080425-1959 org.eclipse.gmf.graphdef.codegen.source 2.0.100.v20080528-1052 org.eclipse.core.resources.compatibility.source 3.4.0.v20080604-1400 org.eclipse.gmf.runtime.emf.ui.properties.source 1.1.0.v20080425-1959 org.eclipse.equinox.p2.touchpoint.natives.source 1.0.0.v20080505-1850 org.eclipse.equinox.device.source 1.0.1.v20080303 org.eclipse.gmf.validate.source 1.1.0.v20080603-1553 org.eclipse.jsch.core.source 1.1.100.I20080604 org.eclipse.team.cvs.ui.source 3.3.100.I20080604 org.eclipse.jdt.junit.source 3.4.0.v20080603-2000 org.eclipse.jdt.debug.source 3.4.0.v20080604 org.eclipse.equinox.p2.exemplarysetup.source 1.0.0.v20080427-2136 org.eclipse.ui.presentations.r21.source 3.2.100.I20080512-2000 org.eclipse.ant.ui.source 3.3.0.v20080529 org.eclipse.gmf.runtime.draw2d.ui.source 1.1.0.v20080610-1132 org.eclipse.jdt.core.source 3.4.0.v_874 org.eclipse.equinox.p2.ui.sdk.source 1.0.0.v20080605-1731 org.eclipse.jdt.core.manipulation.source 1.2.0.v20080603-2000 org.eclipse.equinox.launcher.source 1.0.100.v20080509-1800 org.eclipse.ui.net.source 1.0.0.I20080605 org.eclipse.gmf.codegen.edit.source 2.1.0.v20080610-1132 org.eclipse.update.core.source 3.2.200.v20080515 org.eclipse.ui.workbench.compatibility.source 3.2.0.I20080509-2000 org.objectweb.asm.source 3.1.0.v200803061910 org.eclipse.equinox.p2.extensionlocation.source 1.0.0.v20080523-0001 org.eclipse.gmf.xpand.editor.source 1.0.0.v20080425-1959 org.eclipse.team.cvs.ssh2.source 3.2.200.I20080604 org.eclipse.core.expressions.source 3.4.0.v20080603-2000 org.eclipse.gmf.bridge.ui.dashboard.source 2.0.0.v20080417-1610 org.eclipse.equinox.preferences.source 3.2.200.v20080421-2006 org.eclipse.gmf.runtime.common.ui.source 1.1.0.v20080512-1200 org.eclipse.gmf.runtime.common.ui.printing.source 1.1.0.v20080425-1959 org.eclipse.team.ui.source 3.4.0.I20080604 org.eclipse.gmf.runtime.common.ui.services.dnd.source 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.notation.source 1.1.0.v20080507-1326 org.eclipse.jdt.apt.core.source 3.3.100.v20080513-1235 org.eclipse.jdt.junit4.runtime.source 1.0.200.v20080603-2000 org.eclipse.ant.core.source 3.2.0.v20080529 org.eclipse.gmf.runtime.common.ui.printing.win32.source 1.1.0.v20080612-1355 org.eclipse.core.resources.source 3.4.0.v20080604-1400 org.eclipse.emf.mint.source 0.7.0.v200806172223 org.eclipse.equinox.p2.metadata.repository.source 1.0.0.v20080604 org.eclipse.pde.junit.runtime.source 3.4.0.v20080529-1800 org.eclipse.compare.source 3.4.0.I20080604 org.eclipse.equinox.event.source 1.1.0.v20080225 org.eclipse.jdt.apt.pluggable.core.source 1.0.100.v20080407-1345 org.eclipse.update.scheduler.source 3.2.100.v20080404 org.eclipse.gmf.runtime.draw2d.ui.render.source 1.1.0.v20080507-2230 net.sourceforge.lpg.lpgjavaruntime.source 1.1.0.v200803061910 org.eclipse.gmf.runtime.diagram.ui.printing.render.source 1.1.0.v20080425-1959 org.eclipse.core.jobs.source 3.4.0.v20080512 org.eclipse.pde.api.tools.ui.source 1.0.0.v20080603 org.eclipse.ui.intro.universal.source 3.2.200.v20080508 org.eclipse.equinox.security.win32.x86.source 1.0.0.v20080529-1600 org.eclipse.gmf.xpand.source 1.1.0.v20080528-1052 org.eclipse.jface.text.source 3.4.0.v20080603-2000 org.eclipse.ui.views.source 3.3.0.I20080509-2000 org.eclipse.update.ui.source 3.2.100.v20080318 org.eclipse.ui.ide.source 3.4.0.I20080606-1300 org.eclipse.equinox.p2.jarprocessor.source 1.0.0.v20080514-1900 org.eclipse.gmf.ecore.editor.source 2.0.100.v20080610-1132 org.eclipse.pde.core.source 3.4.0.v20080604-2000 org.eclipse.equinox.http.servletbridge.source 1.0.0.v20080427-0830 org.eclipse.ui.ide.application.source 1.0.0.I20080603-2000 org.eclipse.gmf.tooling.source 2.1.0.v20080425-1959 org.eclipse.osgi.util.source 3.1.300.v20080303 org.apache.commons.logging.source 1.0.4.v20080605-1930 org.eclipse.gmf.runtime.diagram.ui.providers.source 1.1.0.v20080503-1740 org.eclipse.equinox.util.source 1.0.0.v20080414 org.eclipse.jdt.compiler.tool.source 1.0.100.v_874 org.eclipse.gmf.runtime.emf.type.core.source 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.emf.ui.source 1.1.0.v20080516-1748 org.junit.source 3.8.2.v20080602-1318 org.eclipse.gmf.runtime.common.ui.action.ide.source 1.1.0.v20080425-1959 org.eclipse.mylyn.jira.core.source 3.0.2.v20080918-1100-e3x org.eclipse.pde.source 3.4.0.v20080603 org.eclipse.core.contenttype.source 3.3.0.v20080604-1400 org.eclipse.gmf.runtime.common.ui.services.dnd.ide.source 1.1.0.v20080425-1959 org.eclipse.equinox.ip.source 1.0.0.v20080218 org.eclipse.jdt.junit.runtime.source 3.3.0.v20080603-2000 org.eclipse.gmf.runtime.diagram.ui.dnd.source 1.1.0.v20080425-1959 org.eclipse.equinox.registry.source 3.4.0.v20080516-0950 org.eclipse.gmf.runtime.common.ui.services.source 1.1.0.v20080612-1229 org.eclipse.equinox.p2.metadata.generator.source 1.0.0.v20080604 org.eclipse.gmf.tooldef.source 2.0.0.v20080417-1610 org.eclipse.gmf.runtime.common.ui.services.action.source 1.1.0.v20080507-2230 org.eclipse.ui.views.log.source 1.0.0.v20080522-2200 org.eclipse.equinox.app.source 1.1.0.v20080421-2006 org.eclipse.equinox.p2.director.source 1.0.0.v20080604 org.eclipse.gmf.graphdef.edit.source 2.0.100.v20080610-1132 org.eclipse.equinox.cm.source 1.0.0.v20080509-1800 org.eclipse.mylyn.trac.ui.source 3.0.2.v20080918-1100-e3x org.eclipse.core.filesystem.source 1.2.0.v20080604-1400 org.eclipse.gmf.common.source 1.1.1.v20080610-1132 org.eclipse.equinox.http.servlet.source 1.0.100.v20080427-0830 org.eclipse.core.databinding.beans.source 1.1.0.I20080508-2000a org.eclipse.gmf.runtime.notation.providers.source 1.1.0.v20080425-1959 org.eclipse.equinox.frameworkadmin.source 1.0.0.v20080430-1750 org.eclipse.equinox.p2.ui.source 1.0.0.v20080530-1237 org.eclipse.ui.navigator.resources.source 3.3.100.I20080606-1300 org.eclipse.gmf.runtime.diagram.ui.properties.source 1.1.0.v20080603-1553 org.eclipse.gmf.runtime.emf.clipboard.core.source 1.1.0.v20080425-1959 org.apache.lucene.analysis.source 1.9.1.v20080530-1600 org.eclipse.equinox.metatype.source 1.0.0.v20070827 org.eclipse.ui.views.properties.tabbed.source 3.4.0.I20080527-2000 org.apache.jasper.source 5.5.17.v200806031609 org.eclipse.gmf.runtime.emf.type.ui.source 1.1.0.v20080425-1959 org.eclipse.help.ui.source 3.3.100.v20080521 org.eclipse.gmf.bridge.source 1.1.0.v20080528-1052 org.eclipse.core.filebuffers.source 3.4.0.v20080603-2000 org.mortbay.jetty.source 5.1.14.v200806031611 org.eclipse.equinox.frameworkadmin.equinox.source 1.0.0.v20080529-1225 org.eclipse.jsch.ui.source 1.1.100.I20080415 org.eclipse.equinox.p2.metadata.source 1.0.0.v20080514-1900 org.eclipse.gmf.runtime.diagram.ui.geoshapes.source 1.1.0.v20080503-1740 org.eclipse.team.cvs.ssh.source 3.2.100.I20080604 org.eclipse.gmf.runtime.common.core.source 1.1.0.v20080425-1959 org.eclipse.equinox.wireadmin.source 1.0.0.v20080407 org.eclipse.core.runtime.compatibility.auth.source 3.2.100.v20070502 org.eclipse.ui.browser.source 3.2.200.v20080507 org.eclipse.ltk.ui.refactoring.source 3.4.0.v20080605-1800 org.eclipse.gmf.runtime.gef.ui.source 1.1.0.v20080503-1740 org.eclipse.equinox.p2.reconciler.dropins.source 1.0.0.v20080611 org.eclipse.equinox.p2.touchpoint.eclipse.source 1.0.0.v20080529-1225 org.eclipse.core.runtime.source 3.4.0.v20080512 org.eclipse.mylyn.jira.ui.source 3.0.2.v20080918-1100-e3x org.eclipse.core.variables.source 3.2.100.v20080529-1300 org.eclipse.gmf.runtime.diagram.ui.resources.editor.source 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.diagram.ui.actions.source 1.1.0.v20080603-1553 org.eclipse.pde.ui.source 3.4.0.v20080530 org.eclipse.search.source 3.4.0.v20080603-2000 org.eclipse.ui.workbench.texteditor.source 3.4.0.v20080603-2000 org.eclipse.equinox.p2.updatesite.source 1.0.0.v20080529-1800 org.eclipse.team.core.source 3.4.0.I20080605 org.eclipse.equinox.common.source 3.4.0.v20080421-2006 org.eclipse.equinox.simpleconfigurator.source 1.0.0.v20080604 org.eclipse.equinox.p2.core.source 1.0.0.v20080530-1237 org.apache.commons.el.source 1.0.0.v200806031608 org.eclipse.gmf.map.edit.source 2.1.0.v20080610-1132 org.eclipse.help.webapp.source 3.3.100.v20080528 org.eclipse.gmf.runtime.diagram.ui.printing.source 1.1.0.v20080501-1739 org.eclipse.equinox.transforms.xslt.source 1.0.0.v20080610 org.eclipse.pde.runtime.source 3.4.0.v20080530-1200 org.eclipse.ltk.core.refactoring.source 3.4.0.v20080603-2000 org.eclipse.jdt.apt.ui.source 3.3.100.v20080407-1345 org.eclipse.gmf.codegen.ui.source 1.1.0.v20080512-1200 org.eclipse.gmf.runtime.diagram.ui.render.source 1.1.0.v20080603-1553 org.eclipse.ui.navigator.source 3.3.100.I20080606-1300 org.eclipse.platform.source 3.3.100.v200806172000 org.eclipse.jdt.source 3.4.0.v20080603-2000 com.ibm.icu.source 3.8.1.v20080530 org.eclipse.gmf.runtime.emf.commands.core.source 1.1.0.v20080425-1959 org.eclipse.debug.ui.source 3.4.0.v20080529-1300 org.eclipse.equinox.p2.console.source 1.0.0.v20080514-1900 org.eclipse.debug.core.source 3.4.0.v20080612 org.eclipse.help.base.source 3.3.100.v20080617 org.eclipse.equinox.p2.director.app.source 1.0.0.v20080604 org.eclipse.gmf.source 1.0.0.v20080425-1959 org.eclipse.equinox.useradmin.source 1.1.0.v20080508-1815 org.eclipse.equinox.http.source 1.0.200.v20080421-2006 org.eclipse.pde.p2.ui.source 1.0.0.v20080604-2000 org.eclipse.core.runtime.compatibility.source 3.2.0.v20071008 org.eclipse.ui.cheatsheets.source 3.3.100.v20080508 org.eclipse.emf.mint.ui.source 0.7.0.v200806172223 org.eclipse.core.net.source 1.1.0.I20080604 org.eclipse.ui.forms.source 3.3.100.v20080611 org.eclipse.swt.win32.win32.x86.source 3.4.0.v3448f javax.servlet.source 2.4.0.v200806031604 org.eclipse.equinox.security.ui.source 1.0.0.v20080603-1810 org.eclipse.team.cvs.core.source 3.3.100.I20080605 org.eclipse.core.runtime.compatibility.registry.source 3.2.200.v20080610 org.eclipse.gmf.runtime.diagram.core.source 1.1.0.v20080425-1959
-1 x1652 -1 x1651>= -1 ;
-1 x1651 1 x1653 1 x1654 1 x1655 1 x1656 1 x22 1 x1657 1 x43 1 x1658 1 x438 1 x1659 1 x1660 1 x1661 1 x161 1 x1662 1 x1663 1 x1664 1 x1665 1 x206 1 x1666 1 x1667 1 x1668 1 x1669 1 x1670 1 x228 1 x1671 1 x1672 1 x1673 1 x1674 1 x1675 1 x1676 1 x1677 1 x1678 1 x1679 1 x1680 1 x270 1 x1681 1 x271 1 x1682 1 x1683 1 x1684 1 x1685 1 x294 1 x1686 1 x295 1 x1687 1 x1688 1 x296 1 x1689 1 x1690 1 x1691 1 x1692 1 x1693 1 x338 1 x1694 1 x1695 1 x1696 1 x1697 1 x1698 1 x1699 1 x359 1 x1700 1 x362 1 x1701 1 x363 1 x1702 1 x390 1 x1703 1 x1704 1 x442 1 x1705 1 x1706 1 x1707 1 x1708 1 x1709 1 x418 1 x1710 1 x419 1 x1711 1 x1712 1 x421 1 x1713 1 x1714 1 x1715 1 x1716 1 x428 1 x1717 1 x441 1 x1718 1 x1719 1 x1720 1 x1721 1 x1722 1 x1723 1 x1724 1 x1725 1 x1726 1 x1727 1 x1728 1 x1729 1 x1730 1 x1731 1 x1732 1 x1733 1 x1734 1 x1735 1 x1736 1 x1737 1 x1738 1 x1739 1 x1740 1 x1741 1 x1742 1 x581 1 x1743 1 x1744 1 x1745 1 x1746 1 x1747 1 x1748 1 x1749 1 x611 1 x1750 1 x1751 1 x1752 1 x1753 1 x1754 1 x1755 1 x1756 1 x640 1 x1757 1 x1758 1 x1759 1 x1760 1 x1761 1 x1762 1 x1763 1 x1764 1 x1765 1 x1766 1 x1767 1 x1768 1 x1769 1 x1770 1 x1614 1 x1771 1 x1772 1 x1773 1 x1774 1 x1775 1 x1776 1 x1777 1 x1778 1 x1779 1 x1632 1 x1631 1 x1780 1 x1781 1 x1782 1 x1783 1 x1784 1 x1785 1 x1786 1 x1787 1 x1636 1 x1788 1 x1789 1 x1790 1 x1791 1 x1792 1 x1793 1 x1794 1 x1795 1 x1796 1 x1797 1 x1798 1 x1799 1 x440 1 x1800 1 x1639 1 x1640 1 x1801 1 x1802 1 x1803 1 x1642 1 x1804 1 x1805 1 x1806 1 x1807 1 x1808 1 x1809 1 x1643 1 x1810 1 x1811 1 x1812 1 x1813 1 x1814 1 x1815 1 x1816 1 x1817 1 x1818 1 x1819 1 x1820 1 x1821 1 x1822 1 x1823 1 x1824 1 x1825 1 x1826 1 x1827 1 x1828 1 x1829 1 x1830 1 x1831 1 x1832 1 x1833 1 x1834 1 x1835 1 x1836 1 x1837 1 x1838 1 x1839 1 x1840 1 x1841 1 x1842 1 x1843 1 x1844 1 x1845 1 x1846 1 x1847 1 x1848 1 x439 1 x1849 1 x1850 >= 0;
-1 x1650 1 x1652 1 x1651 >= 0;
@@ -4635,9 +4633,6 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
* com.swtdesigner 6.7.1.200809050053 requires optionaly either org.eclipse.jface.text 3.4.0.v20080603-2000
-1 x2201 -1 x2210>= -1 ;
-1 x2210 1 x63 >= 0;
-* com.swtdesigner 6.7.1.200809050053 requires optionaly either org.eclipse.update.configurator 3.2.200.v20080417
--1 x2201 -1 x2211>= -1 ;
- -1 x2211 1 x638 >= 0;
* com.swtdesigner 6.7.1.200809050053 requires optionaly either org.eclipse.osgi 3.4.0.v20080605-1900
-1 x2201 -1 x2212>= -1 ;
-1 x2212 1 x23 >= 0;
@@ -5963,8 +5958,6 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
-1 x308 +1 x424 >= 0;
* org.eclipse.pde.ui 3.4.0.v20080530 requires either org.eclipse.ui.cheatsheets 3.3.100.v20080508
-1 x308 +1 x305 >= 0;
-* org.eclipse.pde.ui 3.4.0.v20080530 requires either org.eclipse.update.configurator 3.2.200.v20080417
--1 x308 +1 x638 >= 0;
* org.eclipse.pde.ui 3.4.0.v20080530 requires either org.eclipse.ui.views.log 1.0.0.v20080522-2200
-1 x308 +1 x1580 >= 0;
* org.eclipse.pde.ui 3.4.0.v20080530 requires either org.eclipse.ltk.core.refactoring 3.4.0.v20080603-2000
@@ -6463,8 +6456,6 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
-1 x1942 +1 x54 >= 0;
* org.eclipse.rcp.feature.group 3.4.0.v20080324a-989JERhEk-jWnd5IY8K5tjxB requires either org.eclipse.ui.workbench 3.4.0.I20080606-1300
-1 x1942 +1 x65 >= 0;
-* org.eclipse.rcp.feature.group 3.4.0.v20080324a-989JERhEk-jWnd5IY8K5tjxB requires either org.eclipse.update.configurator 3.2.200.v20080417
--1 x1942 +1 x638 >= 0;
* org.eclipse.rcp.feature.group 3.4.0.v20080324a-989JERhEk-jWnd5IY8K5tjxB requires either org.eclipse.equinox.simpleconfigurator 1.0.0.v20080604
-1 x1942 +1 x1203 >= 0;
* org.eclipse.rcp.feature.group 3.4.0.v20080324a-989JERhEk-jWnd5IY8K5tjxB requires either org.eclipse.swt.win32.win32.x86 3.4.0.v3448f
@@ -7994,8 +7985,6 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
-1 x1306 +1 x54 >= 0;
* org.eclipse.update.ui 3.2.100.v20080318 requires either org.eclipse.update.core 3.2.200.v20080515
-1 x1306 +1 x1185 >= 0;
-* org.eclipse.update.ui 3.2.100.v20080318 requires either org.eclipse.update.configurator 3.2.200.v20080417
--1 x1306 +1 x638 >= 0;
* org.eclipse.update.ui 3.2.100.v20080318 requires either org.eclipse.ui.forms 3.3.100.v20080611
-1 x1306 +1 x140 >= 0;
* org.eclipse.update.ui 3.2.100.v20080318 requires either com.windowtester.swing.recorder 3.5.1.200809042232 com.windowtester.runtime 3.5.1.200809042232 javax.xml 1.3.4.v200806030440 com.windowtester.swing.recorder 3.5.0.200806270034 com.windowtester.runtime 3.5.0.200806270034 a.jre 1.6.0
@@ -8336,8 +8325,6 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
-1 x196 +1 x159 >= 0;
* org.eclipse.core.runtime.compatibility 3.2.0.v20071008 requires either org.eclipse.core.runtime 3.4.0.v20080512
-1 x52 +1 x21 >= 0;
-* org.eclipse.core.runtime.compatibility 3.2.0.v20071008 requires either org.eclipse.update.configurator 3.2.200.v20080417
--1 x52 +1 x638 >= 0;
* org.eclipse.core.runtime.compatibility 3.2.0.v20071008 requires either com.windowtester.swing.recorder 3.5.1.200809042232 com.windowtester.runtime 3.5.1.200809042232 javax.xml 1.3.4.v200806030440 com.windowtester.swing.recorder 3.5.0.200806270034 com.windowtester.runtime 3.5.0.200806270034 a.jre 1.6.0
-1 x52 +1 x369 +1 x370 +1 x371 +1 x372 +1 x373 +1 x210 >= 0;
* org.eclipse.core.runtime.compatibility 3.2.0.v20071008 requires either com.windowtester.swing.recorder 3.5.1.200809042232 com.windowtester.runtime 3.5.1.200809042232 javax.xml 1.3.4.v200806030440 com.windowtester.swing.recorder 3.5.0.200806270034 com.windowtester.runtime 3.5.0.200806270034 a.jre 1.6.0
@@ -9528,10 +9515,6 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
-1 x1495 +1 x41 >= 0;
* org.apache.lucene.analysis 1.9.1.v20080530-1600 requires either org.apache.lucene 1.9.1.v20080530-1600
-1 x1496 +1 x1241 >= 0;
-* toolingwin32.win32.x86org.eclipse.update.configurator 3.2.200.v20080417 requires either org.eclipse.update.configurator 3.2.200.v20080417
--1 x2420 +1 x638 >= 0;
-* toolingwin32.win32.x86org.eclipse.update.configurator 3.2.200.v20080417 requires either org.python.pydev.core 0.9.7 org.eclipse.m2m.qvt.oml.trace.edit 1.0.0.v20080611-1330 org.eclipse.emf.codegen.ecore 2.4.0.v200806091234 org.eclipse.uml2.common.edit 1.4.0.v200805131030 org.eclipse.core.runtime 3.4.0.v20080512 org.python.pydev.core 1.3.9 javax.xml.soap 1.2.0.v200806030421 org.eclipse.gmf.runtime.common.ui.action.ide 1.1.0.v20080425-1959 org.eclipse.emf.cdo.edit 1.0.0.v200806180411 org.eclipse.ecf.provider.msn 1.2.0.v20080623-0046 org.eclipse.equinox.frameworkadmin.equinox 1.0.0.v20080529-1225 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.1 org.eclipse.equinox.http.servletbridge 1.0.0.v20080427-0830 org.python.pydev 0.9.5 org.python.pydev.parser 1.2.3 org.eclipse.emf.example.installer 1.0.0.v200806091234 com.instantiations.assist.eclipse 5.5.0 org.eclipse.wst.common.environment 1.0.201.v200805140020 org.eclipse.zest.source 1.0.0.v20080115-53-8xB4CE899O274A org.eclipse.emf.ant 2.4.0.v200806091234 com.instantiations.eclipse.mail 5.5.1 org.python.pydev.parser 1.3.1 org.eclipse.birt.chart.engine 2.3.0.v20080606 org.eclipse.core.resources 3.4.0.v20080604-1400 org.eclipse.birt.report.engine.emitter.postscript 2.3.0.v20080610 org.python.pydev.jython 1.1.0 org.eclipse.ui.workbench.compatibility 3.2.0.I20080509-2000 com.nordea.cd.dev.plugin.builderruntime 1.0.0 org.eclipse.m2m.atl.adt.editor 2.0.0.v200806101117 org.eclipse.equinox.p2.director.app 1.0.0.v20080604 org.eclipse.mylyn.tasks.core 3.0.0.v20080619-1900 org.python.pydev.ast 1.0.4 org.eclipse.m2m.atl.compilers.atl2006 2.0.0.v200806101117 org.eclipse.datatools.enablement.sybase.asa.ui 1.0.1.v200805310538 org.eclipse.emf.mapping.ecore2xml.ui 2.4.0.v200806091234 org.eclipse.wst.dtd.ui 1.0.301.v200808072012 org.eclipse.birt.chart.engine.extension 2.3.0.v20080611 org.eclipse.jface.databinding 1.2.0.I20080515-2000a org.eclipse.birt.chart.reportitem.ui 2.3.0.v20080610 org.eclipse.datatools.enablement.hsqldb.ui 1.0.0.v200805152355 org.eclipse.mylyn.ide.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.security.ui 1.0.0.v20080603-1810 org.eclipse.wst.common.emfworkbench.integration 1.1.201.v200808071700 org.eclipse.gmf.validate 1.1.0.v20080603-1553 org.eclipse.emf.mapping.ecore2ecore.editor 2.4.0.v200806091234 org.eclipse.ecf.provider.irc 1.3.0.v20080623-0046 org.eclipse.emf.validation.doc 1.2.0.v200805130238 org.python.pydev.ast 1.2.8 org.eclipse.emf.teneo.doc 1.0.0.v200806111928 org.python.pydev.jython 1.3.12 org.eclipse.emf.ecoretools.source 0.8.0.v200806130600 org.eclipse.equinox.p2.updatesite 1.0.0.v20080529-1800 org.eclipse.ecf.presence.bot 1.2.0.v20080623-0046 com.swtdesigner.properties.java5 1.0.0 org.eclipse.platform.doc.isv 3.4.0.v20080613-1330 org.python.pydev.core 1.2.3 org.eclipse.datatools.connectivity.db.generic 1.0.0.v200805152355 org.eclipse.uml2.diagram.clazz 0.8.0.v200806112132 org.eclipse.birt.report.designer.ui.views 2.3.0.v20080606 org.eclipse.mylyn.monitor.core 3.0.2.v20080918-1100-e3x com.instantiations.eclipse.debug 5.3.2.200806270030 org.eclipse.gmf.runtime.common.ui.action 1.1.0.v20080425-1959 org.eclipse.equinox.useradmin 1.1.0.v20080508-1815 org.eclipse.mylyn.commons.ui 3.0.2.v20080918-1100-e3x org.eclipse.equinox.cm 1.0.0.v20080509-1800 org.eclipse.uml2.diagram.component 0.8.0.v200806112132 org.eclipse.swt.layout.grouplayout 1.1.0 org.python.pydev 1.2.4 javax.servlet 2.4.0.v200806031604 org.eclipse.uml2.examples.uml.ui 2.2.0.v200805131030 org.python.pydev.ast 1.3.10 org.eclipse.birt.report.designer.ui.ide 2.3.0.v20080606 org.python.pydev.parser 1.3.18 com.swtdesigner.layout.group 6.7.0.200806270151 org.eclipse.m2m.qvt.oml.runtime.source 1.0.0.v20080611-1330-5--AgI99m9cDD4DNN9 org.eclipse.mylyn.tasks.ui 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.3.13 org.eclipse.emf.teneo.jpox.eclipse 1.0.0.v200806111928 org.eclipse.equinox.transforms.xslt 1.0.0.v20080610 org.python.pydev.core 1.0.7 org.eclipse.datatools.enablement.ibm.db2.zseries.ui 1.0.0.v200805160737 org.eclipse.mylyn.resources.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.enablement.oda.ws 1.1.0.v200805261930 org.eclipse.equinox.frameworkadmin 1.0.0.v20080430-1750 org.eclipse.birt.chart.device.extension 2.3.0.v20080424 org.eclipse.net4j.jvm 1.0.0.v200806180305 org.eclipse.emf.cdo.migrator 1.0.0.v200806180411 org.python.pydev.jython 1.3.1 org.eclipse.m2m.qvt.oml.cst.parser 1.0.0.v20080611-1330 com.xored.composer.ui 1.3.4.200809042225 org.eclipse.datatools.enablement.sybase.ui 1.0.0.v200806041138 org.eclipse.ecf.remoteservice.ui 2.0.0.v20080623-0046 org.eclipse.net4j.db.mysql 1.0.0.v200806180305 org.eclipse.update.scheduler 3.2.100.v20080404 org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide 1.1.0.v20080425-1959 org.eclipse.wst.dtdeditor.doc.user 1.0.400.v200805150028 org.eclipse.wst.xmleditor.doc.user 1.0.401.v200808071323 org.eclipse.gmf.runtime.common.ui.services.dnd 1.1.0.v20080425-1959 org.eclipse.uml2.common 1.4.0.v200805131030 org.apache.jasper 5.5.17.v200806031609 org.python.pydev 1.0.8 org.eclipse.datatools.doc.user 1.6.0.20080606124249 org.objectweb.asm 3.1.0.v200803061910 org.eclipse.emf.cdo.doc 1.0.0.v200806180411 org.python.pydev.core 1.3.17 org.eclipse.core.resources.compatibility 3.4.0.v20080604-1400 com.instantiations.eclipse.startup 5.3.2.200806270030 org.eclipse.datatools.connectivity.apache.derby.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.graphdef.codegen 2.0.100.v20080528-1052 org.eclipse.emf.common 2.4.0.v200806091234 org.eclipse.wst.xml.ui.infopop 1.0.300.v200805140200 org.python.pydev.core 1.3.0 org.eclipse.equinox.p2.touchpoint.natives 1.0.0.v20080505-1850 org.eclipse.ant.core 3.2.0.v20080529 org.eclipse.ui.workbench 3.4.0.I20080606-1300 org.eclipse.ecf.provider.xmpp.ui 2.0.0.v20080623-0046 org.w3c.sac 1.3.0.v20070710 org.python.pydev.jython 1.2.3 org.eclipse.mylyn.context.ui 3.0.0.v20080619-1900 org.eclipse.ecf.doc 1.3.0.v20080623-0046 org.eclipse.ecf.provider.bittorrent.ui 0.2.0.v20080623-0046 com.xored.swt.composer 1.3.4.200809042225 org.python.pydev.parser 1.0.4 org.eclipse.help.webapp 3.3.100.v20080528 org.eclipse.uml2.diagram.deploy 0.8.0.v200806112132 org.eclipse.ecf.provider.irc.ui 1.3.0.v20080623-0046 org.python.pydev 1.3.18 org.eclipse.m2m.atl.source 2.0.0.v200806101117 org.eclipse.mylyn.tasks.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.identity 2.0.0.v20080611-1715 org.eclipse.ocl.ecore 1.2.0.v200805130238 org.eclipse.core.expressions 3.4.0.v20080603-2000 org.eclipse.core.runtime.compatibility.registry 3.2.200.v20080610 org.eclipse.tptp.platform.la.core 4.3.200.v200805231116 org.eclipse.m2m.atl.service.core 2.0.0.v200806101117 org.apache.commons.logging 1.0.4.v20080605-1930 org.eclipse.platform.doc.user 3.4.0.v20080612-1340 com.windowtester.runtime.junit4 3.5.0.200806270034 org.python.pydev.parser 1.2.8 org.eclipse.uml2.examples.source 2.2.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.providers 1.1.0.v20080503-1740 org.python.pydev.jython 1.3.20 org.python.pydev.jython 1.0.7 org.eclipse.m2m.qvt.oml.common 1.0.0.v20080611-1330 org.eclipse.wst.sse.ui 1.1.0.v200806041847 org.eclipse.core.resources.win32.x86 3.4.0.v20071204 org.eclipse.swt.widgets.baseline 1.1.0 com.xored.swt.composer.win32.win32.x86 1.3.4.200809042225 org.eclipse.datatools.enablement.mysql.ui 1.0.0.v200805152355 org.eclipse.m2m.atl.ocl.core 2.0.0.v200806101117 org.eclipse.emf.codegen.ecore.ui 2.4.0.v200806091234 org.eclipse.equinox.http.servlet 1.0.100.v20080427-0830 org.python.pydev.ast 1.3.2 org.python.pydev 1.3.6 org.eclipse.birt.report.viewer 2.3.0.v20080606 org.apache.batik.extension 1.6.0.v200805290154 org.eclipse.uml2.diagram.statemachine 0.8.0.v200806112132 org.python.pydev.parser 1.3.10 org.eclipse.equinox.p2.ui.admin.rcp 1.0.0.v20080604 org.eclipse.emf.compare.match 0.8.0.v200806180301 org.eclipse.datatools.enablement.oracle.ui 1.0.0.v200805240040 org.python.pydev 0.7.1 com.lowagie.itext 1.5.4.v20080228 org.eclipse.birt.report.designer.ui.preview.web 2.3.0.v200806102 org.eclipse.birt.report.designer.ui.samples.ide 2.3.0.v20080606 org.eclipse.xsd.ecore.converter 2.4.0.v200806091234 org.eclipse.jdt.compiler.tool 1.0.100.v_874 org.eclipse.equinox.registry 3.4.0.v20080516-0950 org.eclipse.wst.dtd.ui.infopop 1.0.300.v200805140200 org.python.pydev.ast 0.9.5 org.eclipse.ui.workbench.texteditor 3.4.0.v20080603-2000 org.eclipse.cvs 1.0.100.v20080603 org.eclipse.uml2.search.ui 0.7.0.v200806130939 org.eclipse.gmf.common 1.1.1.v20080610-1132 org.eclipse.uml2.uml.editor 2.2.0.v200805131030 org.eclipse.m2m.atl.engine 2.0.0.v200806101117 org.eclipse.net4j.http.common 1.0.0.v200806180305 org.eclipse.ecf.presence.ui 1.2.0.v20080623-0046 org.python.pydev.parser 1.2.2 org.eclipse.emf.cdo.tests.model3.edit 1.0.0.v200806180411 org.eclipse.emf.cdo.tests.model1 1.0.0.v200806180411 org.eclipse.m2m.atl.engine.vm 2.0.0.v200806101117 com.instantiations.eclipse.mail 5.5.0 org.eclipse.emf.ocl.source 1.1.100.v200805130238-108Y7w311916241349 com.windowtester.swt.runtime.legacy 3.5.1.200809042232 org.eclipse.uml2tools 0.8.0.v200806112132 org.eclipse.emf.search.genmodel.ui 0.7.0.v200806130939 org.eclipse.mylyn.jira.core 3.0.2.v20080918-1100-e3x org.eclipse.uml2.uml.ecore.importer 2.2.0.v200805131030 org.eclipse.emf.transaction.doc 1.2.0.v200805130238 org.eclipse.tptp.platform.logging.events 4.3.200.v200805310100 org.python.pydev.core 1.3.8 org.eclipse.xsd.ecore.importer 2.4.0.v200806091234 org.eclipse.emf.teneo.source 1.0.0.v200806111928-78--DUUEFDEz0MMNLVD org.eclipse.uml2 2.1.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.render 1.1.0.v20080603-1553 com.windowtester.swt.runtime.os.win32 3.5.0.200806270034 org.eclipse.rcp 3.4.0.v20080507 org.eclipse.xsd.mapping 2.4.0.v200806091234 org.eclipse.emf.workspace.doc 1.2.0.v200805130238 org.eclipse.pde.api.tools 1.0.0.v20080529-1150 org.eclipse.emf.mapping.ecore2xml 2.4.0.v200806091234 org.eclipse.swt.win32.win32.x86 3.4.0.v3448f org.apache.derby 10.1.2.1_v200803061811 org.eclipse.m2m.qvt.oml.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.python.pydev.parser 1.3.0 org.eclipse.ecf.protocol.msn 1.2.0.v20080623-0046 com.instantiations.eclipse.ui 5.3.2.200809042027 org.eclipse.jet.core 1.1.0.v20080415 org.eclipse.datatools.enablement.sybase.ase.models 1.0.1.v200805152355 com.nordea.cd.dev.plugin.builderruntime 1.0.1 com.instantiations.assist.eclipse.core 5.5.0 org.python.pydev.ast 1.0.5 org.eclipse.ecf.filetransfer 2.0.0.v20080611-1715 org.python.pydev.parser 0.9.5 org.python.pydev.core 1.2.2 org.eclipse.emf.transaction.ui 1.2.0.v200805130238 org.eclipse.gmf.runtime.gef.ui 1.1.0.v20080503-1740 org.eclipse.wst.xml.core 1.1.301.v200808072008 org.eclipse.uml2.diagram.clazz.search 0.7.0.v200806130939 org.sat4j.core 2.0.0.v20080602 org.eclipse.datatools.connectivity.ui 1.1.0.v200806040132 org.eclipse.birt.report.designer.ui.editors 2.3.0.v20080610a org.eclipse.equinox.p2.reconciler.dropins 1.0.0.v20080611 org.eclipse.wst.common.project.facet.core 1.3.1.v200807031821 org.python.pydev.jython 1.3.11 org.eclipse.datatools.enablement.postgresql 1.0.1.v200805152355 org.eclipse.ltk.ui.refactoring 3.4.0.v20080605-1800 org.eclipse.datatools.enablement.sybase.ase 1.0.1.v200806040735 org.python.pydev.ast 1.2.9 org.eclipse.datatools.connectivity.oda 3.1.2.v200805152355 org.eclipse.wst.common.emf 1.1.201.v200808071700 org.apache.batik.dom.svg 1.6.0.v200805290154 org.eclipse.birt.chart 2.3.0.v20080304 org.python.pydev.jython 1.2.9 org.python.pydev.ast 1.3.11 org.eclipse.datatools.enablement.mysql.dbdefinition 1.0.1.v200805170742 org.python.pydev.parser 1.3.19 org.python.pydev.core 1.0.6 org.eclipse.uml2.diagram 0.8.0.v200806112132 org.eclipse.jdt.junit4.runtime 1.0.200.v20080603-2000 org.python.pydev.ast 1.3.12 org.eclipse.swt 3.4.0.v3448f org.eclipse.emf.ecoretools.diagram.search 0.7.0.v200806130939 org.eclipse.pde.ui.templates 3.4.0.v20080514-1500 com.instantiations.packager.ui 2.5.1 org.eclipse.emf.cdo.server.db 1.0.0.v200806180411 org.eclipse.datatools.enablement.sybase.asa 1.0.1.v200805310538 org.eclipse.emf.compare 0.8.0.v200806180301 org.eclipse.datatools.enablement.oda.ws.ui 1.1.0.v200805261930 org.eclipse.jdt.launching 3.4.0.v20080529-1300 org.eclipse.mylyn.tasks.ui 3.0.0.v20080619-1900 org.apache.ws.jaxme 0.5.1.v20080530-1550 org.eclipse.mylyn.bugzilla.ui 3.0.0.v20080619-1900 org.apache.commons.el 1.0.0.v200806031608 org.python.pydev 1.2.3 org.w3c.dom.smil 1.0.0.v200806040011 org.eclipse.wst.validation.infopop 1.0.300.v200806041506 org.python.pydev 1.0.7 org.eclipse.net4j.source 1.0.0.v200806180305 org.eclipse.m2m.qvt.oml.ocl 1.0.0.v20080611-1330 org.eclipse.uml2.uml.edit 2.2.0.v200805131030 org.eclipse.emf.search.ui 0.7.0.v200806130939 org.python.pydev.core 1.3.16 org.eclipse.emf.validation.ui 1.2.0.v200805130238 org.eclipse.datatools.enablement.oda.xml 1.1.0.v200805270900 org.eclipse.ltk.core.refactoring 3.4.0.v20080603-2000 org.python.pydev.jython 1.3.2 com.windowtester.swt.codegen 3.5.0.200806270034 org.eclipse.datatools.sqltools.ddlgen.ui 1.0.0.v200805152355 org.apache.xerces 2.9.0.v200805270400 org.eclipse.birt.report.engine.dataextraction 2.3.0.v20080611 org.eclipse.equinox.jmx.vm 1.0.0.v20070515 org.eclipse.birt.report.data.oda.jdbc.ui 2.3.0.v20080606 org.eclipse.equinox.ds 1.0.0.v20080427-0830 org.eclipse.mylyn.bugzilla.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.http.jetty 2.0.0.v20080425 org.eclipse.mylyn.team.ui 3.0.2.v20080918-1100-e3x org.python.pydev.jython 1.2.4 org.eclipse.birt.chart.device.svg 2.3.0.v20080526 org.python.pydev.parser 1.0.5 org.eclipse.ui.presentations.r21 3.2.100.I20080512-2000 org.eclipse.mylyn 3.0.0.v20080619-1900 org.eclipse.m2m.qvt.oml.doc 1.0.0.v20080611-1330 org.eclipse.team.svn.nl1.sources 0.7.1.I20080612-1500 org.eclipse.mylyn.resources.ui 3.0.0.v20080619-1900 org.eclipse.datatools.enablement.ibm.db2.luw 1.0.0.v200805152355 org.python.pydev.core 1.3.1 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.1 org.eclipse.ecf.provider.filetransfer 2.0.0.v20080611-1715 org.eclipse.emf.cdo.tests.mango.edit 1.0.0.v200806180411 org.python.pydev.parser 1.2.9 org.eclipse.m2m.qvt.oml.emf.util 1.0.0.v20080611-1330 org.eclipse.team.cvs.ssh 3.2.100.I20080604 org.python.pydev.jython 1.3.19 org.python.pydev.jython 1.0.8 org.python.pydev.ast 1.2.1 org.eclipse.m2m.qvt.oml.project 1.0.0.v20080611-1330 com.instantiations.assist.eclipse.core.ui 5.5.1 org.eclipse.datatools.enablement.ibm.db2.zseries.dbdefinition 1.0.0.v200805152355 org.eclipse.datatools.enablement.ibm.db2.iseries 1.0.0.v200805152355 com.swtdesigner.fragment.jdt.core 6.7.1.200809050053 org.eclipse.equinox.device 1.0.1.v20080303 org.eclipse.equinox.http.jetty 1.1.0.v20080425 org.eclipse.emf.cdo.tests.model3 1.0.0.v200806180411 org.eclipse.emf.teneo.hibernate.mapper 1.0.0.v200806111928 org.eclipse.compare 3.4.0.I20080604 org.polarion.eclipse.team.svn.connector.javahl 2.0.1.I20080612-1500 org.eclipse.gmf.runtime.diagram.ui.geoshapes 1.1.0.v20080503-1740 org.eclipse.emf.mint.ui 0.7.0.v200806172223 org.eclipse.ui.win32 3.2.100.v20080408-0800 org.eclipse.jet.source 0.9.0.v20080516 org.python.pydev 1.3.17 com.windowtester.runtime.junit4 3.5.1.200809042232 org.eclipse.ecf.examples.remoteservices.server 1.0.100.v20080623-0046 org.eclipse.text 3.4.0.v20080605-1800 org.eclipse.uml2.diagram.common 0.8.0.v200806112132 org.eclipse.datatools.connectivity.sqm.core.ui 1.1.0.v200806070326 org.python.pydev.core 0.9.7.99 org.eclipse.net4j.jms 1.0.0.v200806180305 org.junit4 4.3.1 org.eclipse.epp.usagedata.recording 1.0.0.R200806162215 org.eclipse.buckminster.remote 1.0.0.r09326 org.eclipse.gmf.tooling 2.1.0.v20080425-1959 org.eclipse.emf.cdo.tests.model2 1.0.0.v200806180411 org.eclipse.emf.ecore.sdo.editor 2.4.0.v200806091234 com.instantiations.swt.graph 5.5.0 org.eclipse.uml2.search 0.7.0.v200806130939 org.python.pydev 1.3.5 org.python.pydev.ast 1.3.3 org.eclipse.update.configurator 3.2.200.v20080417 org.eclipse.datatools.enablement.msft.sqlserver 1.0.1.v200805152355 org.python.pydev.parser 1.3.11 org.eclipse.datatools.enablement.sap.maxdb.dbdefinition 1.0.0.v200805152355 com.windowtester.swing.recorder 3.5.0.200806270034 org.eclipse.gmf.runtime.common.ui.printing.win32 1.1.0.v20080612-1355 org.python.pydev.ast 1.3.20 org.eclipse.wst.common.snippets 1.1.200.v200805140415 org.eclipse.mylyn.commons.core 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.tasks.core 3.0.2.v20080918-1100-e3x org.eclipse.jdt.doc.user 3.4.0.v20080612-1340 org.eclipse.birt.chart.ui 2.3.0.v20080522 org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb 2.3.0.v20080606 org.eclipse.uml2.diagram.examples.clazz 0.8.0.v200806112132 org.eclipse.ecf.provider.msn.ui 1.3.0.v20080623-0046 org.python.pydev.parser 1.3.3 org.eclipse.ui.ide.application 1.0.0.I20080603-2000 org.python.pydev.ast 1.0.6 org.eclipse.equinox.jsp.jasper.registry 1.0.0.v20080427-0830 org.eclipse.equinox.p2.engine 1.0.0.v20080522-1735 com.nordea.cd.dev.plugin.builderruntime 1.0.2 com.instantiations.assist.eclipse.core 5.5.1 org.eclipse.m2m.qvt.oml 1.0.0.v20080611-1330 org.eclipse.mylyn.commons.ui 3.0.1.v20080721-2100-e3x org.eclipse.update.core.win32 3.2.100.v20080107 org.eclipse.datatools.sqltools.db.derby 1.0.0.v200805152355 com.instantiations.assist.eclipse.admin 5.5.0 org.eclipse.ecf.telephony.call 1.2.0.v20080623-0046 org.eclipse.mylyn.monitor.core 3.0.0.v20080619-1900 org.eclipse.epp.usagedata.ui 1.0.0.R200806162215 org.eclipse.ui.ide 3.4.0.I20080606-1300 org.eclipse.hyades.lta.sdb 4.5.0.v200806051823 org.eclipse.birt.report.model.adapter.oda 2.3.0.v20080523 org.eclipse.emf.compare.doc 0.8.0.v200806180301 org.eclipse.equinox.servletbridge 1.0.100.v20080427-0830 com.instantiations.common.help 5.3.2.200809042027 org.eclipse.jdt.core 3.4.0.v_874 org.eclipse.equinox.p2.director 1.0.0.v20080604 org.eclipse.gmf.runtime.emf.ui.properties 1.1.0.v20080425-1959 org.eclipse.emf.exporter 2.4.0.v200806091234 org.python.pydev.core 1.3.7 org.eclipse.uml2.diagram.def 0.8.0.v200806112132 org.python.pydev.parser 1.2.1 org.eclipse.wst.command.env.ui 1.1.0.v200805140415 org.eclipse.wst.common.modulecore 1.1.200.v200806091800 org.python.pydev 0.9.7 org.eclipse.gmf.graphdef.edit 2.0.100.v20080610-1132 org.eclipse.birt.report.designer.ui.cubebuilder 2.3.0.v20080606 org.eclipse.m2m.atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.actions 1.1.0.v20080603-1553 com.instantiations.common.core 5.3.2.200806270030 org.eclipse.datatools.enablement.ibm.informix 1.0.0.v200805152355 org.eclipse.net4j.tcp 1.0.0.v200806180305 org.eclipse.wst.common.environment 1.0.202.v200807161459 com.instantiations.common.core 5.3.2.200809042027 org.eclipse.birt.report.data.oda.xml 2.3.0.v20080606 org.eclipse.pde.api.tools.ui 1.0.0.v20080603 org.eclipse.debug.ui 3.4.0.v20080529-1300 org.python.pydev 1.2.2 org.eclipse.team.svn.ui.nl1 0.7.1.I20080612-1500 org.apache.batik.transcoder 1.6.0.v200805290154 org.eclipse.emf.ecore.sdo.edit 2.4.0.v200806091234 org.python.pydev.parser 1.3.16 org.eclipse.wst.command.env.ui 1.1.1.v200807162242 org.eclipse.uml2.diagram.codegen.edit 0.8.0.v200806112132 org.eclipse.datatools.connectivity.db.generic.ui 1.0.1.v200805152355 org.eclipse.mylyn.resources.ui 3.0.2.v20080918-1100-e3x org.python.pydev.ast 1.3.8 org.python.pydev 1.3.0 org.eclipse.net4j.db 1.0.0.v200806180305 org.python.pydev.ast 1.3.15 org.eclipse.uml2.codegen.ecore 1.4.0.v200805201126 org.eclipse.gmf.sdk 1.0.0.v20080425-1959 org.eclipse.equinox.p2.core 1.0.0.v20080530-1237 org.python.pydev.jython 1.3.10 org.eclipse.emf.cdo 1.0.0.v200806180411 org.eclipse.emf.search.genmodel 0.7.0.v200806130939 org.eclipse.ui.navigator 3.3.100.I20080606-1300 org.eclipse.team.svn.mylyn 0.7.1.I20080612-1500 org.python.pydev.core 1.2.5 org.eclipse.tptp.platform.lta.la.core 4.5.0.v200805132041 org.eclipse.wst.sse.core 1.1.301.v200808072008 org.eclipse.tptp.platform.lta.log.views 4.5.0.v200806051823 org.eclipse.mylyn.java.ui 3.0.2.v20080918-1100-e3x org.eclipse.emf.search.codegen 0.7.0.v200806130939 com.instantiations.common.ui 5.3.2.200806270030 org.eclipse.ecf 2.0.0.v20080611-1715 org.eclipse.equinox.p2.ui.sdk 1.0.0.v20080605-1731 org.apache.commons.discovery 0.2.0.v200806030120 org.eclipse.datatools.help 1.5.0.v200805152355 org.python.pydev.parser 0.9.7.99 org.w3c.css.sac 1.3.0.v200805290154 org.eclipse.jet.examples 0.9.0.v20080211 org.eclipse.mylyn.bugzilla.ide 3.0.2.v20080918-1100-e3x org.eclipse.pde.junit.runtime 3.4.0.v20080529-1800 org.eclipse.emf.commonj.sdo 2.4.0.v200806091234 org.python.pydev.jython 1.2.1 com.instantiations.tools 5.3.2.200806270030 com.windowtester.runtime 3.5.1.200809042232 org.eclipse.wst.validation 1.2.0.v200806051402 org.eclipse.ecf.docshare 2.0.0.v20080623-0046 com.instantiations.eclipse.model.jsp 5.5.1 org.eclipse.emf.teneo.hibernate.eclipse 1.0.0.v200806111928 com.jcraft.jsch 0.1.37.v200803061811 org.python.pydev.parser 1.0.6 org.eclipse.emf.converter 2.4.0.v200806091234 org.eclipse.equinox.common 3.4.0.v20080421-2006 org.eclipse.buckminster.ui 1.0.0.r09319 org.eclipse.datatools.sqltools.tablewizard 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.0 org.eclipse.uml2.source 2.2.0.v200805201126 org.eclipse.team.cvs.ui 3.3.100.I20080604 org.python.pydev.jython 1.3.3 org.eclipse.emf.search.ocl 0.7.0.v200806130939 org.eclipse.datatools.enablement.sybase.asa.models 1.0.0.v200805152355 org.eclipse.sdk 3.4.0.v200806172000 org.eclipse.xsd.ecore.exporter 2.4.0.v200806091234 org.apache.commons.codec 1.3.0.v20080530-1600 org.eclipse.equinox.p2.exemplarysetup 1.0.0.v20080427-2136 org.eclipse.equinox.io 1.0.0.v20080218 org.eclipse.wst.common.project.facet.core 1.3.0.v200805140020 org.eclipse.wst.common.ui 1.1.301.v200805140415 org.eclipse.emf.databinding.edit 1.0.0.v200806091234 org.mortbay.jetty.server 6.1.7.v200806031612 org.eclipse.wst.dtd.core 1.1.200.v200805140200 org.python.pydev 1.0.6 org.eclipse.uml2.diagram.activity 0.8.0.v200806112132 org.eclipse.emf.importer.rose 2.4.0.v200806091234 org.eclipse.core.net.win32.x86 1.0.0.I20080521 javax.activation 1.1.0.v200804101140 org.python.pydev.core 1.3.15 org.python.pydev.parser 1.3.8 com.instantiations.assist.eclipse.coverage.ui 5.5.1.200809042337 org.eclipse.emf.ecoretools.filters 0.8.0.v200806130600 org.python.pydev.ast 1.3.0 org.eclipse.birt.report.data.oda.xml.ui 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase 1.0.1.v200805310538 org.python.pydev 1.3.8 org.eclipse.equinox.ip 1.0.0.v20080218 org.eclipse.datatools.connectivity.console.profile 1.0.0.v200805231345 org.eclipse.ecf.sharedobject 1.3.0.v20080623-0046 org.eclipse.debug.core 3.4.0.v20080612 org.eclipse.wst.xmleditor.doc.user 1.0.400.v200805211530 org.eclipse.datatools.enablement.sap.maxdb 1.0.0.v200805152355 org.python.pydev.ast 0.9.7 com.windowtester.swt.runtime.legacy 3.5.0.200806270034 org.eclipse.equinox.simpleconfigurator.manipulator 1.0.0.v20080427-2136 org.eclipse.equinox.p2.touchpoint.eclipse 1.0.0.v20080529-1225 com.instantiations.swt.graph 5.5.1 org.eclipse.gmf.doc 1.2.0.v20080516-1143 org.python.pydev 1.3.20 com.windowtester.swing.runtime 3.5.1.200809042232 org.eclipse.datatools.enablement.ibm.db2.iseries.ui 1.0.0.v200805160737 org.eclipse.datatools.connectivity.oda.profile 3.0.6.v200805152355 org.eclipse.mylyn.pde.ui 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.commons.ui 3.0.0.v20080619-1900 org.eclipse.emf.workspace.source 1.2.0.v200805130238-23-8s733I3C59379I org.eclipse.core.boot 3.1.100.v20080218 org.python.pydev.ast 1.2.2 org.eclipse.birt.doc 2.3.0.v20080617a com.instantiations.assist.eclipse.core.ui 5.5.0 org.python.pydev.jython 1.3.18 org.python.pydev.jython 1.0.5 org.eclipse.emf.validation 1.2.0.v200805170232 org.eclipse.equinox.jmx.client.rmi 1.0.0 org.eclipse.emf.mapping.ecore 2.4.0.v200806091234 com.instantiations.assist.eclipse.coverage 5.5.1.200809042337 com.instantiations.helpeditor.ui 1.3.4.200806270212 org.eclipse.emf.edit.ui 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editor.script 2.3.0.v200806102 org.eclipse.gmf.ecore.editor 2.0.100.v20080610-1132 com.windowtester.swt.recorder 3.5.1.200809042232 org.eclipse.uml2.diagram.source 0.8.0.v200806112132 org.eclipse.equinox.util 1.0.0.v20080414 org.eclipse.ecf.examples.source 2.0.0.v20080623-0046 org.eclipse.emf.mapping.xsd2ecore.editor 2.4.0.v200806091234 org.eclipse.pde.p2.ui 1.0.0.v20080604-2000 org.eclipse.birt.resources 2.3.0.v20080313 org.eclipse.emf.query.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.emf.ecore.change.edit 2.4.0.v200806091234 org.eclipse.datatools.sqltools.editor.core 1.0.0.v200805152355 org.polarion.eclipse.team.svn.connector.svnkit 2.0.1.I20080612-1500 org.eclipse.buckminster.download 1.1.0.r09319 com.swtdesigner 6.7.0.200806270151 org.python.pydev.parser 1.3.2 org.eclipse.jdt.compiler.apt 1.0.100.v20080513-1235 org.python.pydev.ast 1.0.7 com.windowtester.swt.gef.codegen 3.5.0.200806270034 org.eclipse.emf.ecore 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editors.schematic 2.3.0.v200806102 org.eclipse.pde.build 3.4.0.v20080604 com.instantiations.assist.eclipse 5.5.1 org.eclipse.birt.report.designer.ui.editor.xml.wtp 2.3.0.v200806102 org.eclipse.emf.cdo.tests.model1.edit 1.0.0.v200806180411 org.python.pydev 0.9.8 javax.xml 1.3.4.v200806030440 org.python.pydev 0.4.2 org.polarion.eclipse.team.svn.connector.javahl.win32 2.0.1.I20080612-1500 org.apache.ws.commons.util 1.0.0.v20080530-1550 org.apache.batik.bridge 1.6.0.v200805290154 org.eclipse.emf.search 0.7.0.v200806130939 org.eclipse.datatools.sqltools.parsers.sql.xml.query 1.0.0.v200805152355 org.eclipse.team.core 3.4.0.I20080605 org.eclipse.tptp.platform.execution 4.4.100.v200806050100 org.eclipse.uml2.diagram.parser 0.8.0.v200806112132 org.eclipse.birt.report.item.crosstab.core 2.3.0.v20080606 org.python.pydev.core 0.9.8 org.eclipse.uml2.search.common.ui 0.7.0.v200806130939 org.eclipse.mylyn.ide.ui 3.0.0.v20080619-1900 org.eclipse.xsd.cheatsheets 2.3.0.v200806091234 org.eclipse.wst.xsd.core 1.1.300.v200805282012 org.eclipse.net4j.http 1.0.0.v200806180305 org.python.pydev.core 1.3.6 org.eclipse.ui.externaltools 3.2.0.v20080514-1542 org.eclipse.birt.report.engine.emitter.prototype.excel 2.3.0.v20080606 org.python.pydev.parser 1.3.17 com.instantiations.eclipse.util 5.3.2.200806270030 org.eclipse.ui.editors 3.4.0.v20080603-2000 org.eclipse.buckminster.slf4j 1.0.0 org.python.pydev.ast 1.3.9 org.eclipse.gef.source 3.4.0.v20080115-677-8082A5696H274A org.python.pydev.core 1.0.8 org.python.pydev.ast 1.3.14 org.eclipse.team.ui 3.4.0.I20080604 org.eclipse.emf.query.ocl.source 1.2.0.v200805130238-11-7w311916241349 com.windowtester.swt.runtime 3.5.0.200806270034 org.eclipse.osgi.jmx 1.0.0.v20080610-1530 org.eclipse.net4j.examples.source 1.0.0.v200806180305 org.eclipse.tptp.monitoring.lta.symptom.doc.user 4.5.0.v200805132041 org.eclipse.equinox.p2.updatechecker 1.0.0.v20080427-2136 org.eclipse.ui.views 3.3.0.I20080509-2000 org.eclipse.emf.search.ocl.ui 0.7.0.v200806130939 javax.mail 1.4.0.v200804091730 ch.ethz.iks.slp 1.0.0.RC4_v200806091030 org.eclipse.core.resources.jmx 1.0.0.v20070510 javax.wsdl 1.4.0.v200806030407 org.eclipse.wst.xml.ui 1.0.401.v200807240448 org.python.pydev 1.2.1 org.eclipse.birt.chart.ui.extension 2.3.0.v20080610 org.python.pydev.core 0.9.8.3 org.python.pydev.parser 0.9.7 org.eclipse.jem.util 2.0.100.v200805140020 org.eclipse.tptp.monitoring.lta.la.core 4.5.0.v200805270100 org.python.pydev.core 0.9.8.2 org.eclipse.jdt.junit.runtime 3.3.0.v20080603-2000 org.python.pydev.core 1.2.4 org.python.pydev.core 0.9.8.1 org.eclipse.ecf.discovery 2.0.0.v20080623-0046 org.apache.xml.serializer 2.7.1.v200806030322 org.python.pydev.core 0.9.8.7 org.python.pydev.core 0.9.8.6 org.eclipse.gmf.runtime.draw2d.ui.render.awt 1.1.0.v20080603-1553 com.windowtester.eclipse.help 3.5.1.200809042232 org.python.pydev.core 0.9.8.5 org.python.pydev.core 0.9.8.4 org.python.pydev 0.9.8.7 org.eclipse.birt.report.engine.emitter.ppt 2.3.0.v20080606 org.apache.commons.httpclient 3.1.0.v20080605-1935 com.windowtester.runtime.legacy 3.5.0.200806270034 org.eclipse.datatools.enablement.oda.xml.ui 1.1.0.v200805270900 org.python.pydev 0.9.8.3 org.eclipse.mylyn.compatibility 3.0.2.v20080918-1100-e3x org.python.pydev 0.9.8.4 org.python.pydev 0.9.8.5 org.eclipse.wst.common.project.facet.ui 1.3.0.v200805281731 org.eclipse.gmf.tooldef 2.0.0.v20080417-1610 org.python.pydev 0.9.8.6 org.eclipse.core.commands 3.4.0.I20080509-2000 org.python.pydev.jython 1.3.9 org.eclipse.datatools.modelbase.sql.edit 1.0.0.v200805152355 org.python.pydev 0.9.8.2 org.python.pydev 0.9.8.1 org.eclipse.emf.cdo.server.hibernate.libraries 1.0.0.v200806180411 org.eclipse.equinox.p2.ui.admin 1.0.0.v20080522-1735 org.eclipse.wst.common.core 1.1.201.v200806010600 org.eclipse.emf.compare.diff.edit 0.8.0.v200806180301 com.swtdesigner.layout.group.designer 6.7.0.200806270151 org.eclipse.ui.views.properties.tabbed 3.4.0.I20080527-2000 org.python.pydev.jython 1.2.2 org.eclipse.wst.common.emf 1.1.200.v200805140020 com.instantiations.packager.refactoring 2.5.1 com.instantiations.assist.eclipse.fragment.jdt 5.5.1 org.eclipse.datatools.connectivity.dbdefinition.genericJDBC 1.0.0.v200805152355 org.python.pydev.parser 1.0.7 org.eclipse.datatools.sqltools.data.ui 1.1.0.v200805310400 org.eclipse.buckminster.core 1.1.0.r09336 org.eclipse.mylyn.tasks.core 3.0.1.v20080721-2100-e3x org.eclipse.birt.report.designer.ui.samplesview 2.3.0.v20080606 org.eclipse.equinox.launcher 1.0.100.v20080509-1800 org.eclipse.birt.report.item.crosstab.ui 2.3.0.v20080606 org.eclipse.m2m.atl.adt.perspective 2.0.0.v200806101117 javax.servlet.jsp 2.0.0.v200806031607 com.swtdesigner 6.7.1.200809050053 org.eclipse.jet.ui 0.9.0.v20080527 org.eclipse.m2m.qvt.oml.common.ui 1.0.0.v20080611-1330 com.swtdesigner.layout.group 6.7.1.200809050053 org.eclipse.gmf.runtime.common.ui.services.action 1.1.0.v20080507-2230 org.eclipse.emf.search.ecore.ui 0.7.0.v200806130939 org.python.pydev 1.0.5 org.eclipse.emf.workspace.ui 1.2.0.v200805130238 com.instantiations.helpeditor.core.toc 1.3.4.200809042225 org.slf4j.extendable 1.4.3 org.python.pydev.core 1.3.14 org.eclipse.hyades.logging.core 4.3.200.v200804110100 org.eclipse.datatools.enablement.postgresql.ui 1.0.0.v200806060334 org.eclipse.gmf.graphdef 2.0.100.v20080528-1052 org.eclipse.mylyn.help.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.protocol.bittorrent 0.3.0 org.eclipse.birt.report.engine 2.3.0.v20080616 org.eclipse.datatools.connectivity.ui.dse 1.1.0.v200805152355 org.eclipse.mylyn.bugzilla.core 3.0.0.v20080619-1900 org.python.pydev.jython 1.3.4 org.python.pydev 0.9.0 org.eclipse.equinox.preferences.jmx 1.0.0.v20070510 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.1 org.eclipse.datatools.enablement.postgresql.dbdefinition 1.0.0.v200805152355 org.eclipse.m2m.qvt.oml.common.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.eclipse.tptp.monitoring.lta.logui 4.5.0.v200805141427 org.eclipse.birt.report.debug.ui 2.3.0.v200806102 org.eclipse.gmf.runtime.emf.ui 1.1.0.v20080516-1748 org.eclipse.ui.cheatsheets 3.3.100.v20080508 org.python.pydev 1.2.9 org.eclipse.birt.report.engine.emitter.wpml 2.3.0.v20080606 org.eclipse.help.appserver 3.1.300.v20080507 org.python.pydev.parser 1.3.9 com.xored.composer.ui 1.3.4.200806270212 org.eclipse.datatools.sqltools.tabledataeditor 1.0.0.v200805240400 org.eclipse.gmf.runtime.emf.type.core 1.1.0.v20080425-1959 org.python.pydev 1.3.7 com.ibm.icu.base 3.8.1.v20080530 org.python.pydev.ast 1.3.1 org.apache.batik.pdf 1.6.0.v200806031500 org.eclipse.emf.mapping.ui 2.4.0.v200806091234 org.eclipse.net4j.db.derby 1.0.0.v200806180305 org.eclipse.net4j.http.server 1.0.0.v200806180305 org.python.pydev.jython 1.3.17 org.python.pydev.jython 1.0.6 org.python.pydev.ast 1.2.3 org.eclipse.team.svn.sources 0.7.1.I20080612-1500 org.eclipse.uml2.diagram.usecase 0.8.0.v200806112132 org.eclipse.wst.sse.core 1.1.300.v200805221633 org.eclipse.birt.report.designer.ui 2.3.0.v20080606 org.eclipse.jdt.apt.ui 3.3.100.v20080407-1345 com.instantiations.eclipse.debug 5.3.2.200809042027 org.eclipse.gmf.codegen.ui 1.1.0.v20080512-1200 com.instantiations.designer.databinding 6.7.1.200809050053 org.python.pydev.core 1.0.1 com.windowtester.swt.runtime.gef 3.5.0.200806270034 com.instantiations.common.ui 5.3.2.200809042027 org.python.pydev 1.3.19 org.eclipse.ui.forms 3.3.100.v20080611 org.eclipse.birt.data 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase.ase.ui 1.0.1.v200805310538 org.polarion.eclipse.team.svn.connector 2.0.1.I20080612-1500 org.eclipse.emf.common.ui 2.4.0.v200806091234 org.eclipse.datatools.enablement.ibm.informix.dbdefinition 1.0.0.v200805152355 org.eclipse.wst.xsdeditor.doc.user 1.0.400.v200805150028 org.eclipse.emf.mint.doc 0.7.0.v200806172223 org.eclipse.buckminster.generic 1.0.0.r09319 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.1 org.eclipse.emf.validation.examples 1.2.0.v200805280204 org.eclipse.team.svn.core 0.7.1.I20080612-1500 org.python.pydev.ast 1.2.4 org.eclipse.emf.cdo.server.hibernate 1.0.0.v200806180411 org.python.pydev.jython 1.3.8 org.eclipse.gmf.xpand 1.1.0.v20080528-1052 org.eclipse.datatools.sqltools.data.core 1.0.0.v200805152355 org.eclipse.emf.ecoretools 0.8.0.v200806130600 org.python.pydev.core 1.3.18 org.eclipse.gmf.runtime.common.core 1.1.0.v20080425-1959 org.eclipse.emf 2.4.0.v200806091234 org.eclipse.emf.ecoretools.properties 0.8.0.v200806130600 org.python.pydev.core 1.2.7 org.python.pydev.parser 0.9.8 org.eclipse.datatools.enablement.ibm.db2.luw.ui 1.0.0.v200805160737 org.eclipse.mylyn.team.ui 3.0.0.v20080619-1900 org.eclipse.help.base 3.3.100.v20080617 org.eclipse.m2m.atl.doc 2.0.0.v200806101117 org.eclipse.net4j.examples 1.0.0.v200806180305 org.eclipse.birt.data.aggregation 2.3.0.v20080606 org.eclipse.gmf.examples 1.0.100.v20080425-1959 org.eclipse.emf.search.common 0.7.0.v200806130939 org.python.pydev.ast 1.3.17 org.eclipse.ecf.provider.filetransfer.ssl 1.0.0.v20080611-1715 org.python.pydev.core 1.0.3 org.eclipse.team.svn.core.nl1 0.7.1.I20080612-1500 org.eclipse.emf.cdo.server.hibernate.teneo 1.0.0.v200806180411 org.eclipse.wst.validation.ui 1.2.1.v200807292117 org.python.pydev.parser 1.0.3 org.python.pydev.ast 1.3.6 org.eclipse.search 3.4.0.v20080603-2000 org.eclipse.jet 0.9.0.v20080527 org.python.pydev 1.3.2 org.python.pydev.jython 1.2.6 org.python.pydev.parser 1.3.14 org.eclipse.datatools.oda.cshelp 1.0.0.v200805152355 org.eclipse.jdt.junit 3.4.0.v20080603-2000 org.eclipse.datatools.sqltools.debugger.core 1.0.0.v200805152355 org.mortbay.jetty 5.1.14.v200806031611 org.eclipse.equinox.p2.garbagecollector 1.0.0.v20080506-1939 org.eclipse.m2m.atl.adt.debug 2.0.0.v200806101117 org.eclipse.equinox.jmx.client 1.0.0.v20070515 org.python.pydev.core 1.3.5 org.eclipse.mylyn.bugzilla.core 3.0.1.v20080721-2100-e3x org.python.pydev.parser 0.9.8.3 org.python.pydev.parser 0.9.8.2 org.python.pydev.parser 0.9.8.1 org.eclipse.osgi.services 3.1.200.v20071203 org.python.pydev 1.0.4 org.eclipse.hyades.lta.logging.adapter 4.5.0.v200806121215 org.eclipse.datatools.sqltools.sqleditor 1.0.0.v200805152355 org.python.pydev.parser 0.9.8.7 org.python.pydev.parser 0.9.8.6 org.eclipse.gmf.runtime.emf.core 1.1.0.v20080425-1959 org.python.pydev.parser 0.9.8.5 org.eclipse.core.contenttype 3.3.0.v20080604-1400 org.eclipse.ecf.datashare 1.3.0.v20080623-0046 org.python.pydev.parser 0.9.8.4 org.eclipse.tptp.platform.common.ui 4.4.100.v200806110100 org.junit 3.8.2.v20080602-1318 com.instantiations.assist.eclipse.coverage 5.5.0.200806270255 javax.activation 1.1.0.v200806101325 com.instantiations.assist.eclipse.scheduler 5.5.1 javax.management 1.2.0.v200803061811 org.eclipse.emf.edit 2.4.0.v200806091234 org.eclipse.ecf.provider.discovery 2.0.0.v20080623-0046 org.eclipse.birt.chart.device.pdf 2.3.0.v20080417 org.eclipse.equinox.wireadmin 1.0.0.v20080407 org.python.pydev.ast 1.0.8 org.eclipse.net4j.buddies.server 1.0.0.v200806180305 org.eclipse.wst.internet.cache 1.0.301.v200805140020 com.windowtester.runtime 3.5.0.200806270034 org.mx4j.jmx 3.0.3.v200802291451 org.eclipse.pde.ui 3.4.0.v20080530 org.eclipse.ocl 1.2.0.v200806091438 org.eclipse.birt.cshelp 2.3.0.v20080617 org.eclipse.emf.query.doc 1.2.0.v200805130238 org.eclipse.pde.runtime 3.4.0.v20080530-1200 org.apache.axis 1.4.0.v200807230600 org.apache.log4j 1.2.13.v200806030600 org.eclipse.ui.intro 3.2.200.v20080610 com.instantiations.assist.eclipse.pattern 5.5.1 com.xored.swt.composer 1.3.4.200806270212 org.apache.batik.ext.awt 1.6.0.v200805290154 org.eclipse.emf.cdo.ui 1.0.0.v200806180411 org.eclipse.jface 3.4.0.I20080606-1300 com.windowtester.swt.runtime.gef 3.5.1.200809042232 org.eclipse.gmf.runtime.emf.type.ui 1.1.0.v20080425-1959 org.eclipse.uml2.uml 2.2.0.v200805141133 org.objectweb.asm 3.0.0.v200803061811 org.python.pydev.core 1.1.0 org.eclipse.ecf.discovery.ui 2.0.0.v20080623-0046 org.python.pydev 1.3.14 org.eclipse.gmf.runtime.diagram.ui.printing 1.1.0.v20080501-1739 org.eclipse.mylyn.ide.ant 3.0.2.v20080918-1100-e3x org.eclipse.xsd.example.installer 1.0.0.v200806091234 org.eclipse.uml2.diagram.examples.profile 0.8.0.v200806112132 org.eclipse.ui.intro.universal 3.2.200.v20080508 org.python.pydev.ast 0.9.7.99 org.eclipse.emf.codegen 2.4.0.v200806091234 org.eclipse.equinox.p2.metadata 1.0.0.v20080514-1900 org.eclipse.ecf.example.collab 1.3.0.v20080623-0046 org.python.pydev.parser 1.2.4 org.eclipse.birt.report.engine.emitter.html 2.3.0.v20080606 org.python.pydev.jython 1.3.16 org.eclipse.osgi 3.4.0.v20080605-1900 org.eclipse.emf.databinding 1.0.0.v200806091234 org.eclipse.help 3.3.100.v20080610 org.eclipse.net4j.db.hsqldb 1.0.0.v200806180305 org.eclipse.gmf.runtime.diagram.ui.dnd 1.1.0.v20080425-1959 org.eclipse.birt.report.model 2.3.0.v20080605 org.eclipse.datatools.enablement.finfo 1.5.1.v200805152355 org.eclipse.jsch.ui 1.1.100.I20080415 org.python.pydev 1.3.10 org.python.pydev.parser 1.3.6 org.eclipse.emf.mapping.ecore.editor 2.4.0.v200806091234 org.eclipse.datatools.sqltools.common.ui 1.0.0.v200805152355 org.eclipse.birt.report.engine.emitter.pdf 2.3.0.v20080606 org.python.pydev 1.2.8 com.instantiations.packager.help 2.5.1 org.eclipse.equinox.p2.directorywatcher 1.0.0.v20080505-1850 org.eclipse.draw2d 3.4.0.v20080529 org.eclipse.draw2d.source 3.4.0.v20080115-33-7w3119163_ org.eclipse.ecf.ui 2.0.0.v20080623-0046 org.eclipse.birt.report.data.oda.jdbc.dbprofile 2.3.0.v20080606 org.eclipse.equinox.security.win32.x86 1.0.0.v20080529-1600 org.eclipse.wst.xml.ui 1.0.400.v200806051910 org.eclipse.jdt.ui 3.4.0.v20080603-2000 org.eclipse.equinox.p2.ui 1.0.0.v20080530-1237 org.eclipse.hyades.lta.logging.adapter.ui 4.5.0.v200805132041 org.eclipse.mylyn.monitor.ui 3.0.0.v20080619-1900 org.python.pydev 0.9.1 org.eclipse.emf.ecore.sdo.doc 2.4.0.v200806091234 com.instantiations.eclipse.ast.editor 5.5.1 org.eclipse.ant.ui 3.3.0.v20080529 org.python.pydev.core 1.3.13 org.eclipse.gef.doc.isv 3.4.0.v20080606 org.apache.xml.resolver 1.2.0.v200806030312 org.eclipse.datatools.enablement.ibm.db2.iseries.dbdefinition 1.0.0.v200806100223 org.eclipse.birt 2.3.0.v20080304 org.eclipse.equinox.security 1.0.0.v20080512-1800 com.instantiations.tools 5.3.2.200809042027 org.eclipse.jdt.core.manipulation 1.2.0.v20080603-2000 org.eclipse.gmf.runtime.diagram.ui.printing.render 1.1.0.v20080425-1959 org.eclipse.net4j.buddies.ui 1.0.0.v200806180305 org.eclipse.emf.codegen.ui 2.4.0.v200806091234 org.eclipse.team.svn 0.7.1.I20080612-1500 org.eclipse.wst.command.env.infopop 1.0.100.v200805301544 org.eclipse.datatools.enablement.hsqldb.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.runtime.common.ui.services.properties 1.1.0.v20080425-1959 org.eclipse.emf.cheatsheets 2.4.0.v200806091234 org.eclipse.ecf.presence.collab.ui 1.2.0.v20080623-0046 org.eclipse.update.core 3.2.200.v20080515 org.eclipse.wst.command.env.core 1.0.204.v200805140020 org.apache.batik.swing 1.6.0.v200805290154 org.eclipse.birt.report.designer.samplereports 2.3.0.v20080606 org.python.pydev.parser 1.0.8 org.eclipse.xsd 2.4.0.v200806091234 com.instantiations.assist.eclipse.fragment.jdt 5.5.0 org.eclipse.emf.transaction 1.2.0.v200805130238 org.eclipse.mylyn.team.cvs 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.ui 1.0.0.v20080611-1330 org.eclipse.emf.validation.source 1.2.0.v200805130238-35-9oA55S5J8H5ADM org.eclipse.datatools.enablement.hsqldb 1.0.0.v200805152355 org.eclipse.wst.common.uriresolver 1.1.301.v200805140415 org.eclipse.equinox.jsp.jasper 1.0.100.v20080427-0830 org.eclipse.osgi.util 3.1.300.v20080303 org.eclipse.datatools.connectivity.oda.consumer 3.1.2.v200805230718 org.eclipse.emf.compare.source 0.8.0.v200806180301 org.python.pydev.core 1.3.19 org.eclipse.emf.query.examples 1.2.0.v200805130238 org.eclipse.buckminster.runtime 1.1.0.r09338 org.eclipse.datatools.enablement.sybase.asa.dbdefinition 1.0.0.v200805240040 org.eclipse.datatools.sqltools.sql 1.0.0.v200805152355 org.apache.batik.svggen 1.6.0.v200805290154 org.eclipse.buckminster.cvs 1.0.0.r09319 org.python.pydev.core 1.2.6 org.eclipse.equinox.simpleconfigurator 1.0.0.v20080604 org.eclipse.help.ui 3.3.100.v20080521 org.apache.batik.dom 1.6.0.v200805290154 org.python.pydev.parser 1.1.0 org.eclipse.ecf.server.generic 1.2.0.v20080623-0046 com.windowtester.swt.runtime.win32 3.5.0.200806270034 org.eclipse.emf.cdo.examples 1.0.0.v200806180411 org.eclipse.ecf.provider.remoteservice 1.3.0.v20080623-0046 org.eclipse.gmf.runtime.notation.edit 1.1.0.v20080507-1326 org.eclipse.core.filesystem 1.2.0.v20080604-1400 org.eclipse.m2m.qvt.oml.runtime.ui 1.0.0.v20080611-1330 org.eclipse.emf.cdo.server.hibernate.source 1.0.0.v200806180411 org.python.pydev.jython 1.3.7 org.eclipse.gmf.codegen.edit 2.1.0.v20080610-1132 org.eclipse.buckminster.pde 1.1.0.r09351 org.python.pydev.ast 1.2.5 org.python.pydev.core 1.0.2 org.python.pydev.ast 1.3.16 org.apache.batik.parser 1.6.0.v200805290154 org.python.pydev.parser 1.0.2 org.eclipse.wst.common.infopop 1.0.100.v200805301550 org.eclipse.ecf.remoteservice 2.0.0.v20080623-0046 org.python.pydev 1.3.1 org.python.pydev.jython 1.2.5 org.eclipse.emf.mapping 2.4.0.v200806091234 org.eclipse.emf.cdo.server.hibernate.id 1.0.0.v200806180411 com.windowtester.runtime.legacy 3.5.1.200809042232 org.python.pydev.ast 1.3.7 org.eclipse.datatools.enablement.oracle 1.0.0.v200805152355 org.python.pydev.parser 1.3.15 org.eclipse.emf.importer 2.4.0.v200806091234 org.eclipse.birt.example 2.3.0.v20080304 org.eclipse.birt.report.designer.ui.lib 2.3.0.v20080606 org.eclipse.emf.cdo.server.source 1.0.0.v200806180411 org.eclipse.gmf.runtime.common.ui.services 1.1.0.v20080612-1229 org.eclipse.datatools.sqltools.db.generic 1.0.0.v200805152355 org.eclipse.net4j 1.0.0.v200806180305 org.eclipse.jdt 3.4.0.v20080603-2000 org.eclipse.emf.cdo.source 1.0.0.v200806180411 org.eclipse.datatools.connectivity 1.1.0.v200805160228 com.instantiations.assist.eclipse.scheduler 5.5.0 org.eclipse.emf.ecore.sdo.source 2.4.0.v200806091234 org.eclipse.wst.sse.doc.user 1.1.0.v200805211530 org.python.pydev 0.9.7.99 org.eclipse.emf.transaction.source 1.2.0.v200805130238-23-8s733I3C59379I org.w3c.dom.svg 1.1.0.v200806040011 org.python.pydev.core 1.3.4 javax.xml.rpc 1.1.0.v200806030420 org.eclipse.ocl.uml.source 1.2.0.v200805130238-11-7w311916241349 com.instantiations.eclipse.ui 5.3.2.200806270030 org.eclipse.jface.text 3.4.0.v20080603-2000 org.apache.batik.xml 1.6.0.v200805290154 org.python.pydev 1.0.3 org.eclipse.gmf.bridge.ui.dashboard 2.0.0.v20080417-1610 org.apache.lucene 1.9.1.v20080530-1600 org.eclipse.emf.query.ocl 1.2.0.v200805130238 org.eclipse.uml2.uml.resources 2.2.0.v200805131030 org.eclipse.ecf.provider.r_osgi 2.0.0.v20080623-0046 org.eclipse.emf.importer.java 2.4.0.v200806091234 org.python.pydev.debug 1.3.20 org.eclipse.emf.ecore.xmi 2.4.0.v200806091234 org.python.pydev.mylyn 0.3.0 com.instantiations.assist.eclipse.pattern 5.5.0 org.eclipse.emf.source 2.4.0.v200806091234 org.eclipse.ui.browser 3.2.200.v20080507 org.eclipse.tptp.lta.sdb.epi 4.5.0.v200805132041 org.eclipse.net4j.doc 1.0.0.v200806180305 org.eclipse.gmf.bridge 1.1.0.v20080528-1052 com.instantiations.assist.eclipse.admin 5.5.1 org.eclipse.ecf.presence 1.3.0.v20080623-0046 org.eclipse.jet.editor 0.9.0.v20080226 org.eclipse.emf.mint 0.7.0.v200806172223 org.eclipse.ecf.provider 1.3.0.v20080623-0046 com.instantiations.assist.eclipse.core.ant 5.5.0 org.apache.axis 1.4.0.v200806030120 org.eclipse.equinox.p2.metadata.repository 1.0.0.v20080604 com.ibm.icu 3.8.1.v20080530 org.eclipse.gmf.runtime.diagram.ui.properties 1.1.0.v20080603-1553 org.eclipse.team.svn.mylyn.source 0.7.1.I20080612-1500 org.eclipse.ecf.provider.datashare 1.3.0.v20080623-0046 org.eclipse.birt.report.data.oda.sampledb 2.3.0.v20080606 org.eclipse.m2m.atl.drivers.emf4atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.providers.ide 1.1.0.v20080425-1959 org.python.pydev 0.8.0 org.eclipse.datatools.connectivity.sqm.server.ui 1.1.0.v200806050117 com.nordea.cd.dev.plugin.stubbuilder 1.0.2 org.eclipse.emf.mapping.xsd2ecore 2.4.0.v200806091234 org.python.pydev.parser 1.2.5 org.eclipse.xsd.mapping.editor 2.4.0.v200806091234 org.python.pydev.jython 1.3.15 org.eclipse.gmf.xpand.editor 1.0.0.v20080425-1959 org.eclipse.tptp.platform.lta.common 4.5.0.v200806050100 org.eclipse.buckminster.pde.ui 1.0.0.r09319 org.eclipse.emf.validation.ocl 1.2.0.v200805130238 org.eclipse.ui.console 3.3.0.v20080529-1300 org.eclipse.net4j.ui 1.0.0.v200806180305 org.eclipse.emf.workspace 1.2.0.v200805130238 org.python.pydev.ast 0.9.8.6 org.python.pydev.ast 0.9.8.5 org.eclipse.emf.teneo.annotations 1.0.0.v200806111928 org.python.pydev.ast 0.9.8.4 org.eclipse.ui.net 1.0.0.I20080605 org.python.pydev.ast 0.9.8.3 org.eclipse.net4j.db.source 1.0.0.v200806180305 org.eclipse.zest.core 1.0.0.v20080115 org.python.pydev.ast 0.9.8.2 org.eclipse.tptp.lta.log.epi 4.5.0.v200805132041 org.python.pydev.ast 0.9.8.1 org.python.pydev 1.3.13 org.eclipse.equinox.app 1.1.0.v20080421-2006 org.eclipse.equinox.p2.metadata.generator 1.0.0.v20080604 org.python.pydev 1.2.7 org.eclipse.emf.ocl.examples 1.2.0.v200805130238 org.eclipse.mylyn.jira.core 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.commons.net 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql.query 1.0.1.v200805152355 org.eclipse.datatools.sqltools.plan 1.0.0.v200805152355 com.swtdesigner.help 6.7.1.200809050053 org.eclipse.ecf.ssl 1.0.0.v20080611-1715 org.eclipse.team.cvs.core 3.3.100.I20080605 org.python.pydev.ast 0.9.8 com.instantiations.helpeditor.core.toc 1.3.4.200806270212 org.eclipse.core.databinding 1.1.0.I20080527-2000 org.eclipse.tptp.platform.common 4.3.200.v200805300100 org.eclipse.net4j.util.ui 1.0.0.v200806180305 org.eclipse.mylyn.commons.core 3.0.0.v20080619-1900 org.python.pydev 1.3.9 org.eclipse.emf.search.common.ui 0.7.0.v200806130939 org.eclipse.m2m.atl.engine.emfvm 2.0.0.v200806101117 org.eclipse.uml2.diagram.csd 0.8.0.v200806112132 org.python.pydev.parser 1.3.7 org.eclipse.team.svn.ui 0.7.1.I20080612-1500 org.python.pydev.core 1.3.12 org.eclipse.datatools.modelbase.sql.query.edit 1.0.0.v200806070329 com.instantiations.packager.core 2.5.1 com.windowtester.swing.runtime 3.5.0.200806270034 org.eclipse.update.ui 3.2.100.v20080318 org.apache.commons.codec 1.2.0.v20080530-1550 org.eclipse.mylyn.bugzilla.core 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.editor.ui 1.0.0.v20080611-1330 org.eclipse.m2m.qvt.oml.samples 1.0.0.v20080611-1330 org.eclipse.mylyn.context.core 3.0.0.v20080619-1900 org.eclipse.xsd.source 2.4.0.v200806091234 org.eclipse.gmf.runtime.diagram.core 1.1.0.v20080425-1959 org.eclipse.m2m.atl.drivers.uml24atl 2.0.0.v200806101117 com.instantiations.eclipse.util 5.3.2.200809042027 org.eclipse.emf.ecore.sdo 2.4.0.v200806091234 com.instantiations.eclipse.startup 5.3.2.200809042027 org.eclipse.gmf 1.0.0.v20080425-1959 org.python.pydev 0.9.2 org.apache.batik.util.gui 1.6.0.v200805290154 org.python.pydev.ast 0.9.8.7 com.nordea.cd.dev.plugin.wsdl2java 1.0.2 org.eclipse.datatools.enablement.sybase.models 1.0.0.v200805152355 org.python.pydev.ast 1.0.1 org.eclipse.emf.compare.diff 0.8.0.v200806180301 org.eclipse.birt.report.designer 2.3.0.v200806102 org.eclipse.equinox.http.registry 1.0.100.v20080427-0830 ch.ethz.iks.r_osgi.remote 1.0.0.RC2_v20080623-0046 org.eclipse.gmf.graphdef.codegen.ui 1.0.100.v20080425-1959 org.eclipse.m2m.qvt.oml.editor.source 1.0.0.v20080611-1330-1--7w3119172202441 org.sat4j.pb 2.0.0.v20080602 org.eclipse.wst.validation 1.2.1.v200807292117 org.apache.batik.util 1.6.0.v200805290154 org.eclipse.equinox.transforms.hook 1.0.0.v20080610 org.eclipse.emf.teneo.hibernate 1.0.0.v200806111928 org.eclipse.uml2.examples 2.1.0.v200805131030 org.eclipse.mylyn.java.tasks 3.0.2.v20080918-1100-e3x org.eclipse.equinox.preferences 3.2.200.v20080421-2006 com.instantiations.assist.eclipse.fragment.swt 5.5.0 org.eclipse.ocl.doc 1.2.0.v200805130238 org.eclipse.jdt.apt.core 3.3.100.v20080513-1235 org.eclipse.birt.report.engine.fonts 2.3.0.v20080606 org.eclipse.mylyn.monitor.ui 3.0.2.v20080918-1100-e3x org.eclipse.gmf.tooldef.edit 2.0.0.v20080610-1132 org.eclipse.gmf.runtime.draw2d.ui.render 1.1.0.v20080507-2230 com.windowtester.swt.platform.ext 3.5.0.200806270034 org.eclipse.ecf.example.clients 1.3.0.v20080623-0046 org.eclipse.core.net 1.1.0.I20080604 org.eclipse.wst.xsd.core 1.1.301.v200807240448 org.eclipse.datatools.connectivity.oda.flatfile 3.0.6.v200805261930 org.python.pydev.refactoring 1.3.20 org.python.pydev.parser 1.0.1 org.python.pydev.ast 1.3.19 org.eclipse.equinox.registry.jmx 1.0.0.v20080610-1530 com.instantiations.eclipse.model.jsp 5.5.0 org.eclipse.mylyn.context.ui 3.0.2.v20080918-1100-e3x org.python.pydev.core 1.0.5 org.eclipse.hyades.lta.resources.database 4.5.0.v200805271330 org.python.pydev 0.6.1 org.python.pydev.parser 1.3.12 org.eclipse.equinox.p2.console 1.0.0.v20080514-1900 org.eclipse.mylyn.commons.net 3.0.1.v20080721-2100-e3x org.eclipse.net4j.jms.api 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.lexer 1.0.1.v200805152355 org.python.pydev.ast 1.3.4 org.python.pydev 1.3.4 org.python.pydev.jython 1.2.8 org.python.pydev 0.8.5 org.python.pydev 0.5.3 org.eclipse.wst.sse.ui 1.1.1.v200808141919 org.eclipse.emf.query 1.2.0.v200805130238 org.eclipse.core.runtime.compatibility 3.2.0.v20071008 org.eclipse.gmf.runtime.notation 1.1.0.v20080507-1326 org.eclipse.birt.report.data.oda.sampledb.ui 2.3.0.v20080606 org.python.pydev.ast 1.2.6 com.instantiations.eclipse.mail.ui 5.5.1 org.eclipse.zest.layouts 1.0.0.v20080226 org.python.pydev.jython 1.3.6 org.eclipse.net4j.jms.admin 1.0.0.v200806180305 org.eclipse.core.databinding.beans 1.1.0.I20080508-2000a org.python.pydev 1.1.0 org.python.pydev.core 1.3.20 org.eclipse.gmf.runtime.emf.commands.core 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.common.ui.services.dnd.ide 1.1.0.v20080425-1959 org.eclipse.datatools.connectivity.apache.derby 1.0.1.v200805152355 org.python.pydev.core 1.2.9 org.eclipse.mylyn.context.core 3.0.2.v20080918-1100-e3x org.eclipse.equinox.p2.artifact.repository 1.0.0.v20080609-0850 org.eclipse.gef 3.4.0.v20080526 org.eclipse.gmf.runtime.common.ui 1.1.0.v20080512-1200 org.eclipse.emf.ecoretools.tabbedproperties 0.8.0.v200806130600 com.instantiations.assist.eclipse.core.ant 5.5.1 org.eclipse.emf.ecore.change 2.4.0.v200806091234 org.eclipse.jet.doc 0.9.0.v20080522 org.eclipse.emf.transaction.examples 1.2.0.v200806051817 org.eclipse.gmf.runtime.draw2d.ui 1.1.0.v20080610-1132 org.eclipse.equinox.jmx.server.rmi 1.0.0.v20070510 org.eclipse.ecf.examples.remoteservices.common 1.0.100.v20080623-0046 org.eclipse.wst.standard.schemas 1.0.102.v200807220733 org.eclipse.equinox.p2.jarprocessor 1.0.0.v20080514-1900 org.eclipse.birt.report.data.oda.jdbc 2.3.0.v20080610 com.windowtester.runner 3.5.0.200806270034 com.windowtester.swt.codegen 3.5.1.200809042232 org.eclipse.emf.cdo.tests.model2.edit 1.0.0.v200806180411 javax.wsdl 1.5.1.v200806030408 org.eclipse.datatools.enablement.sap.maxdb.ui 1.0.0.v200805152355 org.eclipse.equinox.launcher.win32.win32.x86 1.0.100.v20080509-1800 org.eclipse.birt.core 2.3.0.v20080606 javax.servlet 2.5.0.v200806031605 org.eclipse.uml2.codegen.ecore.ui 1.4.0.v200805131030 com.windowtester.swt.recorder 3.5.0.200806270034 org.eclipse.mylyn 3.0.1.v20080721-2100-e3x org.eclipse.uml2.search.ocl 0.7.0.v200806130939 org.python.pydev.core 1.3.3 org.eclipse.core.jobs 3.4.0.v20080512 org.python.pydev.core 0.9.5 org.eclipse.emf.validation.ui.ide 1.2.0.v200805130238 org.python.pydev 1.0.2 org.eclipse.wst.validation.ui 1.2.0.v200805262011 com.windowtester.swing.recorder 3.5.1.200809042232 com.instantiations.helpeditor.help 1.3.4.200809042225 org.eclipse.gmf.map.edit 2.1.0.v20080610-1132 org.eclipse.emf.ecore.edit 2.4.0.v200806091234 org.eclipse.datatools.enablement.msft.sqlserver.dbdefinition 1.0.0.v200805152355 org.mortbay.jetty.util 6.1.7.v200806031612 org.eclipse.datatools.sqltools.parsers.sql 1.0.1.v200805152355 org.eclipse.xsd.doc 2.4.0.v200806091234 org.eclipse.jdt.doc.isv 3.4.0.v20080612-1340 org.eclipse.jdt.apt.pluggable.core 1.0.100.v20080407-1345 org.eclipse.ecf.provider.bittorrent 0.3.0.v20080623-0046 org.eclipse.mylyn.monitor.ui 3.0.1.v20080721-2100-e3x org.python.pydev.jython 1.0.4 org.eclipse.wst.common.project.facet.ui 1.3.1.v200807301432 javax.xml.bind 2.0.0.v20080604-1500 org.apache.derby.core 10.3.1.4 org.eclipse.birt.report.debug.core 2.3.0.v200806102 org.python.pydev.parser 1.3.4 org.eclipse.jdt.debug.ui 3.3.0.v20080603 org.python.pydev.help 1.3.20 org.python.pydev 1.3.12 org.eclipse.gef.examples.ui.pde 3.4.0.v20080226 org.eclipse.ecf.provider.jmdns 2.0.0.v20080623-0046 org.eclipse.xsd.editor 2.4.0.v200806091234 org.python.pydev 1.2.6 org.eclipse.buckminster.generic.ui 1.0.0.r09319 org.eclipse.emf.ocl 1.1.100.v200805130238 org.eclipse.emf.search.ecore 0.7.0.v200806130939 org.eclipse.wst.common.frameworks.ui 1.1.200.v200805221400 org.eclipse.emf.ecoretools.doc 0.8.0.v200806130600 org.eclipse.wst.sse.ui.infopop 1.0.200.v200805301545 org.eclipse.tptp.platform.common.ui.trace 4.3.200.v200805290100 org.eclipse.net4j.jms.server 1.0.0.v200806180305 org.eclipse.ecf.filetransfer.ui 1.4.0.v20080623-0046 org.eclipse.birt.chart.device.swt 2.3.0.v20080522 org.eclipse.wst.xsd.ui 1.2.101.v200806051910 org.eclipse.emf.cdo.examples.source 1.0.0.v200806180411 org.eclipse.birt.report.designer.ui.lib.explorer 2.3.0.v20080606 org.mozilla.rhino 1.6.7.v20080214 org.python.pydev 1.3.16 org.eclipse.buckminster.ant 1.1.0.r09351 org.eclipse.equinox.metatype 1.0.0.v20070827 org.eclipse.m2m.atl.adt.wizard 2.0.0.v200806101117 org.eclipse.wst.command.env 1.0.305.v200805281530 org.eclipse.swt.jmx 1.0.0.v20070510 org.eclipse.emf.cdo.common 1.0.0.v200806180411 org.eclipse.ecf.examples.remoteservices.client 1.0.100.v20080623-0046 org.python.pydev.jython 1.3.14 org.python.pydev.parser 1.2.6 org.eclipse.emf.ecoretools.diagram.ui.outline 0.8.0.v200806130600 org.eclipse.emf.teneo.eclipse 1.0.0.v200806111928 org.eclipse.emf.cdo.tests.mango 1.0.0.v200806180411 org.eclipse.net4j.buddies.common 1.0.0.v200806180305 org.eclipse.net4j.buddies.chat 1.0.0.v200806180305 org.eclipse.mylyn.bugzilla.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.0 org.eclipse.datatools.enablement.sybase.ase.dbdefinition 1.0.0.v200805240040 org.apache.ant 1.7.0.v200803061910 org.eclipse.datatools.connectivity.oda.design 3.0.6.v200805152355 org.eclipse.emf.ocl.doc 1.1.100.v200805130238 org.eclipse.tptp.lta.gla.ui.epi 4.5.0.v200805160100 org.eclipse.equinox.jmx.server 1.0.0.v20071015 org.eclipse.wst.xml.core 1.1.300.v200806051910 org.eclipse.datatools.connectivity.oda.template.ui 3.0.6.v200805152355 org.python.pydev.ast 1.0.2 org.eclipse.birt.report.data.adapter 2.3.0.v20080606 org.eclipse.birt.chart.runtime 2.3.0.v20080304 org.eclipse.net4j.ui.source 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.query 1.0.1.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.1 org.eclipse.wst.dtd.ui 1.0.300.v200805152207 org.eclipse.mylyn.java.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.connectivity.oda.design.ui 3.0.6.v200805152355 org.eclipse.birt.report.designer.core 2.3.0.v200806102 org.eclipse.buckminster.jdt 1.0.0.r09319 org.eclipse.buckminster.p4 1.0.0.r09319 org.eclipse.ecf.core.source 2.0.0.v20080623-0046 org.eclipse.birt.report.runtime 2.3.0.v20080304 org.python.pydev.ast 1.1.0 com.windowtester.swt.runtime 3.5.1.200809042232 org.eclipse.uml2.doc 2.2.0.v200805201350 org.eclipse.mylyn.context.core 3.0.1.v20080721-2100-e3x org.eclipse.gmf.runtime.notation.providers 1.1.0.v20080425-1959 org.eclipse.tptp.platform.lta.log.doc.user 4.5.0.v200805132041 org.eclipse.team.svn.help 0.7.1.I20080612-1500 org.python.pydev 0.9.3 com.windowtester.swt.runtime.win32 3.5.1.200809042232 org.eclipse.m2m.qvt.oml.ocl.emf.libraries 1.0.0.v20080611-1330 org.eclipse.hyades.lta.analysis.engine 4.5.0.v200805271330 org.python.pydev.core 1.3.11 org.eclipse.datatools.connectivity.sqm.core 1.0.1.v200806041052 org.eclipse.equinox.jmx.server.xmlrpc 1.0.0.v20070608 org.eclipse.platform 3.3.100.v200806172000 org.eclipse.ui 3.4.0.I20080610-1200 org.eclipse.net4j.buddies.chat.ui 1.0.0.v200806180305 org.eclipse.emf.search.ecore.ocl 0.7.0.v200806130939 org.eclipse.gmf.codegen 2.1.0.v20080610-1132 org.eclipse.emf.teneo 1.0.0.v200806111928 org.eclipse.datatools.connectivity.oda.flatfile.ui 3.0.6.v200805261930 org.python.pydev.core 1.0.4 org.eclipse.equinox.p2.extensionlocation 1.0.0.v20080523-0001 org.eclipse.buckminster.remote.cloudsmith 1.0.0.r09319 org.python.pydev.ast 1.3.18 org.eclipse.birt.report.engine.dataextraction.csv 2.3.0.v200806102 org.eclipse.equinox.log 1.1.0.v20080414 org.python.pydev.parser 1.3.13 org.python.pydev 1.3.3 com.windowtester.eclipse.help 3.5.0.200806270034 org.python.pydev.jython 1.2.7 org.eclipse.m2m.qvt.oml.emf.util.ui 1.0.0.v20080611-1330 org.eclipse.gmf.runtime.common.ui.printing 1.1.0.v20080425-1959 org.python.pydev.ast 1.3.5 org.eclipse.uml2.uml.ecore.exporter 2.2.0.v200805131030 org.eclipse.equinox.event 1.1.0.v20080225 org.eclipse.epp.usagedata.gathering 1.0.0.R200806162215 com.instantiations.assist.eclipse.fragment.swt 5.5.1 org.eclipse.emf.cdo.server 1.0.0.v200806180411 org.eclipse.core.filesystem.win32.x86 1.1.0.v20080604-1400 org.eclipse.datatools.enablement.ibm.db2.zseries 1.0.0.v200805152355 com.windowtester.swt.platform.ext 3.5.1.200809042232 org.eclipse.birt.chart.examples 2.3.0.v20080612 org.eclipse.gmf.bridge.ui 1.1.100.v20080417-1610 org.eclipse.emf.doc 2.4.0.v200806091234 org.eclipse.emf.ecoretools.diagram 0.8.0.v200806130600 org.eclipse.ecf.provider.filetransfer.efs 1.5.0.v20080623-0046 org.eclipse.mylyn.commons.net 3.0.0.v20080619-1900 org.python.pydev.core 1.2.8 org.eclipse.datatools.modelbase.dbdefinition 1.0.0.v200805152355 javax.management.remote 1.0.0.v200803061811 org.eclipse.net4j.util 1.0.0.v200806180305 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.0 org.eclipse.ui.navigator.resources 3.3.100.I20080606-1300 org.apache.lucene.analysis 1.9.1.v20080530-1600 org.python.pydev.jython 1.3.5 org.eclipse.m2m.atl.adt.builder 2.0.0.v200806101117 org.eclipse.mylyn.monitor.core 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.2.7 com.instantiations.eclipse.mail.ui 5.5.0 org.eclipse.tptp.platform.models.lta 4.5.0.v200805132041 org.eclipse.mylyn.commons.core 3.0.1.v20080721-2100-e3x org.eclipse.team.svn.nl1 0.7.1.I20080612-1500 org.eclipse.birt.report.data.oda.jdbc.dbprofile.ui 2.3.0.v20080606 org.eclipse.pde 3.4.0.v20080603 org.eclipse.net4j.jms.server.jdbc 1.0.0.v200806180305 org.eclipse.pde.doc.user 3.3.0.v20080611-1530 org.eclipse.core.runtime.compatibility.auth 3.2.100.v20070502 org.eclipse.tptp.platform.iac.administrator 4.4.100.v200806120100 org.eclipse.emf.importer.ecore 2.4.0.v200806091234 org.eclipse.equinox.jmx.client.xmlrpc 1.0.0.v20070515 org.eclipse.equinox.jmx.common 1.0.0.v20070510 org.eclipse.datatools.enablement.ibm.informix.ui 1.0.0.v200805160737 com.instantiations.installer 2.5.1 org.eclipse.hyades.lta.logging.parsers 4.5.0.v200805271330 org.eclipse.uml2.diagram.profile 0.8.0.v200806112132 org.eclipse.datatools.enablement.jdt.classpath 1.0.1.v200805152355 org.eclipse.emf.validation.ocl.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.net4j.buddies 1.0.0.v200806180305 net.sourceforge.lpg.lpgjavaruntime 1.1.0.v200803061910 org.eclipse.emf.ecore.editor 2.4.0.v200806091234 org.apache.commons.lang 2.3.0.v200803061910 org.eclipse.ocl.uml 1.2.0.v200805130238 org.eclipse.emf.mapping.ecore2ecore 2.4.0.v200806091234 com.swtdesigner.fragment.jdt.core 6.7.0.200806270151 org.eclipse.ecf.provider.xmpp 2.0.0.v20080623-0046 org.eclipse.wst.common.modulecore 1.1.201.v200808071700 org.eclipse.mylyn.jira.ui 3.0.2.v20080918-1100-e3x org.eclipse.draw2d.doc.isv 3.4.0.v20080606 org.python.pydev.core 1.3.2 org.eclipse.mylyn.compatibility 3.0.0.v20080619-1900 org.eclipse.buckminster.maven 1.1.0.r09319 org.eclipse.buckminster.cmdline 1.0.0.r09319 org.apache.batik.css 1.6.0.v200805290154 org.eclipse.ecf.telephony.call.ui 1.2.0.v20080623-0046 org.eclipse.wst.common.emfworkbench.integration 1.1.200.v200805140020 org.python.pydev 1.0.1 org.eclipse.datatools.enablement.ibm.db2.luw.dbdefinition 1.0.0.v200805152355 org.eclipse.team.svn.resource.ignore.rules.jdt.source 0.7.1.I20080612-1500 org.eclipse.ecf.server 1.3.0.v20080623-0046 org.python.pydev 1.2.5 org.python.pydev.core 1.2.1 org.eclipse.datatools.sqltools.sqlscrapbook 1.0.0.v200806021003 org.eclipse.birt.chart.reportitem 2.3.0.v20080610 org.eclipse.uml2.diagram.codegen 0.8.0.v200806112132 org.eclipse.xsd.edit 2.4.0.v200806091234 org.eclipse.buckminster.opml 1.0.0.r09319 org.python.pydev.parser 1.3.5 org.eclipse.gmf.runtime.diagram.ui 1.1.0.v20080610-1132 org.eclipse.ocl.source 1.2.0.v200805130238-34-9oA55S5I6M7JBK com.windowtester.eclipse.ui 3.5.0.200806270034 org.eclipse.tptp.platform.agentcontroller 4.2.200.v200806162043 org.python.pydev 1.3.11 org.eclipse.datatools.connectivity.apache.derby.ui 1.0.0.v200805160737 org.eclipse.datatools.sqltools.routineeditor 1.0.0.v200805261703 org.eclipse.wst.xsd.ui 1.2.102.v200808141745 org.eclipse.equinox.http 1.0.200.v20080421-2006 org.jivesoftware.smack 2.2.1 org.eclipse.mylyn.compatibility 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.java.ui 3.0.0.v20080619-1900 org.eclipse.core.variables 3.2.100.v20080529-1300 org.python.pydev.jython 1.3.13 org.python.pydev.parser 1.3.20 org.eclipse.tptp.platform.models.hierarchy 4.5.0.v200806120100 org.eclipse.ecf.examples.updatesite.client 1.0.100.v20080623-0046 org.eclipse.datatools.enablement.msft.sqlserver.ui 1.0.0.v200805160737 org.eclipse.datatools.enablement.mysql 1.0.0.v200805152355 org.eclipse.jdt.debug 3.4.0.v20080604 org.antlr.runtime 3.0.0.v200803061811 org.python.pydev.parser 1.2.7 org.eclipse.hyades.execution 4.4.200.v200806120100 org.eclipse.ecf.provider.ui 1.3.0.v20080623-0046 org.eclipse.birt.chart.cshelp 2.3.0.v20080616 org.eclipse.buckminster.p4.ui 1.0.0.r09319 org.python.pydev 1.3.15 org.eclipse.datatools.enablement.ibm.ui 1.0.0.v200805152355 org.eclipse.buckminster.sax 1.0.0.r09175 org.eclipse.equinox.supplement 1.1.0.v20080421-2006 org.eclipse.wst.common.frameworks 1.1.200.v200805140020 org.eclipse.mylyn 3.0.2.v20080918-1100-e3x org.eclipse.gmf.map 2.1.0.v20080521 org.eclipse.wst.standard.schemas 1.0.101.v200806010600 org.python.pydev.ast 1.0.3 org.eclipse.m2m.qvt.oml.runtime 1.0.0.v20080611-1330 org.eclipse.mylyn.ide.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.sqltools.sqlbuilder 1.0.0.v200806070500 org.eclipse.datatools.modelbase.derby 1.0.0.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.0 org.eclipse.emf.compare.ui 0.8.0.v200806180301 org.eclipse.ecf.provider.filetransfer.scp 2.0.0.v20080623-0046 org.eclipse.uml2.search.ocl.ui 0.7.0.v200806130939 org.eclipse.mylyn.context.ui 3.0.1.v20080721-2100-e3x org.python.pydev.templates 1.3.20 org.eclipse.gmf.runtime.diagram.ui.resources.editor 1.1.0.v20080425-1959 org.eclipse.gmf.examples.ui.pde 1.0.200.v20080425-1959 org.eclipse.buckminster.installer 1.0.0.r09319 org.eclipse.m2m.atl.examples 2.0.0.v200806101117 org.eclipse.datatools.modelbase.sql.xml.query 1.0.0.v200805152355 org.eclipse.emf.search.doc 0.7.0.v200806130939 org.eclipse.datatools.enablement.oracle.dbdefinition 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.0 javax.xml.bind 2.0.0.v200803061811 org.apache.xmlrpc 3.0.0.v20080530-1550 org.eclipse.ui.views.log 1.0.0.v20080522-2200 org.python.pydev.core 1.3.10 org.eclipse.ecf.examples.updatesite.server 1.0.100.v20080623-0046 org.eclipse.birt.core.ui 2.3.0.v20080515 org.eclipse.core.filebuffers 3.4.0.v20080603-2000 org.eclipse.mylyn.team.ui 3.0.1.v20080721-2100-e3x org.eclipse.wst.command.env 1.0.306.v200807231700 org.eclipse.team.cvs.ssh2 3.2.200.I20080604 org.eclipse.emf.search.ecore.ocl.ui 0.7.0.v200806130939 org.eclipse.ecf.example.collab.editor 1.0.200.v20080623-0046 org.eclipse.ecf.provider.jslp 2.0.0.v20080623-0046 org.eclipse.datatools.sqltools.result 1.0.0.v200805301309 org.eclipse.emf.teneo.jpox 1.0.0.v200806111928 org.eclipse.gmf.runtime.emf.clipboard.core 1.1.0.v20080425-1959 com.instantiations.eclipse.ast.editor 5.5.0 org.eclipse.mylyn.tasks.bugs 3.0.2.v20080918-1100-e3x org.eclipse.jsch.core 1.1.100.I20080604 org.eclipse.pde.core 3.4.0.v20080604-2000 org.python.pydev 0.9.4 org.python.pydev.jython 1.3.0
--1 x2420 +1 x16 +1 x528 +1 x118 +1 x17 +1 x21 +1 x34 +1 x599 +1 x658 +1 x659 +1 x35 +1 x660 +1 x40 +1 x44 +1 x661 +1 x50 +1 x662 +1 x51 +1 x101 +1 x103 +1 x112 +1 x663 +1 x125 +1 x191 +1 x53 +1 x664 +1 x665 +1 x666 +1 x162 +1 x167 +1 x667 +1 x326 +1 x188 +1 x187 +1 x173 +1 x203 +1 x192 +1 x190 +1 x668 +1 x578 +1 x669 +1 x670 +1 x208 +1 x213 +1 x671 +1 x223 +1 x672 +1 x229 +1 x230 +1 x231 +1 x673 +1 x674 +1 x675 +1 x676 +1 x248 +1 x251 +1 x252 +1 x677 +1 x678 +1 x253 +1 x260 +1 x87 +1 x264 +1 x267 +1 x272 +1 x291 +1 x679 +1 x680 +1 x681 +1 x46 +1 x682 +1 x297 +1 x298 +1 x313 +1 x683 +1 x684 +1 x314 +1 x685 +1 x686 +1 x333 +1 x498 +1 x334 +1 x687 +1 x339 +1 x688 +1 x348 +1 x350 +1 x689 +1 x355 +1 x357 +1 x690 +1 x185 +1 x691 +1 x360 +1 x692 +1 x693 +1 x694 +1 x366 +1 x695 +1 x18 +1 x367 +1 x382 +1 x696 +1 x392 +1 x697 +1 x461 +1 x698 +1 x95 +1 x617 +1 x699 +1 x114 +1 x413 +1 x464 +1 x700 +1 x80 +1 x65 +1 x701 +1 x702 +1 x422 +1 x703 +1 x423 +1 x704 +1 x427 +1 x705 +1 x429 +1 x706 +1 x707 +1 x708 +1 x432 +1 x433 +1 x709 +1 x710 +1 x159 +1 x711 +1 x712 +1 x434 +1 x331 +1 x713 +1 x714 +1 x715 +1 x436 +1 x444 +1 x451 +1 x501 +1 x519 +1 x197 +1 x513 +1 x512 +1 x716 +1 x514 +1 x717 +1 x516 +1 x47 +1 x718 +1 x719 +1 x534 +1 x720 +1 x721 +1 x722 +1 x530 +1 x723 +1 x724 +1 x532 +1 x531 +1 x533 +1 x725 +1 x726 +1 x402 +1 x26 +1 x727 +1 x552 +1 x41 +1 x728 +1 x729 +1 x560 +1 x730 +1 x168 +1 x731 +1 x582 +1 x592 +1 x586 +1 x593 +1 x595 +1 x732 +1 x733 +1 x596 +1 x734 +1 x735 +1 x597 +1 x602 +1 x610 +1 x129 +1 x460 +1 x736 +1 x623 +1 x737 +1 x738 +1 x739 +1 x634 +1 x740 +1 x635 +1 x636 +1 x204 +1 x645 +1 x741 +1 x647 +1 x648 +1 x38 +1 x649 +1 x652 +1 x742 +1 x380 +1 x88 +1 x653 +1 x655 +1 x743 +1 x477 +1 x744 +1 x745 +1 x198 +1 x746 +1 x747 +1 x175 +1 x303 +1 x748 +1 x220 +1 x749 +1 x750 +1 x751 +1 x752 +1 x753 +1 x340 +1 x217 +1 x754 +1 x755 +1 x756 +1 x757 +1 x758 +1 x759 +1 x492 +1 x760 +1 x408 +1 x761 +1 x72 +1 x762 +1 x763 +1 x764 +1 x765 +1 x184 +1 x766 +1 x510 +1 x73 +1 x767 +1 x768 +1 x769 +1 x374 +1 x770 +1 x771 +1 x14 +1 x772 +1 x773 +1 x774 +1 x775 +1 x776 +1 x454 +1 x777 +1 x344 +1 x178 +1 x778 +1 x779 +1 x186 +1 x347 +1 x780 +1 x781 +1 x782 +1 x783 +1 x784 +1 x785 +1 x786 +1 x787 +1 x788 +1 x789 +1 x790 +1 x791 +1 x792 +1 x625 +1 x793 +1 x794 +1 x472 +1 x795 +1 x796 +1 x797 +1 x798 +1 x521 +1 x799 +1 x800 +1 x801 +1 x802 +1 x525 +1 x91 +1 x803 +1 x804 +1 x805 +1 x806 +1 x807 +1 x587 +1 x808 +1 x315 +1 x809 +1 x810 +1 x811 +1 x812 +1 x813 +1 x814 +1 x815 +1 x816 +1 x68 +1 x817 +1 x179 +1 x486 +1 x818 +1 x410 +1 x819 +1 x820 +1 x821 +1 x822 +1 x823 +1 x824 +1 x825 +1 x826 +1 x827 +1 x638 +1 x828 +1 x829 +1 x830 +1 x372 +1 x831 +1 x832 +1 x9 +1 x263 +1 x324 +1 x411 +1 x833 +1 x834 +1 x835 +1 x836 +1 x837 +1 x838 +1 x839 +1 x430 +1 x840 +1 x381 +1 x89 +1 x518 +1 x328 +1 x841 +1 x621 +1 x842 +1 x843 +1 x330 +1 x844 +1 x57 +1 x153 +1 x845 +1 x846 +1 x48 +1 x847 +1 x70 +1 x848 +1 x849 +1 x850 +1 x467 +1 x851 +1 x852 +1 x853 +1 x854 +1 x855 +1 x856 +1 x857 +1 x858 +1 x447 +1 x83 +1 x859 +1 x860 +1 x861 +1 x82 +1 x862 +1 x863 +1 x74 +1 x864 +1 x632 +1 x865 +1 x866 +1 x867 +1 x5 +1 x868 +1 x869 +1 x870 +1 x871 +1 x872 +1 x361 +1 x873 +1 x604 +1 x874 +1 x875 +1 x876 +1 x594 +1 x877 +1 x183 +1 x289 +1 x495 +1 x138 +1 x194 +1 x143 +1 x878 +1 x879 +1 x85 +1 x36 +1 x880 +1 x881 +1 x177 +1 x882 +1 x883 +1 x884 +1 x885 +1 x886 +1 x887 +1 x888 +1 x889 +1 x370 +1 x219 +1 x890 +1 x891 +1 x892 +1 x893 +1 x894 +1 x895 +1 x24 +1 x896 +1 x897 +1 x898 +1 x899 +1 x900 +1 x901 +1 x902 +1 x180 +1 x903 +1 x904 +1 x349 +1 x905 +1 x906 +1 x221 +1 x10 +1 x907 +1 x908 +1 x193 +1 x909 +1 x910 +1 x911 +1 x912 +1 x913 +1 x474 +1 x914 +1 x915 +1 x244 +1 x916 +1 x917 +1 x176 +1 x918 +1 x919 +1 x920 +1 x921 +1 x75 +1 x922 +1 x923 +1 x924 +1 x925 +1 x926 +1 x927 +1 x928 +1 x929 +1 x930 +1 x931 +1 x932 +1 x343 +1 x933 +1 x327 +1 x934 +1 x935 +1 x936 +1 x937 +1 x90 +1 x938 +1 x939 +1 x940 +1 x941 +1 x643 +1 x942 +1 x943 +1 x147 +1 x944 +1 x945 +1 x946 +1 x947 +1 x948 +1 x949 +1 x950 +1 x165 +1 x951 +1 x952 +1 x953 +1 x954 +1 x955 +1 x956 +1 x249 +1 x957 +1 x401 +1 x958 +1 x959 +1 x132 +1 x304 +1 x960 +1 x961 +1 x962 +1 x963 +1 x964 +1 x371 +1 x965 +1 x966 +1 x967 +1 x968 +1 x969 +1 x970 +1 x971 +1 x972 +1 x973 +1 x974 +1 x470 +1 x975 +1 x976 +1 x590 +1 x977 +1 x978 +1 x473 +1 x523 +1 x579 +1 x979 +1 x97 +1 x61 +1 x980 +1 x981 +1 x982 +1 x478 +1 x983 +1 x984 +1 x985 +1 x986 +1 x987 +1 x988 +1 x155 +1 x989 +1 x59 +1 x990 +1 x991 +1 x992 +1 x993 +1 x345 +1 x201 +1 x994 +1 x995 +1 x481 +1 x996 +1 x215 +1 x151 +1 x482 +1 x407 +1 x484 +1 x483 +1 x997 +1 x998 +1 x485 +1 x488 +1 x999 +1 x1000 +1 x489 +1 x490 +1 x1001 +1 x1002 +1 x1003 +1 x1004 +1 x511 +1 x1005 +1 x1006 +1 x1007 +1 x1008 +1 x1009 +1 x1010 +1 x1011 +1 x1012 +1 x1013 +1 x1014 +1 x1015 +1 x1016 +1 x1017 +1 x1018 +1 x1019 +1 x1020 +1 x1021 +1 x136 +1 x1022 +1 x216 +1 x1023 +1 x1024 +1 x1025 +1 x1026 +1 x1027 +1 x384 +1 x325 +1 x1028 +1 x657 +1 x1029 +1 x1030 +1 x368 +1 x250 +1 x1031 +1 x520 +1 x1032 +1 x266 +1 x1033 +1 x1034 +1 x1035 +1 x1036 +1 x1037 +1 x466 +1 x149 +1 x1038 +1 x1039 +1 x1040 +1 x1041 +1 x258 +1 x1042 +1 x1043 +1 x1044 +1 x1045 +1 x1046 +1 x1047 +1 x1048 +1 x1049 +1 x152 +1 x1050 +1 x1051 +1 x305 +1 x1052 +1 x1053 +1 x1054 +1 x1055 +1 x1056 +1 x1057 +1 x1058 +1 x1059 +1 x553 +1 x1060 +1 x1061 +1 x224 +1 x1062 +1 x1063 +1 x1064 +1 x1065 +1 x1066 +1 x1067 +1 x1068 +1 x195 +1 x259 +1 x399 +1 x86 +1 x1069 +1 x1070 +1 x494 +1 x1071 +1 x84 +1 x1072 +1 x140 +1 x256 +1 x1073 +1 x1074 +1 x146 +1 x1075 +1 x1076 +1 x1077 +1 x1078 +1 x1079 +1 x1080 +1 x628 +1 x1081 +1 x1082 +1 x1083 +1 x562 +1 x1084 +1 x239 +1 x458 +1 x1085 +1 x1086 +1 x241 +1 x462 +1 x1087 +1 x1088 +1 x1089 +1 x78 +1 x1090 +1 x1091 +1 x1092 +1 x1093 +1 x1094 +1 x1095 +1 x1096 +1 x469 +1 x631 +1 x1097 +1 x12 +1 x1098 +1 x1099 +1 x81 +1 x1100 +1 x1101 +1 x1102 +1 x1103 +1 x1104 +1 x406 +1 x1105 +1 x1106 +1 x1107 +1 x169 +1 x1108 +1 x476 +1 x1109 +1 x1110 +1 x1111 +1 x1112 +1 x49 +1 x1113 +1 x150 +1 x1114 +1 x1115 +1 x1116 +1 x1117 +1 x1118 +1 x28 +1 x1119 +1 x1120 +1 x137 +1 x409 +1 x1121 +1 x1122 +1 x99 +1 x1123 +1 x145 +1 x1124 +1 x1125 +1 x1126 +1 x1127 +1 x1128 +1 x11 +1 x373 +1 x1129 +1 x308 +1 x358 +1 x1130 +1 x1131 +1 x1132 +1 x600 +1 x1133 +1 x424 +1 x1134 +1 x1135 +1 x1136 +1 x1137 +1 x561 +1 x1138 +1 x1139 +1 x603 +1 x1140 +1 x456 +1 x1141 +1 x1142 +1 x1143 +1 x1144 +1 x1145 +1 x1146 +1 x425 +1 x1147 +1 x115 +1 x1148 +1 x1149 +1 x1150 +1 x1151 +1 x1152 +1 x23 +1 x1153 +1 x76 +1 x1154 +1 x1155 +1 x300 +1 x1156 +1 x1157 +1 x1158 +1 x1159 +1 x1160 +1 x1161 +1 x1162 +1 x1163 +1 x1164 +1 x1165 +1 x575 +1 x1166 +1 x583 +1 x1167 +1 x1168 +1 x200 +1 x71 +1 x1169 +1 x1170 +1 x322 +1 x1171 +1 x1172 +1 x1173 +1 x397 +1 x480 +1 x1174 +1 x1175 +1 x1176 +1 x576 +1 x209 +1 x1177 +1 x403 +1 x1178 +1 x1179 +1 x416 +1 x1180 +1 x13 +1 x1181 +1 x1182 +1 x1183 +1 x1184 +1 x1185 +1 x1186 +1 x1187 +1 x1188 +1 x1189 +1 x310 +1 x1190 +1 x1191 +1 x1192 +1 x524 +1 x1193 +1 x1194 +1 x202 +1 x1195 +1 x102 +1 x1196 +1 x1197 +1 x452 +1 x1198 +1 x386 +1 x1199 +1 x1200 +1 x1201 +1 x1202 +1 x457 +1 x1203 +1 x79 +1 x1204 +1 x1205 +1 x1206 +1 x1207 +1 x1208 +1 x1209 +1 x1210 +1 x160 +1 x527 +1 x1211 +1 x1212 +1 x1213 +1 x1214 +1 x1215 +1 x463 +1 x1216 +1 x1217 +1 x1218 +1 x7 +1 x1219 +1 x1220 +1 x1221 +1 x642 +1 x1222 +1 x1223 +1 x1224 +1 x1225 +1 x1226 +1 x605 +1 x1227 +1 x301 +1 x1228 +1 x449 +1 x1229 +1 x353 +1 x396 +1 x1230 +1 x174 +1 x98 +1 x1231 +1 x1232 +1 x1233 +1 x1234 +1 x1235 +1 x479 +1 x598 +1 x1236 +1 x1237 +1 x63 +1 x1238 +1 x1239 +1 x1240 +1 x1241 +1 x1242 +1 x1243 +1 x1244 +1 x1245 +1 x1246 +1 x170 +1 x1247 +1 x1248 +1 x1249 +1 x317 +1 x226 +1 x1250 +1 x1251 +1 x1252 +1 x37 +1 x1253 +1 x1254 +1 x1255 +1 x1256 +1 x601 +1 x1257 +1 x142 +1 x446 +1 x1258 +1 x1259 +1 x1260 +1 x1261 +1 x1262 +1 x1263 +1 x182 +1 x1264 +1 x1265 +1 x1266 +1 x1267 +1 x1268 +1 x1269 +1 x139 +1 x1270 +1 x1271 +1 x133 +1 x1272 +1 x1273 +1 x1274 +1 x1275 +1 x1276 +1 x1277 +1 x1278 +1 x1279 +1 x1280 +1 x1281 +1 x1282 +1 x1283 +1 x1284 +1 x1285 +1 x32 +1 x1286 +1 x1287 +1 x1288 +1 x1289 +1 x275 +1 x1290 +1 x1291 +1 x1292 +1 x1293 +1 x1294 +1 x1295 +1 x1296 +1 x1297 +1 x131 +1 x1298 +1 x262 +1 x1299 +1 x1300 +1 x503 +1 x1301 +1 x1302 +1 x629 +1 x475 +1 x1303 +1 x1304 +1 x1305 +1 x1306 +1 x1307 +1 x1308 +1 x1309 +1 x1310 +1 x319 +1 x1311 +1 x1312 +1 x1313 +1 x96 +1 x1314 +1 x94 +1 x1315 +1 x1316 +1 x1317 +1 x1318 +1 x1319 +1 x1320 +1 x1321 +1 x1322 +1 x1323 +1 x431 +1 x1324 +1 x1325 +1 x1326 +1 x1327 +1 x218 +1 x1328 +1 x1329 +1 x1330 +1 x1331 +1 x1332 +1 x27 +1 x1333 +1 x1334 +1 x398 +1 x1335 +1 x321 +1 x1336 +1 x1337 +1 x1338 +1 x1339 +1 x316 +1 x1340 +1 x1341 +1 x1342 +1 x1343 +1 x1344 +1 x1345 +1 x1346 +1 x1347 +1 x459 +1 x135 +1 x1348 +1 x1349 +1 x1350 +1 x277 +1 x1351 +1 x1352 +1 x1353 +1 x1354 +1 x1355 +1 x1356 +1 x1357 +1 x196 +1 x1358 +1 x52 +1 x1359 +1 x1360 +1 x1361 +1 x92 +1 x1362 +1 x1363 +1 x1364 +1 x1365 +1 x1366 +1 x468 +1 x448 +1 x1367 +1 x619 +1 x471 +1 x318 +1 x1368 +1 x254 +1 x265 +1 x242 +1 x1369 +1 x20 +1 x1370 +1 x1371 +1 x1372 +1 x1373 +1 x1374 +1 x1375 +1 x1376 +1 x1377 +1 x1378 +1 x1379 +1 x1380 +1 x1381 +1 x1382 +1 x1383 +1 x299 +1 x45 +1 x1384 +1 x1385 +1 x1386 +1 x1387 +1 x491 +1 x25 +1 x493 +1 x1388 +1 x1389 +1 x1390 +1 x369 +1 x1391 +1 x1392 +1 x19 +1 x1393 +1 x1394 +1 x1395 +1 x589 +1 x1396 +1 x400 +1 x1397 +1 x323 +1 x1398 +1 x8 +1 x1399 +1 x1400 +1 x1401 +1 x1402 +1 x404 +1 x1403 +1 x1404 +1 x1405 +1 x1406 +1 x1407 +1 x1408 +1 x1409 +1 x1410 +1 x1411 +1 x6 +1 x1412 +1 x1413 +1 x144 +1 x1414 +1 x1415 +1 x1416 +1 x1417 +1 x1418 +1 x302 +1 x1419 +1 x1420 +1 x1421 +1 x1422 +1 x1423 +1 x1424 +1 x1425 +1 x1426 +1 x1427 +1 x1428 +1 x1429 +1 x243 +1 x1430 +1 x1431 +1 x1432 +1 x1433 +1 x1434 +1 x1435 +1 x1436 +1 x1437 +1 x113 +1 x1438 +1 x1439 +1 x1440 +1 x1441 +1 x199 +1 x1442 +1 x1443 +1 x1444 +1 x1445 +1 x1446 +1 x1447 +1 x1448 +1 x1449 +1 x1450 +1 x257 +1 x255 +1 x1451 +1 x1452 +1 x1453 +1 x1454 +1 x1455 +1 x1456 +1 x1457 +1 x320 +1 x1458 +1 x154 +1 x1459 +1 x1460 +1 x1461 +1 x1462 +1 x134 +1 x497 +1 x181 +1 x1463 +1 x148 +1 x54 +1 x1464 +1 x1465 +1 x1466 +1 x1467 +1 x1468 +1 x453 +1 x1469 +1 x1470 +1 x1471 +1 x1472 +1 x1473 +1 x1474 +1 x1475 +1 x1476 +1 x1477 +1 x522 +1 x1478 +1 x1479 +1 x1480 +1 x1481 +1 x1482 +1 x1483 +1 x1484 +1 x1485 +1 x335 +1 x1486 +1 x1487 +1 x1488 +1 x1489 +1 x240 +1 x1490 +1 x276 +1 x465 +1 x1491 +1 x1492 +1 x1493 +1 x1494 +1 x1495 +1 x1496 +1 x1497 +1 x1498 +1 x329 +1 x1499 +1 x93 +1 x130 +1 x261 +1 x630 +1 x1500 +1 x1501 +1 x1502 +1 x1503 +1 x31 +1 x1504 +1 x1505 +1 x1506 +1 x1507 +1 x1508 +1 x1509 +1 x141 +1 x1510 +1 x1511 +1 x1512 +1 x1513 +1 x1514 +1 x225 +1 x1515 +1 x1516 +1 x205 +1 x1517 +1 x1518 +1 x1519 +1 x1520 +1 x1521 +1 x496 +1 x1522 +1 x387 +1 x1523 +1 x1524 +1 x1525 +1 x1526 +1 x1527 +1 x1528 +1 x1529 +1 x1530 +1 x1531 +1 x455 +1 x1532 +1 x577 +1 x1533 +1 x1534 +1 x1535 +1 x1536 +1 x445 +1 x1537 +1 x1538 +1 x1539 +1 x1540 +1 x618 +1 x1541 +1 x1542 +1 x1543 +1 x1544 +1 x1545 +1 x1546 +1 x414 +1 x1547 +1 x1548 +1 x1549 +1 x1550 +1 x1551 +1 x515 +1 x405 +1 x1552 +1 x1553 +1 x1554 +1 x1555 +1 x1556 +1 x1557 +1 x1558 +1 x336 +1 x385 +1 x39 +1 x214 +1 x1559 +1 x1560 +1 x1561 +1 x1562 +1 x526 +1 x1563 +1 x1564 +1 x620 +1 x1565 +1 x1566 +1 x1567 +1 x1568 +1 x1569 +1 x1570 +1 x1571 +1 x1572 +1 x1573 +1 x504 +1 x1574 +1 x1575 +1 x1576 +1 x1577 +1 x1578 +1 x1579 +1 x1580 +1 x487 +1 x1581 +1 x1582 +1 x639 +1 x1583 +1 x1584 +1 x1585 +1 x1586 +1 x1587 +1 x1588 +1 x1589 +1 x1590 +1 x1591 +1 x1592 +1 x1593 +1 x1594 +1 x637 +1 x1595 +1 x1596 >= 0;
* org.eclipse.mylyn.monitor.core 3.0.1.v20080721-2100-e3x requires either org.eclipse.core.runtime 3.4.0.v20080512
-1 x329 +1 x21 >= 0;
* org.eclipse.mylyn.monitor.core 3.0.1.v20080721-2100-e3x requires either org.eclipse.mylyn.commons.core 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.commons.core 3.0.0.v20080619-1900 org.eclipse.mylyn.commons.core 3.0.2.v20080918-1100-e3x
@@ -10064,7 +10047,7 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
-1 x618 +1 x175 >= 0;
* toolingwin32.win32.x86org.eclipse.core.runtime 3.4.0.v20080512 requires either org.eclipse.core.runtime 3.4.0.v20080512
-1 x2430 +1 x21 >= 0;
-* toolingwin32.win32.x86org.eclipse.core.runtime 3.4.0.v20080512 requires either org.python.pydev.core 0.9.7 org.eclipse.m2m.qvt.oml.trace.edit 1.0.0.v20080611-1330 org.eclipse.emf.codegen.ecore 2.4.0.v200806091234 org.eclipse.uml2.common.edit 1.4.0.v200805131030 org.eclipse.core.runtime 3.4.0.v20080512 org.python.pydev.core 1.3.9 javax.xml.soap 1.2.0.v200806030421 org.eclipse.gmf.runtime.common.ui.action.ide 1.1.0.v20080425-1959 org.eclipse.emf.cdo.edit 1.0.0.v200806180411 org.eclipse.ecf.provider.msn 1.2.0.v20080623-0046 org.eclipse.equinox.frameworkadmin.equinox 1.0.0.v20080529-1225 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.1 org.eclipse.equinox.http.servletbridge 1.0.0.v20080427-0830 org.python.pydev 0.9.5 org.python.pydev.parser 1.2.3 org.eclipse.emf.example.installer 1.0.0.v200806091234 com.instantiations.assist.eclipse 5.5.0 org.eclipse.wst.common.environment 1.0.201.v200805140020 org.eclipse.zest.source 1.0.0.v20080115-53-8xB4CE899O274A org.eclipse.emf.ant 2.4.0.v200806091234 com.instantiations.eclipse.mail 5.5.1 org.python.pydev.parser 1.3.1 org.eclipse.birt.chart.engine 2.3.0.v20080606 org.eclipse.core.resources 3.4.0.v20080604-1400 org.eclipse.birt.report.engine.emitter.postscript 2.3.0.v20080610 org.python.pydev.jython 1.1.0 org.eclipse.ui.workbench.compatibility 3.2.0.I20080509-2000 com.nordea.cd.dev.plugin.builderruntime 1.0.0 org.eclipse.m2m.atl.adt.editor 2.0.0.v200806101117 org.eclipse.equinox.p2.director.app 1.0.0.v20080604 org.eclipse.mylyn.tasks.core 3.0.0.v20080619-1900 org.python.pydev.ast 1.0.4 org.eclipse.m2m.atl.compilers.atl2006 2.0.0.v200806101117 org.eclipse.datatools.enablement.sybase.asa.ui 1.0.1.v200805310538 org.eclipse.emf.mapping.ecore2xml.ui 2.4.0.v200806091234 org.eclipse.wst.dtd.ui 1.0.301.v200808072012 org.eclipse.birt.chart.engine.extension 2.3.0.v20080611 org.eclipse.jface.databinding 1.2.0.I20080515-2000a org.eclipse.birt.chart.reportitem.ui 2.3.0.v20080610 org.eclipse.datatools.enablement.hsqldb.ui 1.0.0.v200805152355 org.eclipse.mylyn.ide.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.security.ui 1.0.0.v20080603-1810 org.eclipse.wst.common.emfworkbench.integration 1.1.201.v200808071700 org.eclipse.gmf.validate 1.1.0.v20080603-1553 org.eclipse.emf.mapping.ecore2ecore.editor 2.4.0.v200806091234 org.eclipse.ecf.provider.irc 1.3.0.v20080623-0046 org.eclipse.emf.validation.doc 1.2.0.v200805130238 org.python.pydev.ast 1.2.8 org.eclipse.emf.teneo.doc 1.0.0.v200806111928 org.python.pydev.jython 1.3.12 org.eclipse.emf.ecoretools.source 0.8.0.v200806130600 org.eclipse.equinox.p2.updatesite 1.0.0.v20080529-1800 org.eclipse.ecf.presence.bot 1.2.0.v20080623-0046 com.swtdesigner.properties.java5 1.0.0 org.eclipse.platform.doc.isv 3.4.0.v20080613-1330 org.python.pydev.core 1.2.3 org.eclipse.datatools.connectivity.db.generic 1.0.0.v200805152355 org.eclipse.uml2.diagram.clazz 0.8.0.v200806112132 org.eclipse.birt.report.designer.ui.views 2.3.0.v20080606 org.eclipse.mylyn.monitor.core 3.0.2.v20080918-1100-e3x com.instantiations.eclipse.debug 5.3.2.200806270030 org.eclipse.gmf.runtime.common.ui.action 1.1.0.v20080425-1959 org.eclipse.equinox.useradmin 1.1.0.v20080508-1815 org.eclipse.mylyn.commons.ui 3.0.2.v20080918-1100-e3x org.eclipse.equinox.cm 1.0.0.v20080509-1800 org.eclipse.uml2.diagram.component 0.8.0.v200806112132 org.eclipse.swt.layout.grouplayout 1.1.0 org.python.pydev 1.2.4 javax.servlet 2.4.0.v200806031604 org.eclipse.uml2.examples.uml.ui 2.2.0.v200805131030 org.python.pydev.ast 1.3.10 org.eclipse.birt.report.designer.ui.ide 2.3.0.v20080606 org.python.pydev.parser 1.3.18 com.swtdesigner.layout.group 6.7.0.200806270151 org.eclipse.m2m.qvt.oml.runtime.source 1.0.0.v20080611-1330-5--AgI99m9cDD4DNN9 org.eclipse.mylyn.tasks.ui 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.3.13 org.eclipse.emf.teneo.jpox.eclipse 1.0.0.v200806111928 org.eclipse.equinox.transforms.xslt 1.0.0.v20080610 org.python.pydev.core 1.0.7 org.eclipse.datatools.enablement.ibm.db2.zseries.ui 1.0.0.v200805160737 org.eclipse.mylyn.resources.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.enablement.oda.ws 1.1.0.v200805261930 org.eclipse.equinox.frameworkadmin 1.0.0.v20080430-1750 org.eclipse.birt.chart.device.extension 2.3.0.v20080424 org.eclipse.net4j.jvm 1.0.0.v200806180305 org.eclipse.emf.cdo.migrator 1.0.0.v200806180411 org.python.pydev.jython 1.3.1 org.eclipse.m2m.qvt.oml.cst.parser 1.0.0.v20080611-1330 com.xored.composer.ui 1.3.4.200809042225 org.eclipse.datatools.enablement.sybase.ui 1.0.0.v200806041138 org.eclipse.ecf.remoteservice.ui 2.0.0.v20080623-0046 org.eclipse.net4j.db.mysql 1.0.0.v200806180305 org.eclipse.update.scheduler 3.2.100.v20080404 org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide 1.1.0.v20080425-1959 org.eclipse.wst.dtdeditor.doc.user 1.0.400.v200805150028 org.eclipse.wst.xmleditor.doc.user 1.0.401.v200808071323 org.eclipse.gmf.runtime.common.ui.services.dnd 1.1.0.v20080425-1959 org.eclipse.uml2.common 1.4.0.v200805131030 org.apache.jasper 5.5.17.v200806031609 org.python.pydev 1.0.8 org.eclipse.datatools.doc.user 1.6.0.20080606124249 org.objectweb.asm 3.1.0.v200803061910 org.eclipse.emf.cdo.doc 1.0.0.v200806180411 org.python.pydev.core 1.3.17 org.eclipse.core.resources.compatibility 3.4.0.v20080604-1400 com.instantiations.eclipse.startup 5.3.2.200806270030 org.eclipse.datatools.connectivity.apache.derby.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.graphdef.codegen 2.0.100.v20080528-1052 org.eclipse.emf.common 2.4.0.v200806091234 org.eclipse.wst.xml.ui.infopop 1.0.300.v200805140200 org.python.pydev.core 1.3.0 org.eclipse.equinox.p2.touchpoint.natives 1.0.0.v20080505-1850 org.eclipse.ant.core 3.2.0.v20080529 org.eclipse.ui.workbench 3.4.0.I20080606-1300 org.eclipse.ecf.provider.xmpp.ui 2.0.0.v20080623-0046 org.w3c.sac 1.3.0.v20070710 org.python.pydev.jython 1.2.3 org.eclipse.mylyn.context.ui 3.0.0.v20080619-1900 org.eclipse.ecf.doc 1.3.0.v20080623-0046 org.eclipse.ecf.provider.bittorrent.ui 0.2.0.v20080623-0046 com.xored.swt.composer 1.3.4.200809042225 org.python.pydev.parser 1.0.4 org.eclipse.help.webapp 3.3.100.v20080528 org.eclipse.uml2.diagram.deploy 0.8.0.v200806112132 org.eclipse.ecf.provider.irc.ui 1.3.0.v20080623-0046 org.python.pydev 1.3.18 org.eclipse.m2m.atl.source 2.0.0.v200806101117 org.eclipse.mylyn.tasks.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.identity 2.0.0.v20080611-1715 org.eclipse.ocl.ecore 1.2.0.v200805130238 org.eclipse.core.expressions 3.4.0.v20080603-2000 org.eclipse.core.runtime.compatibility.registry 3.2.200.v20080610 org.eclipse.tptp.platform.la.core 4.3.200.v200805231116 org.eclipse.m2m.atl.service.core 2.0.0.v200806101117 org.apache.commons.logging 1.0.4.v20080605-1930 org.eclipse.platform.doc.user 3.4.0.v20080612-1340 com.windowtester.runtime.junit4 3.5.0.200806270034 org.python.pydev.parser 1.2.8 org.eclipse.uml2.examples.source 2.2.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.providers 1.1.0.v20080503-1740 org.python.pydev.jython 1.3.20 org.python.pydev.jython 1.0.7 org.eclipse.m2m.qvt.oml.common 1.0.0.v20080611-1330 org.eclipse.wst.sse.ui 1.1.0.v200806041847 org.eclipse.core.resources.win32.x86 3.4.0.v20071204 org.eclipse.swt.widgets.baseline 1.1.0 com.xored.swt.composer.win32.win32.x86 1.3.4.200809042225 org.eclipse.datatools.enablement.mysql.ui 1.0.0.v200805152355 org.eclipse.m2m.atl.ocl.core 2.0.0.v200806101117 org.eclipse.emf.codegen.ecore.ui 2.4.0.v200806091234 org.eclipse.equinox.http.servlet 1.0.100.v20080427-0830 org.python.pydev.ast 1.3.2 org.python.pydev 1.3.6 org.eclipse.birt.report.viewer 2.3.0.v20080606 org.apache.batik.extension 1.6.0.v200805290154 org.eclipse.uml2.diagram.statemachine 0.8.0.v200806112132 org.python.pydev.parser 1.3.10 org.eclipse.equinox.p2.ui.admin.rcp 1.0.0.v20080604 org.eclipse.emf.compare.match 0.8.0.v200806180301 org.eclipse.datatools.enablement.oracle.ui 1.0.0.v200805240040 org.python.pydev 0.7.1 com.lowagie.itext 1.5.4.v20080228 org.eclipse.birt.report.designer.ui.preview.web 2.3.0.v200806102 org.eclipse.birt.report.designer.ui.samples.ide 2.3.0.v20080606 org.eclipse.xsd.ecore.converter 2.4.0.v200806091234 org.eclipse.jdt.compiler.tool 1.0.100.v_874 org.eclipse.equinox.registry 3.4.0.v20080516-0950 org.eclipse.wst.dtd.ui.infopop 1.0.300.v200805140200 org.python.pydev.ast 0.9.5 org.eclipse.ui.workbench.texteditor 3.4.0.v20080603-2000 org.eclipse.cvs 1.0.100.v20080603 org.eclipse.uml2.search.ui 0.7.0.v200806130939 org.eclipse.gmf.common 1.1.1.v20080610-1132 org.eclipse.uml2.uml.editor 2.2.0.v200805131030 org.eclipse.m2m.atl.engine 2.0.0.v200806101117 org.eclipse.net4j.http.common 1.0.0.v200806180305 org.eclipse.ecf.presence.ui 1.2.0.v20080623-0046 org.python.pydev.parser 1.2.2 org.eclipse.emf.cdo.tests.model3.edit 1.0.0.v200806180411 org.eclipse.emf.cdo.tests.model1 1.0.0.v200806180411 org.eclipse.m2m.atl.engine.vm 2.0.0.v200806101117 com.instantiations.eclipse.mail 5.5.0 org.eclipse.emf.ocl.source 1.1.100.v200805130238-108Y7w311916241349 com.windowtester.swt.runtime.legacy 3.5.1.200809042232 org.eclipse.uml2tools 0.8.0.v200806112132 org.eclipse.emf.search.genmodel.ui 0.7.0.v200806130939 org.eclipse.mylyn.jira.core 3.0.2.v20080918-1100-e3x org.eclipse.uml2.uml.ecore.importer 2.2.0.v200805131030 org.eclipse.emf.transaction.doc 1.2.0.v200805130238 org.eclipse.tptp.platform.logging.events 4.3.200.v200805310100 org.python.pydev.core 1.3.8 org.eclipse.xsd.ecore.importer 2.4.0.v200806091234 org.eclipse.emf.teneo.source 1.0.0.v200806111928-78--DUUEFDEz0MMNLVD org.eclipse.uml2 2.1.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.render 1.1.0.v20080603-1553 com.windowtester.swt.runtime.os.win32 3.5.0.200806270034 org.eclipse.rcp 3.4.0.v20080507 org.eclipse.xsd.mapping 2.4.0.v200806091234 org.eclipse.emf.workspace.doc 1.2.0.v200805130238 org.eclipse.pde.api.tools 1.0.0.v20080529-1150 org.eclipse.emf.mapping.ecore2xml 2.4.0.v200806091234 org.eclipse.swt.win32.win32.x86 3.4.0.v3448f org.apache.derby 10.1.2.1_v200803061811 org.eclipse.m2m.qvt.oml.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.python.pydev.parser 1.3.0 org.eclipse.ecf.protocol.msn 1.2.0.v20080623-0046 com.instantiations.eclipse.ui 5.3.2.200809042027 org.eclipse.jet.core 1.1.0.v20080415 org.eclipse.datatools.enablement.sybase.ase.models 1.0.1.v200805152355 com.nordea.cd.dev.plugin.builderruntime 1.0.1 com.instantiations.assist.eclipse.core 5.5.0 org.python.pydev.ast 1.0.5 org.eclipse.ecf.filetransfer 2.0.0.v20080611-1715 org.python.pydev.parser 0.9.5 org.python.pydev.core 1.2.2 org.eclipse.emf.transaction.ui 1.2.0.v200805130238 org.eclipse.gmf.runtime.gef.ui 1.1.0.v20080503-1740 org.eclipse.wst.xml.core 1.1.301.v200808072008 org.eclipse.uml2.diagram.clazz.search 0.7.0.v200806130939 org.sat4j.core 2.0.0.v20080602 org.eclipse.datatools.connectivity.ui 1.1.0.v200806040132 org.eclipse.birt.report.designer.ui.editors 2.3.0.v20080610a org.eclipse.equinox.p2.reconciler.dropins 1.0.0.v20080611 org.eclipse.wst.common.project.facet.core 1.3.1.v200807031821 org.python.pydev.jython 1.3.11 org.eclipse.datatools.enablement.postgresql 1.0.1.v200805152355 org.eclipse.ltk.ui.refactoring 3.4.0.v20080605-1800 org.eclipse.datatools.enablement.sybase.ase 1.0.1.v200806040735 org.python.pydev.ast 1.2.9 org.eclipse.datatools.connectivity.oda 3.1.2.v200805152355 org.eclipse.wst.common.emf 1.1.201.v200808071700 org.apache.batik.dom.svg 1.6.0.v200805290154 org.eclipse.birt.chart 2.3.0.v20080304 org.python.pydev.jython 1.2.9 org.python.pydev.ast 1.3.11 org.eclipse.datatools.enablement.mysql.dbdefinition 1.0.1.v200805170742 org.python.pydev.parser 1.3.19 org.python.pydev.core 1.0.6 org.eclipse.uml2.diagram 0.8.0.v200806112132 org.eclipse.jdt.junit4.runtime 1.0.200.v20080603-2000 org.python.pydev.ast 1.3.12 org.eclipse.swt 3.4.0.v3448f org.eclipse.emf.ecoretools.diagram.search 0.7.0.v200806130939 org.eclipse.pde.ui.templates 3.4.0.v20080514-1500 com.instantiations.packager.ui 2.5.1 org.eclipse.emf.cdo.server.db 1.0.0.v200806180411 org.eclipse.datatools.enablement.sybase.asa 1.0.1.v200805310538 org.eclipse.emf.compare 0.8.0.v200806180301 org.eclipse.datatools.enablement.oda.ws.ui 1.1.0.v200805261930 org.eclipse.jdt.launching 3.4.0.v20080529-1300 org.eclipse.mylyn.tasks.ui 3.0.0.v20080619-1900 org.apache.ws.jaxme 0.5.1.v20080530-1550 org.eclipse.mylyn.bugzilla.ui 3.0.0.v20080619-1900 org.apache.commons.el 1.0.0.v200806031608 org.python.pydev 1.2.3 org.w3c.dom.smil 1.0.0.v200806040011 org.eclipse.wst.validation.infopop 1.0.300.v200806041506 org.python.pydev 1.0.7 org.eclipse.net4j.source 1.0.0.v200806180305 org.eclipse.m2m.qvt.oml.ocl 1.0.0.v20080611-1330 org.eclipse.uml2.uml.edit 2.2.0.v200805131030 org.eclipse.emf.search.ui 0.7.0.v200806130939 org.python.pydev.core 1.3.16 org.eclipse.emf.validation.ui 1.2.0.v200805130238 org.eclipse.datatools.enablement.oda.xml 1.1.0.v200805270900 org.eclipse.ltk.core.refactoring 3.4.0.v20080603-2000 org.python.pydev.jython 1.3.2 com.windowtester.swt.codegen 3.5.0.200806270034 org.eclipse.datatools.sqltools.ddlgen.ui 1.0.0.v200805152355 org.apache.xerces 2.9.0.v200805270400 org.eclipse.birt.report.engine.dataextraction 2.3.0.v20080611 org.eclipse.equinox.jmx.vm 1.0.0.v20070515 org.eclipse.birt.report.data.oda.jdbc.ui 2.3.0.v20080606 org.eclipse.equinox.ds 1.0.0.v20080427-0830 org.eclipse.mylyn.bugzilla.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.http.jetty 2.0.0.v20080425 org.eclipse.mylyn.team.ui 3.0.2.v20080918-1100-e3x org.python.pydev.jython 1.2.4 org.eclipse.birt.chart.device.svg 2.3.0.v20080526 org.python.pydev.parser 1.0.5 org.eclipse.ui.presentations.r21 3.2.100.I20080512-2000 org.eclipse.mylyn 3.0.0.v20080619-1900 org.eclipse.m2m.qvt.oml.doc 1.0.0.v20080611-1330 org.eclipse.team.svn.nl1.sources 0.7.1.I20080612-1500 org.eclipse.mylyn.resources.ui 3.0.0.v20080619-1900 org.eclipse.datatools.enablement.ibm.db2.luw 1.0.0.v200805152355 org.python.pydev.core 1.3.1 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.1 org.eclipse.ecf.provider.filetransfer 2.0.0.v20080611-1715 org.eclipse.emf.cdo.tests.mango.edit 1.0.0.v200806180411 org.python.pydev.parser 1.2.9 org.eclipse.m2m.qvt.oml.emf.util 1.0.0.v20080611-1330 org.eclipse.team.cvs.ssh 3.2.100.I20080604 org.python.pydev.jython 1.3.19 org.python.pydev.jython 1.0.8 org.python.pydev.ast 1.2.1 org.eclipse.m2m.qvt.oml.project 1.0.0.v20080611-1330 com.instantiations.assist.eclipse.core.ui 5.5.1 org.eclipse.datatools.enablement.ibm.db2.zseries.dbdefinition 1.0.0.v200805152355 org.eclipse.datatools.enablement.ibm.db2.iseries 1.0.0.v200805152355 com.swtdesigner.fragment.jdt.core 6.7.1.200809050053 org.eclipse.equinox.device 1.0.1.v20080303 org.eclipse.equinox.http.jetty 1.1.0.v20080425 org.eclipse.emf.cdo.tests.model3 1.0.0.v200806180411 org.eclipse.emf.teneo.hibernate.mapper 1.0.0.v200806111928 org.eclipse.compare 3.4.0.I20080604 org.polarion.eclipse.team.svn.connector.javahl 2.0.1.I20080612-1500 org.eclipse.gmf.runtime.diagram.ui.geoshapes 1.1.0.v20080503-1740 org.eclipse.emf.mint.ui 0.7.0.v200806172223 org.eclipse.ui.win32 3.2.100.v20080408-0800 org.eclipse.jet.source 0.9.0.v20080516 org.python.pydev 1.3.17 com.windowtester.runtime.junit4 3.5.1.200809042232 org.eclipse.ecf.examples.remoteservices.server 1.0.100.v20080623-0046 org.eclipse.text 3.4.0.v20080605-1800 org.eclipse.uml2.diagram.common 0.8.0.v200806112132 org.eclipse.datatools.connectivity.sqm.core.ui 1.1.0.v200806070326 org.python.pydev.core 0.9.7.99 org.eclipse.net4j.jms 1.0.0.v200806180305 org.junit4 4.3.1 org.eclipse.epp.usagedata.recording 1.0.0.R200806162215 org.eclipse.buckminster.remote 1.0.0.r09326 org.eclipse.gmf.tooling 2.1.0.v20080425-1959 org.eclipse.emf.cdo.tests.model2 1.0.0.v200806180411 org.eclipse.emf.ecore.sdo.editor 2.4.0.v200806091234 com.instantiations.swt.graph 5.5.0 org.eclipse.uml2.search 0.7.0.v200806130939 org.python.pydev 1.3.5 org.python.pydev.ast 1.3.3 org.eclipse.update.configurator 3.2.200.v20080417 org.eclipse.datatools.enablement.msft.sqlserver 1.0.1.v200805152355 org.python.pydev.parser 1.3.11 org.eclipse.datatools.enablement.sap.maxdb.dbdefinition 1.0.0.v200805152355 com.windowtester.swing.recorder 3.5.0.200806270034 org.eclipse.gmf.runtime.common.ui.printing.win32 1.1.0.v20080612-1355 org.python.pydev.ast 1.3.20 org.eclipse.wst.common.snippets 1.1.200.v200805140415 org.eclipse.mylyn.commons.core 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.tasks.core 3.0.2.v20080918-1100-e3x org.eclipse.jdt.doc.user 3.4.0.v20080612-1340 org.eclipse.birt.chart.ui 2.3.0.v20080522 org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb 2.3.0.v20080606 org.eclipse.uml2.diagram.examples.clazz 0.8.0.v200806112132 org.eclipse.ecf.provider.msn.ui 1.3.0.v20080623-0046 org.python.pydev.parser 1.3.3 org.eclipse.ui.ide.application 1.0.0.I20080603-2000 org.python.pydev.ast 1.0.6 org.eclipse.equinox.jsp.jasper.registry 1.0.0.v20080427-0830 org.eclipse.equinox.p2.engine 1.0.0.v20080522-1735 com.nordea.cd.dev.plugin.builderruntime 1.0.2 com.instantiations.assist.eclipse.core 5.5.1 org.eclipse.m2m.qvt.oml 1.0.0.v20080611-1330 org.eclipse.mylyn.commons.ui 3.0.1.v20080721-2100-e3x org.eclipse.update.core.win32 3.2.100.v20080107 org.eclipse.datatools.sqltools.db.derby 1.0.0.v200805152355 com.instantiations.assist.eclipse.admin 5.5.0 org.eclipse.ecf.telephony.call 1.2.0.v20080623-0046 org.eclipse.mylyn.monitor.core 3.0.0.v20080619-1900 org.eclipse.epp.usagedata.ui 1.0.0.R200806162215 org.eclipse.ui.ide 3.4.0.I20080606-1300 org.eclipse.hyades.lta.sdb 4.5.0.v200806051823 org.eclipse.birt.report.model.adapter.oda 2.3.0.v20080523 org.eclipse.emf.compare.doc 0.8.0.v200806180301 org.eclipse.equinox.servletbridge 1.0.100.v20080427-0830 com.instantiations.common.help 5.3.2.200809042027 org.eclipse.jdt.core 3.4.0.v_874 org.eclipse.equinox.p2.director 1.0.0.v20080604 org.eclipse.gmf.runtime.emf.ui.properties 1.1.0.v20080425-1959 org.eclipse.emf.exporter 2.4.0.v200806091234 org.python.pydev.core 1.3.7 org.eclipse.uml2.diagram.def 0.8.0.v200806112132 org.python.pydev.parser 1.2.1 org.eclipse.wst.command.env.ui 1.1.0.v200805140415 org.eclipse.wst.common.modulecore 1.1.200.v200806091800 org.python.pydev 0.9.7 org.eclipse.gmf.graphdef.edit 2.0.100.v20080610-1132 org.eclipse.birt.report.designer.ui.cubebuilder 2.3.0.v20080606 org.eclipse.m2m.atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.actions 1.1.0.v20080603-1553 com.instantiations.common.core 5.3.2.200806270030 org.eclipse.datatools.enablement.ibm.informix 1.0.0.v200805152355 org.eclipse.net4j.tcp 1.0.0.v200806180305 org.eclipse.wst.common.environment 1.0.202.v200807161459 com.instantiations.common.core 5.3.2.200809042027 org.eclipse.birt.report.data.oda.xml 2.3.0.v20080606 org.eclipse.pde.api.tools.ui 1.0.0.v20080603 org.eclipse.debug.ui 3.4.0.v20080529-1300 org.python.pydev 1.2.2 org.eclipse.team.svn.ui.nl1 0.7.1.I20080612-1500 org.apache.batik.transcoder 1.6.0.v200805290154 org.eclipse.emf.ecore.sdo.edit 2.4.0.v200806091234 org.python.pydev.parser 1.3.16 org.eclipse.wst.command.env.ui 1.1.1.v200807162242 org.eclipse.uml2.diagram.codegen.edit 0.8.0.v200806112132 org.eclipse.datatools.connectivity.db.generic.ui 1.0.1.v200805152355 org.eclipse.mylyn.resources.ui 3.0.2.v20080918-1100-e3x org.python.pydev.ast 1.3.8 org.python.pydev 1.3.0 org.eclipse.net4j.db 1.0.0.v200806180305 org.python.pydev.ast 1.3.15 org.eclipse.uml2.codegen.ecore 1.4.0.v200805201126 org.eclipse.gmf.sdk 1.0.0.v20080425-1959 org.eclipse.equinox.p2.core 1.0.0.v20080530-1237 org.python.pydev.jython 1.3.10 org.eclipse.emf.cdo 1.0.0.v200806180411 org.eclipse.emf.search.genmodel 0.7.0.v200806130939 org.eclipse.ui.navigator 3.3.100.I20080606-1300 org.eclipse.team.svn.mylyn 0.7.1.I20080612-1500 org.python.pydev.core 1.2.5 org.eclipse.tptp.platform.lta.la.core 4.5.0.v200805132041 org.eclipse.wst.sse.core 1.1.301.v200808072008 org.eclipse.tptp.platform.lta.log.views 4.5.0.v200806051823 org.eclipse.mylyn.java.ui 3.0.2.v20080918-1100-e3x org.eclipse.emf.search.codegen 0.7.0.v200806130939 com.instantiations.common.ui 5.3.2.200806270030 org.eclipse.ecf 2.0.0.v20080611-1715 org.eclipse.equinox.p2.ui.sdk 1.0.0.v20080605-1731 org.apache.commons.discovery 0.2.0.v200806030120 org.eclipse.datatools.help 1.5.0.v200805152355 org.python.pydev.parser 0.9.7.99 org.w3c.css.sac 1.3.0.v200805290154 org.eclipse.jet.examples 0.9.0.v20080211 org.eclipse.mylyn.bugzilla.ide 3.0.2.v20080918-1100-e3x org.eclipse.pde.junit.runtime 3.4.0.v20080529-1800 org.eclipse.emf.commonj.sdo 2.4.0.v200806091234 org.python.pydev.jython 1.2.1 com.instantiations.tools 5.3.2.200806270030 com.windowtester.runtime 3.5.1.200809042232 org.eclipse.wst.validation 1.2.0.v200806051402 org.eclipse.ecf.docshare 2.0.0.v20080623-0046 com.instantiations.eclipse.model.jsp 5.5.1 org.eclipse.emf.teneo.hibernate.eclipse 1.0.0.v200806111928 com.jcraft.jsch 0.1.37.v200803061811 org.python.pydev.parser 1.0.6 org.eclipse.emf.converter 2.4.0.v200806091234 org.eclipse.equinox.common 3.4.0.v20080421-2006 org.eclipse.buckminster.ui 1.0.0.r09319 org.eclipse.datatools.sqltools.tablewizard 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.0 org.eclipse.uml2.source 2.2.0.v200805201126 org.eclipse.team.cvs.ui 3.3.100.I20080604 org.python.pydev.jython 1.3.3 org.eclipse.emf.search.ocl 0.7.0.v200806130939 org.eclipse.datatools.enablement.sybase.asa.models 1.0.0.v200805152355 org.eclipse.sdk 3.4.0.v200806172000 org.eclipse.xsd.ecore.exporter 2.4.0.v200806091234 org.apache.commons.codec 1.3.0.v20080530-1600 org.eclipse.equinox.p2.exemplarysetup 1.0.0.v20080427-2136 org.eclipse.equinox.io 1.0.0.v20080218 org.eclipse.wst.common.project.facet.core 1.3.0.v200805140020 org.eclipse.wst.common.ui 1.1.301.v200805140415 org.eclipse.emf.databinding.edit 1.0.0.v200806091234 org.mortbay.jetty.server 6.1.7.v200806031612 org.eclipse.wst.dtd.core 1.1.200.v200805140200 org.python.pydev 1.0.6 org.eclipse.uml2.diagram.activity 0.8.0.v200806112132 org.eclipse.emf.importer.rose 2.4.0.v200806091234 org.eclipse.core.net.win32.x86 1.0.0.I20080521 javax.activation 1.1.0.v200804101140 org.python.pydev.core 1.3.15 org.python.pydev.parser 1.3.8 com.instantiations.assist.eclipse.coverage.ui 5.5.1.200809042337 org.eclipse.emf.ecoretools.filters 0.8.0.v200806130600 org.python.pydev.ast 1.3.0 org.eclipse.birt.report.data.oda.xml.ui 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase 1.0.1.v200805310538 org.python.pydev 1.3.8 org.eclipse.equinox.ip 1.0.0.v20080218 org.eclipse.datatools.connectivity.console.profile 1.0.0.v200805231345 org.eclipse.ecf.sharedobject 1.3.0.v20080623-0046 org.eclipse.debug.core 3.4.0.v20080612 org.eclipse.wst.xmleditor.doc.user 1.0.400.v200805211530 org.eclipse.datatools.enablement.sap.maxdb 1.0.0.v200805152355 org.python.pydev.ast 0.9.7 com.windowtester.swt.runtime.legacy 3.5.0.200806270034 org.eclipse.equinox.simpleconfigurator.manipulator 1.0.0.v20080427-2136 org.eclipse.equinox.p2.touchpoint.eclipse 1.0.0.v20080529-1225 com.instantiations.swt.graph 5.5.1 org.eclipse.gmf.doc 1.2.0.v20080516-1143 org.python.pydev 1.3.20 com.windowtester.swing.runtime 3.5.1.200809042232 org.eclipse.datatools.enablement.ibm.db2.iseries.ui 1.0.0.v200805160737 org.eclipse.datatools.connectivity.oda.profile 3.0.6.v200805152355 org.eclipse.mylyn.pde.ui 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.commons.ui 3.0.0.v20080619-1900 org.eclipse.emf.workspace.source 1.2.0.v200805130238-23-8s733I3C59379I org.eclipse.core.boot 3.1.100.v20080218 org.python.pydev.ast 1.2.2 org.eclipse.birt.doc 2.3.0.v20080617a com.instantiations.assist.eclipse.core.ui 5.5.0 org.python.pydev.jython 1.3.18 org.python.pydev.jython 1.0.5 org.eclipse.emf.validation 1.2.0.v200805170232 org.eclipse.equinox.jmx.client.rmi 1.0.0 org.eclipse.emf.mapping.ecore 2.4.0.v200806091234 com.instantiations.assist.eclipse.coverage 5.5.1.200809042337 com.instantiations.helpeditor.ui 1.3.4.200806270212 org.eclipse.emf.edit.ui 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editor.script 2.3.0.v200806102 org.eclipse.gmf.ecore.editor 2.0.100.v20080610-1132 com.windowtester.swt.recorder 3.5.1.200809042232 org.eclipse.uml2.diagram.source 0.8.0.v200806112132 org.eclipse.equinox.util 1.0.0.v20080414 org.eclipse.ecf.examples.source 2.0.0.v20080623-0046 org.eclipse.emf.mapping.xsd2ecore.editor 2.4.0.v200806091234 org.eclipse.pde.p2.ui 1.0.0.v20080604-2000 org.eclipse.birt.resources 2.3.0.v20080313 org.eclipse.emf.query.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.emf.ecore.change.edit 2.4.0.v200806091234 org.eclipse.datatools.sqltools.editor.core 1.0.0.v200805152355 org.polarion.eclipse.team.svn.connector.svnkit 2.0.1.I20080612-1500 org.eclipse.buckminster.download 1.1.0.r09319 com.swtdesigner 6.7.0.200806270151 org.python.pydev.parser 1.3.2 org.eclipse.jdt.compiler.apt 1.0.100.v20080513-1235 org.python.pydev.ast 1.0.7 com.windowtester.swt.gef.codegen 3.5.0.200806270034 org.eclipse.emf.ecore 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editors.schematic 2.3.0.v200806102 org.eclipse.pde.build 3.4.0.v20080604 com.instantiations.assist.eclipse 5.5.1 org.eclipse.birt.report.designer.ui.editor.xml.wtp 2.3.0.v200806102 org.eclipse.emf.cdo.tests.model1.edit 1.0.0.v200806180411 org.python.pydev 0.9.8 javax.xml 1.3.4.v200806030440 org.python.pydev 0.4.2 org.polarion.eclipse.team.svn.connector.javahl.win32 2.0.1.I20080612-1500 org.apache.ws.commons.util 1.0.0.v20080530-1550 org.apache.batik.bridge 1.6.0.v200805290154 org.eclipse.emf.search 0.7.0.v200806130939 org.eclipse.datatools.sqltools.parsers.sql.xml.query 1.0.0.v200805152355 org.eclipse.team.core 3.4.0.I20080605 org.eclipse.tptp.platform.execution 4.4.100.v200806050100 org.eclipse.uml2.diagram.parser 0.8.0.v200806112132 org.eclipse.birt.report.item.crosstab.core 2.3.0.v20080606 org.python.pydev.core 0.9.8 org.eclipse.uml2.search.common.ui 0.7.0.v200806130939 org.eclipse.mylyn.ide.ui 3.0.0.v20080619-1900 org.eclipse.xsd.cheatsheets 2.3.0.v200806091234 org.eclipse.wst.xsd.core 1.1.300.v200805282012 org.eclipse.net4j.http 1.0.0.v200806180305 org.python.pydev.core 1.3.6 org.eclipse.ui.externaltools 3.2.0.v20080514-1542 org.eclipse.birt.report.engine.emitter.prototype.excel 2.3.0.v20080606 org.python.pydev.parser 1.3.17 com.instantiations.eclipse.util 5.3.2.200806270030 org.eclipse.ui.editors 3.4.0.v20080603-2000 org.eclipse.buckminster.slf4j 1.0.0 org.python.pydev.ast 1.3.9 org.eclipse.gef.source 3.4.0.v20080115-677-8082A5696H274A org.python.pydev.core 1.0.8 org.python.pydev.ast 1.3.14 org.eclipse.team.ui 3.4.0.I20080604 org.eclipse.emf.query.ocl.source 1.2.0.v200805130238-11-7w311916241349 com.windowtester.swt.runtime 3.5.0.200806270034 org.eclipse.osgi.jmx 1.0.0.v20080610-1530 org.eclipse.net4j.examples.source 1.0.0.v200806180305 org.eclipse.tptp.monitoring.lta.symptom.doc.user 4.5.0.v200805132041 org.eclipse.equinox.p2.updatechecker 1.0.0.v20080427-2136 org.eclipse.ui.views 3.3.0.I20080509-2000 org.eclipse.emf.search.ocl.ui 0.7.0.v200806130939 javax.mail 1.4.0.v200804091730 ch.ethz.iks.slp 1.0.0.RC4_v200806091030 org.eclipse.core.resources.jmx 1.0.0.v20070510 javax.wsdl 1.4.0.v200806030407 org.eclipse.wst.xml.ui 1.0.401.v200807240448 org.python.pydev 1.2.1 org.eclipse.birt.chart.ui.extension 2.3.0.v20080610 org.python.pydev.core 0.9.8.3 org.python.pydev.parser 0.9.7 org.eclipse.jem.util 2.0.100.v200805140020 org.eclipse.tptp.monitoring.lta.la.core 4.5.0.v200805270100 org.python.pydev.core 0.9.8.2 org.eclipse.jdt.junit.runtime 3.3.0.v20080603-2000 org.python.pydev.core 1.2.4 org.python.pydev.core 0.9.8.1 org.eclipse.ecf.discovery 2.0.0.v20080623-0046 org.apache.xml.serializer 2.7.1.v200806030322 org.python.pydev.core 0.9.8.7 org.python.pydev.core 0.9.8.6 org.eclipse.gmf.runtime.draw2d.ui.render.awt 1.1.0.v20080603-1553 com.windowtester.eclipse.help 3.5.1.200809042232 org.python.pydev.core 0.9.8.5 org.python.pydev.core 0.9.8.4 org.python.pydev 0.9.8.7 org.eclipse.birt.report.engine.emitter.ppt 2.3.0.v20080606 org.apache.commons.httpclient 3.1.0.v20080605-1935 com.windowtester.runtime.legacy 3.5.0.200806270034 org.eclipse.datatools.enablement.oda.xml.ui 1.1.0.v200805270900 org.python.pydev 0.9.8.3 org.eclipse.mylyn.compatibility 3.0.2.v20080918-1100-e3x org.python.pydev 0.9.8.4 org.python.pydev 0.9.8.5 org.eclipse.wst.common.project.facet.ui 1.3.0.v200805281731 org.eclipse.gmf.tooldef 2.0.0.v20080417-1610 org.python.pydev 0.9.8.6 org.eclipse.core.commands 3.4.0.I20080509-2000 org.python.pydev.jython 1.3.9 org.eclipse.datatools.modelbase.sql.edit 1.0.0.v200805152355 org.python.pydev 0.9.8.2 org.python.pydev 0.9.8.1 org.eclipse.emf.cdo.server.hibernate.libraries 1.0.0.v200806180411 org.eclipse.equinox.p2.ui.admin 1.0.0.v20080522-1735 org.eclipse.wst.common.core 1.1.201.v200806010600 org.eclipse.emf.compare.diff.edit 0.8.0.v200806180301 com.swtdesigner.layout.group.designer 6.7.0.200806270151 org.eclipse.ui.views.properties.tabbed 3.4.0.I20080527-2000 org.python.pydev.jython 1.2.2 org.eclipse.wst.common.emf 1.1.200.v200805140020 com.instantiations.packager.refactoring 2.5.1 com.instantiations.assist.eclipse.fragment.jdt 5.5.1 org.eclipse.datatools.connectivity.dbdefinition.genericJDBC 1.0.0.v200805152355 org.python.pydev.parser 1.0.7 org.eclipse.datatools.sqltools.data.ui 1.1.0.v200805310400 org.eclipse.buckminster.core 1.1.0.r09336 org.eclipse.mylyn.tasks.core 3.0.1.v20080721-2100-e3x org.eclipse.birt.report.designer.ui.samplesview 2.3.0.v20080606 org.eclipse.equinox.launcher 1.0.100.v20080509-1800 org.eclipse.birt.report.item.crosstab.ui 2.3.0.v20080606 org.eclipse.m2m.atl.adt.perspective 2.0.0.v200806101117 javax.servlet.jsp 2.0.0.v200806031607 com.swtdesigner 6.7.1.200809050053 org.eclipse.jet.ui 0.9.0.v20080527 org.eclipse.m2m.qvt.oml.common.ui 1.0.0.v20080611-1330 com.swtdesigner.layout.group 6.7.1.200809050053 org.eclipse.gmf.runtime.common.ui.services.action 1.1.0.v20080507-2230 org.eclipse.emf.search.ecore.ui 0.7.0.v200806130939 org.python.pydev 1.0.5 org.eclipse.emf.workspace.ui 1.2.0.v200805130238 com.instantiations.helpeditor.core.toc 1.3.4.200809042225 org.slf4j.extendable 1.4.3 org.python.pydev.core 1.3.14 org.eclipse.hyades.logging.core 4.3.200.v200804110100 org.eclipse.datatools.enablement.postgresql.ui 1.0.0.v200806060334 org.eclipse.gmf.graphdef 2.0.100.v20080528-1052 org.eclipse.mylyn.help.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.protocol.bittorrent 0.3.0 org.eclipse.birt.report.engine 2.3.0.v20080616 org.eclipse.datatools.connectivity.ui.dse 1.1.0.v200805152355 org.eclipse.mylyn.bugzilla.core 3.0.0.v20080619-1900 org.python.pydev.jython 1.3.4 org.python.pydev 0.9.0 org.eclipse.equinox.preferences.jmx 1.0.0.v20070510 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.1 org.eclipse.datatools.enablement.postgresql.dbdefinition 1.0.0.v200805152355 org.eclipse.m2m.qvt.oml.common.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.eclipse.tptp.monitoring.lta.logui 4.5.0.v200805141427 org.eclipse.birt.report.debug.ui 2.3.0.v200806102 org.eclipse.gmf.runtime.emf.ui 1.1.0.v20080516-1748 org.eclipse.ui.cheatsheets 3.3.100.v20080508 org.python.pydev 1.2.9 org.eclipse.birt.report.engine.emitter.wpml 2.3.0.v20080606 org.eclipse.help.appserver 3.1.300.v20080507 org.python.pydev.parser 1.3.9 com.xored.composer.ui 1.3.4.200806270212 org.eclipse.datatools.sqltools.tabledataeditor 1.0.0.v200805240400 org.eclipse.gmf.runtime.emf.type.core 1.1.0.v20080425-1959 org.python.pydev 1.3.7 com.ibm.icu.base 3.8.1.v20080530 org.python.pydev.ast 1.3.1 org.apache.batik.pdf 1.6.0.v200806031500 org.eclipse.emf.mapping.ui 2.4.0.v200806091234 org.eclipse.net4j.db.derby 1.0.0.v200806180305 org.eclipse.net4j.http.server 1.0.0.v200806180305 org.python.pydev.jython 1.3.17 org.python.pydev.jython 1.0.6 org.python.pydev.ast 1.2.3 org.eclipse.team.svn.sources 0.7.1.I20080612-1500 org.eclipse.uml2.diagram.usecase 0.8.0.v200806112132 org.eclipse.wst.sse.core 1.1.300.v200805221633 org.eclipse.birt.report.designer.ui 2.3.0.v20080606 org.eclipse.jdt.apt.ui 3.3.100.v20080407-1345 com.instantiations.eclipse.debug 5.3.2.200809042027 org.eclipse.gmf.codegen.ui 1.1.0.v20080512-1200 com.instantiations.designer.databinding 6.7.1.200809050053 org.python.pydev.core 1.0.1 com.windowtester.swt.runtime.gef 3.5.0.200806270034 com.instantiations.common.ui 5.3.2.200809042027 org.python.pydev 1.3.19 org.eclipse.ui.forms 3.3.100.v20080611 org.eclipse.birt.data 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase.ase.ui 1.0.1.v200805310538 org.polarion.eclipse.team.svn.connector 2.0.1.I20080612-1500 org.eclipse.emf.common.ui 2.4.0.v200806091234 org.eclipse.datatools.enablement.ibm.informix.dbdefinition 1.0.0.v200805152355 org.eclipse.wst.xsdeditor.doc.user 1.0.400.v200805150028 org.eclipse.emf.mint.doc 0.7.0.v200806172223 org.eclipse.buckminster.generic 1.0.0.r09319 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.1 org.eclipse.emf.validation.examples 1.2.0.v200805280204 org.eclipse.team.svn.core 0.7.1.I20080612-1500 org.python.pydev.ast 1.2.4 org.eclipse.emf.cdo.server.hibernate 1.0.0.v200806180411 org.python.pydev.jython 1.3.8 org.eclipse.gmf.xpand 1.1.0.v20080528-1052 org.eclipse.datatools.sqltools.data.core 1.0.0.v200805152355 org.eclipse.emf.ecoretools 0.8.0.v200806130600 org.python.pydev.core 1.3.18 org.eclipse.gmf.runtime.common.core 1.1.0.v20080425-1959 org.eclipse.emf 2.4.0.v200806091234 org.eclipse.emf.ecoretools.properties 0.8.0.v200806130600 org.python.pydev.core 1.2.7 org.python.pydev.parser 0.9.8 org.eclipse.datatools.enablement.ibm.db2.luw.ui 1.0.0.v200805160737 org.eclipse.mylyn.team.ui 3.0.0.v20080619-1900 org.eclipse.help.base 3.3.100.v20080617 org.eclipse.m2m.atl.doc 2.0.0.v200806101117 org.eclipse.net4j.examples 1.0.0.v200806180305 org.eclipse.birt.data.aggregation 2.3.0.v20080606 org.eclipse.gmf.examples 1.0.100.v20080425-1959 org.eclipse.emf.search.common 0.7.0.v200806130939 org.python.pydev.ast 1.3.17 org.eclipse.ecf.provider.filetransfer.ssl 1.0.0.v20080611-1715 org.python.pydev.core 1.0.3 org.eclipse.team.svn.core.nl1 0.7.1.I20080612-1500 org.eclipse.emf.cdo.server.hibernate.teneo 1.0.0.v200806180411 org.eclipse.wst.validation.ui 1.2.1.v200807292117 org.python.pydev.parser 1.0.3 org.python.pydev.ast 1.3.6 org.eclipse.search 3.4.0.v20080603-2000 org.eclipse.jet 0.9.0.v20080527 org.python.pydev 1.3.2 org.python.pydev.jython 1.2.6 org.python.pydev.parser 1.3.14 org.eclipse.datatools.oda.cshelp 1.0.0.v200805152355 org.eclipse.jdt.junit 3.4.0.v20080603-2000 org.eclipse.datatools.sqltools.debugger.core 1.0.0.v200805152355 org.mortbay.jetty 5.1.14.v200806031611 org.eclipse.equinox.p2.garbagecollector 1.0.0.v20080506-1939 org.eclipse.m2m.atl.adt.debug 2.0.0.v200806101117 org.eclipse.equinox.jmx.client 1.0.0.v20070515 org.python.pydev.core 1.3.5 org.eclipse.mylyn.bugzilla.core 3.0.1.v20080721-2100-e3x org.python.pydev.parser 0.9.8.3 org.python.pydev.parser 0.9.8.2 org.python.pydev.parser 0.9.8.1 org.eclipse.osgi.services 3.1.200.v20071203 org.python.pydev 1.0.4 org.eclipse.hyades.lta.logging.adapter 4.5.0.v200806121215 org.eclipse.datatools.sqltools.sqleditor 1.0.0.v200805152355 org.python.pydev.parser 0.9.8.7 org.python.pydev.parser 0.9.8.6 org.eclipse.gmf.runtime.emf.core 1.1.0.v20080425-1959 org.python.pydev.parser 0.9.8.5 org.eclipse.core.contenttype 3.3.0.v20080604-1400 org.eclipse.ecf.datashare 1.3.0.v20080623-0046 org.python.pydev.parser 0.9.8.4 org.eclipse.tptp.platform.common.ui 4.4.100.v200806110100 org.junit 3.8.2.v20080602-1318 com.instantiations.assist.eclipse.coverage 5.5.0.200806270255 javax.activation 1.1.0.v200806101325 com.instantiations.assist.eclipse.scheduler 5.5.1 javax.management 1.2.0.v200803061811 org.eclipse.emf.edit 2.4.0.v200806091234 org.eclipse.ecf.provider.discovery 2.0.0.v20080623-0046 org.eclipse.birt.chart.device.pdf 2.3.0.v20080417 org.eclipse.equinox.wireadmin 1.0.0.v20080407 org.python.pydev.ast 1.0.8 org.eclipse.net4j.buddies.server 1.0.0.v200806180305 org.eclipse.wst.internet.cache 1.0.301.v200805140020 com.windowtester.runtime 3.5.0.200806270034 org.mx4j.jmx 3.0.3.v200802291451 org.eclipse.pde.ui 3.4.0.v20080530 org.eclipse.ocl 1.2.0.v200806091438 org.eclipse.birt.cshelp 2.3.0.v20080617 org.eclipse.emf.query.doc 1.2.0.v200805130238 org.eclipse.pde.runtime 3.4.0.v20080530-1200 org.apache.axis 1.4.0.v200807230600 org.apache.log4j 1.2.13.v200806030600 org.eclipse.ui.intro 3.2.200.v20080610 com.instantiations.assist.eclipse.pattern 5.5.1 com.xored.swt.composer 1.3.4.200806270212 org.apache.batik.ext.awt 1.6.0.v200805290154 org.eclipse.emf.cdo.ui 1.0.0.v200806180411 org.eclipse.jface 3.4.0.I20080606-1300 com.windowtester.swt.runtime.gef 3.5.1.200809042232 org.eclipse.gmf.runtime.emf.type.ui 1.1.0.v20080425-1959 org.eclipse.uml2.uml 2.2.0.v200805141133 org.objectweb.asm 3.0.0.v200803061811 org.python.pydev.core 1.1.0 org.eclipse.ecf.discovery.ui 2.0.0.v20080623-0046 org.python.pydev 1.3.14 org.eclipse.gmf.runtime.diagram.ui.printing 1.1.0.v20080501-1739 org.eclipse.mylyn.ide.ant 3.0.2.v20080918-1100-e3x org.eclipse.xsd.example.installer 1.0.0.v200806091234 org.eclipse.uml2.diagram.examples.profile 0.8.0.v200806112132 org.eclipse.ui.intro.universal 3.2.200.v20080508 org.python.pydev.ast 0.9.7.99 org.eclipse.emf.codegen 2.4.0.v200806091234 org.eclipse.equinox.p2.metadata 1.0.0.v20080514-1900 org.eclipse.ecf.example.collab 1.3.0.v20080623-0046 org.python.pydev.parser 1.2.4 org.eclipse.birt.report.engine.emitter.html 2.3.0.v20080606 org.python.pydev.jython 1.3.16 org.eclipse.osgi 3.4.0.v20080605-1900 org.eclipse.emf.databinding 1.0.0.v200806091234 org.eclipse.help 3.3.100.v20080610 org.eclipse.net4j.db.hsqldb 1.0.0.v200806180305 org.eclipse.gmf.runtime.diagram.ui.dnd 1.1.0.v20080425-1959 org.eclipse.birt.report.model 2.3.0.v20080605 org.eclipse.datatools.enablement.finfo 1.5.1.v200805152355 org.eclipse.jsch.ui 1.1.100.I20080415 org.python.pydev 1.3.10 org.python.pydev.parser 1.3.6 org.eclipse.emf.mapping.ecore.editor 2.4.0.v200806091234 org.eclipse.datatools.sqltools.common.ui 1.0.0.v200805152355 org.eclipse.birt.report.engine.emitter.pdf 2.3.0.v20080606 org.python.pydev 1.2.8 com.instantiations.packager.help 2.5.1 org.eclipse.equinox.p2.directorywatcher 1.0.0.v20080505-1850 org.eclipse.draw2d 3.4.0.v20080529 org.eclipse.draw2d.source 3.4.0.v20080115-33-7w3119163_ org.eclipse.ecf.ui 2.0.0.v20080623-0046 org.eclipse.birt.report.data.oda.jdbc.dbprofile 2.3.0.v20080606 org.eclipse.equinox.security.win32.x86 1.0.0.v20080529-1600 org.eclipse.wst.xml.ui 1.0.400.v200806051910 org.eclipse.jdt.ui 3.4.0.v20080603-2000 org.eclipse.equinox.p2.ui 1.0.0.v20080530-1237 org.eclipse.hyades.lta.logging.adapter.ui 4.5.0.v200805132041 org.eclipse.mylyn.monitor.ui 3.0.0.v20080619-1900 org.python.pydev 0.9.1 org.eclipse.emf.ecore.sdo.doc 2.4.0.v200806091234 com.instantiations.eclipse.ast.editor 5.5.1 org.eclipse.ant.ui 3.3.0.v20080529 org.python.pydev.core 1.3.13 org.eclipse.gef.doc.isv 3.4.0.v20080606 org.apache.xml.resolver 1.2.0.v200806030312 org.eclipse.datatools.enablement.ibm.db2.iseries.dbdefinition 1.0.0.v200806100223 org.eclipse.birt 2.3.0.v20080304 org.eclipse.equinox.security 1.0.0.v20080512-1800 com.instantiations.tools 5.3.2.200809042027 org.eclipse.jdt.core.manipulation 1.2.0.v20080603-2000 org.eclipse.gmf.runtime.diagram.ui.printing.render 1.1.0.v20080425-1959 org.eclipse.net4j.buddies.ui 1.0.0.v200806180305 org.eclipse.emf.codegen.ui 2.4.0.v200806091234 org.eclipse.team.svn 0.7.1.I20080612-1500 org.eclipse.wst.command.env.infopop 1.0.100.v200805301544 org.eclipse.datatools.enablement.hsqldb.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.runtime.common.ui.services.properties 1.1.0.v20080425-1959 org.eclipse.emf.cheatsheets 2.4.0.v200806091234 org.eclipse.ecf.presence.collab.ui 1.2.0.v20080623-0046 org.eclipse.update.core 3.2.200.v20080515 org.eclipse.wst.command.env.core 1.0.204.v200805140020 org.apache.batik.swing 1.6.0.v200805290154 org.eclipse.birt.report.designer.samplereports 2.3.0.v20080606 org.python.pydev.parser 1.0.8 org.eclipse.xsd 2.4.0.v200806091234 com.instantiations.assist.eclipse.fragment.jdt 5.5.0 org.eclipse.emf.transaction 1.2.0.v200805130238 org.eclipse.mylyn.team.cvs 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.ui 1.0.0.v20080611-1330 org.eclipse.emf.validation.source 1.2.0.v200805130238-35-9oA55S5J8H5ADM org.eclipse.datatools.enablement.hsqldb 1.0.0.v200805152355 org.eclipse.wst.common.uriresolver 1.1.301.v200805140415 org.eclipse.equinox.jsp.jasper 1.0.100.v20080427-0830 org.eclipse.osgi.util 3.1.300.v20080303 org.eclipse.datatools.connectivity.oda.consumer 3.1.2.v200805230718 org.eclipse.emf.compare.source 0.8.0.v200806180301 org.python.pydev.core 1.3.19 org.eclipse.emf.query.examples 1.2.0.v200805130238 org.eclipse.buckminster.runtime 1.1.0.r09338 org.eclipse.datatools.enablement.sybase.asa.dbdefinition 1.0.0.v200805240040 org.eclipse.datatools.sqltools.sql 1.0.0.v200805152355 org.apache.batik.svggen 1.6.0.v200805290154 org.eclipse.buckminster.cvs 1.0.0.r09319 org.python.pydev.core 1.2.6 org.eclipse.equinox.simpleconfigurator 1.0.0.v20080604 org.eclipse.help.ui 3.3.100.v20080521 org.apache.batik.dom 1.6.0.v200805290154 org.python.pydev.parser 1.1.0 org.eclipse.ecf.server.generic 1.2.0.v20080623-0046 com.windowtester.swt.runtime.win32 3.5.0.200806270034 org.eclipse.emf.cdo.examples 1.0.0.v200806180411 org.eclipse.ecf.provider.remoteservice 1.3.0.v20080623-0046 org.eclipse.gmf.runtime.notation.edit 1.1.0.v20080507-1326 org.eclipse.core.filesystem 1.2.0.v20080604-1400 org.eclipse.m2m.qvt.oml.runtime.ui 1.0.0.v20080611-1330 org.eclipse.emf.cdo.server.hibernate.source 1.0.0.v200806180411 org.python.pydev.jython 1.3.7 org.eclipse.gmf.codegen.edit 2.1.0.v20080610-1132 org.eclipse.buckminster.pde 1.1.0.r09351 org.python.pydev.ast 1.2.5 org.python.pydev.core 1.0.2 org.python.pydev.ast 1.3.16 org.apache.batik.parser 1.6.0.v200805290154 org.python.pydev.parser 1.0.2 org.eclipse.wst.common.infopop 1.0.100.v200805301550 org.eclipse.ecf.remoteservice 2.0.0.v20080623-0046 org.python.pydev 1.3.1 org.python.pydev.jython 1.2.5 org.eclipse.emf.mapping 2.4.0.v200806091234 org.eclipse.emf.cdo.server.hibernate.id 1.0.0.v200806180411 com.windowtester.runtime.legacy 3.5.1.200809042232 org.python.pydev.ast 1.3.7 org.eclipse.datatools.enablement.oracle 1.0.0.v200805152355 org.python.pydev.parser 1.3.15 org.eclipse.emf.importer 2.4.0.v200806091234 org.eclipse.birt.example 2.3.0.v20080304 org.eclipse.birt.report.designer.ui.lib 2.3.0.v20080606 org.eclipse.emf.cdo.server.source 1.0.0.v200806180411 org.eclipse.gmf.runtime.common.ui.services 1.1.0.v20080612-1229 org.eclipse.datatools.sqltools.db.generic 1.0.0.v200805152355 org.eclipse.net4j 1.0.0.v200806180305 org.eclipse.jdt 3.4.0.v20080603-2000 org.eclipse.emf.cdo.source 1.0.0.v200806180411 org.eclipse.datatools.connectivity 1.1.0.v200805160228 com.instantiations.assist.eclipse.scheduler 5.5.0 org.eclipse.emf.ecore.sdo.source 2.4.0.v200806091234 org.eclipse.wst.sse.doc.user 1.1.0.v200805211530 org.python.pydev 0.9.7.99 org.eclipse.emf.transaction.source 1.2.0.v200805130238-23-8s733I3C59379I org.w3c.dom.svg 1.1.0.v200806040011 org.python.pydev.core 1.3.4 javax.xml.rpc 1.1.0.v200806030420 org.eclipse.ocl.uml.source 1.2.0.v200805130238-11-7w311916241349 com.instantiations.eclipse.ui 5.3.2.200806270030 org.eclipse.jface.text 3.4.0.v20080603-2000 org.apache.batik.xml 1.6.0.v200805290154 org.python.pydev 1.0.3 org.eclipse.gmf.bridge.ui.dashboard 2.0.0.v20080417-1610 org.apache.lucene 1.9.1.v20080530-1600 org.eclipse.emf.query.ocl 1.2.0.v200805130238 org.eclipse.uml2.uml.resources 2.2.0.v200805131030 org.eclipse.ecf.provider.r_osgi 2.0.0.v20080623-0046 org.eclipse.emf.importer.java 2.4.0.v200806091234 org.python.pydev.debug 1.3.20 org.eclipse.emf.ecore.xmi 2.4.0.v200806091234 org.python.pydev.mylyn 0.3.0 com.instantiations.assist.eclipse.pattern 5.5.0 org.eclipse.emf.source 2.4.0.v200806091234 org.eclipse.ui.browser 3.2.200.v20080507 org.eclipse.tptp.lta.sdb.epi 4.5.0.v200805132041 org.eclipse.net4j.doc 1.0.0.v200806180305 org.eclipse.gmf.bridge 1.1.0.v20080528-1052 com.instantiations.assist.eclipse.admin 5.5.1 org.eclipse.ecf.presence 1.3.0.v20080623-0046 org.eclipse.jet.editor 0.9.0.v20080226 org.eclipse.emf.mint 0.7.0.v200806172223 org.eclipse.ecf.provider 1.3.0.v20080623-0046 com.instantiations.assist.eclipse.core.ant 5.5.0 org.apache.axis 1.4.0.v200806030120 org.eclipse.equinox.p2.metadata.repository 1.0.0.v20080604 com.ibm.icu 3.8.1.v20080530 org.eclipse.gmf.runtime.diagram.ui.properties 1.1.0.v20080603-1553 org.eclipse.team.svn.mylyn.source 0.7.1.I20080612-1500 org.eclipse.ecf.provider.datashare 1.3.0.v20080623-0046 org.eclipse.birt.report.data.oda.sampledb 2.3.0.v20080606 org.eclipse.m2m.atl.drivers.emf4atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.providers.ide 1.1.0.v20080425-1959 org.python.pydev 0.8.0 org.eclipse.datatools.connectivity.sqm.server.ui 1.1.0.v200806050117 com.nordea.cd.dev.plugin.stubbuilder 1.0.2 org.eclipse.emf.mapping.xsd2ecore 2.4.0.v200806091234 org.python.pydev.parser 1.2.5 org.eclipse.xsd.mapping.editor 2.4.0.v200806091234 org.python.pydev.jython 1.3.15 org.eclipse.gmf.xpand.editor 1.0.0.v20080425-1959 org.eclipse.tptp.platform.lta.common 4.5.0.v200806050100 org.eclipse.buckminster.pde.ui 1.0.0.r09319 org.eclipse.emf.validation.ocl 1.2.0.v200805130238 org.eclipse.ui.console 3.3.0.v20080529-1300 org.eclipse.net4j.ui 1.0.0.v200806180305 org.eclipse.emf.workspace 1.2.0.v200805130238 org.python.pydev.ast 0.9.8.6 org.python.pydev.ast 0.9.8.5 org.eclipse.emf.teneo.annotations 1.0.0.v200806111928 org.python.pydev.ast 0.9.8.4 org.eclipse.ui.net 1.0.0.I20080605 org.python.pydev.ast 0.9.8.3 org.eclipse.net4j.db.source 1.0.0.v200806180305 org.eclipse.zest.core 1.0.0.v20080115 org.python.pydev.ast 0.9.8.2 org.eclipse.tptp.lta.log.epi 4.5.0.v200805132041 org.python.pydev.ast 0.9.8.1 org.python.pydev 1.3.13 org.eclipse.equinox.app 1.1.0.v20080421-2006 org.eclipse.equinox.p2.metadata.generator 1.0.0.v20080604 org.python.pydev 1.2.7 org.eclipse.emf.ocl.examples 1.2.0.v200805130238 org.eclipse.mylyn.jira.core 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.commons.net 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql.query 1.0.1.v200805152355 org.eclipse.datatools.sqltools.plan 1.0.0.v200805152355 com.swtdesigner.help 6.7.1.200809050053 org.eclipse.ecf.ssl 1.0.0.v20080611-1715 org.eclipse.team.cvs.core 3.3.100.I20080605 org.python.pydev.ast 0.9.8 com.instantiations.helpeditor.core.toc 1.3.4.200806270212 org.eclipse.core.databinding 1.1.0.I20080527-2000 org.eclipse.tptp.platform.common 4.3.200.v200805300100 org.eclipse.net4j.util.ui 1.0.0.v200806180305 org.eclipse.mylyn.commons.core 3.0.0.v20080619-1900 org.python.pydev 1.3.9 org.eclipse.emf.search.common.ui 0.7.0.v200806130939 org.eclipse.m2m.atl.engine.emfvm 2.0.0.v200806101117 org.eclipse.uml2.diagram.csd 0.8.0.v200806112132 org.python.pydev.parser 1.3.7 org.eclipse.team.svn.ui 0.7.1.I20080612-1500 org.python.pydev.core 1.3.12 org.eclipse.datatools.modelbase.sql.query.edit 1.0.0.v200806070329 com.instantiations.packager.core 2.5.1 com.windowtester.swing.runtime 3.5.0.200806270034 org.eclipse.update.ui 3.2.100.v20080318 org.apache.commons.codec 1.2.0.v20080530-1550 org.eclipse.mylyn.bugzilla.core 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.editor.ui 1.0.0.v20080611-1330 org.eclipse.m2m.qvt.oml.samples 1.0.0.v20080611-1330 org.eclipse.mylyn.context.core 3.0.0.v20080619-1900 org.eclipse.xsd.source 2.4.0.v200806091234 org.eclipse.gmf.runtime.diagram.core 1.1.0.v20080425-1959 org.eclipse.m2m.atl.drivers.uml24atl 2.0.0.v200806101117 com.instantiations.eclipse.util 5.3.2.200809042027 org.eclipse.emf.ecore.sdo 2.4.0.v200806091234 com.instantiations.eclipse.startup 5.3.2.200809042027 org.eclipse.gmf 1.0.0.v20080425-1959 org.python.pydev 0.9.2 org.apache.batik.util.gui 1.6.0.v200805290154 org.python.pydev.ast 0.9.8.7 com.nordea.cd.dev.plugin.wsdl2java 1.0.2 org.eclipse.datatools.enablement.sybase.models 1.0.0.v200805152355 org.python.pydev.ast 1.0.1 org.eclipse.emf.compare.diff 0.8.0.v200806180301 org.eclipse.birt.report.designer 2.3.0.v200806102 org.eclipse.equinox.http.registry 1.0.100.v20080427-0830 ch.ethz.iks.r_osgi.remote 1.0.0.RC2_v20080623-0046 org.eclipse.gmf.graphdef.codegen.ui 1.0.100.v20080425-1959 org.eclipse.m2m.qvt.oml.editor.source 1.0.0.v20080611-1330-1--7w3119172202441 org.sat4j.pb 2.0.0.v20080602 org.eclipse.wst.validation 1.2.1.v200807292117 org.apache.batik.util 1.6.0.v200805290154 org.eclipse.equinox.transforms.hook 1.0.0.v20080610 org.eclipse.emf.teneo.hibernate 1.0.0.v200806111928 org.eclipse.uml2.examples 2.1.0.v200805131030 org.eclipse.mylyn.java.tasks 3.0.2.v20080918-1100-e3x org.eclipse.equinox.preferences 3.2.200.v20080421-2006 com.instantiations.assist.eclipse.fragment.swt 5.5.0 org.eclipse.ocl.doc 1.2.0.v200805130238 org.eclipse.jdt.apt.core 3.3.100.v20080513-1235 org.eclipse.birt.report.engine.fonts 2.3.0.v20080606 org.eclipse.mylyn.monitor.ui 3.0.2.v20080918-1100-e3x org.eclipse.gmf.tooldef.edit 2.0.0.v20080610-1132 org.eclipse.gmf.runtime.draw2d.ui.render 1.1.0.v20080507-2230 com.windowtester.swt.platform.ext 3.5.0.200806270034 org.eclipse.ecf.example.clients 1.3.0.v20080623-0046 org.eclipse.core.net 1.1.0.I20080604 org.eclipse.wst.xsd.core 1.1.301.v200807240448 org.eclipse.datatools.connectivity.oda.flatfile 3.0.6.v200805261930 org.python.pydev.refactoring 1.3.20 org.python.pydev.parser 1.0.1 org.python.pydev.ast 1.3.19 org.eclipse.equinox.registry.jmx 1.0.0.v20080610-1530 com.instantiations.eclipse.model.jsp 5.5.0 org.eclipse.mylyn.context.ui 3.0.2.v20080918-1100-e3x org.python.pydev.core 1.0.5 org.eclipse.hyades.lta.resources.database 4.5.0.v200805271330 org.python.pydev 0.6.1 org.python.pydev.parser 1.3.12 org.eclipse.equinox.p2.console 1.0.0.v20080514-1900 org.eclipse.mylyn.commons.net 3.0.1.v20080721-2100-e3x org.eclipse.net4j.jms.api 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.lexer 1.0.1.v200805152355 org.python.pydev.ast 1.3.4 org.python.pydev 1.3.4 org.python.pydev.jython 1.2.8 org.python.pydev 0.8.5 org.python.pydev 0.5.3 org.eclipse.wst.sse.ui 1.1.1.v200808141919 org.eclipse.emf.query 1.2.0.v200805130238 org.eclipse.core.runtime.compatibility 3.2.0.v20071008 org.eclipse.gmf.runtime.notation 1.1.0.v20080507-1326 org.eclipse.birt.report.data.oda.sampledb.ui 2.3.0.v20080606 org.python.pydev.ast 1.2.6 com.instantiations.eclipse.mail.ui 5.5.1 org.eclipse.zest.layouts 1.0.0.v20080226 org.python.pydev.jython 1.3.6 org.eclipse.net4j.jms.admin 1.0.0.v200806180305 org.eclipse.core.databinding.beans 1.1.0.I20080508-2000a org.python.pydev 1.1.0 org.python.pydev.core 1.3.20 org.eclipse.gmf.runtime.emf.commands.core 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.common.ui.services.dnd.ide 1.1.0.v20080425-1959 org.eclipse.datatools.connectivity.apache.derby 1.0.1.v200805152355 org.python.pydev.core 1.2.9 org.eclipse.mylyn.context.core 3.0.2.v20080918-1100-e3x org.eclipse.equinox.p2.artifact.repository 1.0.0.v20080609-0850 org.eclipse.gef 3.4.0.v20080526 org.eclipse.gmf.runtime.common.ui 1.1.0.v20080512-1200 org.eclipse.emf.ecoretools.tabbedproperties 0.8.0.v200806130600 com.instantiations.assist.eclipse.core.ant 5.5.1 org.eclipse.emf.ecore.change 2.4.0.v200806091234 org.eclipse.jet.doc 0.9.0.v20080522 org.eclipse.emf.transaction.examples 1.2.0.v200806051817 org.eclipse.gmf.runtime.draw2d.ui 1.1.0.v20080610-1132 org.eclipse.equinox.jmx.server.rmi 1.0.0.v20070510 org.eclipse.ecf.examples.remoteservices.common 1.0.100.v20080623-0046 org.eclipse.wst.standard.schemas 1.0.102.v200807220733 org.eclipse.equinox.p2.jarprocessor 1.0.0.v20080514-1900 org.eclipse.birt.report.data.oda.jdbc 2.3.0.v20080610 com.windowtester.runner 3.5.0.200806270034 com.windowtester.swt.codegen 3.5.1.200809042232 org.eclipse.emf.cdo.tests.model2.edit 1.0.0.v200806180411 javax.wsdl 1.5.1.v200806030408 org.eclipse.datatools.enablement.sap.maxdb.ui 1.0.0.v200805152355 org.eclipse.equinox.launcher.win32.win32.x86 1.0.100.v20080509-1800 org.eclipse.birt.core 2.3.0.v20080606 javax.servlet 2.5.0.v200806031605 org.eclipse.uml2.codegen.ecore.ui 1.4.0.v200805131030 com.windowtester.swt.recorder 3.5.0.200806270034 org.eclipse.mylyn 3.0.1.v20080721-2100-e3x org.eclipse.uml2.search.ocl 0.7.0.v200806130939 org.python.pydev.core 1.3.3 org.eclipse.core.jobs 3.4.0.v20080512 org.python.pydev.core 0.9.5 org.eclipse.emf.validation.ui.ide 1.2.0.v200805130238 org.python.pydev 1.0.2 org.eclipse.wst.validation.ui 1.2.0.v200805262011 com.windowtester.swing.recorder 3.5.1.200809042232 com.instantiations.helpeditor.help 1.3.4.200809042225 org.eclipse.gmf.map.edit 2.1.0.v20080610-1132 org.eclipse.emf.ecore.edit 2.4.0.v200806091234 org.eclipse.datatools.enablement.msft.sqlserver.dbdefinition 1.0.0.v200805152355 org.mortbay.jetty.util 6.1.7.v200806031612 org.eclipse.datatools.sqltools.parsers.sql 1.0.1.v200805152355 org.eclipse.xsd.doc 2.4.0.v200806091234 org.eclipse.jdt.doc.isv 3.4.0.v20080612-1340 org.eclipse.jdt.apt.pluggable.core 1.0.100.v20080407-1345 org.eclipse.ecf.provider.bittorrent 0.3.0.v20080623-0046 org.eclipse.mylyn.monitor.ui 3.0.1.v20080721-2100-e3x org.python.pydev.jython 1.0.4 org.eclipse.wst.common.project.facet.ui 1.3.1.v200807301432 javax.xml.bind 2.0.0.v20080604-1500 org.apache.derby.core 10.3.1.4 org.eclipse.birt.report.debug.core 2.3.0.v200806102 org.python.pydev.parser 1.3.4 org.eclipse.jdt.debug.ui 3.3.0.v20080603 org.python.pydev.help 1.3.20 org.python.pydev 1.3.12 org.eclipse.gef.examples.ui.pde 3.4.0.v20080226 org.eclipse.ecf.provider.jmdns 2.0.0.v20080623-0046 org.eclipse.xsd.editor 2.4.0.v200806091234 org.python.pydev 1.2.6 org.eclipse.buckminster.generic.ui 1.0.0.r09319 org.eclipse.emf.ocl 1.1.100.v200805130238 org.eclipse.emf.search.ecore 0.7.0.v200806130939 org.eclipse.wst.common.frameworks.ui 1.1.200.v200805221400 org.eclipse.emf.ecoretools.doc 0.8.0.v200806130600 org.eclipse.wst.sse.ui.infopop 1.0.200.v200805301545 org.eclipse.tptp.platform.common.ui.trace 4.3.200.v200805290100 org.eclipse.net4j.jms.server 1.0.0.v200806180305 org.eclipse.ecf.filetransfer.ui 1.4.0.v20080623-0046 org.eclipse.birt.chart.device.swt 2.3.0.v20080522 org.eclipse.wst.xsd.ui 1.2.101.v200806051910 org.eclipse.emf.cdo.examples.source 1.0.0.v200806180411 org.eclipse.birt.report.designer.ui.lib.explorer 2.3.0.v20080606 org.mozilla.rhino 1.6.7.v20080214 org.python.pydev 1.3.16 org.eclipse.buckminster.ant 1.1.0.r09351 org.eclipse.equinox.metatype 1.0.0.v20070827 org.eclipse.m2m.atl.adt.wizard 2.0.0.v200806101117 org.eclipse.wst.command.env 1.0.305.v200805281530 org.eclipse.swt.jmx 1.0.0.v20070510 org.eclipse.emf.cdo.common 1.0.0.v200806180411 org.eclipse.ecf.examples.remoteservices.client 1.0.100.v20080623-0046 org.python.pydev.jython 1.3.14 org.python.pydev.parser 1.2.6 org.eclipse.emf.ecoretools.diagram.ui.outline 0.8.0.v200806130600 org.eclipse.emf.teneo.eclipse 1.0.0.v200806111928 org.eclipse.emf.cdo.tests.mango 1.0.0.v200806180411 org.eclipse.net4j.buddies.common 1.0.0.v200806180305 org.eclipse.net4j.buddies.chat 1.0.0.v200806180305 org.eclipse.mylyn.bugzilla.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.0 org.eclipse.datatools.enablement.sybase.ase.dbdefinition 1.0.0.v200805240040 org.apache.ant 1.7.0.v200803061910 org.eclipse.datatools.connectivity.oda.design 3.0.6.v200805152355 org.eclipse.emf.ocl.doc 1.1.100.v200805130238 org.eclipse.tptp.lta.gla.ui.epi 4.5.0.v200805160100 org.eclipse.equinox.jmx.server 1.0.0.v20071015 org.eclipse.wst.xml.core 1.1.300.v200806051910 org.eclipse.datatools.connectivity.oda.template.ui 3.0.6.v200805152355 org.python.pydev.ast 1.0.2 org.eclipse.birt.report.data.adapter 2.3.0.v20080606 org.eclipse.birt.chart.runtime 2.3.0.v20080304 org.eclipse.net4j.ui.source 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.query 1.0.1.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.1 org.eclipse.wst.dtd.ui 1.0.300.v200805152207 org.eclipse.mylyn.java.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.connectivity.oda.design.ui 3.0.6.v200805152355 org.eclipse.birt.report.designer.core 2.3.0.v200806102 org.eclipse.buckminster.jdt 1.0.0.r09319 org.eclipse.buckminster.p4 1.0.0.r09319 org.eclipse.ecf.core.source 2.0.0.v20080623-0046 org.eclipse.birt.report.runtime 2.3.0.v20080304 org.python.pydev.ast 1.1.0 com.windowtester.swt.runtime 3.5.1.200809042232 org.eclipse.uml2.doc 2.2.0.v200805201350 org.eclipse.mylyn.context.core 3.0.1.v20080721-2100-e3x org.eclipse.gmf.runtime.notation.providers 1.1.0.v20080425-1959 org.eclipse.tptp.platform.lta.log.doc.user 4.5.0.v200805132041 org.eclipse.team.svn.help 0.7.1.I20080612-1500 org.python.pydev 0.9.3 com.windowtester.swt.runtime.win32 3.5.1.200809042232 org.eclipse.m2m.qvt.oml.ocl.emf.libraries 1.0.0.v20080611-1330 org.eclipse.hyades.lta.analysis.engine 4.5.0.v200805271330 org.python.pydev.core 1.3.11 org.eclipse.datatools.connectivity.sqm.core 1.0.1.v200806041052 org.eclipse.equinox.jmx.server.xmlrpc 1.0.0.v20070608 org.eclipse.platform 3.3.100.v200806172000 org.eclipse.ui 3.4.0.I20080610-1200 org.eclipse.net4j.buddies.chat.ui 1.0.0.v200806180305 org.eclipse.emf.search.ecore.ocl 0.7.0.v200806130939 org.eclipse.gmf.codegen 2.1.0.v20080610-1132 org.eclipse.emf.teneo 1.0.0.v200806111928 org.eclipse.datatools.connectivity.oda.flatfile.ui 3.0.6.v200805261930 org.python.pydev.core 1.0.4 org.eclipse.equinox.p2.extensionlocation 1.0.0.v20080523-0001 org.eclipse.buckminster.remote.cloudsmith 1.0.0.r09319 org.python.pydev.ast 1.3.18 org.eclipse.birt.report.engine.dataextraction.csv 2.3.0.v200806102 org.eclipse.equinox.log 1.1.0.v20080414 org.python.pydev.parser 1.3.13 org.python.pydev 1.3.3 com.windowtester.eclipse.help 3.5.0.200806270034 org.python.pydev.jython 1.2.7 org.eclipse.m2m.qvt.oml.emf.util.ui 1.0.0.v20080611-1330 org.eclipse.gmf.runtime.common.ui.printing 1.1.0.v20080425-1959 org.python.pydev.ast 1.3.5 org.eclipse.uml2.uml.ecore.exporter 2.2.0.v200805131030 org.eclipse.equinox.event 1.1.0.v20080225 org.eclipse.epp.usagedata.gathering 1.0.0.R200806162215 com.instantiations.assist.eclipse.fragment.swt 5.5.1 org.eclipse.emf.cdo.server 1.0.0.v200806180411 org.eclipse.core.filesystem.win32.x86 1.1.0.v20080604-1400 org.eclipse.datatools.enablement.ibm.db2.zseries 1.0.0.v200805152355 com.windowtester.swt.platform.ext 3.5.1.200809042232 org.eclipse.birt.chart.examples 2.3.0.v20080612 org.eclipse.gmf.bridge.ui 1.1.100.v20080417-1610 org.eclipse.emf.doc 2.4.0.v200806091234 org.eclipse.emf.ecoretools.diagram 0.8.0.v200806130600 org.eclipse.ecf.provider.filetransfer.efs 1.5.0.v20080623-0046 org.eclipse.mylyn.commons.net 3.0.0.v20080619-1900 org.python.pydev.core 1.2.8 org.eclipse.datatools.modelbase.dbdefinition 1.0.0.v200805152355 javax.management.remote 1.0.0.v200803061811 org.eclipse.net4j.util 1.0.0.v200806180305 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.0 org.eclipse.ui.navigator.resources 3.3.100.I20080606-1300 org.apache.lucene.analysis 1.9.1.v20080530-1600 org.python.pydev.jython 1.3.5 org.eclipse.m2m.atl.adt.builder 2.0.0.v200806101117 org.eclipse.mylyn.monitor.core 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.2.7 com.instantiations.eclipse.mail.ui 5.5.0 org.eclipse.tptp.platform.models.lta 4.5.0.v200805132041 org.eclipse.mylyn.commons.core 3.0.1.v20080721-2100-e3x org.eclipse.team.svn.nl1 0.7.1.I20080612-1500 org.eclipse.birt.report.data.oda.jdbc.dbprofile.ui 2.3.0.v20080606 org.eclipse.pde 3.4.0.v20080603 org.eclipse.net4j.jms.server.jdbc 1.0.0.v200806180305 org.eclipse.pde.doc.user 3.3.0.v20080611-1530 org.eclipse.core.runtime.compatibility.auth 3.2.100.v20070502 org.eclipse.tptp.platform.iac.administrator 4.4.100.v200806120100 org.eclipse.emf.importer.ecore 2.4.0.v200806091234 org.eclipse.equinox.jmx.client.xmlrpc 1.0.0.v20070515 org.eclipse.equinox.jmx.common 1.0.0.v20070510 org.eclipse.datatools.enablement.ibm.informix.ui 1.0.0.v200805160737 com.instantiations.installer 2.5.1 org.eclipse.hyades.lta.logging.parsers 4.5.0.v200805271330 org.eclipse.uml2.diagram.profile 0.8.0.v200806112132 org.eclipse.datatools.enablement.jdt.classpath 1.0.1.v200805152355 org.eclipse.emf.validation.ocl.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.net4j.buddies 1.0.0.v200806180305 net.sourceforge.lpg.lpgjavaruntime 1.1.0.v200803061910 org.eclipse.emf.ecore.editor 2.4.0.v200806091234 org.apache.commons.lang 2.3.0.v200803061910 org.eclipse.ocl.uml 1.2.0.v200805130238 org.eclipse.emf.mapping.ecore2ecore 2.4.0.v200806091234 com.swtdesigner.fragment.jdt.core 6.7.0.200806270151 org.eclipse.ecf.provider.xmpp 2.0.0.v20080623-0046 org.eclipse.wst.common.modulecore 1.1.201.v200808071700 org.eclipse.mylyn.jira.ui 3.0.2.v20080918-1100-e3x org.eclipse.draw2d.doc.isv 3.4.0.v20080606 org.python.pydev.core 1.3.2 org.eclipse.mylyn.compatibility 3.0.0.v20080619-1900 org.eclipse.buckminster.maven 1.1.0.r09319 org.eclipse.buckminster.cmdline 1.0.0.r09319 org.apache.batik.css 1.6.0.v200805290154 org.eclipse.ecf.telephony.call.ui 1.2.0.v20080623-0046 org.eclipse.wst.common.emfworkbench.integration 1.1.200.v200805140020 org.python.pydev 1.0.1 org.eclipse.datatools.enablement.ibm.db2.luw.dbdefinition 1.0.0.v200805152355 org.eclipse.team.svn.resource.ignore.rules.jdt.source 0.7.1.I20080612-1500 org.eclipse.ecf.server 1.3.0.v20080623-0046 org.python.pydev 1.2.5 org.python.pydev.core 1.2.1 org.eclipse.datatools.sqltools.sqlscrapbook 1.0.0.v200806021003 org.eclipse.birt.chart.reportitem 2.3.0.v20080610 org.eclipse.uml2.diagram.codegen 0.8.0.v200806112132 org.eclipse.xsd.edit 2.4.0.v200806091234 org.eclipse.buckminster.opml 1.0.0.r09319 org.python.pydev.parser 1.3.5 org.eclipse.gmf.runtime.diagram.ui 1.1.0.v20080610-1132 org.eclipse.ocl.source 1.2.0.v200805130238-34-9oA55S5I6M7JBK com.windowtester.eclipse.ui 3.5.0.200806270034 org.eclipse.tptp.platform.agentcontroller 4.2.200.v200806162043 org.python.pydev 1.3.11 org.eclipse.datatools.connectivity.apache.derby.ui 1.0.0.v200805160737 org.eclipse.datatools.sqltools.routineeditor 1.0.0.v200805261703 org.eclipse.wst.xsd.ui 1.2.102.v200808141745 org.eclipse.equinox.http 1.0.200.v20080421-2006 org.jivesoftware.smack 2.2.1 org.eclipse.mylyn.compatibility 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.java.ui 3.0.0.v20080619-1900 org.eclipse.core.variables 3.2.100.v20080529-1300 org.python.pydev.jython 1.3.13 org.python.pydev.parser 1.3.20 org.eclipse.tptp.platform.models.hierarchy 4.5.0.v200806120100 org.eclipse.ecf.examples.updatesite.client 1.0.100.v20080623-0046 org.eclipse.datatools.enablement.msft.sqlserver.ui 1.0.0.v200805160737 org.eclipse.datatools.enablement.mysql 1.0.0.v200805152355 org.eclipse.jdt.debug 3.4.0.v20080604 org.antlr.runtime 3.0.0.v200803061811 org.python.pydev.parser 1.2.7 org.eclipse.hyades.execution 4.4.200.v200806120100 org.eclipse.ecf.provider.ui 1.3.0.v20080623-0046 org.eclipse.birt.chart.cshelp 2.3.0.v20080616 org.eclipse.buckminster.p4.ui 1.0.0.r09319 org.python.pydev 1.3.15 org.eclipse.datatools.enablement.ibm.ui 1.0.0.v200805152355 org.eclipse.buckminster.sax 1.0.0.r09175 org.eclipse.equinox.supplement 1.1.0.v20080421-2006 org.eclipse.wst.common.frameworks 1.1.200.v200805140020 org.eclipse.mylyn 3.0.2.v20080918-1100-e3x org.eclipse.gmf.map 2.1.0.v20080521 org.eclipse.wst.standard.schemas 1.0.101.v200806010600 org.python.pydev.ast 1.0.3 org.eclipse.m2m.qvt.oml.runtime 1.0.0.v20080611-1330 org.eclipse.mylyn.ide.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.sqltools.sqlbuilder 1.0.0.v200806070500 org.eclipse.datatools.modelbase.derby 1.0.0.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.0 org.eclipse.emf.compare.ui 0.8.0.v200806180301 org.eclipse.ecf.provider.filetransfer.scp 2.0.0.v20080623-0046 org.eclipse.uml2.search.ocl.ui 0.7.0.v200806130939 org.eclipse.mylyn.context.ui 3.0.1.v20080721-2100-e3x org.python.pydev.templates 1.3.20 org.eclipse.gmf.runtime.diagram.ui.resources.editor 1.1.0.v20080425-1959 org.eclipse.gmf.examples.ui.pde 1.0.200.v20080425-1959 org.eclipse.buckminster.installer 1.0.0.r09319 org.eclipse.m2m.atl.examples 2.0.0.v200806101117 org.eclipse.datatools.modelbase.sql.xml.query 1.0.0.v200805152355 org.eclipse.emf.search.doc 0.7.0.v200806130939 org.eclipse.datatools.enablement.oracle.dbdefinition 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.0 javax.xml.bind 2.0.0.v200803061811 org.apache.xmlrpc 3.0.0.v20080530-1550 org.eclipse.ui.views.log 1.0.0.v20080522-2200 org.python.pydev.core 1.3.10 org.eclipse.ecf.examples.updatesite.server 1.0.100.v20080623-0046 org.eclipse.birt.core.ui 2.3.0.v20080515 org.eclipse.core.filebuffers 3.4.0.v20080603-2000 org.eclipse.mylyn.team.ui 3.0.1.v20080721-2100-e3x org.eclipse.wst.command.env 1.0.306.v200807231700 org.eclipse.team.cvs.ssh2 3.2.200.I20080604 org.eclipse.emf.search.ecore.ocl.ui 0.7.0.v200806130939 org.eclipse.ecf.example.collab.editor 1.0.200.v20080623-0046 org.eclipse.ecf.provider.jslp 2.0.0.v20080623-0046 org.eclipse.datatools.sqltools.result 1.0.0.v200805301309 org.eclipse.emf.teneo.jpox 1.0.0.v200806111928 org.eclipse.gmf.runtime.emf.clipboard.core 1.1.0.v20080425-1959 com.instantiations.eclipse.ast.editor 5.5.0 org.eclipse.mylyn.tasks.bugs 3.0.2.v20080918-1100-e3x org.eclipse.jsch.core 1.1.100.I20080604 org.eclipse.pde.core 3.4.0.v20080604-2000 org.python.pydev 0.9.4 org.python.pydev.jython 1.3.0
+* toolingwin32.win32.x86org.eclipse.core.runtime 3.4.0.v20080512 requires either org.python.pydev.core 0.9.7 org.eclipse.m2m.qvt.oml.trace.edit 1.0.0.v20080611-1330 org.eclipse.emf.codegen.ecore 2.4.0.v200806091234 org.eclipse.uml2.common.edit 1.4.0.v200805131030 org.eclipse.core.runtime 3.4.0.v20080512 org.python.pydev.core 1.3.9 javax.xml.soap 1.2.0.v200806030421 org.eclipse.gmf.runtime.common.ui.action.ide 1.1.0.v20080425-1959 org.eclipse.emf.cdo.edit 1.0.0.v200806180411 org.eclipse.ecf.provider.msn 1.2.0.v20080623-0046 org.eclipse.equinox.frameworkadmin.equinox 1.0.0.v20080529-1225 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.1 org.eclipse.equinox.http.servletbridge 1.0.0.v20080427-0830 org.python.pydev 0.9.5 org.python.pydev.parser 1.2.3 org.eclipse.emf.example.installer 1.0.0.v200806091234 com.instantiations.assist.eclipse 5.5.0 org.eclipse.wst.common.environment 1.0.201.v200805140020 org.eclipse.zest.source 1.0.0.v20080115-53-8xB4CE899O274A org.eclipse.emf.ant 2.4.0.v200806091234 com.instantiations.eclipse.mail 5.5.1 org.python.pydev.parser 1.3.1 org.eclipse.birt.chart.engine 2.3.0.v20080606 org.eclipse.core.resources 3.4.0.v20080604-1400 org.eclipse.birt.report.engine.emitter.postscript 2.3.0.v20080610 org.python.pydev.jython 1.1.0 org.eclipse.ui.workbench.compatibility 3.2.0.I20080509-2000 com.nordea.cd.dev.plugin.builderruntime 1.0.0 org.eclipse.m2m.atl.adt.editor 2.0.0.v200806101117 org.eclipse.equinox.p2.director.app 1.0.0.v20080604 org.eclipse.mylyn.tasks.core 3.0.0.v20080619-1900 org.python.pydev.ast 1.0.4 org.eclipse.m2m.atl.compilers.atl2006 2.0.0.v200806101117 org.eclipse.datatools.enablement.sybase.asa.ui 1.0.1.v200805310538 org.eclipse.emf.mapping.ecore2xml.ui 2.4.0.v200806091234 org.eclipse.wst.dtd.ui 1.0.301.v200808072012 org.eclipse.birt.chart.engine.extension 2.3.0.v20080611 org.eclipse.jface.databinding 1.2.0.I20080515-2000a org.eclipse.birt.chart.reportitem.ui 2.3.0.v20080610 org.eclipse.datatools.enablement.hsqldb.ui 1.0.0.v200805152355 org.eclipse.mylyn.ide.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.security.ui 1.0.0.v20080603-1810 org.eclipse.wst.common.emfworkbench.integration 1.1.201.v200808071700 org.eclipse.gmf.validate 1.1.0.v20080603-1553 org.eclipse.emf.mapping.ecore2ecore.editor 2.4.0.v200806091234 org.eclipse.ecf.provider.irc 1.3.0.v20080623-0046 org.eclipse.emf.validation.doc 1.2.0.v200805130238 org.python.pydev.ast 1.2.8 org.eclipse.emf.teneo.doc 1.0.0.v200806111928 org.python.pydev.jython 1.3.12 org.eclipse.emf.ecoretools.source 0.8.0.v200806130600 org.eclipse.equinox.p2.updatesite 1.0.0.v20080529-1800 org.eclipse.ecf.presence.bot 1.2.0.v20080623-0046 com.swtdesigner.properties.java5 1.0.0 org.eclipse.platform.doc.isv 3.4.0.v20080613-1330 org.python.pydev.core 1.2.3 org.eclipse.datatools.connectivity.db.generic 1.0.0.v200805152355 org.eclipse.uml2.diagram.clazz 0.8.0.v200806112132 org.eclipse.birt.report.designer.ui.views 2.3.0.v20080606 org.eclipse.mylyn.monitor.core 3.0.2.v20080918-1100-e3x com.instantiations.eclipse.debug 5.3.2.200806270030 org.eclipse.gmf.runtime.common.ui.action 1.1.0.v20080425-1959 org.eclipse.equinox.useradmin 1.1.0.v20080508-1815 org.eclipse.mylyn.commons.ui 3.0.2.v20080918-1100-e3x org.eclipse.equinox.cm 1.0.0.v20080509-1800 org.eclipse.uml2.diagram.component 0.8.0.v200806112132 org.eclipse.swt.layout.grouplayout 1.1.0 org.python.pydev 1.2.4 javax.servlet 2.4.0.v200806031604 org.eclipse.uml2.examples.uml.ui 2.2.0.v200805131030 org.python.pydev.ast 1.3.10 org.eclipse.birt.report.designer.ui.ide 2.3.0.v20080606 org.python.pydev.parser 1.3.18 com.swtdesigner.layout.group 6.7.0.200806270151 org.eclipse.m2m.qvt.oml.runtime.source 1.0.0.v20080611-1330-5--AgI99m9cDD4DNN9 org.eclipse.mylyn.tasks.ui 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.3.13 org.eclipse.emf.teneo.jpox.eclipse 1.0.0.v200806111928 org.eclipse.equinox.transforms.xslt 1.0.0.v20080610 org.python.pydev.core 1.0.7 org.eclipse.datatools.enablement.ibm.db2.zseries.ui 1.0.0.v200805160737 org.eclipse.mylyn.resources.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.enablement.oda.ws 1.1.0.v200805261930 org.eclipse.equinox.frameworkadmin 1.0.0.v20080430-1750 org.eclipse.birt.chart.device.extension 2.3.0.v20080424 org.eclipse.net4j.jvm 1.0.0.v200806180305 org.eclipse.emf.cdo.migrator 1.0.0.v200806180411 org.python.pydev.jython 1.3.1 org.eclipse.m2m.qvt.oml.cst.parser 1.0.0.v20080611-1330 com.xored.composer.ui 1.3.4.200809042225 org.eclipse.datatools.enablement.sybase.ui 1.0.0.v200806041138 org.eclipse.ecf.remoteservice.ui 2.0.0.v20080623-0046 org.eclipse.net4j.db.mysql 1.0.0.v200806180305 org.eclipse.update.scheduler 3.2.100.v20080404 org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide 1.1.0.v20080425-1959 org.eclipse.wst.dtdeditor.doc.user 1.0.400.v200805150028 org.eclipse.wst.xmleditor.doc.user 1.0.401.v200808071323 org.eclipse.gmf.runtime.common.ui.services.dnd 1.1.0.v20080425-1959 org.eclipse.uml2.common 1.4.0.v200805131030 org.apache.jasper 5.5.17.v200806031609 org.python.pydev 1.0.8 org.eclipse.datatools.doc.user 1.6.0.20080606124249 org.objectweb.asm 3.1.0.v200803061910 org.eclipse.emf.cdo.doc 1.0.0.v200806180411 org.python.pydev.core 1.3.17 org.eclipse.core.resources.compatibility 3.4.0.v20080604-1400 com.instantiations.eclipse.startup 5.3.2.200806270030 org.eclipse.datatools.connectivity.apache.derby.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.graphdef.codegen 2.0.100.v20080528-1052 org.eclipse.emf.common 2.4.0.v200806091234 org.eclipse.wst.xml.ui.infopop 1.0.300.v200805140200 org.python.pydev.core 1.3.0 org.eclipse.equinox.p2.touchpoint.natives 1.0.0.v20080505-1850 org.eclipse.ant.core 3.2.0.v20080529 org.eclipse.ui.workbench 3.4.0.I20080606-1300 org.eclipse.ecf.provider.xmpp.ui 2.0.0.v20080623-0046 org.w3c.sac 1.3.0.v20070710 org.python.pydev.jython 1.2.3 org.eclipse.mylyn.context.ui 3.0.0.v20080619-1900 org.eclipse.ecf.doc 1.3.0.v20080623-0046 org.eclipse.ecf.provider.bittorrent.ui 0.2.0.v20080623-0046 com.xored.swt.composer 1.3.4.200809042225 org.python.pydev.parser 1.0.4 org.eclipse.help.webapp 3.3.100.v20080528 org.eclipse.uml2.diagram.deploy 0.8.0.v200806112132 org.eclipse.ecf.provider.irc.ui 1.3.0.v20080623-0046 org.python.pydev 1.3.18 org.eclipse.m2m.atl.source 2.0.0.v200806101117 org.eclipse.mylyn.tasks.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.identity 2.0.0.v20080611-1715 org.eclipse.ocl.ecore 1.2.0.v200805130238 org.eclipse.core.expressions 3.4.0.v20080603-2000 org.eclipse.core.runtime.compatibility.registry 3.2.200.v20080610 org.eclipse.tptp.platform.la.core 4.3.200.v200805231116 org.eclipse.m2m.atl.service.core 2.0.0.v200806101117 org.apache.commons.logging 1.0.4.v20080605-1930 org.eclipse.platform.doc.user 3.4.0.v20080612-1340 com.windowtester.runtime.junit4 3.5.0.200806270034 org.python.pydev.parser 1.2.8 org.eclipse.uml2.examples.source 2.2.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.providers 1.1.0.v20080503-1740 org.python.pydev.jython 1.3.20 org.python.pydev.jython 1.0.7 org.eclipse.m2m.qvt.oml.common 1.0.0.v20080611-1330 org.eclipse.wst.sse.ui 1.1.0.v200806041847 org.eclipse.core.resources.win32.x86 3.4.0.v20071204 org.eclipse.swt.widgets.baseline 1.1.0 com.xored.swt.composer.win32.win32.x86 1.3.4.200809042225 org.eclipse.datatools.enablement.mysql.ui 1.0.0.v200805152355 org.eclipse.m2m.atl.ocl.core 2.0.0.v200806101117 org.eclipse.emf.codegen.ecore.ui 2.4.0.v200806091234 org.eclipse.equinox.http.servlet 1.0.100.v20080427-0830 org.python.pydev.ast 1.3.2 org.python.pydev 1.3.6 org.eclipse.birt.report.viewer 2.3.0.v20080606 org.apache.batik.extension 1.6.0.v200805290154 org.eclipse.uml2.diagram.statemachine 0.8.0.v200806112132 org.python.pydev.parser 1.3.10 org.eclipse.equinox.p2.ui.admin.rcp 1.0.0.v20080604 org.eclipse.emf.compare.match 0.8.0.v200806180301 org.eclipse.datatools.enablement.oracle.ui 1.0.0.v200805240040 org.python.pydev 0.7.1 com.lowagie.itext 1.5.4.v20080228 org.eclipse.birt.report.designer.ui.preview.web 2.3.0.v200806102 org.eclipse.birt.report.designer.ui.samples.ide 2.3.0.v20080606 org.eclipse.xsd.ecore.converter 2.4.0.v200806091234 org.eclipse.jdt.compiler.tool 1.0.100.v_874 org.eclipse.equinox.registry 3.4.0.v20080516-0950 org.eclipse.wst.dtd.ui.infopop 1.0.300.v200805140200 org.python.pydev.ast 0.9.5 org.eclipse.ui.workbench.texteditor 3.4.0.v20080603-2000 org.eclipse.cvs 1.0.100.v20080603 org.eclipse.uml2.search.ui 0.7.0.v200806130939 org.eclipse.gmf.common 1.1.1.v20080610-1132 org.eclipse.uml2.uml.editor 2.2.0.v200805131030 org.eclipse.m2m.atl.engine 2.0.0.v200806101117 org.eclipse.net4j.http.common 1.0.0.v200806180305 org.eclipse.ecf.presence.ui 1.2.0.v20080623-0046 org.python.pydev.parser 1.2.2 org.eclipse.emf.cdo.tests.model3.edit 1.0.0.v200806180411 org.eclipse.emf.cdo.tests.model1 1.0.0.v200806180411 org.eclipse.m2m.atl.engine.vm 2.0.0.v200806101117 com.instantiations.eclipse.mail 5.5.0 org.eclipse.emf.ocl.source 1.1.100.v200805130238-108Y7w311916241349 com.windowtester.swt.runtime.legacy 3.5.1.200809042232 org.eclipse.uml2tools 0.8.0.v200806112132 org.eclipse.emf.search.genmodel.ui 0.7.0.v200806130939 org.eclipse.mylyn.jira.core 3.0.2.v20080918-1100-e3x org.eclipse.uml2.uml.ecore.importer 2.2.0.v200805131030 org.eclipse.emf.transaction.doc 1.2.0.v200805130238 org.eclipse.tptp.platform.logging.events 4.3.200.v200805310100 org.python.pydev.core 1.3.8 org.eclipse.xsd.ecore.importer 2.4.0.v200806091234 org.eclipse.emf.teneo.source 1.0.0.v200806111928-78--DUUEFDEz0MMNLVD org.eclipse.uml2 2.1.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.render 1.1.0.v20080603-1553 com.windowtester.swt.runtime.os.win32 3.5.0.200806270034 org.eclipse.rcp 3.4.0.v20080507 org.eclipse.xsd.mapping 2.4.0.v200806091234 org.eclipse.emf.workspace.doc 1.2.0.v200805130238 org.eclipse.pde.api.tools 1.0.0.v20080529-1150 org.eclipse.emf.mapping.ecore2xml 2.4.0.v200806091234 org.eclipse.swt.win32.win32.x86 3.4.0.v3448f org.apache.derby 10.1.2.1_v200803061811 org.eclipse.m2m.qvt.oml.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.python.pydev.parser 1.3.0 org.eclipse.ecf.protocol.msn 1.2.0.v20080623-0046 com.instantiations.eclipse.ui 5.3.2.200809042027 org.eclipse.jet.core 1.1.0.v20080415 org.eclipse.datatools.enablement.sybase.ase.models 1.0.1.v200805152355 com.nordea.cd.dev.plugin.builderruntime 1.0.1 com.instantiations.assist.eclipse.core 5.5.0 org.python.pydev.ast 1.0.5 org.eclipse.ecf.filetransfer 2.0.0.v20080611-1715 org.python.pydev.parser 0.9.5 org.python.pydev.core 1.2.2 org.eclipse.emf.transaction.ui 1.2.0.v200805130238 org.eclipse.gmf.runtime.gef.ui 1.1.0.v20080503-1740 org.eclipse.wst.xml.core 1.1.301.v200808072008 org.eclipse.uml2.diagram.clazz.search 0.7.0.v200806130939 org.sat4j.core 2.0.0.v20080602 org.eclipse.datatools.connectivity.ui 1.1.0.v200806040132 org.eclipse.birt.report.designer.ui.editors 2.3.0.v20080610a org.eclipse.equinox.p2.reconciler.dropins 1.0.0.v20080611 org.eclipse.wst.common.project.facet.core 1.3.1.v200807031821 org.python.pydev.jython 1.3.11 org.eclipse.datatools.enablement.postgresql 1.0.1.v200805152355 org.eclipse.ltk.ui.refactoring 3.4.0.v20080605-1800 org.eclipse.datatools.enablement.sybase.ase 1.0.1.v200806040735 org.python.pydev.ast 1.2.9 org.eclipse.datatools.connectivity.oda 3.1.2.v200805152355 org.eclipse.wst.common.emf 1.1.201.v200808071700 org.apache.batik.dom.svg 1.6.0.v200805290154 org.eclipse.birt.chart 2.3.0.v20080304 org.python.pydev.jython 1.2.9 org.python.pydev.ast 1.3.11 org.eclipse.datatools.enablement.mysql.dbdefinition 1.0.1.v200805170742 org.python.pydev.parser 1.3.19 org.python.pydev.core 1.0.6 org.eclipse.uml2.diagram 0.8.0.v200806112132 org.eclipse.jdt.junit4.runtime 1.0.200.v20080603-2000 org.python.pydev.ast 1.3.12 org.eclipse.swt 3.4.0.v3448f org.eclipse.emf.ecoretools.diagram.search 0.7.0.v200806130939 org.eclipse.pde.ui.templates 3.4.0.v20080514-1500 com.instantiations.packager.ui 2.5.1 org.eclipse.emf.cdo.server.db 1.0.0.v200806180411 org.eclipse.datatools.enablement.sybase.asa 1.0.1.v200805310538 org.eclipse.emf.compare 0.8.0.v200806180301 org.eclipse.datatools.enablement.oda.ws.ui 1.1.0.v200805261930 org.eclipse.jdt.launching 3.4.0.v20080529-1300 org.eclipse.mylyn.tasks.ui 3.0.0.v20080619-1900 org.apache.ws.jaxme 0.5.1.v20080530-1550 org.eclipse.mylyn.bugzilla.ui 3.0.0.v20080619-1900 org.apache.commons.el 1.0.0.v200806031608 org.python.pydev 1.2.3 org.w3c.dom.smil 1.0.0.v200806040011 org.eclipse.wst.validation.infopop 1.0.300.v200806041506 org.python.pydev 1.0.7 org.eclipse.net4j.source 1.0.0.v200806180305 org.eclipse.m2m.qvt.oml.ocl 1.0.0.v20080611-1330 org.eclipse.uml2.uml.edit 2.2.0.v200805131030 org.eclipse.emf.search.ui 0.7.0.v200806130939 org.python.pydev.core 1.3.16 org.eclipse.emf.validation.ui 1.2.0.v200805130238 org.eclipse.datatools.enablement.oda.xml 1.1.0.v200805270900 org.eclipse.ltk.core.refactoring 3.4.0.v20080603-2000 org.python.pydev.jython 1.3.2 com.windowtester.swt.codegen 3.5.0.200806270034 org.eclipse.datatools.sqltools.ddlgen.ui 1.0.0.v200805152355 org.apache.xerces 2.9.0.v200805270400 org.eclipse.birt.report.engine.dataextraction 2.3.0.v20080611 org.eclipse.equinox.jmx.vm 1.0.0.v20070515 org.eclipse.birt.report.data.oda.jdbc.ui 2.3.0.v20080606 org.eclipse.equinox.ds 1.0.0.v20080427-0830 org.eclipse.mylyn.bugzilla.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.http.jetty 2.0.0.v20080425 org.eclipse.mylyn.team.ui 3.0.2.v20080918-1100-e3x org.python.pydev.jython 1.2.4 org.eclipse.birt.chart.device.svg 2.3.0.v20080526 org.python.pydev.parser 1.0.5 org.eclipse.ui.presentations.r21 3.2.100.I20080512-2000 org.eclipse.mylyn 3.0.0.v20080619-1900 org.eclipse.m2m.qvt.oml.doc 1.0.0.v20080611-1330 org.eclipse.team.svn.nl1.sources 0.7.1.I20080612-1500 org.eclipse.mylyn.resources.ui 3.0.0.v20080619-1900 org.eclipse.datatools.enablement.ibm.db2.luw 1.0.0.v200805152355 org.python.pydev.core 1.3.1 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.1 org.eclipse.ecf.provider.filetransfer 2.0.0.v20080611-1715 org.eclipse.emf.cdo.tests.mango.edit 1.0.0.v200806180411 org.python.pydev.parser 1.2.9 org.eclipse.m2m.qvt.oml.emf.util 1.0.0.v20080611-1330 org.eclipse.team.cvs.ssh 3.2.100.I20080604 org.python.pydev.jython 1.3.19 org.python.pydev.jython 1.0.8 org.python.pydev.ast 1.2.1 org.eclipse.m2m.qvt.oml.project 1.0.0.v20080611-1330 com.instantiations.assist.eclipse.core.ui 5.5.1 org.eclipse.datatools.enablement.ibm.db2.zseries.dbdefinition 1.0.0.v200805152355 org.eclipse.datatools.enablement.ibm.db2.iseries 1.0.0.v200805152355 com.swtdesigner.fragment.jdt.core 6.7.1.200809050053 org.eclipse.equinox.device 1.0.1.v20080303 org.eclipse.equinox.http.jetty 1.1.0.v20080425 org.eclipse.emf.cdo.tests.model3 1.0.0.v200806180411 org.eclipse.emf.teneo.hibernate.mapper 1.0.0.v200806111928 org.eclipse.compare 3.4.0.I20080604 org.polarion.eclipse.team.svn.connector.javahl 2.0.1.I20080612-1500 org.eclipse.gmf.runtime.diagram.ui.geoshapes 1.1.0.v20080503-1740 org.eclipse.emf.mint.ui 0.7.0.v200806172223 org.eclipse.ui.win32 3.2.100.v20080408-0800 org.eclipse.jet.source 0.9.0.v20080516 org.python.pydev 1.3.17 com.windowtester.runtime.junit4 3.5.1.200809042232 org.eclipse.ecf.examples.remoteservices.server 1.0.100.v20080623-0046 org.eclipse.text 3.4.0.v20080605-1800 org.eclipse.uml2.diagram.common 0.8.0.v200806112132 org.eclipse.datatools.connectivity.sqm.core.ui 1.1.0.v200806070326 org.python.pydev.core 0.9.7.99 org.eclipse.net4j.jms 1.0.0.v200806180305 org.junit4 4.3.1 org.eclipse.epp.usagedata.recording 1.0.0.R200806162215 org.eclipse.buckminster.remote 1.0.0.r09326 org.eclipse.gmf.tooling 2.1.0.v20080425-1959 org.eclipse.emf.cdo.tests.model2 1.0.0.v200806180411 org.eclipse.emf.ecore.sdo.editor 2.4.0.v200806091234 com.instantiations.swt.graph 5.5.0 org.eclipse.uml2.search 0.7.0.v200806130939 org.python.pydev 1.3.5 org.python.pydev.ast 1.3.3 org.eclipse.datatools.enablement.msft.sqlserver 1.0.1.v200805152355 org.python.pydev.parser 1.3.11 org.eclipse.datatools.enablement.sap.maxdb.dbdefinition 1.0.0.v200805152355 com.windowtester.swing.recorder 3.5.0.200806270034 org.eclipse.gmf.runtime.common.ui.printing.win32 1.1.0.v20080612-1355 org.python.pydev.ast 1.3.20 org.eclipse.wst.common.snippets 1.1.200.v200805140415 org.eclipse.mylyn.commons.core 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.tasks.core 3.0.2.v20080918-1100-e3x org.eclipse.jdt.doc.user 3.4.0.v20080612-1340 org.eclipse.birt.chart.ui 2.3.0.v20080522 org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb 2.3.0.v20080606 org.eclipse.uml2.diagram.examples.clazz 0.8.0.v200806112132 org.eclipse.ecf.provider.msn.ui 1.3.0.v20080623-0046 org.python.pydev.parser 1.3.3 org.eclipse.ui.ide.application 1.0.0.I20080603-2000 org.python.pydev.ast 1.0.6 org.eclipse.equinox.jsp.jasper.registry 1.0.0.v20080427-0830 org.eclipse.equinox.p2.engine 1.0.0.v20080522-1735 com.nordea.cd.dev.plugin.builderruntime 1.0.2 com.instantiations.assist.eclipse.core 5.5.1 org.eclipse.m2m.qvt.oml 1.0.0.v20080611-1330 org.eclipse.mylyn.commons.ui 3.0.1.v20080721-2100-e3x org.eclipse.update.core.win32 3.2.100.v20080107 org.eclipse.datatools.sqltools.db.derby 1.0.0.v200805152355 com.instantiations.assist.eclipse.admin 5.5.0 org.eclipse.ecf.telephony.call 1.2.0.v20080623-0046 org.eclipse.mylyn.monitor.core 3.0.0.v20080619-1900 org.eclipse.epp.usagedata.ui 1.0.0.R200806162215 org.eclipse.ui.ide 3.4.0.I20080606-1300 org.eclipse.hyades.lta.sdb 4.5.0.v200806051823 org.eclipse.birt.report.model.adapter.oda 2.3.0.v20080523 org.eclipse.emf.compare.doc 0.8.0.v200806180301 org.eclipse.equinox.servletbridge 1.0.100.v20080427-0830 com.instantiations.common.help 5.3.2.200809042027 org.eclipse.jdt.core 3.4.0.v_874 org.eclipse.equinox.p2.director 1.0.0.v20080604 org.eclipse.gmf.runtime.emf.ui.properties 1.1.0.v20080425-1959 org.eclipse.emf.exporter 2.4.0.v200806091234 org.python.pydev.core 1.3.7 org.eclipse.uml2.diagram.def 0.8.0.v200806112132 org.python.pydev.parser 1.2.1 org.eclipse.wst.command.env.ui 1.1.0.v200805140415 org.eclipse.wst.common.modulecore 1.1.200.v200806091800 org.python.pydev 0.9.7 org.eclipse.gmf.graphdef.edit 2.0.100.v20080610-1132 org.eclipse.birt.report.designer.ui.cubebuilder 2.3.0.v20080606 org.eclipse.m2m.atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.actions 1.1.0.v20080603-1553 com.instantiations.common.core 5.3.2.200806270030 org.eclipse.datatools.enablement.ibm.informix 1.0.0.v200805152355 org.eclipse.net4j.tcp 1.0.0.v200806180305 org.eclipse.wst.common.environment 1.0.202.v200807161459 com.instantiations.common.core 5.3.2.200809042027 org.eclipse.birt.report.data.oda.xml 2.3.0.v20080606 org.eclipse.pde.api.tools.ui 1.0.0.v20080603 org.eclipse.debug.ui 3.4.0.v20080529-1300 org.python.pydev 1.2.2 org.eclipse.team.svn.ui.nl1 0.7.1.I20080612-1500 org.apache.batik.transcoder 1.6.0.v200805290154 org.eclipse.emf.ecore.sdo.edit 2.4.0.v200806091234 org.python.pydev.parser 1.3.16 org.eclipse.wst.command.env.ui 1.1.1.v200807162242 org.eclipse.uml2.diagram.codegen.edit 0.8.0.v200806112132 org.eclipse.datatools.connectivity.db.generic.ui 1.0.1.v200805152355 org.eclipse.mylyn.resources.ui 3.0.2.v20080918-1100-e3x org.python.pydev.ast 1.3.8 org.python.pydev 1.3.0 org.eclipse.net4j.db 1.0.0.v200806180305 org.python.pydev.ast 1.3.15 org.eclipse.uml2.codegen.ecore 1.4.0.v200805201126 org.eclipse.gmf.sdk 1.0.0.v20080425-1959 org.eclipse.equinox.p2.core 1.0.0.v20080530-1237 org.python.pydev.jython 1.3.10 org.eclipse.emf.cdo 1.0.0.v200806180411 org.eclipse.emf.search.genmodel 0.7.0.v200806130939 org.eclipse.ui.navigator 3.3.100.I20080606-1300 org.eclipse.team.svn.mylyn 0.7.1.I20080612-1500 org.python.pydev.core 1.2.5 org.eclipse.tptp.platform.lta.la.core 4.5.0.v200805132041 org.eclipse.wst.sse.core 1.1.301.v200808072008 org.eclipse.tptp.platform.lta.log.views 4.5.0.v200806051823 org.eclipse.mylyn.java.ui 3.0.2.v20080918-1100-e3x org.eclipse.emf.search.codegen 0.7.0.v200806130939 com.instantiations.common.ui 5.3.2.200806270030 org.eclipse.ecf 2.0.0.v20080611-1715 org.eclipse.equinox.p2.ui.sdk 1.0.0.v20080605-1731 org.apache.commons.discovery 0.2.0.v200806030120 org.eclipse.datatools.help 1.5.0.v200805152355 org.python.pydev.parser 0.9.7.99 org.w3c.css.sac 1.3.0.v200805290154 org.eclipse.jet.examples 0.9.0.v20080211 org.eclipse.mylyn.bugzilla.ide 3.0.2.v20080918-1100-e3x org.eclipse.pde.junit.runtime 3.4.0.v20080529-1800 org.eclipse.emf.commonj.sdo 2.4.0.v200806091234 org.python.pydev.jython 1.2.1 com.instantiations.tools 5.3.2.200806270030 com.windowtester.runtime 3.5.1.200809042232 org.eclipse.wst.validation 1.2.0.v200806051402 org.eclipse.ecf.docshare 2.0.0.v20080623-0046 com.instantiations.eclipse.model.jsp 5.5.1 org.eclipse.emf.teneo.hibernate.eclipse 1.0.0.v200806111928 com.jcraft.jsch 0.1.37.v200803061811 org.python.pydev.parser 1.0.6 org.eclipse.emf.converter 2.4.0.v200806091234 org.eclipse.equinox.common 3.4.0.v20080421-2006 org.eclipse.buckminster.ui 1.0.0.r09319 org.eclipse.datatools.sqltools.tablewizard 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.0 org.eclipse.uml2.source 2.2.0.v200805201126 org.eclipse.team.cvs.ui 3.3.100.I20080604 org.python.pydev.jython 1.3.3 org.eclipse.emf.search.ocl 0.7.0.v200806130939 org.eclipse.datatools.enablement.sybase.asa.models 1.0.0.v200805152355 org.eclipse.sdk 3.4.0.v200806172000 org.eclipse.xsd.ecore.exporter 2.4.0.v200806091234 org.apache.commons.codec 1.3.0.v20080530-1600 org.eclipse.equinox.p2.exemplarysetup 1.0.0.v20080427-2136 org.eclipse.equinox.io 1.0.0.v20080218 org.eclipse.wst.common.project.facet.core 1.3.0.v200805140020 org.eclipse.wst.common.ui 1.1.301.v200805140415 org.eclipse.emf.databinding.edit 1.0.0.v200806091234 org.mortbay.jetty.server 6.1.7.v200806031612 org.eclipse.wst.dtd.core 1.1.200.v200805140200 org.python.pydev 1.0.6 org.eclipse.uml2.diagram.activity 0.8.0.v200806112132 org.eclipse.emf.importer.rose 2.4.0.v200806091234 org.eclipse.core.net.win32.x86 1.0.0.I20080521 javax.activation 1.1.0.v200804101140 org.python.pydev.core 1.3.15 org.python.pydev.parser 1.3.8 com.instantiations.assist.eclipse.coverage.ui 5.5.1.200809042337 org.eclipse.emf.ecoretools.filters 0.8.0.v200806130600 org.python.pydev.ast 1.3.0 org.eclipse.birt.report.data.oda.xml.ui 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase 1.0.1.v200805310538 org.python.pydev 1.3.8 org.eclipse.equinox.ip 1.0.0.v20080218 org.eclipse.datatools.connectivity.console.profile 1.0.0.v200805231345 org.eclipse.ecf.sharedobject 1.3.0.v20080623-0046 org.eclipse.debug.core 3.4.0.v20080612 org.eclipse.wst.xmleditor.doc.user 1.0.400.v200805211530 org.eclipse.datatools.enablement.sap.maxdb 1.0.0.v200805152355 org.python.pydev.ast 0.9.7 com.windowtester.swt.runtime.legacy 3.5.0.200806270034 org.eclipse.equinox.simpleconfigurator.manipulator 1.0.0.v20080427-2136 org.eclipse.equinox.p2.touchpoint.eclipse 1.0.0.v20080529-1225 com.instantiations.swt.graph 5.5.1 org.eclipse.gmf.doc 1.2.0.v20080516-1143 org.python.pydev 1.3.20 com.windowtester.swing.runtime 3.5.1.200809042232 org.eclipse.datatools.enablement.ibm.db2.iseries.ui 1.0.0.v200805160737 org.eclipse.datatools.connectivity.oda.profile 3.0.6.v200805152355 org.eclipse.mylyn.pde.ui 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.commons.ui 3.0.0.v20080619-1900 org.eclipse.emf.workspace.source 1.2.0.v200805130238-23-8s733I3C59379I org.eclipse.core.boot 3.1.100.v20080218 org.python.pydev.ast 1.2.2 org.eclipse.birt.doc 2.3.0.v20080617a com.instantiations.assist.eclipse.core.ui 5.5.0 org.python.pydev.jython 1.3.18 org.python.pydev.jython 1.0.5 org.eclipse.emf.validation 1.2.0.v200805170232 org.eclipse.equinox.jmx.client.rmi 1.0.0 org.eclipse.emf.mapping.ecore 2.4.0.v200806091234 com.instantiations.assist.eclipse.coverage 5.5.1.200809042337 com.instantiations.helpeditor.ui 1.3.4.200806270212 org.eclipse.emf.edit.ui 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editor.script 2.3.0.v200806102 org.eclipse.gmf.ecore.editor 2.0.100.v20080610-1132 com.windowtester.swt.recorder 3.5.1.200809042232 org.eclipse.uml2.diagram.source 0.8.0.v200806112132 org.eclipse.equinox.util 1.0.0.v20080414 org.eclipse.ecf.examples.source 2.0.0.v20080623-0046 org.eclipse.emf.mapping.xsd2ecore.editor 2.4.0.v200806091234 org.eclipse.pde.p2.ui 1.0.0.v20080604-2000 org.eclipse.birt.resources 2.3.0.v20080313 org.eclipse.emf.query.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.emf.ecore.change.edit 2.4.0.v200806091234 org.eclipse.datatools.sqltools.editor.core 1.0.0.v200805152355 org.polarion.eclipse.team.svn.connector.svnkit 2.0.1.I20080612-1500 org.eclipse.buckminster.download 1.1.0.r09319 com.swtdesigner 6.7.0.200806270151 org.python.pydev.parser 1.3.2 org.eclipse.jdt.compiler.apt 1.0.100.v20080513-1235 org.python.pydev.ast 1.0.7 com.windowtester.swt.gef.codegen 3.5.0.200806270034 org.eclipse.emf.ecore 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editors.schematic 2.3.0.v200806102 org.eclipse.pde.build 3.4.0.v20080604 com.instantiations.assist.eclipse 5.5.1 org.eclipse.birt.report.designer.ui.editor.xml.wtp 2.3.0.v200806102 org.eclipse.emf.cdo.tests.model1.edit 1.0.0.v200806180411 org.python.pydev 0.9.8 javax.xml 1.3.4.v200806030440 org.python.pydev 0.4.2 org.polarion.eclipse.team.svn.connector.javahl.win32 2.0.1.I20080612-1500 org.apache.ws.commons.util 1.0.0.v20080530-1550 org.apache.batik.bridge 1.6.0.v200805290154 org.eclipse.emf.search 0.7.0.v200806130939 org.eclipse.datatools.sqltools.parsers.sql.xml.query 1.0.0.v200805152355 org.eclipse.team.core 3.4.0.I20080605 org.eclipse.tptp.platform.execution 4.4.100.v200806050100 org.eclipse.uml2.diagram.parser 0.8.0.v200806112132 org.eclipse.birt.report.item.crosstab.core 2.3.0.v20080606 org.python.pydev.core 0.9.8 org.eclipse.uml2.search.common.ui 0.7.0.v200806130939 org.eclipse.mylyn.ide.ui 3.0.0.v20080619-1900 org.eclipse.xsd.cheatsheets 2.3.0.v200806091234 org.eclipse.wst.xsd.core 1.1.300.v200805282012 org.eclipse.net4j.http 1.0.0.v200806180305 org.python.pydev.core 1.3.6 org.eclipse.ui.externaltools 3.2.0.v20080514-1542 org.eclipse.birt.report.engine.emitter.prototype.excel 2.3.0.v20080606 org.python.pydev.parser 1.3.17 com.instantiations.eclipse.util 5.3.2.200806270030 org.eclipse.ui.editors 3.4.0.v20080603-2000 org.eclipse.buckminster.slf4j 1.0.0 org.python.pydev.ast 1.3.9 org.eclipse.gef.source 3.4.0.v20080115-677-8082A5696H274A org.python.pydev.core 1.0.8 org.python.pydev.ast 1.3.14 org.eclipse.team.ui 3.4.0.I20080604 org.eclipse.emf.query.ocl.source 1.2.0.v200805130238-11-7w311916241349 com.windowtester.swt.runtime 3.5.0.200806270034 org.eclipse.osgi.jmx 1.0.0.v20080610-1530 org.eclipse.net4j.examples.source 1.0.0.v200806180305 org.eclipse.tptp.monitoring.lta.symptom.doc.user 4.5.0.v200805132041 org.eclipse.equinox.p2.updatechecker 1.0.0.v20080427-2136 org.eclipse.ui.views 3.3.0.I20080509-2000 org.eclipse.emf.search.ocl.ui 0.7.0.v200806130939 javax.mail 1.4.0.v200804091730 ch.ethz.iks.slp 1.0.0.RC4_v200806091030 org.eclipse.core.resources.jmx 1.0.0.v20070510 javax.wsdl 1.4.0.v200806030407 org.eclipse.wst.xml.ui 1.0.401.v200807240448 org.python.pydev 1.2.1 org.eclipse.birt.chart.ui.extension 2.3.0.v20080610 org.python.pydev.core 0.9.8.3 org.python.pydev.parser 0.9.7 org.eclipse.jem.util 2.0.100.v200805140020 org.eclipse.tptp.monitoring.lta.la.core 4.5.0.v200805270100 org.python.pydev.core 0.9.8.2 org.eclipse.jdt.junit.runtime 3.3.0.v20080603-2000 org.python.pydev.core 1.2.4 org.python.pydev.core 0.9.8.1 org.eclipse.ecf.discovery 2.0.0.v20080623-0046 org.apache.xml.serializer 2.7.1.v200806030322 org.python.pydev.core 0.9.8.7 org.python.pydev.core 0.9.8.6 org.eclipse.gmf.runtime.draw2d.ui.render.awt 1.1.0.v20080603-1553 com.windowtester.eclipse.help 3.5.1.200809042232 org.python.pydev.core 0.9.8.5 org.python.pydev.core 0.9.8.4 org.python.pydev 0.9.8.7 org.eclipse.birt.report.engine.emitter.ppt 2.3.0.v20080606 org.apache.commons.httpclient 3.1.0.v20080605-1935 com.windowtester.runtime.legacy 3.5.0.200806270034 org.eclipse.datatools.enablement.oda.xml.ui 1.1.0.v200805270900 org.python.pydev 0.9.8.3 org.eclipse.mylyn.compatibility 3.0.2.v20080918-1100-e3x org.python.pydev 0.9.8.4 org.python.pydev 0.9.8.5 org.eclipse.wst.common.project.facet.ui 1.3.0.v200805281731 org.eclipse.gmf.tooldef 2.0.0.v20080417-1610 org.python.pydev 0.9.8.6 org.eclipse.core.commands 3.4.0.I20080509-2000 org.python.pydev.jython 1.3.9 org.eclipse.datatools.modelbase.sql.edit 1.0.0.v200805152355 org.python.pydev 0.9.8.2 org.python.pydev 0.9.8.1 org.eclipse.emf.cdo.server.hibernate.libraries 1.0.0.v200806180411 org.eclipse.equinox.p2.ui.admin 1.0.0.v20080522-1735 org.eclipse.wst.common.core 1.1.201.v200806010600 org.eclipse.emf.compare.diff.edit 0.8.0.v200806180301 com.swtdesigner.layout.group.designer 6.7.0.200806270151 org.eclipse.ui.views.properties.tabbed 3.4.0.I20080527-2000 org.python.pydev.jython 1.2.2 org.eclipse.wst.common.emf 1.1.200.v200805140020 com.instantiations.packager.refactoring 2.5.1 com.instantiations.assist.eclipse.fragment.jdt 5.5.1 org.eclipse.datatools.connectivity.dbdefinition.genericJDBC 1.0.0.v200805152355 org.python.pydev.parser 1.0.7 org.eclipse.datatools.sqltools.data.ui 1.1.0.v200805310400 org.eclipse.buckminster.core 1.1.0.r09336 org.eclipse.mylyn.tasks.core 3.0.1.v20080721-2100-e3x org.eclipse.birt.report.designer.ui.samplesview 2.3.0.v20080606 org.eclipse.equinox.launcher 1.0.100.v20080509-1800 org.eclipse.birt.report.item.crosstab.ui 2.3.0.v20080606 org.eclipse.m2m.atl.adt.perspective 2.0.0.v200806101117 javax.servlet.jsp 2.0.0.v200806031607 com.swtdesigner 6.7.1.200809050053 org.eclipse.jet.ui 0.9.0.v20080527 org.eclipse.m2m.qvt.oml.common.ui 1.0.0.v20080611-1330 com.swtdesigner.layout.group 6.7.1.200809050053 org.eclipse.gmf.runtime.common.ui.services.action 1.1.0.v20080507-2230 org.eclipse.emf.search.ecore.ui 0.7.0.v200806130939 org.python.pydev 1.0.5 org.eclipse.emf.workspace.ui 1.2.0.v200805130238 com.instantiations.helpeditor.core.toc 1.3.4.200809042225 org.slf4j.extendable 1.4.3 org.python.pydev.core 1.3.14 org.eclipse.hyades.logging.core 4.3.200.v200804110100 org.eclipse.datatools.enablement.postgresql.ui 1.0.0.v200806060334 org.eclipse.gmf.graphdef 2.0.100.v20080528-1052 org.eclipse.mylyn.help.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.protocol.bittorrent 0.3.0 org.eclipse.birt.report.engine 2.3.0.v20080616 org.eclipse.datatools.connectivity.ui.dse 1.1.0.v200805152355 org.eclipse.mylyn.bugzilla.core 3.0.0.v20080619-1900 org.python.pydev.jython 1.3.4 org.python.pydev 0.9.0 org.eclipse.equinox.preferences.jmx 1.0.0.v20070510 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.1 org.eclipse.datatools.enablement.postgresql.dbdefinition 1.0.0.v200805152355 org.eclipse.m2m.qvt.oml.common.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.eclipse.tptp.monitoring.lta.logui 4.5.0.v200805141427 org.eclipse.birt.report.debug.ui 2.3.0.v200806102 org.eclipse.gmf.runtime.emf.ui 1.1.0.v20080516-1748 org.eclipse.ui.cheatsheets 3.3.100.v20080508 org.python.pydev 1.2.9 org.eclipse.birt.report.engine.emitter.wpml 2.3.0.v20080606 org.eclipse.help.appserver 3.1.300.v20080507 org.python.pydev.parser 1.3.9 com.xored.composer.ui 1.3.4.200806270212 org.eclipse.datatools.sqltools.tabledataeditor 1.0.0.v200805240400 org.eclipse.gmf.runtime.emf.type.core 1.1.0.v20080425-1959 org.python.pydev 1.3.7 com.ibm.icu.base 3.8.1.v20080530 org.python.pydev.ast 1.3.1 org.apache.batik.pdf 1.6.0.v200806031500 org.eclipse.emf.mapping.ui 2.4.0.v200806091234 org.eclipse.net4j.db.derby 1.0.0.v200806180305 org.eclipse.net4j.http.server 1.0.0.v200806180305 org.python.pydev.jython 1.3.17 org.python.pydev.jython 1.0.6 org.python.pydev.ast 1.2.3 org.eclipse.team.svn.sources 0.7.1.I20080612-1500 org.eclipse.uml2.diagram.usecase 0.8.0.v200806112132 org.eclipse.wst.sse.core 1.1.300.v200805221633 org.eclipse.birt.report.designer.ui 2.3.0.v20080606 org.eclipse.jdt.apt.ui 3.3.100.v20080407-1345 com.instantiations.eclipse.debug 5.3.2.200809042027 org.eclipse.gmf.codegen.ui 1.1.0.v20080512-1200 com.instantiations.designer.databinding 6.7.1.200809050053 org.python.pydev.core 1.0.1 com.windowtester.swt.runtime.gef 3.5.0.200806270034 com.instantiations.common.ui 5.3.2.200809042027 org.python.pydev 1.3.19 org.eclipse.ui.forms 3.3.100.v20080611 org.eclipse.birt.data 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase.ase.ui 1.0.1.v200805310538 org.polarion.eclipse.team.svn.connector 2.0.1.I20080612-1500 org.eclipse.emf.common.ui 2.4.0.v200806091234 org.eclipse.datatools.enablement.ibm.informix.dbdefinition 1.0.0.v200805152355 org.eclipse.wst.xsdeditor.doc.user 1.0.400.v200805150028 org.eclipse.emf.mint.doc 0.7.0.v200806172223 org.eclipse.buckminster.generic 1.0.0.r09319 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.1 org.eclipse.emf.validation.examples 1.2.0.v200805280204 org.eclipse.team.svn.core 0.7.1.I20080612-1500 org.python.pydev.ast 1.2.4 org.eclipse.emf.cdo.server.hibernate 1.0.0.v200806180411 org.python.pydev.jython 1.3.8 org.eclipse.gmf.xpand 1.1.0.v20080528-1052 org.eclipse.datatools.sqltools.data.core 1.0.0.v200805152355 org.eclipse.emf.ecoretools 0.8.0.v200806130600 org.python.pydev.core 1.3.18 org.eclipse.gmf.runtime.common.core 1.1.0.v20080425-1959 org.eclipse.emf 2.4.0.v200806091234 org.eclipse.emf.ecoretools.properties 0.8.0.v200806130600 org.python.pydev.core 1.2.7 org.python.pydev.parser 0.9.8 org.eclipse.datatools.enablement.ibm.db2.luw.ui 1.0.0.v200805160737 org.eclipse.mylyn.team.ui 3.0.0.v20080619-1900 org.eclipse.help.base 3.3.100.v20080617 org.eclipse.m2m.atl.doc 2.0.0.v200806101117 org.eclipse.net4j.examples 1.0.0.v200806180305 org.eclipse.birt.data.aggregation 2.3.0.v20080606 org.eclipse.gmf.examples 1.0.100.v20080425-1959 org.eclipse.emf.search.common 0.7.0.v200806130939 org.python.pydev.ast 1.3.17 org.eclipse.ecf.provider.filetransfer.ssl 1.0.0.v20080611-1715 org.python.pydev.core 1.0.3 org.eclipse.team.svn.core.nl1 0.7.1.I20080612-1500 org.eclipse.emf.cdo.server.hibernate.teneo 1.0.0.v200806180411 org.eclipse.wst.validation.ui 1.2.1.v200807292117 org.python.pydev.parser 1.0.3 org.python.pydev.ast 1.3.6 org.eclipse.search 3.4.0.v20080603-2000 org.eclipse.jet 0.9.0.v20080527 org.python.pydev 1.3.2 org.python.pydev.jython 1.2.6 org.python.pydev.parser 1.3.14 org.eclipse.datatools.oda.cshelp 1.0.0.v200805152355 org.eclipse.jdt.junit 3.4.0.v20080603-2000 org.eclipse.datatools.sqltools.debugger.core 1.0.0.v200805152355 org.mortbay.jetty 5.1.14.v200806031611 org.eclipse.equinox.p2.garbagecollector 1.0.0.v20080506-1939 org.eclipse.m2m.atl.adt.debug 2.0.0.v200806101117 org.eclipse.equinox.jmx.client 1.0.0.v20070515 org.python.pydev.core 1.3.5 org.eclipse.mylyn.bugzilla.core 3.0.1.v20080721-2100-e3x org.python.pydev.parser 0.9.8.3 org.python.pydev.parser 0.9.8.2 org.python.pydev.parser 0.9.8.1 org.eclipse.osgi.services 3.1.200.v20071203 org.python.pydev 1.0.4 org.eclipse.hyades.lta.logging.adapter 4.5.0.v200806121215 org.eclipse.datatools.sqltools.sqleditor 1.0.0.v200805152355 org.python.pydev.parser 0.9.8.7 org.python.pydev.parser 0.9.8.6 org.eclipse.gmf.runtime.emf.core 1.1.0.v20080425-1959 org.python.pydev.parser 0.9.8.5 org.eclipse.core.contenttype 3.3.0.v20080604-1400 org.eclipse.ecf.datashare 1.3.0.v20080623-0046 org.python.pydev.parser 0.9.8.4 org.eclipse.tptp.platform.common.ui 4.4.100.v200806110100 org.junit 3.8.2.v20080602-1318 com.instantiations.assist.eclipse.coverage 5.5.0.200806270255 javax.activation 1.1.0.v200806101325 com.instantiations.assist.eclipse.scheduler 5.5.1 javax.management 1.2.0.v200803061811 org.eclipse.emf.edit 2.4.0.v200806091234 org.eclipse.ecf.provider.discovery 2.0.0.v20080623-0046 org.eclipse.birt.chart.device.pdf 2.3.0.v20080417 org.eclipse.equinox.wireadmin 1.0.0.v20080407 org.python.pydev.ast 1.0.8 org.eclipse.net4j.buddies.server 1.0.0.v200806180305 org.eclipse.wst.internet.cache 1.0.301.v200805140020 com.windowtester.runtime 3.5.0.200806270034 org.mx4j.jmx 3.0.3.v200802291451 org.eclipse.pde.ui 3.4.0.v20080530 org.eclipse.ocl 1.2.0.v200806091438 org.eclipse.birt.cshelp 2.3.0.v20080617 org.eclipse.emf.query.doc 1.2.0.v200805130238 org.eclipse.pde.runtime 3.4.0.v20080530-1200 org.apache.axis 1.4.0.v200807230600 org.apache.log4j 1.2.13.v200806030600 org.eclipse.ui.intro 3.2.200.v20080610 com.instantiations.assist.eclipse.pattern 5.5.1 com.xored.swt.composer 1.3.4.200806270212 org.apache.batik.ext.awt 1.6.0.v200805290154 org.eclipse.emf.cdo.ui 1.0.0.v200806180411 org.eclipse.jface 3.4.0.I20080606-1300 com.windowtester.swt.runtime.gef 3.5.1.200809042232 org.eclipse.gmf.runtime.emf.type.ui 1.1.0.v20080425-1959 org.eclipse.uml2.uml 2.2.0.v200805141133 org.objectweb.asm 3.0.0.v200803061811 org.python.pydev.core 1.1.0 org.eclipse.ecf.discovery.ui 2.0.0.v20080623-0046 org.python.pydev 1.3.14 org.eclipse.gmf.runtime.diagram.ui.printing 1.1.0.v20080501-1739 org.eclipse.mylyn.ide.ant 3.0.2.v20080918-1100-e3x org.eclipse.xsd.example.installer 1.0.0.v200806091234 org.eclipse.uml2.diagram.examples.profile 0.8.0.v200806112132 org.eclipse.ui.intro.universal 3.2.200.v20080508 org.python.pydev.ast 0.9.7.99 org.eclipse.emf.codegen 2.4.0.v200806091234 org.eclipse.equinox.p2.metadata 1.0.0.v20080514-1900 org.eclipse.ecf.example.collab 1.3.0.v20080623-0046 org.python.pydev.parser 1.2.4 org.eclipse.birt.report.engine.emitter.html 2.3.0.v20080606 org.python.pydev.jython 1.3.16 org.eclipse.osgi 3.4.0.v20080605-1900 org.eclipse.emf.databinding 1.0.0.v200806091234 org.eclipse.help 3.3.100.v20080610 org.eclipse.net4j.db.hsqldb 1.0.0.v200806180305 org.eclipse.gmf.runtime.diagram.ui.dnd 1.1.0.v20080425-1959 org.eclipse.birt.report.model 2.3.0.v20080605 org.eclipse.datatools.enablement.finfo 1.5.1.v200805152355 org.eclipse.jsch.ui 1.1.100.I20080415 org.python.pydev 1.3.10 org.python.pydev.parser 1.3.6 org.eclipse.emf.mapping.ecore.editor 2.4.0.v200806091234 org.eclipse.datatools.sqltools.common.ui 1.0.0.v200805152355 org.eclipse.birt.report.engine.emitter.pdf 2.3.0.v20080606 org.python.pydev 1.2.8 com.instantiations.packager.help 2.5.1 org.eclipse.equinox.p2.directorywatcher 1.0.0.v20080505-1850 org.eclipse.draw2d 3.4.0.v20080529 org.eclipse.draw2d.source 3.4.0.v20080115-33-7w3119163_ org.eclipse.ecf.ui 2.0.0.v20080623-0046 org.eclipse.birt.report.data.oda.jdbc.dbprofile 2.3.0.v20080606 org.eclipse.equinox.security.win32.x86 1.0.0.v20080529-1600 org.eclipse.wst.xml.ui 1.0.400.v200806051910 org.eclipse.jdt.ui 3.4.0.v20080603-2000 org.eclipse.equinox.p2.ui 1.0.0.v20080530-1237 org.eclipse.hyades.lta.logging.adapter.ui 4.5.0.v200805132041 org.eclipse.mylyn.monitor.ui 3.0.0.v20080619-1900 org.python.pydev 0.9.1 org.eclipse.emf.ecore.sdo.doc 2.4.0.v200806091234 com.instantiations.eclipse.ast.editor 5.5.1 org.eclipse.ant.ui 3.3.0.v20080529 org.python.pydev.core 1.3.13 org.eclipse.gef.doc.isv 3.4.0.v20080606 org.apache.xml.resolver 1.2.0.v200806030312 org.eclipse.datatools.enablement.ibm.db2.iseries.dbdefinition 1.0.0.v200806100223 org.eclipse.birt 2.3.0.v20080304 org.eclipse.equinox.security 1.0.0.v20080512-1800 com.instantiations.tools 5.3.2.200809042027 org.eclipse.jdt.core.manipulation 1.2.0.v20080603-2000 org.eclipse.gmf.runtime.diagram.ui.printing.render 1.1.0.v20080425-1959 org.eclipse.net4j.buddies.ui 1.0.0.v200806180305 org.eclipse.emf.codegen.ui 2.4.0.v200806091234 org.eclipse.team.svn 0.7.1.I20080612-1500 org.eclipse.wst.command.env.infopop 1.0.100.v200805301544 org.eclipse.datatools.enablement.hsqldb.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.runtime.common.ui.services.properties 1.1.0.v20080425-1959 org.eclipse.emf.cheatsheets 2.4.0.v200806091234 org.eclipse.ecf.presence.collab.ui 1.2.0.v20080623-0046 org.eclipse.update.core 3.2.200.v20080515 org.eclipse.wst.command.env.core 1.0.204.v200805140020 org.apache.batik.swing 1.6.0.v200805290154 org.eclipse.birt.report.designer.samplereports 2.3.0.v20080606 org.python.pydev.parser 1.0.8 org.eclipse.xsd 2.4.0.v200806091234 com.instantiations.assist.eclipse.fragment.jdt 5.5.0 org.eclipse.emf.transaction 1.2.0.v200805130238 org.eclipse.mylyn.team.cvs 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.ui 1.0.0.v20080611-1330 org.eclipse.emf.validation.source 1.2.0.v200805130238-35-9oA55S5J8H5ADM org.eclipse.datatools.enablement.hsqldb 1.0.0.v200805152355 org.eclipse.wst.common.uriresolver 1.1.301.v200805140415 org.eclipse.equinox.jsp.jasper 1.0.100.v20080427-0830 org.eclipse.osgi.util 3.1.300.v20080303 org.eclipse.datatools.connectivity.oda.consumer 3.1.2.v200805230718 org.eclipse.emf.compare.source 0.8.0.v200806180301 org.python.pydev.core 1.3.19 org.eclipse.emf.query.examples 1.2.0.v200805130238 org.eclipse.buckminster.runtime 1.1.0.r09338 org.eclipse.datatools.enablement.sybase.asa.dbdefinition 1.0.0.v200805240040 org.eclipse.datatools.sqltools.sql 1.0.0.v200805152355 org.apache.batik.svggen 1.6.0.v200805290154 org.eclipse.buckminster.cvs 1.0.0.r09319 org.python.pydev.core 1.2.6 org.eclipse.equinox.simpleconfigurator 1.0.0.v20080604 org.eclipse.help.ui 3.3.100.v20080521 org.apache.batik.dom 1.6.0.v200805290154 org.python.pydev.parser 1.1.0 org.eclipse.ecf.server.generic 1.2.0.v20080623-0046 com.windowtester.swt.runtime.win32 3.5.0.200806270034 org.eclipse.emf.cdo.examples 1.0.0.v200806180411 org.eclipse.ecf.provider.remoteservice 1.3.0.v20080623-0046 org.eclipse.gmf.runtime.notation.edit 1.1.0.v20080507-1326 org.eclipse.core.filesystem 1.2.0.v20080604-1400 org.eclipse.m2m.qvt.oml.runtime.ui 1.0.0.v20080611-1330 org.eclipse.emf.cdo.server.hibernate.source 1.0.0.v200806180411 org.python.pydev.jython 1.3.7 org.eclipse.gmf.codegen.edit 2.1.0.v20080610-1132 org.eclipse.buckminster.pde 1.1.0.r09351 org.python.pydev.ast 1.2.5 org.python.pydev.core 1.0.2 org.python.pydev.ast 1.3.16 org.apache.batik.parser 1.6.0.v200805290154 org.python.pydev.parser 1.0.2 org.eclipse.wst.common.infopop 1.0.100.v200805301550 org.eclipse.ecf.remoteservice 2.0.0.v20080623-0046 org.python.pydev 1.3.1 org.python.pydev.jython 1.2.5 org.eclipse.emf.mapping 2.4.0.v200806091234 org.eclipse.emf.cdo.server.hibernate.id 1.0.0.v200806180411 com.windowtester.runtime.legacy 3.5.1.200809042232 org.python.pydev.ast 1.3.7 org.eclipse.datatools.enablement.oracle 1.0.0.v200805152355 org.python.pydev.parser 1.3.15 org.eclipse.emf.importer 2.4.0.v200806091234 org.eclipse.birt.example 2.3.0.v20080304 org.eclipse.birt.report.designer.ui.lib 2.3.0.v20080606 org.eclipse.emf.cdo.server.source 1.0.0.v200806180411 org.eclipse.gmf.runtime.common.ui.services 1.1.0.v20080612-1229 org.eclipse.datatools.sqltools.db.generic 1.0.0.v200805152355 org.eclipse.net4j 1.0.0.v200806180305 org.eclipse.jdt 3.4.0.v20080603-2000 org.eclipse.emf.cdo.source 1.0.0.v200806180411 org.eclipse.datatools.connectivity 1.1.0.v200805160228 com.instantiations.assist.eclipse.scheduler 5.5.0 org.eclipse.emf.ecore.sdo.source 2.4.0.v200806091234 org.eclipse.wst.sse.doc.user 1.1.0.v200805211530 org.python.pydev 0.9.7.99 org.eclipse.emf.transaction.source 1.2.0.v200805130238-23-8s733I3C59379I org.w3c.dom.svg 1.1.0.v200806040011 org.python.pydev.core 1.3.4 javax.xml.rpc 1.1.0.v200806030420 org.eclipse.ocl.uml.source 1.2.0.v200805130238-11-7w311916241349 com.instantiations.eclipse.ui 5.3.2.200806270030 org.eclipse.jface.text 3.4.0.v20080603-2000 org.apache.batik.xml 1.6.0.v200805290154 org.python.pydev 1.0.3 org.eclipse.gmf.bridge.ui.dashboard 2.0.0.v20080417-1610 org.apache.lucene 1.9.1.v20080530-1600 org.eclipse.emf.query.ocl 1.2.0.v200805130238 org.eclipse.uml2.uml.resources 2.2.0.v200805131030 org.eclipse.ecf.provider.r_osgi 2.0.0.v20080623-0046 org.eclipse.emf.importer.java 2.4.0.v200806091234 org.python.pydev.debug 1.3.20 org.eclipse.emf.ecore.xmi 2.4.0.v200806091234 org.python.pydev.mylyn 0.3.0 com.instantiations.assist.eclipse.pattern 5.5.0 org.eclipse.emf.source 2.4.0.v200806091234 org.eclipse.ui.browser 3.2.200.v20080507 org.eclipse.tptp.lta.sdb.epi 4.5.0.v200805132041 org.eclipse.net4j.doc 1.0.0.v200806180305 org.eclipse.gmf.bridge 1.1.0.v20080528-1052 com.instantiations.assist.eclipse.admin 5.5.1 org.eclipse.ecf.presence 1.3.0.v20080623-0046 org.eclipse.jet.editor 0.9.0.v20080226 org.eclipse.emf.mint 0.7.0.v200806172223 org.eclipse.ecf.provider 1.3.0.v20080623-0046 com.instantiations.assist.eclipse.core.ant 5.5.0 org.apache.axis 1.4.0.v200806030120 org.eclipse.equinox.p2.metadata.repository 1.0.0.v20080604 com.ibm.icu 3.8.1.v20080530 org.eclipse.gmf.runtime.diagram.ui.properties 1.1.0.v20080603-1553 org.eclipse.team.svn.mylyn.source 0.7.1.I20080612-1500 org.eclipse.ecf.provider.datashare 1.3.0.v20080623-0046 org.eclipse.birt.report.data.oda.sampledb 2.3.0.v20080606 org.eclipse.m2m.atl.drivers.emf4atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.providers.ide 1.1.0.v20080425-1959 org.python.pydev 0.8.0 org.eclipse.datatools.connectivity.sqm.server.ui 1.1.0.v200806050117 com.nordea.cd.dev.plugin.stubbuilder 1.0.2 org.eclipse.emf.mapping.xsd2ecore 2.4.0.v200806091234 org.python.pydev.parser 1.2.5 org.eclipse.xsd.mapping.editor 2.4.0.v200806091234 org.python.pydev.jython 1.3.15 org.eclipse.gmf.xpand.editor 1.0.0.v20080425-1959 org.eclipse.tptp.platform.lta.common 4.5.0.v200806050100 org.eclipse.buckminster.pde.ui 1.0.0.r09319 org.eclipse.emf.validation.ocl 1.2.0.v200805130238 org.eclipse.ui.console 3.3.0.v20080529-1300 org.eclipse.net4j.ui 1.0.0.v200806180305 org.eclipse.emf.workspace 1.2.0.v200805130238 org.python.pydev.ast 0.9.8.6 org.python.pydev.ast 0.9.8.5 org.eclipse.emf.teneo.annotations 1.0.0.v200806111928 org.python.pydev.ast 0.9.8.4 org.eclipse.ui.net 1.0.0.I20080605 org.python.pydev.ast 0.9.8.3 org.eclipse.net4j.db.source 1.0.0.v200806180305 org.eclipse.zest.core 1.0.0.v20080115 org.python.pydev.ast 0.9.8.2 org.eclipse.tptp.lta.log.epi 4.5.0.v200805132041 org.python.pydev.ast 0.9.8.1 org.python.pydev 1.3.13 org.eclipse.equinox.app 1.1.0.v20080421-2006 org.eclipse.equinox.p2.metadata.generator 1.0.0.v20080604 org.python.pydev 1.2.7 org.eclipse.emf.ocl.examples 1.2.0.v200805130238 org.eclipse.mylyn.jira.core 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.commons.net 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql.query 1.0.1.v200805152355 org.eclipse.datatools.sqltools.plan 1.0.0.v200805152355 com.swtdesigner.help 6.7.1.200809050053 org.eclipse.ecf.ssl 1.0.0.v20080611-1715 org.eclipse.team.cvs.core 3.3.100.I20080605 org.python.pydev.ast 0.9.8 com.instantiations.helpeditor.core.toc 1.3.4.200806270212 org.eclipse.core.databinding 1.1.0.I20080527-2000 org.eclipse.tptp.platform.common 4.3.200.v200805300100 org.eclipse.net4j.util.ui 1.0.0.v200806180305 org.eclipse.mylyn.commons.core 3.0.0.v20080619-1900 org.python.pydev 1.3.9 org.eclipse.emf.search.common.ui 0.7.0.v200806130939 org.eclipse.m2m.atl.engine.emfvm 2.0.0.v200806101117 org.eclipse.uml2.diagram.csd 0.8.0.v200806112132 org.python.pydev.parser 1.3.7 org.eclipse.team.svn.ui 0.7.1.I20080612-1500 org.python.pydev.core 1.3.12 org.eclipse.datatools.modelbase.sql.query.edit 1.0.0.v200806070329 com.instantiations.packager.core 2.5.1 com.windowtester.swing.runtime 3.5.0.200806270034 org.eclipse.update.ui 3.2.100.v20080318 org.apache.commons.codec 1.2.0.v20080530-1550 org.eclipse.mylyn.bugzilla.core 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.editor.ui 1.0.0.v20080611-1330 org.eclipse.m2m.qvt.oml.samples 1.0.0.v20080611-1330 org.eclipse.mylyn.context.core 3.0.0.v20080619-1900 org.eclipse.xsd.source 2.4.0.v200806091234 org.eclipse.gmf.runtime.diagram.core 1.1.0.v20080425-1959 org.eclipse.m2m.atl.drivers.uml24atl 2.0.0.v200806101117 com.instantiations.eclipse.util 5.3.2.200809042027 org.eclipse.emf.ecore.sdo 2.4.0.v200806091234 com.instantiations.eclipse.startup 5.3.2.200809042027 org.eclipse.gmf 1.0.0.v20080425-1959 org.python.pydev 0.9.2 org.apache.batik.util.gui 1.6.0.v200805290154 org.python.pydev.ast 0.9.8.7 com.nordea.cd.dev.plugin.wsdl2java 1.0.2 org.eclipse.datatools.enablement.sybase.models 1.0.0.v200805152355 org.python.pydev.ast 1.0.1 org.eclipse.emf.compare.diff 0.8.0.v200806180301 org.eclipse.birt.report.designer 2.3.0.v200806102 org.eclipse.equinox.http.registry 1.0.100.v20080427-0830 ch.ethz.iks.r_osgi.remote 1.0.0.RC2_v20080623-0046 org.eclipse.gmf.graphdef.codegen.ui 1.0.100.v20080425-1959 org.eclipse.m2m.qvt.oml.editor.source 1.0.0.v20080611-1330-1--7w3119172202441 org.sat4j.pb 2.0.0.v20080602 org.eclipse.wst.validation 1.2.1.v200807292117 org.apache.batik.util 1.6.0.v200805290154 org.eclipse.equinox.transforms.hook 1.0.0.v20080610 org.eclipse.emf.teneo.hibernate 1.0.0.v200806111928 org.eclipse.uml2.examples 2.1.0.v200805131030 org.eclipse.mylyn.java.tasks 3.0.2.v20080918-1100-e3x org.eclipse.equinox.preferences 3.2.200.v20080421-2006 com.instantiations.assist.eclipse.fragment.swt 5.5.0 org.eclipse.ocl.doc 1.2.0.v200805130238 org.eclipse.jdt.apt.core 3.3.100.v20080513-1235 org.eclipse.birt.report.engine.fonts 2.3.0.v20080606 org.eclipse.mylyn.monitor.ui 3.0.2.v20080918-1100-e3x org.eclipse.gmf.tooldef.edit 2.0.0.v20080610-1132 org.eclipse.gmf.runtime.draw2d.ui.render 1.1.0.v20080507-2230 com.windowtester.swt.platform.ext 3.5.0.200806270034 org.eclipse.ecf.example.clients 1.3.0.v20080623-0046 org.eclipse.core.net 1.1.0.I20080604 org.eclipse.wst.xsd.core 1.1.301.v200807240448 org.eclipse.datatools.connectivity.oda.flatfile 3.0.6.v200805261930 org.python.pydev.refactoring 1.3.20 org.python.pydev.parser 1.0.1 org.python.pydev.ast 1.3.19 org.eclipse.equinox.registry.jmx 1.0.0.v20080610-1530 com.instantiations.eclipse.model.jsp 5.5.0 org.eclipse.mylyn.context.ui 3.0.2.v20080918-1100-e3x org.python.pydev.core 1.0.5 org.eclipse.hyades.lta.resources.database 4.5.0.v200805271330 org.python.pydev 0.6.1 org.python.pydev.parser 1.3.12 org.eclipse.equinox.p2.console 1.0.0.v20080514-1900 org.eclipse.mylyn.commons.net 3.0.1.v20080721-2100-e3x org.eclipse.net4j.jms.api 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.lexer 1.0.1.v200805152355 org.python.pydev.ast 1.3.4 org.python.pydev 1.3.4 org.python.pydev.jython 1.2.8 org.python.pydev 0.8.5 org.python.pydev 0.5.3 org.eclipse.wst.sse.ui 1.1.1.v200808141919 org.eclipse.emf.query 1.2.0.v200805130238 org.eclipse.core.runtime.compatibility 3.2.0.v20071008 org.eclipse.gmf.runtime.notation 1.1.0.v20080507-1326 org.eclipse.birt.report.data.oda.sampledb.ui 2.3.0.v20080606 org.python.pydev.ast 1.2.6 com.instantiations.eclipse.mail.ui 5.5.1 org.eclipse.zest.layouts 1.0.0.v20080226 org.python.pydev.jython 1.3.6 org.eclipse.net4j.jms.admin 1.0.0.v200806180305 org.eclipse.core.databinding.beans 1.1.0.I20080508-2000a org.python.pydev 1.1.0 org.python.pydev.core 1.3.20 org.eclipse.gmf.runtime.emf.commands.core 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.common.ui.services.dnd.ide 1.1.0.v20080425-1959 org.eclipse.datatools.connectivity.apache.derby 1.0.1.v200805152355 org.python.pydev.core 1.2.9 org.eclipse.mylyn.context.core 3.0.2.v20080918-1100-e3x org.eclipse.equinox.p2.artifact.repository 1.0.0.v20080609-0850 org.eclipse.gef 3.4.0.v20080526 org.eclipse.gmf.runtime.common.ui 1.1.0.v20080512-1200 org.eclipse.emf.ecoretools.tabbedproperties 0.8.0.v200806130600 com.instantiations.assist.eclipse.core.ant 5.5.1 org.eclipse.emf.ecore.change 2.4.0.v200806091234 org.eclipse.jet.doc 0.9.0.v20080522 org.eclipse.emf.transaction.examples 1.2.0.v200806051817 org.eclipse.gmf.runtime.draw2d.ui 1.1.0.v20080610-1132 org.eclipse.equinox.jmx.server.rmi 1.0.0.v20070510 org.eclipse.ecf.examples.remoteservices.common 1.0.100.v20080623-0046 org.eclipse.wst.standard.schemas 1.0.102.v200807220733 org.eclipse.equinox.p2.jarprocessor 1.0.0.v20080514-1900 org.eclipse.birt.report.data.oda.jdbc 2.3.0.v20080610 com.windowtester.runner 3.5.0.200806270034 com.windowtester.swt.codegen 3.5.1.200809042232 org.eclipse.emf.cdo.tests.model2.edit 1.0.0.v200806180411 javax.wsdl 1.5.1.v200806030408 org.eclipse.datatools.enablement.sap.maxdb.ui 1.0.0.v200805152355 org.eclipse.equinox.launcher.win32.win32.x86 1.0.100.v20080509-1800 org.eclipse.birt.core 2.3.0.v20080606 javax.servlet 2.5.0.v200806031605 org.eclipse.uml2.codegen.ecore.ui 1.4.0.v200805131030 com.windowtester.swt.recorder 3.5.0.200806270034 org.eclipse.mylyn 3.0.1.v20080721-2100-e3x org.eclipse.uml2.search.ocl 0.7.0.v200806130939 org.python.pydev.core 1.3.3 org.eclipse.core.jobs 3.4.0.v20080512 org.python.pydev.core 0.9.5 org.eclipse.emf.validation.ui.ide 1.2.0.v200805130238 org.python.pydev 1.0.2 org.eclipse.wst.validation.ui 1.2.0.v200805262011 com.windowtester.swing.recorder 3.5.1.200809042232 com.instantiations.helpeditor.help 1.3.4.200809042225 org.eclipse.gmf.map.edit 2.1.0.v20080610-1132 org.eclipse.emf.ecore.edit 2.4.0.v200806091234 org.eclipse.datatools.enablement.msft.sqlserver.dbdefinition 1.0.0.v200805152355 org.mortbay.jetty.util 6.1.7.v200806031612 org.eclipse.datatools.sqltools.parsers.sql 1.0.1.v200805152355 org.eclipse.xsd.doc 2.4.0.v200806091234 org.eclipse.jdt.doc.isv 3.4.0.v20080612-1340 org.eclipse.jdt.apt.pluggable.core 1.0.100.v20080407-1345 org.eclipse.ecf.provider.bittorrent 0.3.0.v20080623-0046 org.eclipse.mylyn.monitor.ui 3.0.1.v20080721-2100-e3x org.python.pydev.jython 1.0.4 org.eclipse.wst.common.project.facet.ui 1.3.1.v200807301432 javax.xml.bind 2.0.0.v20080604-1500 org.apache.derby.core 10.3.1.4 org.eclipse.birt.report.debug.core 2.3.0.v200806102 org.python.pydev.parser 1.3.4 org.eclipse.jdt.debug.ui 3.3.0.v20080603 org.python.pydev.help 1.3.20 org.python.pydev 1.3.12 org.eclipse.gef.examples.ui.pde 3.4.0.v20080226 org.eclipse.ecf.provider.jmdns 2.0.0.v20080623-0046 org.eclipse.xsd.editor 2.4.0.v200806091234 org.python.pydev 1.2.6 org.eclipse.buckminster.generic.ui 1.0.0.r09319 org.eclipse.emf.ocl 1.1.100.v200805130238 org.eclipse.emf.search.ecore 0.7.0.v200806130939 org.eclipse.wst.common.frameworks.ui 1.1.200.v200805221400 org.eclipse.emf.ecoretools.doc 0.8.0.v200806130600 org.eclipse.wst.sse.ui.infopop 1.0.200.v200805301545 org.eclipse.tptp.platform.common.ui.trace 4.3.200.v200805290100 org.eclipse.net4j.jms.server 1.0.0.v200806180305 org.eclipse.ecf.filetransfer.ui 1.4.0.v20080623-0046 org.eclipse.birt.chart.device.swt 2.3.0.v20080522 org.eclipse.wst.xsd.ui 1.2.101.v200806051910 org.eclipse.emf.cdo.examples.source 1.0.0.v200806180411 org.eclipse.birt.report.designer.ui.lib.explorer 2.3.0.v20080606 org.mozilla.rhino 1.6.7.v20080214 org.python.pydev 1.3.16 org.eclipse.buckminster.ant 1.1.0.r09351 org.eclipse.equinox.metatype 1.0.0.v20070827 org.eclipse.m2m.atl.adt.wizard 2.0.0.v200806101117 org.eclipse.wst.command.env 1.0.305.v200805281530 org.eclipse.swt.jmx 1.0.0.v20070510 org.eclipse.emf.cdo.common 1.0.0.v200806180411 org.eclipse.ecf.examples.remoteservices.client 1.0.100.v20080623-0046 org.python.pydev.jython 1.3.14 org.python.pydev.parser 1.2.6 org.eclipse.emf.ecoretools.diagram.ui.outline 0.8.0.v200806130600 org.eclipse.emf.teneo.eclipse 1.0.0.v200806111928 org.eclipse.emf.cdo.tests.mango 1.0.0.v200806180411 org.eclipse.net4j.buddies.common 1.0.0.v200806180305 org.eclipse.net4j.buddies.chat 1.0.0.v200806180305 org.eclipse.mylyn.bugzilla.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.0 org.eclipse.datatools.enablement.sybase.ase.dbdefinition 1.0.0.v200805240040 org.apache.ant 1.7.0.v200803061910 org.eclipse.datatools.connectivity.oda.design 3.0.6.v200805152355 org.eclipse.emf.ocl.doc 1.1.100.v200805130238 org.eclipse.tptp.lta.gla.ui.epi 4.5.0.v200805160100 org.eclipse.equinox.jmx.server 1.0.0.v20071015 org.eclipse.wst.xml.core 1.1.300.v200806051910 org.eclipse.datatools.connectivity.oda.template.ui 3.0.6.v200805152355 org.python.pydev.ast 1.0.2 org.eclipse.birt.report.data.adapter 2.3.0.v20080606 org.eclipse.birt.chart.runtime 2.3.0.v20080304 org.eclipse.net4j.ui.source 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.query 1.0.1.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.1 org.eclipse.wst.dtd.ui 1.0.300.v200805152207 org.eclipse.mylyn.java.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.connectivity.oda.design.ui 3.0.6.v200805152355 org.eclipse.birt.report.designer.core 2.3.0.v200806102 org.eclipse.buckminster.jdt 1.0.0.r09319 org.eclipse.buckminster.p4 1.0.0.r09319 org.eclipse.ecf.core.source 2.0.0.v20080623-0046 org.eclipse.birt.report.runtime 2.3.0.v20080304 org.python.pydev.ast 1.1.0 com.windowtester.swt.runtime 3.5.1.200809042232 org.eclipse.uml2.doc 2.2.0.v200805201350 org.eclipse.mylyn.context.core 3.0.1.v20080721-2100-e3x org.eclipse.gmf.runtime.notation.providers 1.1.0.v20080425-1959 org.eclipse.tptp.platform.lta.log.doc.user 4.5.0.v200805132041 org.eclipse.team.svn.help 0.7.1.I20080612-1500 org.python.pydev 0.9.3 com.windowtester.swt.runtime.win32 3.5.1.200809042232 org.eclipse.m2m.qvt.oml.ocl.emf.libraries 1.0.0.v20080611-1330 org.eclipse.hyades.lta.analysis.engine 4.5.0.v200805271330 org.python.pydev.core 1.3.11 org.eclipse.datatools.connectivity.sqm.core 1.0.1.v200806041052 org.eclipse.equinox.jmx.server.xmlrpc 1.0.0.v20070608 org.eclipse.platform 3.3.100.v200806172000 org.eclipse.ui 3.4.0.I20080610-1200 org.eclipse.net4j.buddies.chat.ui 1.0.0.v200806180305 org.eclipse.emf.search.ecore.ocl 0.7.0.v200806130939 org.eclipse.gmf.codegen 2.1.0.v20080610-1132 org.eclipse.emf.teneo 1.0.0.v200806111928 org.eclipse.datatools.connectivity.oda.flatfile.ui 3.0.6.v200805261930 org.python.pydev.core 1.0.4 org.eclipse.equinox.p2.extensionlocation 1.0.0.v20080523-0001 org.eclipse.buckminster.remote.cloudsmith 1.0.0.r09319 org.python.pydev.ast 1.3.18 org.eclipse.birt.report.engine.dataextraction.csv 2.3.0.v200806102 org.eclipse.equinox.log 1.1.0.v20080414 org.python.pydev.parser 1.3.13 org.python.pydev 1.3.3 com.windowtester.eclipse.help 3.5.0.200806270034 org.python.pydev.jython 1.2.7 org.eclipse.m2m.qvt.oml.emf.util.ui 1.0.0.v20080611-1330 org.eclipse.gmf.runtime.common.ui.printing 1.1.0.v20080425-1959 org.python.pydev.ast 1.3.5 org.eclipse.uml2.uml.ecore.exporter 2.2.0.v200805131030 org.eclipse.equinox.event 1.1.0.v20080225 org.eclipse.epp.usagedata.gathering 1.0.0.R200806162215 com.instantiations.assist.eclipse.fragment.swt 5.5.1 org.eclipse.emf.cdo.server 1.0.0.v200806180411 org.eclipse.core.filesystem.win32.x86 1.1.0.v20080604-1400 org.eclipse.datatools.enablement.ibm.db2.zseries 1.0.0.v200805152355 com.windowtester.swt.platform.ext 3.5.1.200809042232 org.eclipse.birt.chart.examples 2.3.0.v20080612 org.eclipse.gmf.bridge.ui 1.1.100.v20080417-1610 org.eclipse.emf.doc 2.4.0.v200806091234 org.eclipse.emf.ecoretools.diagram 0.8.0.v200806130600 org.eclipse.ecf.provider.filetransfer.efs 1.5.0.v20080623-0046 org.eclipse.mylyn.commons.net 3.0.0.v20080619-1900 org.python.pydev.core 1.2.8 org.eclipse.datatools.modelbase.dbdefinition 1.0.0.v200805152355 javax.management.remote 1.0.0.v200803061811 org.eclipse.net4j.util 1.0.0.v200806180305 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.0 org.eclipse.ui.navigator.resources 3.3.100.I20080606-1300 org.apache.lucene.analysis 1.9.1.v20080530-1600 org.python.pydev.jython 1.3.5 org.eclipse.m2m.atl.adt.builder 2.0.0.v200806101117 org.eclipse.mylyn.monitor.core 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.2.7 com.instantiations.eclipse.mail.ui 5.5.0 org.eclipse.tptp.platform.models.lta 4.5.0.v200805132041 org.eclipse.mylyn.commons.core 3.0.1.v20080721-2100-e3x org.eclipse.team.svn.nl1 0.7.1.I20080612-1500 org.eclipse.birt.report.data.oda.jdbc.dbprofile.ui 2.3.0.v20080606 org.eclipse.pde 3.4.0.v20080603 org.eclipse.net4j.jms.server.jdbc 1.0.0.v200806180305 org.eclipse.pde.doc.user 3.3.0.v20080611-1530 org.eclipse.core.runtime.compatibility.auth 3.2.100.v20070502 org.eclipse.tptp.platform.iac.administrator 4.4.100.v200806120100 org.eclipse.emf.importer.ecore 2.4.0.v200806091234 org.eclipse.equinox.jmx.client.xmlrpc 1.0.0.v20070515 org.eclipse.equinox.jmx.common 1.0.0.v20070510 org.eclipse.datatools.enablement.ibm.informix.ui 1.0.0.v200805160737 com.instantiations.installer 2.5.1 org.eclipse.hyades.lta.logging.parsers 4.5.0.v200805271330 org.eclipse.uml2.diagram.profile 0.8.0.v200806112132 org.eclipse.datatools.enablement.jdt.classpath 1.0.1.v200805152355 org.eclipse.emf.validation.ocl.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.net4j.buddies 1.0.0.v200806180305 net.sourceforge.lpg.lpgjavaruntime 1.1.0.v200803061910 org.eclipse.emf.ecore.editor 2.4.0.v200806091234 org.apache.commons.lang 2.3.0.v200803061910 org.eclipse.ocl.uml 1.2.0.v200805130238 org.eclipse.emf.mapping.ecore2ecore 2.4.0.v200806091234 com.swtdesigner.fragment.jdt.core 6.7.0.200806270151 org.eclipse.ecf.provider.xmpp 2.0.0.v20080623-0046 org.eclipse.wst.common.modulecore 1.1.201.v200808071700 org.eclipse.mylyn.jira.ui 3.0.2.v20080918-1100-e3x org.eclipse.draw2d.doc.isv 3.4.0.v20080606 org.python.pydev.core 1.3.2 org.eclipse.mylyn.compatibility 3.0.0.v20080619-1900 org.eclipse.buckminster.maven 1.1.0.r09319 org.eclipse.buckminster.cmdline 1.0.0.r09319 org.apache.batik.css 1.6.0.v200805290154 org.eclipse.ecf.telephony.call.ui 1.2.0.v20080623-0046 org.eclipse.wst.common.emfworkbench.integration 1.1.200.v200805140020 org.python.pydev 1.0.1 org.eclipse.datatools.enablement.ibm.db2.luw.dbdefinition 1.0.0.v200805152355 org.eclipse.team.svn.resource.ignore.rules.jdt.source 0.7.1.I20080612-1500 org.eclipse.ecf.server 1.3.0.v20080623-0046 org.python.pydev 1.2.5 org.python.pydev.core 1.2.1 org.eclipse.datatools.sqltools.sqlscrapbook 1.0.0.v200806021003 org.eclipse.birt.chart.reportitem 2.3.0.v20080610 org.eclipse.uml2.diagram.codegen 0.8.0.v200806112132 org.eclipse.xsd.edit 2.4.0.v200806091234 org.eclipse.buckminster.opml 1.0.0.r09319 org.python.pydev.parser 1.3.5 org.eclipse.gmf.runtime.diagram.ui 1.1.0.v20080610-1132 org.eclipse.ocl.source 1.2.0.v200805130238-34-9oA55S5I6M7JBK com.windowtester.eclipse.ui 3.5.0.200806270034 org.eclipse.tptp.platform.agentcontroller 4.2.200.v200806162043 org.python.pydev 1.3.11 org.eclipse.datatools.connectivity.apache.derby.ui 1.0.0.v200805160737 org.eclipse.datatools.sqltools.routineeditor 1.0.0.v200805261703 org.eclipse.wst.xsd.ui 1.2.102.v200808141745 org.eclipse.equinox.http 1.0.200.v20080421-2006 org.jivesoftware.smack 2.2.1 org.eclipse.mylyn.compatibility 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.java.ui 3.0.0.v20080619-1900 org.eclipse.core.variables 3.2.100.v20080529-1300 org.python.pydev.jython 1.3.13 org.python.pydev.parser 1.3.20 org.eclipse.tptp.platform.models.hierarchy 4.5.0.v200806120100 org.eclipse.ecf.examples.updatesite.client 1.0.100.v20080623-0046 org.eclipse.datatools.enablement.msft.sqlserver.ui 1.0.0.v200805160737 org.eclipse.datatools.enablement.mysql 1.0.0.v200805152355 org.eclipse.jdt.debug 3.4.0.v20080604 org.antlr.runtime 3.0.0.v200803061811 org.python.pydev.parser 1.2.7 org.eclipse.hyades.execution 4.4.200.v200806120100 org.eclipse.ecf.provider.ui 1.3.0.v20080623-0046 org.eclipse.birt.chart.cshelp 2.3.0.v20080616 org.eclipse.buckminster.p4.ui 1.0.0.r09319 org.python.pydev 1.3.15 org.eclipse.datatools.enablement.ibm.ui 1.0.0.v200805152355 org.eclipse.buckminster.sax 1.0.0.r09175 org.eclipse.equinox.supplement 1.1.0.v20080421-2006 org.eclipse.wst.common.frameworks 1.1.200.v200805140020 org.eclipse.mylyn 3.0.2.v20080918-1100-e3x org.eclipse.gmf.map 2.1.0.v20080521 org.eclipse.wst.standard.schemas 1.0.101.v200806010600 org.python.pydev.ast 1.0.3 org.eclipse.m2m.qvt.oml.runtime 1.0.0.v20080611-1330 org.eclipse.mylyn.ide.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.sqltools.sqlbuilder 1.0.0.v200806070500 org.eclipse.datatools.modelbase.derby 1.0.0.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.0 org.eclipse.emf.compare.ui 0.8.0.v200806180301 org.eclipse.ecf.provider.filetransfer.scp 2.0.0.v20080623-0046 org.eclipse.uml2.search.ocl.ui 0.7.0.v200806130939 org.eclipse.mylyn.context.ui 3.0.1.v20080721-2100-e3x org.python.pydev.templates 1.3.20 org.eclipse.gmf.runtime.diagram.ui.resources.editor 1.1.0.v20080425-1959 org.eclipse.gmf.examples.ui.pde 1.0.200.v20080425-1959 org.eclipse.buckminster.installer 1.0.0.r09319 org.eclipse.m2m.atl.examples 2.0.0.v200806101117 org.eclipse.datatools.modelbase.sql.xml.query 1.0.0.v200805152355 org.eclipse.emf.search.doc 0.7.0.v200806130939 org.eclipse.datatools.enablement.oracle.dbdefinition 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.0 javax.xml.bind 2.0.0.v200803061811 org.apache.xmlrpc 3.0.0.v20080530-1550 org.eclipse.ui.views.log 1.0.0.v20080522-2200 org.python.pydev.core 1.3.10 org.eclipse.ecf.examples.updatesite.server 1.0.100.v20080623-0046 org.eclipse.birt.core.ui 2.3.0.v20080515 org.eclipse.core.filebuffers 3.4.0.v20080603-2000 org.eclipse.mylyn.team.ui 3.0.1.v20080721-2100-e3x org.eclipse.wst.command.env 1.0.306.v200807231700 org.eclipse.team.cvs.ssh2 3.2.200.I20080604 org.eclipse.emf.search.ecore.ocl.ui 0.7.0.v200806130939 org.eclipse.ecf.example.collab.editor 1.0.200.v20080623-0046 org.eclipse.ecf.provider.jslp 2.0.0.v20080623-0046 org.eclipse.datatools.sqltools.result 1.0.0.v200805301309 org.eclipse.emf.teneo.jpox 1.0.0.v200806111928 org.eclipse.gmf.runtime.emf.clipboard.core 1.1.0.v20080425-1959 com.instantiations.eclipse.ast.editor 5.5.0 org.eclipse.mylyn.tasks.bugs 3.0.2.v20080918-1100-e3x org.eclipse.jsch.core 1.1.100.I20080604 org.eclipse.pde.core 3.4.0.v20080604-2000 org.python.pydev 0.9.4 org.python.pydev.jython 1.3.0
-1 x2430 +1 x16 +1 x528 +1 x118 +1 x17 +1 x21 +1 x34 +1 x599 +1 x658 +1 x659 +1 x35 +1 x660 +1 x40 +1 x44 +1 x661 +1 x50 +1 x662 +1 x51 +1 x101 +1 x103 +1 x112 +1 x663 +1 x125 +1 x191 +1 x53 +1 x664 +1 x665 +1 x666 +1 x162 +1 x167 +1 x667 +1 x326 +1 x188 +1 x187 +1 x173 +1 x203 +1 x192 +1 x190 +1 x668 +1 x578 +1 x669 +1 x670 +1 x208 +1 x213 +1 x671 +1 x223 +1 x672 +1 x229 +1 x230 +1 x231 +1 x673 +1 x674 +1 x675 +1 x676 +1 x248 +1 x251 +1 x252 +1 x677 +1 x678 +1 x253 +1 x260 +1 x87 +1 x264 +1 x267 +1 x272 +1 x291 +1 x679 +1 x680 +1 x681 +1 x46 +1 x682 +1 x297 +1 x298 +1 x313 +1 x683 +1 x684 +1 x314 +1 x685 +1 x686 +1 x333 +1 x498 +1 x334 +1 x687 +1 x339 +1 x688 +1 x348 +1 x350 +1 x689 +1 x355 +1 x357 +1 x690 +1 x185 +1 x691 +1 x360 +1 x692 +1 x693 +1 x694 +1 x366 +1 x695 +1 x18 +1 x367 +1 x382 +1 x696 +1 x392 +1 x697 +1 x461 +1 x698 +1 x95 +1 x617 +1 x699 +1 x114 +1 x413 +1 x464 +1 x700 +1 x80 +1 x65 +1 x701 +1 x702 +1 x422 +1 x703 +1 x423 +1 x704 +1 x427 +1 x705 +1 x429 +1 x706 +1 x707 +1 x708 +1 x432 +1 x433 +1 x709 +1 x710 +1 x159 +1 x711 +1 x712 +1 x434 +1 x331 +1 x713 +1 x714 +1 x715 +1 x436 +1 x444 +1 x451 +1 x501 +1 x519 +1 x197 +1 x513 +1 x512 +1 x716 +1 x514 +1 x717 +1 x516 +1 x47 +1 x718 +1 x719 +1 x534 +1 x720 +1 x721 +1 x722 +1 x530 +1 x723 +1 x724 +1 x532 +1 x531 +1 x533 +1 x725 +1 x726 +1 x402 +1 x26 +1 x727 +1 x552 +1 x41 +1 x728 +1 x729 +1 x560 +1 x730 +1 x168 +1 x731 +1 x582 +1 x592 +1 x586 +1 x593 +1 x595 +1 x732 +1 x733 +1 x596 +1 x734 +1 x735 +1 x597 +1 x602 +1 x610 +1 x129 +1 x460 +1 x736 +1 x623 +1 x737 +1 x738 +1 x739 +1 x634 +1 x740 +1 x635 +1 x636 +1 x204 +1 x645 +1 x741 +1 x647 +1 x648 +1 x38 +1 x649 +1 x652 +1 x742 +1 x380 +1 x88 +1 x653 +1 x655 +1 x743 +1 x477 +1 x744 +1 x745 +1 x198 +1 x746 +1 x747 +1 x175 +1 x303 +1 x748 +1 x220 +1 x749 +1 x750 +1 x751 +1 x752 +1 x753 +1 x340 +1 x217 +1 x754 +1 x755 +1 x756 +1 x757 +1 x758 +1 x759 +1 x492 +1 x760 +1 x408 +1 x761 +1 x72 +1 x762 +1 x763 +1 x764 +1 x765 +1 x184 +1 x766 +1 x510 +1 x73 +1 x767 +1 x768 +1 x769 +1 x374 +1 x770 +1 x771 +1 x14 +1 x772 +1 x773 +1 x774 +1 x775 +1 x776 +1 x454 +1 x777 +1 x344 +1 x178 +1 x778 +1 x779 +1 x186 +1 x347 +1 x780 +1 x781 +1 x782 +1 x783 +1 x784 +1 x785 +1 x786 +1 x787 +1 x788 +1 x789 +1 x790 +1 x791 +1 x792 +1 x625 +1 x793 +1 x794 +1 x472 +1 x795 +1 x796 +1 x797 +1 x798 +1 x521 +1 x799 +1 x800 +1 x801 +1 x802 +1 x525 +1 x91 +1 x803 +1 x804 +1 x805 +1 x806 +1 x807 +1 x587 +1 x808 +1 x315 +1 x809 +1 x810 +1 x811 +1 x812 +1 x813 +1 x814 +1 x815 +1 x816 +1 x68 +1 x817 +1 x179 +1 x486 +1 x818 +1 x410 +1 x819 +1 x820 +1 x821 +1 x822 +1 x823 +1 x824 +1 x825 +1 x826 +1 x827 +1 x638 +1 x828 +1 x829 +1 x830 +1 x372 +1 x831 +1 x832 +1 x9 +1 x263 +1 x324 +1 x411 +1 x833 +1 x834 +1 x835 +1 x836 +1 x837 +1 x838 +1 x839 +1 x430 +1 x840 +1 x381 +1 x89 +1 x518 +1 x328 +1 x841 +1 x621 +1 x842 +1 x843 +1 x330 +1 x844 +1 x57 +1 x153 +1 x845 +1 x846 +1 x48 +1 x847 +1 x70 +1 x848 +1 x849 +1 x850 +1 x467 +1 x851 +1 x852 +1 x853 +1 x854 +1 x855 +1 x856 +1 x857 +1 x858 +1 x447 +1 x83 +1 x859 +1 x860 +1 x861 +1 x82 +1 x862 +1 x863 +1 x74 +1 x864 +1 x632 +1 x865 +1 x866 +1 x867 +1 x5 +1 x868 +1 x869 +1 x870 +1 x871 +1 x872 +1 x361 +1 x873 +1 x604 +1 x874 +1 x875 +1 x876 +1 x594 +1 x877 +1 x183 +1 x289 +1 x495 +1 x138 +1 x194 +1 x143 +1 x878 +1 x879 +1 x85 +1 x36 +1 x880 +1 x881 +1 x177 +1 x882 +1 x883 +1 x884 +1 x885 +1 x886 +1 x887 +1 x888 +1 x889 +1 x370 +1 x219 +1 x890 +1 x891 +1 x892 +1 x893 +1 x894 +1 x895 +1 x24 +1 x896 +1 x897 +1 x898 +1 x899 +1 x900 +1 x901 +1 x902 +1 x180 +1 x903 +1 x904 +1 x349 +1 x905 +1 x906 +1 x221 +1 x10 +1 x907 +1 x908 +1 x193 +1 x909 +1 x910 +1 x911 +1 x912 +1 x913 +1 x474 +1 x914 +1 x915 +1 x244 +1 x916 +1 x917 +1 x176 +1 x918 +1 x919 +1 x920 +1 x921 +1 x75 +1 x922 +1 x923 +1 x924 +1 x925 +1 x926 +1 x927 +1 x928 +1 x929 +1 x930 +1 x931 +1 x932 +1 x343 +1 x933 +1 x327 +1 x934 +1 x935 +1 x936 +1 x937 +1 x90 +1 x938 +1 x939 +1 x940 +1 x941 +1 x643 +1 x942 +1 x943 +1 x147 +1 x944 +1 x945 +1 x946 +1 x947 +1 x948 +1 x949 +1 x950 +1 x165 +1 x951 +1 x952 +1 x953 +1 x954 +1 x955 +1 x956 +1 x249 +1 x957 +1 x401 +1 x958 +1 x959 +1 x132 +1 x304 +1 x960 +1 x961 +1 x962 +1 x963 +1 x964 +1 x371 +1 x965 +1 x966 +1 x967 +1 x968 +1 x969 +1 x970 +1 x971 +1 x972 +1 x973 +1 x974 +1 x470 +1 x975 +1 x976 +1 x590 +1 x977 +1 x978 +1 x473 +1 x523 +1 x579 +1 x979 +1 x97 +1 x61 +1 x980 +1 x981 +1 x982 +1 x478 +1 x983 +1 x984 +1 x985 +1 x986 +1 x987 +1 x988 +1 x155 +1 x989 +1 x59 +1 x990 +1 x991 +1 x992 +1 x993 +1 x345 +1 x201 +1 x994 +1 x995 +1 x481 +1 x996 +1 x215 +1 x151 +1 x482 +1 x407 +1 x484 +1 x483 +1 x997 +1 x998 +1 x485 +1 x488 +1 x999 +1 x1000 +1 x489 +1 x490 +1 x1001 +1 x1002 +1 x1003 +1 x1004 +1 x511 +1 x1005 +1 x1006 +1 x1007 +1 x1008 +1 x1009 +1 x1010 +1 x1011 +1 x1012 +1 x1013 +1 x1014 +1 x1015 +1 x1016 +1 x1017 +1 x1018 +1 x1019 +1 x1020 +1 x1021 +1 x136 +1 x1022 +1 x216 +1 x1023 +1 x1024 +1 x1025 +1 x1026 +1 x1027 +1 x384 +1 x325 +1 x1028 +1 x657 +1 x1029 +1 x1030 +1 x368 +1 x250 +1 x1031 +1 x520 +1 x1032 +1 x266 +1 x1033 +1 x1034 +1 x1035 +1 x1036 +1 x1037 +1 x466 +1 x149 +1 x1038 +1 x1039 +1 x1040 +1 x1041 +1 x258 +1 x1042 +1 x1043 +1 x1044 +1 x1045 +1 x1046 +1 x1047 +1 x1048 +1 x1049 +1 x152 +1 x1050 +1 x1051 +1 x305 +1 x1052 +1 x1053 +1 x1054 +1 x1055 +1 x1056 +1 x1057 +1 x1058 +1 x1059 +1 x553 +1 x1060 +1 x1061 +1 x224 +1 x1062 +1 x1063 +1 x1064 +1 x1065 +1 x1066 +1 x1067 +1 x1068 +1 x195 +1 x259 +1 x399 +1 x86 +1 x1069 +1 x1070 +1 x494 +1 x1071 +1 x84 +1 x1072 +1 x140 +1 x256 +1 x1073 +1 x1074 +1 x146 +1 x1075 +1 x1076 +1 x1077 +1 x1078 +1 x1079 +1 x1080 +1 x628 +1 x1081 +1 x1082 +1 x1083 +1 x562 +1 x1084 +1 x239 +1 x458 +1 x1085 +1 x1086 +1 x241 +1 x462 +1 x1087 +1 x1088 +1 x1089 +1 x78 +1 x1090 +1 x1091 +1 x1092 +1 x1093 +1 x1094 +1 x1095 +1 x1096 +1 x469 +1 x631 +1 x1097 +1 x12 +1 x1098 +1 x1099 +1 x81 +1 x1100 +1 x1101 +1 x1102 +1 x1103 +1 x1104 +1 x406 +1 x1105 +1 x1106 +1 x1107 +1 x169 +1 x1108 +1 x476 +1 x1109 +1 x1110 +1 x1111 +1 x1112 +1 x49 +1 x1113 +1 x150 +1 x1114 +1 x1115 +1 x1116 +1 x1117 +1 x1118 +1 x28 +1 x1119 +1 x1120 +1 x137 +1 x409 +1 x1121 +1 x1122 +1 x99 +1 x1123 +1 x145 +1 x1124 +1 x1125 +1 x1126 +1 x1127 +1 x1128 +1 x11 +1 x373 +1 x1129 +1 x308 +1 x358 +1 x1130 +1 x1131 +1 x1132 +1 x600 +1 x1133 +1 x424 +1 x1134 +1 x1135 +1 x1136 +1 x1137 +1 x561 +1 x1138 +1 x1139 +1 x603 +1 x1140 +1 x456 +1 x1141 +1 x1142 +1 x1143 +1 x1144 +1 x1145 +1 x1146 +1 x425 +1 x1147 +1 x115 +1 x1148 +1 x1149 +1 x1150 +1 x1151 +1 x1152 +1 x23 +1 x1153 +1 x76 +1 x1154 +1 x1155 +1 x300 +1 x1156 +1 x1157 +1 x1158 +1 x1159 +1 x1160 +1 x1161 +1 x1162 +1 x1163 +1 x1164 +1 x1165 +1 x575 +1 x1166 +1 x583 +1 x1167 +1 x1168 +1 x200 +1 x71 +1 x1169 +1 x1170 +1 x322 +1 x1171 +1 x1172 +1 x1173 +1 x397 +1 x480 +1 x1174 +1 x1175 +1 x1176 +1 x576 +1 x209 +1 x1177 +1 x403 +1 x1178 +1 x1179 +1 x416 +1 x1180 +1 x13 +1 x1181 +1 x1182 +1 x1183 +1 x1184 +1 x1185 +1 x1186 +1 x1187 +1 x1188 +1 x1189 +1 x310 +1 x1190 +1 x1191 +1 x1192 +1 x524 +1 x1193 +1 x1194 +1 x202 +1 x1195 +1 x102 +1 x1196 +1 x1197 +1 x452 +1 x1198 +1 x386 +1 x1199 +1 x1200 +1 x1201 +1 x1202 +1 x457 +1 x1203 +1 x79 +1 x1204 +1 x1205 +1 x1206 +1 x1207 +1 x1208 +1 x1209 +1 x1210 +1 x160 +1 x527 +1 x1211 +1 x1212 +1 x1213 +1 x1214 +1 x1215 +1 x463 +1 x1216 +1 x1217 +1 x1218 +1 x7 +1 x1219 +1 x1220 +1 x1221 +1 x642 +1 x1222 +1 x1223 +1 x1224 +1 x1225 +1 x1226 +1 x605 +1 x1227 +1 x301 +1 x1228 +1 x449 +1 x1229 +1 x353 +1 x396 +1 x1230 +1 x174 +1 x98 +1 x1231 +1 x1232 +1 x1233 +1 x1234 +1 x1235 +1 x479 +1 x598 +1 x1236 +1 x1237 +1 x63 +1 x1238 +1 x1239 +1 x1240 +1 x1241 +1 x1242 +1 x1243 +1 x1244 +1 x1245 +1 x1246 +1 x170 +1 x1247 +1 x1248 +1 x1249 +1 x317 +1 x226 +1 x1250 +1 x1251 +1 x1252 +1 x37 +1 x1253 +1 x1254 +1 x1255 +1 x1256 +1 x601 +1 x1257 +1 x142 +1 x446 +1 x1258 +1 x1259 +1 x1260 +1 x1261 +1 x1262 +1 x1263 +1 x182 +1 x1264 +1 x1265 +1 x1266 +1 x1267 +1 x1268 +1 x1269 +1 x139 +1 x1270 +1 x1271 +1 x133 +1 x1272 +1 x1273 +1 x1274 +1 x1275 +1 x1276 +1 x1277 +1 x1278 +1 x1279 +1 x1280 +1 x1281 +1 x1282 +1 x1283 +1 x1284 +1 x1285 +1 x32 +1 x1286 +1 x1287 +1 x1288 +1 x1289 +1 x275 +1 x1290 +1 x1291 +1 x1292 +1 x1293 +1 x1294 +1 x1295 +1 x1296 +1 x1297 +1 x131 +1 x1298 +1 x262 +1 x1299 +1 x1300 +1 x503 +1 x1301 +1 x1302 +1 x629 +1 x475 +1 x1303 +1 x1304 +1 x1305 +1 x1306 +1 x1307 +1 x1308 +1 x1309 +1 x1310 +1 x319 +1 x1311 +1 x1312 +1 x1313 +1 x96 +1 x1314 +1 x94 +1 x1315 +1 x1316 +1 x1317 +1 x1318 +1 x1319 +1 x1320 +1 x1321 +1 x1322 +1 x1323 +1 x431 +1 x1324 +1 x1325 +1 x1326 +1 x1327 +1 x218 +1 x1328 +1 x1329 +1 x1330 +1 x1331 +1 x1332 +1 x27 +1 x1333 +1 x1334 +1 x398 +1 x1335 +1 x321 +1 x1336 +1 x1337 +1 x1338 +1 x1339 +1 x316 +1 x1340 +1 x1341 +1 x1342 +1 x1343 +1 x1344 +1 x1345 +1 x1346 +1 x1347 +1 x459 +1 x135 +1 x1348 +1 x1349 +1 x1350 +1 x277 +1 x1351 +1 x1352 +1 x1353 +1 x1354 +1 x1355 +1 x1356 +1 x1357 +1 x196 +1 x1358 +1 x52 +1 x1359 +1 x1360 +1 x1361 +1 x92 +1 x1362 +1 x1363 +1 x1364 +1 x1365 +1 x1366 +1 x468 +1 x448 +1 x1367 +1 x619 +1 x471 +1 x318 +1 x1368 +1 x254 +1 x265 +1 x242 +1 x1369 +1 x20 +1 x1370 +1 x1371 +1 x1372 +1 x1373 +1 x1374 +1 x1375 +1 x1376 +1 x1377 +1 x1378 +1 x1379 +1 x1380 +1 x1381 +1 x1382 +1 x1383 +1 x299 +1 x45 +1 x1384 +1 x1385 +1 x1386 +1 x1387 +1 x491 +1 x25 +1 x493 +1 x1388 +1 x1389 +1 x1390 +1 x369 +1 x1391 +1 x1392 +1 x19 +1 x1393 +1 x1394 +1 x1395 +1 x589 +1 x1396 +1 x400 +1 x1397 +1 x323 +1 x1398 +1 x8 +1 x1399 +1 x1400 +1 x1401 +1 x1402 +1 x404 +1 x1403 +1 x1404 +1 x1405 +1 x1406 +1 x1407 +1 x1408 +1 x1409 +1 x1410 +1 x1411 +1 x6 +1 x1412 +1 x1413 +1 x144 +1 x1414 +1 x1415 +1 x1416 +1 x1417 +1 x1418 +1 x302 +1 x1419 +1 x1420 +1 x1421 +1 x1422 +1 x1423 +1 x1424 +1 x1425 +1 x1426 +1 x1427 +1 x1428 +1 x1429 +1 x243 +1 x1430 +1 x1431 +1 x1432 +1 x1433 +1 x1434 +1 x1435 +1 x1436 +1 x1437 +1 x113 +1 x1438 +1 x1439 +1 x1440 +1 x1441 +1 x199 +1 x1442 +1 x1443 +1 x1444 +1 x1445 +1 x1446 +1 x1447 +1 x1448 +1 x1449 +1 x1450 +1 x257 +1 x255 +1 x1451 +1 x1452 +1 x1453 +1 x1454 +1 x1455 +1 x1456 +1 x1457 +1 x320 +1 x1458 +1 x154 +1 x1459 +1 x1460 +1 x1461 +1 x1462 +1 x134 +1 x497 +1 x181 +1 x1463 +1 x148 +1 x54 +1 x1464 +1 x1465 +1 x1466 +1 x1467 +1 x1468 +1 x453 +1 x1469 +1 x1470 +1 x1471 +1 x1472 +1 x1473 +1 x1474 +1 x1475 +1 x1476 +1 x1477 +1 x522 +1 x1478 +1 x1479 +1 x1480 +1 x1481 +1 x1482 +1 x1483 +1 x1484 +1 x1485 +1 x335 +1 x1486 +1 x1487 +1 x1488 +1 x1489 +1 x240 +1 x1490 +1 x276 +1 x465 +1 x1491 +1 x1492 +1 x1493 +1 x1494 +1 x1495 +1 x1496 +1 x1497 +1 x1498 +1 x329 +1 x1499 +1 x93 +1 x130 +1 x261 +1 x630 +1 x1500 +1 x1501 +1 x1502 +1 x1503 +1 x31 +1 x1504 +1 x1505 +1 x1506 +1 x1507 +1 x1508 +1 x1509 +1 x141 +1 x1510 +1 x1511 +1 x1512 +1 x1513 +1 x1514 +1 x225 +1 x1515 +1 x1516 +1 x205 +1 x1517 +1 x1518 +1 x1519 +1 x1520 +1 x1521 +1 x496 +1 x1522 +1 x387 +1 x1523 +1 x1524 +1 x1525 +1 x1526 +1 x1527 +1 x1528 +1 x1529 +1 x1530 +1 x1531 +1 x455 +1 x1532 +1 x577 +1 x1533 +1 x1534 +1 x1535 +1 x1536 +1 x445 +1 x1537 +1 x1538 +1 x1539 +1 x1540 +1 x618 +1 x1541 +1 x1542 +1 x1543 +1 x1544 +1 x1545 +1 x1546 +1 x414 +1 x1547 +1 x1548 +1 x1549 +1 x1550 +1 x1551 +1 x515 +1 x405 +1 x1552 +1 x1553 +1 x1554 +1 x1555 +1 x1556 +1 x1557 +1 x1558 +1 x336 +1 x385 +1 x39 +1 x214 +1 x1559 +1 x1560 +1 x1561 +1 x1562 +1 x526 +1 x1563 +1 x1564 +1 x620 +1 x1565 +1 x1566 +1 x1567 +1 x1568 +1 x1569 +1 x1570 +1 x1571 +1 x1572 +1 x1573 +1 x504 +1 x1574 +1 x1575 +1 x1576 +1 x1577 +1 x1578 +1 x1579 +1 x1580 +1 x487 +1 x1581 +1 x1582 +1 x639 +1 x1583 +1 x1584 +1 x1585 +1 x1586 +1 x1587 +1 x1588 +1 x1589 +1 x1590 +1 x1591 +1 x1592 +1 x1593 +1 x1594 +1 x637 +1 x1595 +1 x1596 >= 0;
* org.eclipse.wst.xsd.ui 1.2.102.v200808141745 requires either org.eclipse.ui.views.properties.tabbed 3.4.0.I20080527-2000
-1 x1542 +1 x136 >= 0;
@@ -10905,8 +10888,6 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
-1 x637 +1 x70 >= 0;
* org.eclipse.pde.core 3.4.0.v20080604-2000 requires either org.eclipse.team.core 3.4.0.I20080605
-1 x637 +1 x971 >= 0;
-* org.eclipse.pde.core 3.4.0.v20080604-2000 requires either org.eclipse.update.configurator 3.2.200.v20080417
--1 x637 +1 x638 >= 0;
* org.eclipse.pde.core 3.4.0.v20080604-2000 requires either org.eclipse.text 3.4.0.v20080605-1800
-1 x637 +1 x68 >= 0;
* org.eclipse.pde.core 3.4.0.v20080604-2000 requires either org.eclipse.jdt.launching 3.4.0.v20080529-1300
@@ -12101,9 +12082,6 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
-1 x2829 1 x1490 >= 0;
* 1222009397663 0.0.0.1222009397663 requires either org.eclipse.uml2.feature.group 2.2.0.v200805201126
-1 x2458 +1 x2188 >= 0;
-* 1222009397663 0.0.0.1222009397663 requires optionaly either org.eclipse.update.configurator.source 3.2.200.v20080417
--1 x2465 -1 x2830>= -1 ;
- -1 x2830 1 x1755 >= 0;
* 1222009397663 0.0.0.1222009397663 requires optionaly either javax.xml 1.3.4.v200806030440
-1 x2465 -1 x2831>= -1 ;
-1 x2831 1 x371 >= 0;
@@ -12484,7 +12462,7 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
-1 x118 +1 x68 >= 0;
* toolingorg.eclipse.equinox.simpleconfigurator 1.0.0.v20080604 requires either org.eclipse.equinox.simpleconfigurator 1.0.0.v20080604
-1 x2948 +1 x1203 >= 0;
-* toolingorg.eclipse.equinox.simpleconfigurator 1.0.0.v20080604 requires either org.python.pydev.core 0.9.7 org.eclipse.m2m.qvt.oml.trace.edit 1.0.0.v20080611-1330 org.eclipse.emf.codegen.ecore 2.4.0.v200806091234 org.eclipse.uml2.common.edit 1.4.0.v200805131030 org.eclipse.core.runtime 3.4.0.v20080512 org.python.pydev.core 1.3.9 javax.xml.soap 1.2.0.v200806030421 org.eclipse.gmf.runtime.common.ui.action.ide 1.1.0.v20080425-1959 org.eclipse.emf.cdo.edit 1.0.0.v200806180411 org.eclipse.ecf.provider.msn 1.2.0.v20080623-0046 org.eclipse.equinox.frameworkadmin.equinox 1.0.0.v20080529-1225 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.1 org.eclipse.equinox.http.servletbridge 1.0.0.v20080427-0830 org.python.pydev 0.9.5 org.python.pydev.parser 1.2.3 org.eclipse.emf.example.installer 1.0.0.v200806091234 com.instantiations.assist.eclipse 5.5.0 org.eclipse.wst.common.environment 1.0.201.v200805140020 org.eclipse.zest.source 1.0.0.v20080115-53-8xB4CE899O274A org.eclipse.emf.ant 2.4.0.v200806091234 com.instantiations.eclipse.mail 5.5.1 org.python.pydev.parser 1.3.1 org.eclipse.birt.chart.engine 2.3.0.v20080606 org.eclipse.core.resources 3.4.0.v20080604-1400 org.eclipse.birt.report.engine.emitter.postscript 2.3.0.v20080610 org.python.pydev.jython 1.1.0 org.eclipse.ui.workbench.compatibility 3.2.0.I20080509-2000 com.nordea.cd.dev.plugin.builderruntime 1.0.0 org.eclipse.m2m.atl.adt.editor 2.0.0.v200806101117 org.eclipse.equinox.p2.director.app 1.0.0.v20080604 org.eclipse.mylyn.tasks.core 3.0.0.v20080619-1900 org.python.pydev.ast 1.0.4 org.eclipse.m2m.atl.compilers.atl2006 2.0.0.v200806101117 org.eclipse.datatools.enablement.sybase.asa.ui 1.0.1.v200805310538 org.eclipse.emf.mapping.ecore2xml.ui 2.4.0.v200806091234 org.eclipse.wst.dtd.ui 1.0.301.v200808072012 org.eclipse.birt.chart.engine.extension 2.3.0.v20080611 org.eclipse.jface.databinding 1.2.0.I20080515-2000a org.eclipse.birt.chart.reportitem.ui 2.3.0.v20080610 org.eclipse.datatools.enablement.hsqldb.ui 1.0.0.v200805152355 org.eclipse.mylyn.ide.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.security.ui 1.0.0.v20080603-1810 org.eclipse.wst.common.emfworkbench.integration 1.1.201.v200808071700 org.eclipse.gmf.validate 1.1.0.v20080603-1553 org.eclipse.emf.mapping.ecore2ecore.editor 2.4.0.v200806091234 org.eclipse.ecf.provider.irc 1.3.0.v20080623-0046 org.eclipse.emf.validation.doc 1.2.0.v200805130238 org.python.pydev.ast 1.2.8 org.eclipse.emf.teneo.doc 1.0.0.v200806111928 org.python.pydev.jython 1.3.12 org.eclipse.emf.ecoretools.source 0.8.0.v200806130600 org.eclipse.equinox.p2.updatesite 1.0.0.v20080529-1800 org.eclipse.ecf.presence.bot 1.2.0.v20080623-0046 com.swtdesigner.properties.java5 1.0.0 org.eclipse.platform.doc.isv 3.4.0.v20080613-1330 org.python.pydev.core 1.2.3 org.eclipse.datatools.connectivity.db.generic 1.0.0.v200805152355 org.eclipse.uml2.diagram.clazz 0.8.0.v200806112132 org.eclipse.birt.report.designer.ui.views 2.3.0.v20080606 org.eclipse.mylyn.monitor.core 3.0.2.v20080918-1100-e3x com.instantiations.eclipse.debug 5.3.2.200806270030 org.eclipse.gmf.runtime.common.ui.action 1.1.0.v20080425-1959 org.eclipse.equinox.useradmin 1.1.0.v20080508-1815 org.eclipse.mylyn.commons.ui 3.0.2.v20080918-1100-e3x org.eclipse.equinox.cm 1.0.0.v20080509-1800 org.eclipse.uml2.diagram.component 0.8.0.v200806112132 org.eclipse.swt.layout.grouplayout 1.1.0 org.python.pydev 1.2.4 javax.servlet 2.4.0.v200806031604 org.eclipse.uml2.examples.uml.ui 2.2.0.v200805131030 org.python.pydev.ast 1.3.10 org.eclipse.birt.report.designer.ui.ide 2.3.0.v20080606 org.python.pydev.parser 1.3.18 com.swtdesigner.layout.group 6.7.0.200806270151 org.eclipse.m2m.qvt.oml.runtime.source 1.0.0.v20080611-1330-5--AgI99m9cDD4DNN9 org.eclipse.mylyn.tasks.ui 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.3.13 org.eclipse.emf.teneo.jpox.eclipse 1.0.0.v200806111928 org.eclipse.equinox.transforms.xslt 1.0.0.v20080610 org.python.pydev.core 1.0.7 org.eclipse.datatools.enablement.ibm.db2.zseries.ui 1.0.0.v200805160737 org.eclipse.mylyn.resources.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.enablement.oda.ws 1.1.0.v200805261930 org.eclipse.equinox.frameworkadmin 1.0.0.v20080430-1750 org.eclipse.birt.chart.device.extension 2.3.0.v20080424 org.eclipse.net4j.jvm 1.0.0.v200806180305 org.eclipse.emf.cdo.migrator 1.0.0.v200806180411 org.python.pydev.jython 1.3.1 org.eclipse.m2m.qvt.oml.cst.parser 1.0.0.v20080611-1330 com.xored.composer.ui 1.3.4.200809042225 org.eclipse.datatools.enablement.sybase.ui 1.0.0.v200806041138 org.eclipse.ecf.remoteservice.ui 2.0.0.v20080623-0046 org.eclipse.net4j.db.mysql 1.0.0.v200806180305 org.eclipse.update.scheduler 3.2.100.v20080404 org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide 1.1.0.v20080425-1959 org.eclipse.wst.dtdeditor.doc.user 1.0.400.v200805150028 org.eclipse.wst.xmleditor.doc.user 1.0.401.v200808071323 org.eclipse.gmf.runtime.common.ui.services.dnd 1.1.0.v20080425-1959 org.eclipse.uml2.common 1.4.0.v200805131030 org.apache.jasper 5.5.17.v200806031609 org.python.pydev 1.0.8 org.eclipse.datatools.doc.user 1.6.0.20080606124249 org.objectweb.asm 3.1.0.v200803061910 org.eclipse.emf.cdo.doc 1.0.0.v200806180411 org.python.pydev.core 1.3.17 org.eclipse.core.resources.compatibility 3.4.0.v20080604-1400 com.instantiations.eclipse.startup 5.3.2.200806270030 org.eclipse.datatools.connectivity.apache.derby.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.graphdef.codegen 2.0.100.v20080528-1052 org.eclipse.emf.common 2.4.0.v200806091234 org.eclipse.wst.xml.ui.infopop 1.0.300.v200805140200 org.python.pydev.core 1.3.0 org.eclipse.equinox.p2.touchpoint.natives 1.0.0.v20080505-1850 org.eclipse.ant.core 3.2.0.v20080529 org.eclipse.ui.workbench 3.4.0.I20080606-1300 org.eclipse.ecf.provider.xmpp.ui 2.0.0.v20080623-0046 org.w3c.sac 1.3.0.v20070710 org.python.pydev.jython 1.2.3 org.eclipse.mylyn.context.ui 3.0.0.v20080619-1900 org.eclipse.ecf.doc 1.3.0.v20080623-0046 org.eclipse.ecf.provider.bittorrent.ui 0.2.0.v20080623-0046 com.xored.swt.composer 1.3.4.200809042225 org.python.pydev.parser 1.0.4 org.eclipse.help.webapp 3.3.100.v20080528 org.eclipse.uml2.diagram.deploy 0.8.0.v200806112132 org.eclipse.ecf.provider.irc.ui 1.3.0.v20080623-0046 org.python.pydev 1.3.18 org.eclipse.m2m.atl.source 2.0.0.v200806101117 org.eclipse.mylyn.tasks.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.identity 2.0.0.v20080611-1715 org.eclipse.ocl.ecore 1.2.0.v200805130238 org.eclipse.core.expressions 3.4.0.v20080603-2000 org.eclipse.core.runtime.compatibility.registry 3.2.200.v20080610 org.eclipse.tptp.platform.la.core 4.3.200.v200805231116 org.eclipse.m2m.atl.service.core 2.0.0.v200806101117 org.apache.commons.logging 1.0.4.v20080605-1930 org.eclipse.platform.doc.user 3.4.0.v20080612-1340 com.windowtester.runtime.junit4 3.5.0.200806270034 org.python.pydev.parser 1.2.8 org.eclipse.uml2.examples.source 2.2.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.providers 1.1.0.v20080503-1740 org.python.pydev.jython 1.3.20 org.python.pydev.jython 1.0.7 org.eclipse.m2m.qvt.oml.common 1.0.0.v20080611-1330 org.eclipse.wst.sse.ui 1.1.0.v200806041847 org.eclipse.core.resources.win32.x86 3.4.0.v20071204 org.eclipse.swt.widgets.baseline 1.1.0 com.xored.swt.composer.win32.win32.x86 1.3.4.200809042225 org.eclipse.datatools.enablement.mysql.ui 1.0.0.v200805152355 org.eclipse.m2m.atl.ocl.core 2.0.0.v200806101117 org.eclipse.emf.codegen.ecore.ui 2.4.0.v200806091234 org.eclipse.equinox.http.servlet 1.0.100.v20080427-0830 org.python.pydev.ast 1.3.2 org.python.pydev 1.3.6 org.eclipse.birt.report.viewer 2.3.0.v20080606 org.apache.batik.extension 1.6.0.v200805290154 org.eclipse.uml2.diagram.statemachine 0.8.0.v200806112132 org.python.pydev.parser 1.3.10 org.eclipse.equinox.p2.ui.admin.rcp 1.0.0.v20080604 org.eclipse.emf.compare.match 0.8.0.v200806180301 org.eclipse.datatools.enablement.oracle.ui 1.0.0.v200805240040 org.python.pydev 0.7.1 com.lowagie.itext 1.5.4.v20080228 org.eclipse.birt.report.designer.ui.preview.web 2.3.0.v200806102 org.eclipse.birt.report.designer.ui.samples.ide 2.3.0.v20080606 org.eclipse.xsd.ecore.converter 2.4.0.v200806091234 org.eclipse.jdt.compiler.tool 1.0.100.v_874 org.eclipse.equinox.registry 3.4.0.v20080516-0950 org.eclipse.wst.dtd.ui.infopop 1.0.300.v200805140200 org.python.pydev.ast 0.9.5 org.eclipse.ui.workbench.texteditor 3.4.0.v20080603-2000 org.eclipse.cvs 1.0.100.v20080603 org.eclipse.uml2.search.ui 0.7.0.v200806130939 org.eclipse.gmf.common 1.1.1.v20080610-1132 org.eclipse.uml2.uml.editor 2.2.0.v200805131030 org.eclipse.m2m.atl.engine 2.0.0.v200806101117 org.eclipse.net4j.http.common 1.0.0.v200806180305 org.eclipse.ecf.presence.ui 1.2.0.v20080623-0046 org.python.pydev.parser 1.2.2 org.eclipse.emf.cdo.tests.model3.edit 1.0.0.v200806180411 org.eclipse.emf.cdo.tests.model1 1.0.0.v200806180411 org.eclipse.m2m.atl.engine.vm 2.0.0.v200806101117 com.instantiations.eclipse.mail 5.5.0 org.eclipse.emf.ocl.source 1.1.100.v200805130238-108Y7w311916241349 com.windowtester.swt.runtime.legacy 3.5.1.200809042232 org.eclipse.uml2tools 0.8.0.v200806112132 org.eclipse.emf.search.genmodel.ui 0.7.0.v200806130939 org.eclipse.mylyn.jira.core 3.0.2.v20080918-1100-e3x org.eclipse.uml2.uml.ecore.importer 2.2.0.v200805131030 org.eclipse.emf.transaction.doc 1.2.0.v200805130238 org.eclipse.tptp.platform.logging.events 4.3.200.v200805310100 org.python.pydev.core 1.3.8 org.eclipse.xsd.ecore.importer 2.4.0.v200806091234 org.eclipse.emf.teneo.source 1.0.0.v200806111928-78--DUUEFDEz0MMNLVD org.eclipse.uml2 2.1.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.render 1.1.0.v20080603-1553 com.windowtester.swt.runtime.os.win32 3.5.0.200806270034 org.eclipse.rcp 3.4.0.v20080507 org.eclipse.xsd.mapping 2.4.0.v200806091234 org.eclipse.emf.workspace.doc 1.2.0.v200805130238 org.eclipse.pde.api.tools 1.0.0.v20080529-1150 org.eclipse.emf.mapping.ecore2xml 2.4.0.v200806091234 org.eclipse.swt.win32.win32.x86 3.4.0.v3448f org.apache.derby 10.1.2.1_v200803061811 org.eclipse.m2m.qvt.oml.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.python.pydev.parser 1.3.0 org.eclipse.ecf.protocol.msn 1.2.0.v20080623-0046 com.instantiations.eclipse.ui 5.3.2.200809042027 org.eclipse.jet.core 1.1.0.v20080415 org.eclipse.datatools.enablement.sybase.ase.models 1.0.1.v200805152355 com.nordea.cd.dev.plugin.builderruntime 1.0.1 com.instantiations.assist.eclipse.core 5.5.0 org.python.pydev.ast 1.0.5 org.eclipse.ecf.filetransfer 2.0.0.v20080611-1715 org.python.pydev.parser 0.9.5 org.python.pydev.core 1.2.2 org.eclipse.emf.transaction.ui 1.2.0.v200805130238 org.eclipse.gmf.runtime.gef.ui 1.1.0.v20080503-1740 org.eclipse.wst.xml.core 1.1.301.v200808072008 org.eclipse.uml2.diagram.clazz.search 0.7.0.v200806130939 org.sat4j.core 2.0.0.v20080602 org.eclipse.datatools.connectivity.ui 1.1.0.v200806040132 org.eclipse.birt.report.designer.ui.editors 2.3.0.v20080610a org.eclipse.equinox.p2.reconciler.dropins 1.0.0.v20080611 org.eclipse.wst.common.project.facet.core 1.3.1.v200807031821 org.python.pydev.jython 1.3.11 org.eclipse.datatools.enablement.postgresql 1.0.1.v200805152355 org.eclipse.ltk.ui.refactoring 3.4.0.v20080605-1800 org.eclipse.datatools.enablement.sybase.ase 1.0.1.v200806040735 org.python.pydev.ast 1.2.9 org.eclipse.datatools.connectivity.oda 3.1.2.v200805152355 org.eclipse.wst.common.emf 1.1.201.v200808071700 org.apache.batik.dom.svg 1.6.0.v200805290154 org.eclipse.birt.chart 2.3.0.v20080304 org.python.pydev.jython 1.2.9 org.python.pydev.ast 1.3.11 org.eclipse.datatools.enablement.mysql.dbdefinition 1.0.1.v200805170742 org.python.pydev.parser 1.3.19 org.python.pydev.core 1.0.6 org.eclipse.uml2.diagram 0.8.0.v200806112132 org.eclipse.jdt.junit4.runtime 1.0.200.v20080603-2000 org.python.pydev.ast 1.3.12 org.eclipse.swt 3.4.0.v3448f org.eclipse.emf.ecoretools.diagram.search 0.7.0.v200806130939 org.eclipse.pde.ui.templates 3.4.0.v20080514-1500 com.instantiations.packager.ui 2.5.1 org.eclipse.emf.cdo.server.db 1.0.0.v200806180411 org.eclipse.datatools.enablement.sybase.asa 1.0.1.v200805310538 org.eclipse.emf.compare 0.8.0.v200806180301 org.eclipse.datatools.enablement.oda.ws.ui 1.1.0.v200805261930 org.eclipse.jdt.launching 3.4.0.v20080529-1300 org.eclipse.mylyn.tasks.ui 3.0.0.v20080619-1900 org.apache.ws.jaxme 0.5.1.v20080530-1550 org.eclipse.mylyn.bugzilla.ui 3.0.0.v20080619-1900 org.apache.commons.el 1.0.0.v200806031608 org.python.pydev 1.2.3 org.w3c.dom.smil 1.0.0.v200806040011 org.eclipse.wst.validation.infopop 1.0.300.v200806041506 org.python.pydev 1.0.7 org.eclipse.net4j.source 1.0.0.v200806180305 org.eclipse.m2m.qvt.oml.ocl 1.0.0.v20080611-1330 org.eclipse.uml2.uml.edit 2.2.0.v200805131030 org.eclipse.emf.search.ui 0.7.0.v200806130939 org.python.pydev.core 1.3.16 org.eclipse.emf.validation.ui 1.2.0.v200805130238 org.eclipse.datatools.enablement.oda.xml 1.1.0.v200805270900 org.eclipse.ltk.core.refactoring 3.4.0.v20080603-2000 org.python.pydev.jython 1.3.2 com.windowtester.swt.codegen 3.5.0.200806270034 org.eclipse.datatools.sqltools.ddlgen.ui 1.0.0.v200805152355 org.apache.xerces 2.9.0.v200805270400 org.eclipse.birt.report.engine.dataextraction 2.3.0.v20080611 org.eclipse.equinox.jmx.vm 1.0.0.v20070515 org.eclipse.birt.report.data.oda.jdbc.ui 2.3.0.v20080606 org.eclipse.equinox.ds 1.0.0.v20080427-0830 org.eclipse.mylyn.bugzilla.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.http.jetty 2.0.0.v20080425 org.eclipse.mylyn.team.ui 3.0.2.v20080918-1100-e3x org.python.pydev.jython 1.2.4 org.eclipse.birt.chart.device.svg 2.3.0.v20080526 org.python.pydev.parser 1.0.5 org.eclipse.ui.presentations.r21 3.2.100.I20080512-2000 org.eclipse.mylyn 3.0.0.v20080619-1900 org.eclipse.m2m.qvt.oml.doc 1.0.0.v20080611-1330 org.eclipse.team.svn.nl1.sources 0.7.1.I20080612-1500 org.eclipse.mylyn.resources.ui 3.0.0.v20080619-1900 org.eclipse.datatools.enablement.ibm.db2.luw 1.0.0.v200805152355 org.python.pydev.core 1.3.1 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.1 org.eclipse.ecf.provider.filetransfer 2.0.0.v20080611-1715 org.eclipse.emf.cdo.tests.mango.edit 1.0.0.v200806180411 org.python.pydev.parser 1.2.9 org.eclipse.m2m.qvt.oml.emf.util 1.0.0.v20080611-1330 org.eclipse.team.cvs.ssh 3.2.100.I20080604 org.python.pydev.jython 1.3.19 org.python.pydev.jython 1.0.8 org.python.pydev.ast 1.2.1 org.eclipse.m2m.qvt.oml.project 1.0.0.v20080611-1330 com.instantiations.assist.eclipse.core.ui 5.5.1 org.eclipse.datatools.enablement.ibm.db2.zseries.dbdefinition 1.0.0.v200805152355 org.eclipse.datatools.enablement.ibm.db2.iseries 1.0.0.v200805152355 com.swtdesigner.fragment.jdt.core 6.7.1.200809050053 org.eclipse.equinox.device 1.0.1.v20080303 org.eclipse.equinox.http.jetty 1.1.0.v20080425 org.eclipse.emf.cdo.tests.model3 1.0.0.v200806180411 org.eclipse.emf.teneo.hibernate.mapper 1.0.0.v200806111928 org.eclipse.compare 3.4.0.I20080604 org.polarion.eclipse.team.svn.connector.javahl 2.0.1.I20080612-1500 org.eclipse.gmf.runtime.diagram.ui.geoshapes 1.1.0.v20080503-1740 org.eclipse.emf.mint.ui 0.7.0.v200806172223 org.eclipse.ui.win32 3.2.100.v20080408-0800 org.eclipse.jet.source 0.9.0.v20080516 org.python.pydev 1.3.17 com.windowtester.runtime.junit4 3.5.1.200809042232 org.eclipse.ecf.examples.remoteservices.server 1.0.100.v20080623-0046 org.eclipse.text 3.4.0.v20080605-1800 org.eclipse.uml2.diagram.common 0.8.0.v200806112132 org.eclipse.datatools.connectivity.sqm.core.ui 1.1.0.v200806070326 org.python.pydev.core 0.9.7.99 org.eclipse.net4j.jms 1.0.0.v200806180305 org.junit4 4.3.1 org.eclipse.epp.usagedata.recording 1.0.0.R200806162215 org.eclipse.buckminster.remote 1.0.0.r09326 org.eclipse.gmf.tooling 2.1.0.v20080425-1959 org.eclipse.emf.cdo.tests.model2 1.0.0.v200806180411 org.eclipse.emf.ecore.sdo.editor 2.4.0.v200806091234 com.instantiations.swt.graph 5.5.0 org.eclipse.uml2.search 0.7.0.v200806130939 org.python.pydev 1.3.5 org.python.pydev.ast 1.3.3 org.eclipse.update.configurator 3.2.200.v20080417 org.eclipse.datatools.enablement.msft.sqlserver 1.0.1.v200805152355 org.python.pydev.parser 1.3.11 org.eclipse.datatools.enablement.sap.maxdb.dbdefinition 1.0.0.v200805152355 com.windowtester.swing.recorder 3.5.0.200806270034 org.eclipse.gmf.runtime.common.ui.printing.win32 1.1.0.v20080612-1355 org.python.pydev.ast 1.3.20 org.eclipse.wst.common.snippets 1.1.200.v200805140415 org.eclipse.mylyn.commons.core 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.tasks.core 3.0.2.v20080918-1100-e3x org.eclipse.jdt.doc.user 3.4.0.v20080612-1340 org.eclipse.birt.chart.ui 2.3.0.v20080522 org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb 2.3.0.v20080606 org.eclipse.uml2.diagram.examples.clazz 0.8.0.v200806112132 org.eclipse.ecf.provider.msn.ui 1.3.0.v20080623-0046 org.python.pydev.parser 1.3.3 org.eclipse.ui.ide.application 1.0.0.I20080603-2000 org.python.pydev.ast 1.0.6 org.eclipse.equinox.jsp.jasper.registry 1.0.0.v20080427-0830 org.eclipse.equinox.p2.engine 1.0.0.v20080522-1735 com.nordea.cd.dev.plugin.builderruntime 1.0.2 com.instantiations.assist.eclipse.core 5.5.1 org.eclipse.m2m.qvt.oml 1.0.0.v20080611-1330 org.eclipse.mylyn.commons.ui 3.0.1.v20080721-2100-e3x org.eclipse.update.core.win32 3.2.100.v20080107 org.eclipse.datatools.sqltools.db.derby 1.0.0.v200805152355 com.instantiations.assist.eclipse.admin 5.5.0 org.eclipse.ecf.telephony.call 1.2.0.v20080623-0046 org.eclipse.mylyn.monitor.core 3.0.0.v20080619-1900 org.eclipse.epp.usagedata.ui 1.0.0.R200806162215 org.eclipse.ui.ide 3.4.0.I20080606-1300 org.eclipse.hyades.lta.sdb 4.5.0.v200806051823 org.eclipse.birt.report.model.adapter.oda 2.3.0.v20080523 org.eclipse.emf.compare.doc 0.8.0.v200806180301 org.eclipse.equinox.servletbridge 1.0.100.v20080427-0830 com.instantiations.common.help 5.3.2.200809042027 org.eclipse.jdt.core 3.4.0.v_874 org.eclipse.equinox.p2.director 1.0.0.v20080604 org.eclipse.gmf.runtime.emf.ui.properties 1.1.0.v20080425-1959 org.eclipse.emf.exporter 2.4.0.v200806091234 org.python.pydev.core 1.3.7 org.eclipse.uml2.diagram.def 0.8.0.v200806112132 org.python.pydev.parser 1.2.1 org.eclipse.wst.command.env.ui 1.1.0.v200805140415 org.eclipse.wst.common.modulecore 1.1.200.v200806091800 org.python.pydev 0.9.7 org.eclipse.gmf.graphdef.edit 2.0.100.v20080610-1132 org.eclipse.birt.report.designer.ui.cubebuilder 2.3.0.v20080606 org.eclipse.m2m.atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.actions 1.1.0.v20080603-1553 com.instantiations.common.core 5.3.2.200806270030 org.eclipse.datatools.enablement.ibm.informix 1.0.0.v200805152355 org.eclipse.net4j.tcp 1.0.0.v200806180305 org.eclipse.wst.common.environment 1.0.202.v200807161459 com.instantiations.common.core 5.3.2.200809042027 org.eclipse.birt.report.data.oda.xml 2.3.0.v20080606 org.eclipse.pde.api.tools.ui 1.0.0.v20080603 org.eclipse.debug.ui 3.4.0.v20080529-1300 org.python.pydev 1.2.2 org.eclipse.team.svn.ui.nl1 0.7.1.I20080612-1500 org.apache.batik.transcoder 1.6.0.v200805290154 org.eclipse.emf.ecore.sdo.edit 2.4.0.v200806091234 org.python.pydev.parser 1.3.16 org.eclipse.wst.command.env.ui 1.1.1.v200807162242 org.eclipse.uml2.diagram.codegen.edit 0.8.0.v200806112132 org.eclipse.datatools.connectivity.db.generic.ui 1.0.1.v200805152355 org.eclipse.mylyn.resources.ui 3.0.2.v20080918-1100-e3x org.python.pydev.ast 1.3.8 org.python.pydev 1.3.0 org.eclipse.net4j.db 1.0.0.v200806180305 org.python.pydev.ast 1.3.15 org.eclipse.uml2.codegen.ecore 1.4.0.v200805201126 org.eclipse.gmf.sdk 1.0.0.v20080425-1959 org.eclipse.equinox.p2.core 1.0.0.v20080530-1237 org.python.pydev.jython 1.3.10 org.eclipse.emf.cdo 1.0.0.v200806180411 org.eclipse.emf.search.genmodel 0.7.0.v200806130939 org.eclipse.ui.navigator 3.3.100.I20080606-1300 org.eclipse.team.svn.mylyn 0.7.1.I20080612-1500 org.python.pydev.core 1.2.5 org.eclipse.tptp.platform.lta.la.core 4.5.0.v200805132041 org.eclipse.wst.sse.core 1.1.301.v200808072008 org.eclipse.tptp.platform.lta.log.views 4.5.0.v200806051823 org.eclipse.mylyn.java.ui 3.0.2.v20080918-1100-e3x org.eclipse.emf.search.codegen 0.7.0.v200806130939 com.instantiations.common.ui 5.3.2.200806270030 org.eclipse.ecf 2.0.0.v20080611-1715 org.eclipse.equinox.p2.ui.sdk 1.0.0.v20080605-1731 org.apache.commons.discovery 0.2.0.v200806030120 org.eclipse.datatools.help 1.5.0.v200805152355 org.python.pydev.parser 0.9.7.99 org.w3c.css.sac 1.3.0.v200805290154 org.eclipse.jet.examples 0.9.0.v20080211 org.eclipse.mylyn.bugzilla.ide 3.0.2.v20080918-1100-e3x org.eclipse.pde.junit.runtime 3.4.0.v20080529-1800 org.eclipse.emf.commonj.sdo 2.4.0.v200806091234 org.python.pydev.jython 1.2.1 com.instantiations.tools 5.3.2.200806270030 com.windowtester.runtime 3.5.1.200809042232 org.eclipse.wst.validation 1.2.0.v200806051402 org.eclipse.ecf.docshare 2.0.0.v20080623-0046 com.instantiations.eclipse.model.jsp 5.5.1 org.eclipse.emf.teneo.hibernate.eclipse 1.0.0.v200806111928 com.jcraft.jsch 0.1.37.v200803061811 org.python.pydev.parser 1.0.6 org.eclipse.emf.converter 2.4.0.v200806091234 org.eclipse.equinox.common 3.4.0.v20080421-2006 org.eclipse.buckminster.ui 1.0.0.r09319 org.eclipse.datatools.sqltools.tablewizard 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.0 org.eclipse.uml2.source 2.2.0.v200805201126 org.eclipse.team.cvs.ui 3.3.100.I20080604 org.python.pydev.jython 1.3.3 org.eclipse.emf.search.ocl 0.7.0.v200806130939 org.eclipse.datatools.enablement.sybase.asa.models 1.0.0.v200805152355 org.eclipse.sdk 3.4.0.v200806172000 org.eclipse.xsd.ecore.exporter 2.4.0.v200806091234 org.apache.commons.codec 1.3.0.v20080530-1600 org.eclipse.equinox.p2.exemplarysetup 1.0.0.v20080427-2136 org.eclipse.equinox.io 1.0.0.v20080218 org.eclipse.wst.common.project.facet.core 1.3.0.v200805140020 org.eclipse.wst.common.ui 1.1.301.v200805140415 org.eclipse.emf.databinding.edit 1.0.0.v200806091234 org.mortbay.jetty.server 6.1.7.v200806031612 org.eclipse.wst.dtd.core 1.1.200.v200805140200 org.python.pydev 1.0.6 org.eclipse.uml2.diagram.activity 0.8.0.v200806112132 org.eclipse.emf.importer.rose 2.4.0.v200806091234 org.eclipse.core.net.win32.x86 1.0.0.I20080521 javax.activation 1.1.0.v200804101140 org.python.pydev.core 1.3.15 org.python.pydev.parser 1.3.8 com.instantiations.assist.eclipse.coverage.ui 5.5.1.200809042337 org.eclipse.emf.ecoretools.filters 0.8.0.v200806130600 org.python.pydev.ast 1.3.0 org.eclipse.birt.report.data.oda.xml.ui 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase 1.0.1.v200805310538 org.python.pydev 1.3.8 org.eclipse.equinox.ip 1.0.0.v20080218 org.eclipse.datatools.connectivity.console.profile 1.0.0.v200805231345 org.eclipse.ecf.sharedobject 1.3.0.v20080623-0046 org.eclipse.debug.core 3.4.0.v20080612 org.eclipse.wst.xmleditor.doc.user 1.0.400.v200805211530 org.eclipse.datatools.enablement.sap.maxdb 1.0.0.v200805152355 org.python.pydev.ast 0.9.7 com.windowtester.swt.runtime.legacy 3.5.0.200806270034 org.eclipse.equinox.simpleconfigurator.manipulator 1.0.0.v20080427-2136 org.eclipse.equinox.p2.touchpoint.eclipse 1.0.0.v20080529-1225 com.instantiations.swt.graph 5.5.1 org.eclipse.gmf.doc 1.2.0.v20080516-1143 org.python.pydev 1.3.20 com.windowtester.swing.runtime 3.5.1.200809042232 org.eclipse.datatools.enablement.ibm.db2.iseries.ui 1.0.0.v200805160737 org.eclipse.datatools.connectivity.oda.profile 3.0.6.v200805152355 org.eclipse.mylyn.pde.ui 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.commons.ui 3.0.0.v20080619-1900 org.eclipse.emf.workspace.source 1.2.0.v200805130238-23-8s733I3C59379I org.eclipse.core.boot 3.1.100.v20080218 org.python.pydev.ast 1.2.2 org.eclipse.birt.doc 2.3.0.v20080617a com.instantiations.assist.eclipse.core.ui 5.5.0 org.python.pydev.jython 1.3.18 org.python.pydev.jython 1.0.5 org.eclipse.emf.validation 1.2.0.v200805170232 org.eclipse.equinox.jmx.client.rmi 1.0.0 org.eclipse.emf.mapping.ecore 2.4.0.v200806091234 com.instantiations.assist.eclipse.coverage 5.5.1.200809042337 com.instantiations.helpeditor.ui 1.3.4.200806270212 org.eclipse.emf.edit.ui 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editor.script 2.3.0.v200806102 org.eclipse.gmf.ecore.editor 2.0.100.v20080610-1132 com.windowtester.swt.recorder 3.5.1.200809042232 org.eclipse.uml2.diagram.source 0.8.0.v200806112132 org.eclipse.equinox.util 1.0.0.v20080414 org.eclipse.ecf.examples.source 2.0.0.v20080623-0046 org.eclipse.emf.mapping.xsd2ecore.editor 2.4.0.v200806091234 org.eclipse.pde.p2.ui 1.0.0.v20080604-2000 org.eclipse.birt.resources 2.3.0.v20080313 org.eclipse.emf.query.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.emf.ecore.change.edit 2.4.0.v200806091234 org.eclipse.datatools.sqltools.editor.core 1.0.0.v200805152355 org.polarion.eclipse.team.svn.connector.svnkit 2.0.1.I20080612-1500 org.eclipse.buckminster.download 1.1.0.r09319 com.swtdesigner 6.7.0.200806270151 org.python.pydev.parser 1.3.2 org.eclipse.jdt.compiler.apt 1.0.100.v20080513-1235 org.python.pydev.ast 1.0.7 com.windowtester.swt.gef.codegen 3.5.0.200806270034 org.eclipse.emf.ecore 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editors.schematic 2.3.0.v200806102 org.eclipse.pde.build 3.4.0.v20080604 com.instantiations.assist.eclipse 5.5.1 org.eclipse.birt.report.designer.ui.editor.xml.wtp 2.3.0.v200806102 org.eclipse.emf.cdo.tests.model1.edit 1.0.0.v200806180411 org.python.pydev 0.9.8 javax.xml 1.3.4.v200806030440 org.python.pydev 0.4.2 org.polarion.eclipse.team.svn.connector.javahl.win32 2.0.1.I20080612-1500 org.apache.ws.commons.util 1.0.0.v20080530-1550 org.apache.batik.bridge 1.6.0.v200805290154 org.eclipse.emf.search 0.7.0.v200806130939 org.eclipse.datatools.sqltools.parsers.sql.xml.query 1.0.0.v200805152355 org.eclipse.team.core 3.4.0.I20080605 org.eclipse.tptp.platform.execution 4.4.100.v200806050100 org.eclipse.uml2.diagram.parser 0.8.0.v200806112132 org.eclipse.birt.report.item.crosstab.core 2.3.0.v20080606 org.python.pydev.core 0.9.8 org.eclipse.uml2.search.common.ui 0.7.0.v200806130939 org.eclipse.mylyn.ide.ui 3.0.0.v20080619-1900 org.eclipse.xsd.cheatsheets 2.3.0.v200806091234 org.eclipse.wst.xsd.core 1.1.300.v200805282012 org.eclipse.net4j.http 1.0.0.v200806180305 org.python.pydev.core 1.3.6 org.eclipse.ui.externaltools 3.2.0.v20080514-1542 org.eclipse.birt.report.engine.emitter.prototype.excel 2.3.0.v20080606 org.python.pydev.parser 1.3.17 com.instantiations.eclipse.util 5.3.2.200806270030 org.eclipse.ui.editors 3.4.0.v20080603-2000 org.eclipse.buckminster.slf4j 1.0.0 org.python.pydev.ast 1.3.9 org.eclipse.gef.source 3.4.0.v20080115-677-8082A5696H274A org.python.pydev.core 1.0.8 org.python.pydev.ast 1.3.14 org.eclipse.team.ui 3.4.0.I20080604 org.eclipse.emf.query.ocl.source 1.2.0.v200805130238-11-7w311916241349 com.windowtester.swt.runtime 3.5.0.200806270034 org.eclipse.osgi.jmx 1.0.0.v20080610-1530 org.eclipse.net4j.examples.source 1.0.0.v200806180305 org.eclipse.tptp.monitoring.lta.symptom.doc.user 4.5.0.v200805132041 org.eclipse.equinox.p2.updatechecker 1.0.0.v20080427-2136 org.eclipse.ui.views 3.3.0.I20080509-2000 org.eclipse.emf.search.ocl.ui 0.7.0.v200806130939 javax.mail 1.4.0.v200804091730 ch.ethz.iks.slp 1.0.0.RC4_v200806091030 org.eclipse.core.resources.jmx 1.0.0.v20070510 javax.wsdl 1.4.0.v200806030407 org.eclipse.wst.xml.ui 1.0.401.v200807240448 org.python.pydev 1.2.1 org.eclipse.birt.chart.ui.extension 2.3.0.v20080610 org.python.pydev.core 0.9.8.3 org.python.pydev.parser 0.9.7 org.eclipse.jem.util 2.0.100.v200805140020 org.eclipse.tptp.monitoring.lta.la.core 4.5.0.v200805270100 org.python.pydev.core 0.9.8.2 org.eclipse.jdt.junit.runtime 3.3.0.v20080603-2000 org.python.pydev.core 1.2.4 org.python.pydev.core 0.9.8.1 org.eclipse.ecf.discovery 2.0.0.v20080623-0046 org.apache.xml.serializer 2.7.1.v200806030322 org.python.pydev.core 0.9.8.7 org.python.pydev.core 0.9.8.6 org.eclipse.gmf.runtime.draw2d.ui.render.awt 1.1.0.v20080603-1553 com.windowtester.eclipse.help 3.5.1.200809042232 org.python.pydev.core 0.9.8.5 org.python.pydev.core 0.9.8.4 org.python.pydev 0.9.8.7 org.eclipse.birt.report.engine.emitter.ppt 2.3.0.v20080606 org.apache.commons.httpclient 3.1.0.v20080605-1935 com.windowtester.runtime.legacy 3.5.0.200806270034 org.eclipse.datatools.enablement.oda.xml.ui 1.1.0.v200805270900 org.python.pydev 0.9.8.3 org.eclipse.mylyn.compatibility 3.0.2.v20080918-1100-e3x org.python.pydev 0.9.8.4 org.python.pydev 0.9.8.5 org.eclipse.wst.common.project.facet.ui 1.3.0.v200805281731 org.eclipse.gmf.tooldef 2.0.0.v20080417-1610 org.python.pydev 0.9.8.6 org.eclipse.core.commands 3.4.0.I20080509-2000 org.python.pydev.jython 1.3.9 org.eclipse.datatools.modelbase.sql.edit 1.0.0.v200805152355 org.python.pydev 0.9.8.2 org.python.pydev 0.9.8.1 org.eclipse.emf.cdo.server.hibernate.libraries 1.0.0.v200806180411 org.eclipse.equinox.p2.ui.admin 1.0.0.v20080522-1735 org.eclipse.wst.common.core 1.1.201.v200806010600 org.eclipse.emf.compare.diff.edit 0.8.0.v200806180301 com.swtdesigner.layout.group.designer 6.7.0.200806270151 org.eclipse.ui.views.properties.tabbed 3.4.0.I20080527-2000 org.python.pydev.jython 1.2.2 org.eclipse.wst.common.emf 1.1.200.v200805140020 com.instantiations.packager.refactoring 2.5.1 com.instantiations.assist.eclipse.fragment.jdt 5.5.1 org.eclipse.datatools.connectivity.dbdefinition.genericJDBC 1.0.0.v200805152355 org.python.pydev.parser 1.0.7 org.eclipse.datatools.sqltools.data.ui 1.1.0.v200805310400 org.eclipse.buckminster.core 1.1.0.r09336 org.eclipse.mylyn.tasks.core 3.0.1.v20080721-2100-e3x org.eclipse.birt.report.designer.ui.samplesview 2.3.0.v20080606 org.eclipse.equinox.launcher 1.0.100.v20080509-1800 org.eclipse.birt.report.item.crosstab.ui 2.3.0.v20080606 org.eclipse.m2m.atl.adt.perspective 2.0.0.v200806101117 javax.servlet.jsp 2.0.0.v200806031607 com.swtdesigner 6.7.1.200809050053 org.eclipse.jet.ui 0.9.0.v20080527 org.eclipse.m2m.qvt.oml.common.ui 1.0.0.v20080611-1330 com.swtdesigner.layout.group 6.7.1.200809050053 org.eclipse.gmf.runtime.common.ui.services.action 1.1.0.v20080507-2230 org.eclipse.emf.search.ecore.ui 0.7.0.v200806130939 org.python.pydev 1.0.5 org.eclipse.emf.workspace.ui 1.2.0.v200805130238 com.instantiations.helpeditor.core.toc 1.3.4.200809042225 org.slf4j.extendable 1.4.3 org.python.pydev.core 1.3.14 org.eclipse.hyades.logging.core 4.3.200.v200804110100 org.eclipse.datatools.enablement.postgresql.ui 1.0.0.v200806060334 org.eclipse.gmf.graphdef 2.0.100.v20080528-1052 org.eclipse.mylyn.help.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.protocol.bittorrent 0.3.0 org.eclipse.birt.report.engine 2.3.0.v20080616 org.eclipse.datatools.connectivity.ui.dse 1.1.0.v200805152355 org.eclipse.mylyn.bugzilla.core 3.0.0.v20080619-1900 org.python.pydev.jython 1.3.4 org.python.pydev 0.9.0 org.eclipse.equinox.preferences.jmx 1.0.0.v20070510 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.1 org.eclipse.datatools.enablement.postgresql.dbdefinition 1.0.0.v200805152355 org.eclipse.m2m.qvt.oml.common.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.eclipse.tptp.monitoring.lta.logui 4.5.0.v200805141427 org.eclipse.birt.report.debug.ui 2.3.0.v200806102 org.eclipse.gmf.runtime.emf.ui 1.1.0.v20080516-1748 org.eclipse.ui.cheatsheets 3.3.100.v20080508 org.python.pydev 1.2.9 org.eclipse.birt.report.engine.emitter.wpml 2.3.0.v20080606 org.eclipse.help.appserver 3.1.300.v20080507 org.python.pydev.parser 1.3.9 com.xored.composer.ui 1.3.4.200806270212 org.eclipse.datatools.sqltools.tabledataeditor 1.0.0.v200805240400 org.eclipse.gmf.runtime.emf.type.core 1.1.0.v20080425-1959 org.python.pydev 1.3.7 com.ibm.icu.base 3.8.1.v20080530 org.python.pydev.ast 1.3.1 org.apache.batik.pdf 1.6.0.v200806031500 org.eclipse.emf.mapping.ui 2.4.0.v200806091234 org.eclipse.net4j.db.derby 1.0.0.v200806180305 org.eclipse.net4j.http.server 1.0.0.v200806180305 org.python.pydev.jython 1.3.17 org.python.pydev.jython 1.0.6 org.python.pydev.ast 1.2.3 org.eclipse.team.svn.sources 0.7.1.I20080612-1500 org.eclipse.uml2.diagram.usecase 0.8.0.v200806112132 org.eclipse.wst.sse.core 1.1.300.v200805221633 org.eclipse.birt.report.designer.ui 2.3.0.v20080606 org.eclipse.jdt.apt.ui 3.3.100.v20080407-1345 com.instantiations.eclipse.debug 5.3.2.200809042027 org.eclipse.gmf.codegen.ui 1.1.0.v20080512-1200 com.instantiations.designer.databinding 6.7.1.200809050053 org.python.pydev.core 1.0.1 com.windowtester.swt.runtime.gef 3.5.0.200806270034 com.instantiations.common.ui 5.3.2.200809042027 org.python.pydev 1.3.19 org.eclipse.ui.forms 3.3.100.v20080611 org.eclipse.birt.data 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase.ase.ui 1.0.1.v200805310538 org.polarion.eclipse.team.svn.connector 2.0.1.I20080612-1500 org.eclipse.emf.common.ui 2.4.0.v200806091234 org.eclipse.datatools.enablement.ibm.informix.dbdefinition 1.0.0.v200805152355 org.eclipse.wst.xsdeditor.doc.user 1.0.400.v200805150028 org.eclipse.emf.mint.doc 0.7.0.v200806172223 org.eclipse.buckminster.generic 1.0.0.r09319 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.1 org.eclipse.emf.validation.examples 1.2.0.v200805280204 org.eclipse.team.svn.core 0.7.1.I20080612-1500 org.python.pydev.ast 1.2.4 org.eclipse.emf.cdo.server.hibernate 1.0.0.v200806180411 org.python.pydev.jython 1.3.8 org.eclipse.gmf.xpand 1.1.0.v20080528-1052 org.eclipse.datatools.sqltools.data.core 1.0.0.v200805152355 org.eclipse.emf.ecoretools 0.8.0.v200806130600 org.python.pydev.core 1.3.18 org.eclipse.gmf.runtime.common.core 1.1.0.v20080425-1959 org.eclipse.emf 2.4.0.v200806091234 org.eclipse.emf.ecoretools.properties 0.8.0.v200806130600 org.python.pydev.core 1.2.7 org.python.pydev.parser 0.9.8 org.eclipse.datatools.enablement.ibm.db2.luw.ui 1.0.0.v200805160737 org.eclipse.mylyn.team.ui 3.0.0.v20080619-1900 org.eclipse.help.base 3.3.100.v20080617 org.eclipse.m2m.atl.doc 2.0.0.v200806101117 org.eclipse.net4j.examples 1.0.0.v200806180305 org.eclipse.birt.data.aggregation 2.3.0.v20080606 org.eclipse.gmf.examples 1.0.100.v20080425-1959 org.eclipse.emf.search.common 0.7.0.v200806130939 org.python.pydev.ast 1.3.17 org.eclipse.ecf.provider.filetransfer.ssl 1.0.0.v20080611-1715 org.python.pydev.core 1.0.3 org.eclipse.team.svn.core.nl1 0.7.1.I20080612-1500 org.eclipse.emf.cdo.server.hibernate.teneo 1.0.0.v200806180411 org.eclipse.wst.validation.ui 1.2.1.v200807292117 org.python.pydev.parser 1.0.3 org.python.pydev.ast 1.3.6 org.eclipse.search 3.4.0.v20080603-2000 org.eclipse.jet 0.9.0.v20080527 org.python.pydev 1.3.2 org.python.pydev.jython 1.2.6 org.python.pydev.parser 1.3.14 org.eclipse.datatools.oda.cshelp 1.0.0.v200805152355 org.eclipse.jdt.junit 3.4.0.v20080603-2000 org.eclipse.datatools.sqltools.debugger.core 1.0.0.v200805152355 org.mortbay.jetty 5.1.14.v200806031611 org.eclipse.equinox.p2.garbagecollector 1.0.0.v20080506-1939 org.eclipse.m2m.atl.adt.debug 2.0.0.v200806101117 org.eclipse.equinox.jmx.client 1.0.0.v20070515 org.python.pydev.core 1.3.5 org.eclipse.mylyn.bugzilla.core 3.0.1.v20080721-2100-e3x org.python.pydev.parser 0.9.8.3 org.python.pydev.parser 0.9.8.2 org.python.pydev.parser 0.9.8.1 org.eclipse.osgi.services 3.1.200.v20071203 org.python.pydev 1.0.4 org.eclipse.hyades.lta.logging.adapter 4.5.0.v200806121215 org.eclipse.datatools.sqltools.sqleditor 1.0.0.v200805152355 org.python.pydev.parser 0.9.8.7 org.python.pydev.parser 0.9.8.6 org.eclipse.gmf.runtime.emf.core 1.1.0.v20080425-1959 org.python.pydev.parser 0.9.8.5 org.eclipse.core.contenttype 3.3.0.v20080604-1400 org.eclipse.ecf.datashare 1.3.0.v20080623-0046 org.python.pydev.parser 0.9.8.4 org.eclipse.tptp.platform.common.ui 4.4.100.v200806110100 org.junit 3.8.2.v20080602-1318 com.instantiations.assist.eclipse.coverage 5.5.0.200806270255 javax.activation 1.1.0.v200806101325 com.instantiations.assist.eclipse.scheduler 5.5.1 javax.management 1.2.0.v200803061811 org.eclipse.emf.edit 2.4.0.v200806091234 org.eclipse.ecf.provider.discovery 2.0.0.v20080623-0046 org.eclipse.birt.chart.device.pdf 2.3.0.v20080417 org.eclipse.equinox.wireadmin 1.0.0.v20080407 org.python.pydev.ast 1.0.8 org.eclipse.net4j.buddies.server 1.0.0.v200806180305 org.eclipse.wst.internet.cache 1.0.301.v200805140020 com.windowtester.runtime 3.5.0.200806270034 org.mx4j.jmx 3.0.3.v200802291451 org.eclipse.pde.ui 3.4.0.v20080530 org.eclipse.ocl 1.2.0.v200806091438 org.eclipse.birt.cshelp 2.3.0.v20080617 org.eclipse.emf.query.doc 1.2.0.v200805130238 org.eclipse.pde.runtime 3.4.0.v20080530-1200 org.apache.axis 1.4.0.v200807230600 org.apache.log4j 1.2.13.v200806030600 org.eclipse.ui.intro 3.2.200.v20080610 com.instantiations.assist.eclipse.pattern 5.5.1 com.xored.swt.composer 1.3.4.200806270212 org.apache.batik.ext.awt 1.6.0.v200805290154 org.eclipse.emf.cdo.ui 1.0.0.v200806180411 org.eclipse.jface 3.4.0.I20080606-1300 com.windowtester.swt.runtime.gef 3.5.1.200809042232 org.eclipse.gmf.runtime.emf.type.ui 1.1.0.v20080425-1959 org.eclipse.uml2.uml 2.2.0.v200805141133 org.objectweb.asm 3.0.0.v200803061811 org.python.pydev.core 1.1.0 org.eclipse.ecf.discovery.ui 2.0.0.v20080623-0046 org.python.pydev 1.3.14 org.eclipse.gmf.runtime.diagram.ui.printing 1.1.0.v20080501-1739 org.eclipse.mylyn.ide.ant 3.0.2.v20080918-1100-e3x org.eclipse.xsd.example.installer 1.0.0.v200806091234 org.eclipse.uml2.diagram.examples.profile 0.8.0.v200806112132 org.eclipse.ui.intro.universal 3.2.200.v20080508 org.python.pydev.ast 0.9.7.99 org.eclipse.emf.codegen 2.4.0.v200806091234 org.eclipse.equinox.p2.metadata 1.0.0.v20080514-1900 org.eclipse.ecf.example.collab 1.3.0.v20080623-0046 org.python.pydev.parser 1.2.4 org.eclipse.birt.report.engine.emitter.html 2.3.0.v20080606 org.python.pydev.jython 1.3.16 org.eclipse.osgi 3.4.0.v20080605-1900 org.eclipse.emf.databinding 1.0.0.v200806091234 org.eclipse.help 3.3.100.v20080610 org.eclipse.net4j.db.hsqldb 1.0.0.v200806180305 org.eclipse.gmf.runtime.diagram.ui.dnd 1.1.0.v20080425-1959 org.eclipse.birt.report.model 2.3.0.v20080605 org.eclipse.datatools.enablement.finfo 1.5.1.v200805152355 org.eclipse.jsch.ui 1.1.100.I20080415 org.python.pydev 1.3.10 org.python.pydev.parser 1.3.6 org.eclipse.emf.mapping.ecore.editor 2.4.0.v200806091234 org.eclipse.datatools.sqltools.common.ui 1.0.0.v200805152355 org.eclipse.birt.report.engine.emitter.pdf 2.3.0.v20080606 org.python.pydev 1.2.8 com.instantiations.packager.help 2.5.1 org.eclipse.equinox.p2.directorywatcher 1.0.0.v20080505-1850 org.eclipse.draw2d 3.4.0.v20080529 org.eclipse.draw2d.source 3.4.0.v20080115-33-7w3119163_ org.eclipse.ecf.ui 2.0.0.v20080623-0046 org.eclipse.birt.report.data.oda.jdbc.dbprofile 2.3.0.v20080606 org.eclipse.equinox.security.win32.x86 1.0.0.v20080529-1600 org.eclipse.wst.xml.ui 1.0.400.v200806051910 org.eclipse.jdt.ui 3.4.0.v20080603-2000 org.eclipse.equinox.p2.ui 1.0.0.v20080530-1237 org.eclipse.hyades.lta.logging.adapter.ui 4.5.0.v200805132041 org.eclipse.mylyn.monitor.ui 3.0.0.v20080619-1900 org.python.pydev 0.9.1 org.eclipse.emf.ecore.sdo.doc 2.4.0.v200806091234 com.instantiations.eclipse.ast.editor 5.5.1 org.eclipse.ant.ui 3.3.0.v20080529 org.python.pydev.core 1.3.13 org.eclipse.gef.doc.isv 3.4.0.v20080606 org.apache.xml.resolver 1.2.0.v200806030312 org.eclipse.datatools.enablement.ibm.db2.iseries.dbdefinition 1.0.0.v200806100223 org.eclipse.birt 2.3.0.v20080304 org.eclipse.equinox.security 1.0.0.v20080512-1800 com.instantiations.tools 5.3.2.200809042027 org.eclipse.jdt.core.manipulation 1.2.0.v20080603-2000 org.eclipse.gmf.runtime.diagram.ui.printing.render 1.1.0.v20080425-1959 org.eclipse.net4j.buddies.ui 1.0.0.v200806180305 org.eclipse.emf.codegen.ui 2.4.0.v200806091234 org.eclipse.team.svn 0.7.1.I20080612-1500 org.eclipse.wst.command.env.infopop 1.0.100.v200805301544 org.eclipse.datatools.enablement.hsqldb.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.runtime.common.ui.services.properties 1.1.0.v20080425-1959 org.eclipse.emf.cheatsheets 2.4.0.v200806091234 org.eclipse.ecf.presence.collab.ui 1.2.0.v20080623-0046 org.eclipse.update.core 3.2.200.v20080515 org.eclipse.wst.command.env.core 1.0.204.v200805140020 org.apache.batik.swing 1.6.0.v200805290154 org.eclipse.birt.report.designer.samplereports 2.3.0.v20080606 org.python.pydev.parser 1.0.8 org.eclipse.xsd 2.4.0.v200806091234 com.instantiations.assist.eclipse.fragment.jdt 5.5.0 org.eclipse.emf.transaction 1.2.0.v200805130238 org.eclipse.mylyn.team.cvs 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.ui 1.0.0.v20080611-1330 org.eclipse.emf.validation.source 1.2.0.v200805130238-35-9oA55S5J8H5ADM org.eclipse.datatools.enablement.hsqldb 1.0.0.v200805152355 org.eclipse.wst.common.uriresolver 1.1.301.v200805140415 org.eclipse.equinox.jsp.jasper 1.0.100.v20080427-0830 org.eclipse.osgi.util 3.1.300.v20080303 org.eclipse.datatools.connectivity.oda.consumer 3.1.2.v200805230718 org.eclipse.emf.compare.source 0.8.0.v200806180301 org.python.pydev.core 1.3.19 org.eclipse.emf.query.examples 1.2.0.v200805130238 org.eclipse.buckminster.runtime 1.1.0.r09338 org.eclipse.datatools.enablement.sybase.asa.dbdefinition 1.0.0.v200805240040 org.eclipse.datatools.sqltools.sql 1.0.0.v200805152355 org.apache.batik.svggen 1.6.0.v200805290154 org.eclipse.buckminster.cvs 1.0.0.r09319 org.python.pydev.core 1.2.6 org.eclipse.equinox.simpleconfigurator 1.0.0.v20080604 org.eclipse.help.ui 3.3.100.v20080521 org.apache.batik.dom 1.6.0.v200805290154 org.python.pydev.parser 1.1.0 org.eclipse.ecf.server.generic 1.2.0.v20080623-0046 com.windowtester.swt.runtime.win32 3.5.0.200806270034 org.eclipse.emf.cdo.examples 1.0.0.v200806180411 org.eclipse.ecf.provider.remoteservice 1.3.0.v20080623-0046 org.eclipse.gmf.runtime.notation.edit 1.1.0.v20080507-1326 org.eclipse.core.filesystem 1.2.0.v20080604-1400 org.eclipse.m2m.qvt.oml.runtime.ui 1.0.0.v20080611-1330 org.eclipse.emf.cdo.server.hibernate.source 1.0.0.v200806180411 org.python.pydev.jython 1.3.7 org.eclipse.gmf.codegen.edit 2.1.0.v20080610-1132 org.eclipse.buckminster.pde 1.1.0.r09351 org.python.pydev.ast 1.2.5 org.python.pydev.core 1.0.2 org.python.pydev.ast 1.3.16 org.apache.batik.parser 1.6.0.v200805290154 org.python.pydev.parser 1.0.2 org.eclipse.wst.common.infopop 1.0.100.v200805301550 org.eclipse.ecf.remoteservice 2.0.0.v20080623-0046 org.python.pydev 1.3.1 org.python.pydev.jython 1.2.5 org.eclipse.emf.mapping 2.4.0.v200806091234 org.eclipse.emf.cdo.server.hibernate.id 1.0.0.v200806180411 com.windowtester.runtime.legacy 3.5.1.200809042232 org.python.pydev.ast 1.3.7 org.eclipse.datatools.enablement.oracle 1.0.0.v200805152355 org.python.pydev.parser 1.3.15 org.eclipse.emf.importer 2.4.0.v200806091234 org.eclipse.birt.example 2.3.0.v20080304 org.eclipse.birt.report.designer.ui.lib 2.3.0.v20080606 org.eclipse.emf.cdo.server.source 1.0.0.v200806180411 org.eclipse.gmf.runtime.common.ui.services 1.1.0.v20080612-1229 org.eclipse.datatools.sqltools.db.generic 1.0.0.v200805152355 org.eclipse.net4j 1.0.0.v200806180305 org.eclipse.jdt 3.4.0.v20080603-2000 org.eclipse.emf.cdo.source 1.0.0.v200806180411 org.eclipse.datatools.connectivity 1.1.0.v200805160228 com.instantiations.assist.eclipse.scheduler 5.5.0 org.eclipse.emf.ecore.sdo.source 2.4.0.v200806091234 org.eclipse.wst.sse.doc.user 1.1.0.v200805211530 org.python.pydev 0.9.7.99 org.eclipse.emf.transaction.source 1.2.0.v200805130238-23-8s733I3C59379I org.w3c.dom.svg 1.1.0.v200806040011 org.python.pydev.core 1.3.4 javax.xml.rpc 1.1.0.v200806030420 org.eclipse.ocl.uml.source 1.2.0.v200805130238-11-7w311916241349 com.instantiations.eclipse.ui 5.3.2.200806270030 org.eclipse.jface.text 3.4.0.v20080603-2000 org.apache.batik.xml 1.6.0.v200805290154 org.python.pydev 1.0.3 org.eclipse.gmf.bridge.ui.dashboard 2.0.0.v20080417-1610 org.apache.lucene 1.9.1.v20080530-1600 org.eclipse.emf.query.ocl 1.2.0.v200805130238 org.eclipse.uml2.uml.resources 2.2.0.v200805131030 org.eclipse.ecf.provider.r_osgi 2.0.0.v20080623-0046 org.eclipse.emf.importer.java 2.4.0.v200806091234 org.python.pydev.debug 1.3.20 org.eclipse.emf.ecore.xmi 2.4.0.v200806091234 org.python.pydev.mylyn 0.3.0 com.instantiations.assist.eclipse.pattern 5.5.0 org.eclipse.emf.source 2.4.0.v200806091234 org.eclipse.ui.browser 3.2.200.v20080507 org.eclipse.tptp.lta.sdb.epi 4.5.0.v200805132041 org.eclipse.net4j.doc 1.0.0.v200806180305 org.eclipse.gmf.bridge 1.1.0.v20080528-1052 com.instantiations.assist.eclipse.admin 5.5.1 org.eclipse.ecf.presence 1.3.0.v20080623-0046 org.eclipse.jet.editor 0.9.0.v20080226 org.eclipse.emf.mint 0.7.0.v200806172223 org.eclipse.ecf.provider 1.3.0.v20080623-0046 com.instantiations.assist.eclipse.core.ant 5.5.0 org.apache.axis 1.4.0.v200806030120 org.eclipse.equinox.p2.metadata.repository 1.0.0.v20080604 com.ibm.icu 3.8.1.v20080530 org.eclipse.gmf.runtime.diagram.ui.properties 1.1.0.v20080603-1553 org.eclipse.team.svn.mylyn.source 0.7.1.I20080612-1500 org.eclipse.ecf.provider.datashare 1.3.0.v20080623-0046 org.eclipse.birt.report.data.oda.sampledb 2.3.0.v20080606 org.eclipse.m2m.atl.drivers.emf4atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.providers.ide 1.1.0.v20080425-1959 org.python.pydev 0.8.0 org.eclipse.datatools.connectivity.sqm.server.ui 1.1.0.v200806050117 com.nordea.cd.dev.plugin.stubbuilder 1.0.2 org.eclipse.emf.mapping.xsd2ecore 2.4.0.v200806091234 org.python.pydev.parser 1.2.5 org.eclipse.xsd.mapping.editor 2.4.0.v200806091234 org.python.pydev.jython 1.3.15 org.eclipse.gmf.xpand.editor 1.0.0.v20080425-1959 org.eclipse.tptp.platform.lta.common 4.5.0.v200806050100 org.eclipse.buckminster.pde.ui 1.0.0.r09319 org.eclipse.emf.validation.ocl 1.2.0.v200805130238 org.eclipse.ui.console 3.3.0.v20080529-1300 org.eclipse.net4j.ui 1.0.0.v200806180305 org.eclipse.emf.workspace 1.2.0.v200805130238 org.python.pydev.ast 0.9.8.6 org.python.pydev.ast 0.9.8.5 org.eclipse.emf.teneo.annotations 1.0.0.v200806111928 org.python.pydev.ast 0.9.8.4 org.eclipse.ui.net 1.0.0.I20080605 org.python.pydev.ast 0.9.8.3 org.eclipse.net4j.db.source 1.0.0.v200806180305 org.eclipse.zest.core 1.0.0.v20080115 org.python.pydev.ast 0.9.8.2 org.eclipse.tptp.lta.log.epi 4.5.0.v200805132041 org.python.pydev.ast 0.9.8.1 org.python.pydev 1.3.13 org.eclipse.equinox.app 1.1.0.v20080421-2006 org.eclipse.equinox.p2.metadata.generator 1.0.0.v20080604 org.python.pydev 1.2.7 org.eclipse.emf.ocl.examples 1.2.0.v200805130238 org.eclipse.mylyn.jira.core 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.commons.net 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql.query 1.0.1.v200805152355 org.eclipse.datatools.sqltools.plan 1.0.0.v200805152355 com.swtdesigner.help 6.7.1.200809050053 org.eclipse.ecf.ssl 1.0.0.v20080611-1715 org.eclipse.team.cvs.core 3.3.100.I20080605 org.python.pydev.ast 0.9.8 com.instantiations.helpeditor.core.toc 1.3.4.200806270212 org.eclipse.core.databinding 1.1.0.I20080527-2000 org.eclipse.tptp.platform.common 4.3.200.v200805300100 org.eclipse.net4j.util.ui 1.0.0.v200806180305 org.eclipse.mylyn.commons.core 3.0.0.v20080619-1900 org.python.pydev 1.3.9 org.eclipse.emf.search.common.ui 0.7.0.v200806130939 org.eclipse.m2m.atl.engine.emfvm 2.0.0.v200806101117 org.eclipse.uml2.diagram.csd 0.8.0.v200806112132 org.python.pydev.parser 1.3.7 org.eclipse.team.svn.ui 0.7.1.I20080612-1500 org.python.pydev.core 1.3.12 org.eclipse.datatools.modelbase.sql.query.edit 1.0.0.v200806070329 com.instantiations.packager.core 2.5.1 com.windowtester.swing.runtime 3.5.0.200806270034 org.eclipse.update.ui 3.2.100.v20080318 org.apache.commons.codec 1.2.0.v20080530-1550 org.eclipse.mylyn.bugzilla.core 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.editor.ui 1.0.0.v20080611-1330 org.eclipse.m2m.qvt.oml.samples 1.0.0.v20080611-1330 org.eclipse.mylyn.context.core 3.0.0.v20080619-1900 org.eclipse.xsd.source 2.4.0.v200806091234 org.eclipse.gmf.runtime.diagram.core 1.1.0.v20080425-1959 org.eclipse.m2m.atl.drivers.uml24atl 2.0.0.v200806101117 com.instantiations.eclipse.util 5.3.2.200809042027 org.eclipse.emf.ecore.sdo 2.4.0.v200806091234 com.instantiations.eclipse.startup 5.3.2.200809042027 org.eclipse.gmf 1.0.0.v20080425-1959 org.python.pydev 0.9.2 org.apache.batik.util.gui 1.6.0.v200805290154 org.python.pydev.ast 0.9.8.7 com.nordea.cd.dev.plugin.wsdl2java 1.0.2 org.eclipse.datatools.enablement.sybase.models 1.0.0.v200805152355 org.python.pydev.ast 1.0.1 org.eclipse.emf.compare.diff 0.8.0.v200806180301 org.eclipse.birt.report.designer 2.3.0.v200806102 org.eclipse.equinox.http.registry 1.0.100.v20080427-0830 ch.ethz.iks.r_osgi.remote 1.0.0.RC2_v20080623-0046 org.eclipse.gmf.graphdef.codegen.ui 1.0.100.v20080425-1959 org.eclipse.m2m.qvt.oml.editor.source 1.0.0.v20080611-1330-1--7w3119172202441 org.sat4j.pb 2.0.0.v20080602 org.eclipse.wst.validation 1.2.1.v200807292117 org.apache.batik.util 1.6.0.v200805290154 org.eclipse.equinox.transforms.hook 1.0.0.v20080610 org.eclipse.emf.teneo.hibernate 1.0.0.v200806111928 org.eclipse.uml2.examples 2.1.0.v200805131030 org.eclipse.mylyn.java.tasks 3.0.2.v20080918-1100-e3x org.eclipse.equinox.preferences 3.2.200.v20080421-2006 com.instantiations.assist.eclipse.fragment.swt 5.5.0 org.eclipse.ocl.doc 1.2.0.v200805130238 org.eclipse.jdt.apt.core 3.3.100.v20080513-1235 org.eclipse.birt.report.engine.fonts 2.3.0.v20080606 org.eclipse.mylyn.monitor.ui 3.0.2.v20080918-1100-e3x org.eclipse.gmf.tooldef.edit 2.0.0.v20080610-1132 org.eclipse.gmf.runtime.draw2d.ui.render 1.1.0.v20080507-2230 com.windowtester.swt.platform.ext 3.5.0.200806270034 org.eclipse.ecf.example.clients 1.3.0.v20080623-0046 org.eclipse.core.net 1.1.0.I20080604 org.eclipse.wst.xsd.core 1.1.301.v200807240448 org.eclipse.datatools.connectivity.oda.flatfile 3.0.6.v200805261930 org.python.pydev.refactoring 1.3.20 org.python.pydev.parser 1.0.1 org.python.pydev.ast 1.3.19 org.eclipse.equinox.registry.jmx 1.0.0.v20080610-1530 com.instantiations.eclipse.model.jsp 5.5.0 org.eclipse.mylyn.context.ui 3.0.2.v20080918-1100-e3x org.python.pydev.core 1.0.5 org.eclipse.hyades.lta.resources.database 4.5.0.v200805271330 org.python.pydev 0.6.1 org.python.pydev.parser 1.3.12 org.eclipse.equinox.p2.console 1.0.0.v20080514-1900 org.eclipse.mylyn.commons.net 3.0.1.v20080721-2100-e3x org.eclipse.net4j.jms.api 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.lexer 1.0.1.v200805152355 org.python.pydev.ast 1.3.4 org.python.pydev 1.3.4 org.python.pydev.jython 1.2.8 org.python.pydev 0.8.5 org.python.pydev 0.5.3 org.eclipse.wst.sse.ui 1.1.1.v200808141919 org.eclipse.emf.query 1.2.0.v200805130238 org.eclipse.core.runtime.compatibility 3.2.0.v20071008 org.eclipse.gmf.runtime.notation 1.1.0.v20080507-1326 org.eclipse.birt.report.data.oda.sampledb.ui 2.3.0.v20080606 org.python.pydev.ast 1.2.6 com.instantiations.eclipse.mail.ui 5.5.1 org.eclipse.zest.layouts 1.0.0.v20080226 org.python.pydev.jython 1.3.6 org.eclipse.net4j.jms.admin 1.0.0.v200806180305 org.eclipse.core.databinding.beans 1.1.0.I20080508-2000a org.python.pydev 1.1.0 org.python.pydev.core 1.3.20 org.eclipse.gmf.runtime.emf.commands.core 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.common.ui.services.dnd.ide 1.1.0.v20080425-1959 org.eclipse.datatools.connectivity.apache.derby 1.0.1.v200805152355 org.python.pydev.core 1.2.9 org.eclipse.mylyn.context.core 3.0.2.v20080918-1100-e3x org.eclipse.equinox.p2.artifact.repository 1.0.0.v20080609-0850 org.eclipse.gef 3.4.0.v20080526 org.eclipse.gmf.runtime.common.ui 1.1.0.v20080512-1200 org.eclipse.emf.ecoretools.tabbedproperties 0.8.0.v200806130600 com.instantiations.assist.eclipse.core.ant 5.5.1 org.eclipse.emf.ecore.change 2.4.0.v200806091234 org.eclipse.jet.doc 0.9.0.v20080522 org.eclipse.emf.transaction.examples 1.2.0.v200806051817 org.eclipse.gmf.runtime.draw2d.ui 1.1.0.v20080610-1132 org.eclipse.equinox.jmx.server.rmi 1.0.0.v20070510 org.eclipse.ecf.examples.remoteservices.common 1.0.100.v20080623-0046 org.eclipse.wst.standard.schemas 1.0.102.v200807220733 org.eclipse.equinox.p2.jarprocessor 1.0.0.v20080514-1900 org.eclipse.birt.report.data.oda.jdbc 2.3.0.v20080610 com.windowtester.runner 3.5.0.200806270034 com.windowtester.swt.codegen 3.5.1.200809042232 org.eclipse.emf.cdo.tests.model2.edit 1.0.0.v200806180411 javax.wsdl 1.5.1.v200806030408 org.eclipse.datatools.enablement.sap.maxdb.ui 1.0.0.v200805152355 org.eclipse.equinox.launcher.win32.win32.x86 1.0.100.v20080509-1800 org.eclipse.birt.core 2.3.0.v20080606 javax.servlet 2.5.0.v200806031605 org.eclipse.uml2.codegen.ecore.ui 1.4.0.v200805131030 com.windowtester.swt.recorder 3.5.0.200806270034 org.eclipse.mylyn 3.0.1.v20080721-2100-e3x org.eclipse.uml2.search.ocl 0.7.0.v200806130939 org.python.pydev.core 1.3.3 org.eclipse.core.jobs 3.4.0.v20080512 org.python.pydev.core 0.9.5 org.eclipse.emf.validation.ui.ide 1.2.0.v200805130238 org.python.pydev 1.0.2 org.eclipse.wst.validation.ui 1.2.0.v200805262011 com.windowtester.swing.recorder 3.5.1.200809042232 com.instantiations.helpeditor.help 1.3.4.200809042225 org.eclipse.gmf.map.edit 2.1.0.v20080610-1132 org.eclipse.emf.ecore.edit 2.4.0.v200806091234 org.eclipse.datatools.enablement.msft.sqlserver.dbdefinition 1.0.0.v200805152355 org.mortbay.jetty.util 6.1.7.v200806031612 org.eclipse.datatools.sqltools.parsers.sql 1.0.1.v200805152355 org.eclipse.xsd.doc 2.4.0.v200806091234 org.eclipse.jdt.doc.isv 3.4.0.v20080612-1340 org.eclipse.jdt.apt.pluggable.core 1.0.100.v20080407-1345 org.eclipse.ecf.provider.bittorrent 0.3.0.v20080623-0046 org.eclipse.mylyn.monitor.ui 3.0.1.v20080721-2100-e3x org.python.pydev.jython 1.0.4 org.eclipse.wst.common.project.facet.ui 1.3.1.v200807301432 javax.xml.bind 2.0.0.v20080604-1500 org.apache.derby.core 10.3.1.4 org.eclipse.birt.report.debug.core 2.3.0.v200806102 org.python.pydev.parser 1.3.4 org.eclipse.jdt.debug.ui 3.3.0.v20080603 org.python.pydev.help 1.3.20 org.python.pydev 1.3.12 org.eclipse.gef.examples.ui.pde 3.4.0.v20080226 org.eclipse.ecf.provider.jmdns 2.0.0.v20080623-0046 org.eclipse.xsd.editor 2.4.0.v200806091234 org.python.pydev 1.2.6 org.eclipse.buckminster.generic.ui 1.0.0.r09319 org.eclipse.emf.ocl 1.1.100.v200805130238 org.eclipse.emf.search.ecore 0.7.0.v200806130939 org.eclipse.wst.common.frameworks.ui 1.1.200.v200805221400 org.eclipse.emf.ecoretools.doc 0.8.0.v200806130600 org.eclipse.wst.sse.ui.infopop 1.0.200.v200805301545 org.eclipse.tptp.platform.common.ui.trace 4.3.200.v200805290100 org.eclipse.net4j.jms.server 1.0.0.v200806180305 org.eclipse.ecf.filetransfer.ui 1.4.0.v20080623-0046 org.eclipse.birt.chart.device.swt 2.3.0.v20080522 org.eclipse.wst.xsd.ui 1.2.101.v200806051910 org.eclipse.emf.cdo.examples.source 1.0.0.v200806180411 org.eclipse.birt.report.designer.ui.lib.explorer 2.3.0.v20080606 org.mozilla.rhino 1.6.7.v20080214 org.python.pydev 1.3.16 org.eclipse.buckminster.ant 1.1.0.r09351 org.eclipse.equinox.metatype 1.0.0.v20070827 org.eclipse.m2m.atl.adt.wizard 2.0.0.v200806101117 org.eclipse.wst.command.env 1.0.305.v200805281530 org.eclipse.swt.jmx 1.0.0.v20070510 org.eclipse.emf.cdo.common 1.0.0.v200806180411 org.eclipse.ecf.examples.remoteservices.client 1.0.100.v20080623-0046 org.python.pydev.jython 1.3.14 org.python.pydev.parser 1.2.6 org.eclipse.emf.ecoretools.diagram.ui.outline 0.8.0.v200806130600 org.eclipse.emf.teneo.eclipse 1.0.0.v200806111928 org.eclipse.emf.cdo.tests.mango 1.0.0.v200806180411 org.eclipse.net4j.buddies.common 1.0.0.v200806180305 org.eclipse.net4j.buddies.chat 1.0.0.v200806180305 org.eclipse.mylyn.bugzilla.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.0 org.eclipse.datatools.enablement.sybase.ase.dbdefinition 1.0.0.v200805240040 org.apache.ant 1.7.0.v200803061910 org.eclipse.datatools.connectivity.oda.design 3.0.6.v200805152355 org.eclipse.emf.ocl.doc 1.1.100.v200805130238 org.eclipse.tptp.lta.gla.ui.epi 4.5.0.v200805160100 org.eclipse.equinox.jmx.server 1.0.0.v20071015 org.eclipse.wst.xml.core 1.1.300.v200806051910 org.eclipse.datatools.connectivity.oda.template.ui 3.0.6.v200805152355 org.python.pydev.ast 1.0.2 org.eclipse.birt.report.data.adapter 2.3.0.v20080606 org.eclipse.birt.chart.runtime 2.3.0.v20080304 org.eclipse.net4j.ui.source 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.query 1.0.1.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.1 org.eclipse.wst.dtd.ui 1.0.300.v200805152207 org.eclipse.mylyn.java.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.connectivity.oda.design.ui 3.0.6.v200805152355 org.eclipse.birt.report.designer.core 2.3.0.v200806102 org.eclipse.buckminster.jdt 1.0.0.r09319 org.eclipse.buckminster.p4 1.0.0.r09319 org.eclipse.ecf.core.source 2.0.0.v20080623-0046 org.eclipse.birt.report.runtime 2.3.0.v20080304 org.python.pydev.ast 1.1.0 com.windowtester.swt.runtime 3.5.1.200809042232 org.eclipse.uml2.doc 2.2.0.v200805201350 org.eclipse.mylyn.context.core 3.0.1.v20080721-2100-e3x org.eclipse.gmf.runtime.notation.providers 1.1.0.v20080425-1959 org.eclipse.tptp.platform.lta.log.doc.user 4.5.0.v200805132041 org.eclipse.team.svn.help 0.7.1.I20080612-1500 org.python.pydev 0.9.3 com.windowtester.swt.runtime.win32 3.5.1.200809042232 org.eclipse.m2m.qvt.oml.ocl.emf.libraries 1.0.0.v20080611-1330 org.eclipse.hyades.lta.analysis.engine 4.5.0.v200805271330 org.python.pydev.core 1.3.11 org.eclipse.datatools.connectivity.sqm.core 1.0.1.v200806041052 org.eclipse.equinox.jmx.server.xmlrpc 1.0.0.v20070608 org.eclipse.platform 3.3.100.v200806172000 org.eclipse.ui 3.4.0.I20080610-1200 org.eclipse.net4j.buddies.chat.ui 1.0.0.v200806180305 org.eclipse.emf.search.ecore.ocl 0.7.0.v200806130939 org.eclipse.gmf.codegen 2.1.0.v20080610-1132 org.eclipse.emf.teneo 1.0.0.v200806111928 org.eclipse.datatools.connectivity.oda.flatfile.ui 3.0.6.v200805261930 org.python.pydev.core 1.0.4 org.eclipse.equinox.p2.extensionlocation 1.0.0.v20080523-0001 org.eclipse.buckminster.remote.cloudsmith 1.0.0.r09319 org.python.pydev.ast 1.3.18 org.eclipse.birt.report.engine.dataextraction.csv 2.3.0.v200806102 org.eclipse.equinox.log 1.1.0.v20080414 org.python.pydev.parser 1.3.13 org.python.pydev 1.3.3 com.windowtester.eclipse.help 3.5.0.200806270034 org.python.pydev.jython 1.2.7 org.eclipse.m2m.qvt.oml.emf.util.ui 1.0.0.v20080611-1330 org.eclipse.gmf.runtime.common.ui.printing 1.1.0.v20080425-1959 org.python.pydev.ast 1.3.5 org.eclipse.uml2.uml.ecore.exporter 2.2.0.v200805131030 org.eclipse.equinox.event 1.1.0.v20080225 org.eclipse.epp.usagedata.gathering 1.0.0.R200806162215 com.instantiations.assist.eclipse.fragment.swt 5.5.1 org.eclipse.emf.cdo.server 1.0.0.v200806180411 org.eclipse.core.filesystem.win32.x86 1.1.0.v20080604-1400 org.eclipse.datatools.enablement.ibm.db2.zseries 1.0.0.v200805152355 com.windowtester.swt.platform.ext 3.5.1.200809042232 org.eclipse.birt.chart.examples 2.3.0.v20080612 org.eclipse.gmf.bridge.ui 1.1.100.v20080417-1610 org.eclipse.emf.doc 2.4.0.v200806091234 org.eclipse.emf.ecoretools.diagram 0.8.0.v200806130600 org.eclipse.ecf.provider.filetransfer.efs 1.5.0.v20080623-0046 org.eclipse.mylyn.commons.net 3.0.0.v20080619-1900 org.python.pydev.core 1.2.8 org.eclipse.datatools.modelbase.dbdefinition 1.0.0.v200805152355 javax.management.remote 1.0.0.v200803061811 org.eclipse.net4j.util 1.0.0.v200806180305 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.0 org.eclipse.ui.navigator.resources 3.3.100.I20080606-1300 org.apache.lucene.analysis 1.9.1.v20080530-1600 org.python.pydev.jython 1.3.5 org.eclipse.m2m.atl.adt.builder 2.0.0.v200806101117 org.eclipse.mylyn.monitor.core 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.2.7 com.instantiations.eclipse.mail.ui 5.5.0 org.eclipse.tptp.platform.models.lta 4.5.0.v200805132041 org.eclipse.mylyn.commons.core 3.0.1.v20080721-2100-e3x org.eclipse.team.svn.nl1 0.7.1.I20080612-1500 org.eclipse.birt.report.data.oda.jdbc.dbprofile.ui 2.3.0.v20080606 org.eclipse.pde 3.4.0.v20080603 org.eclipse.net4j.jms.server.jdbc 1.0.0.v200806180305 org.eclipse.pde.doc.user 3.3.0.v20080611-1530 org.eclipse.core.runtime.compatibility.auth 3.2.100.v20070502 org.eclipse.tptp.platform.iac.administrator 4.4.100.v200806120100 org.eclipse.emf.importer.ecore 2.4.0.v200806091234 org.eclipse.equinox.jmx.client.xmlrpc 1.0.0.v20070515 org.eclipse.equinox.jmx.common 1.0.0.v20070510 org.eclipse.datatools.enablement.ibm.informix.ui 1.0.0.v200805160737 com.instantiations.installer 2.5.1 org.eclipse.hyades.lta.logging.parsers 4.5.0.v200805271330 org.eclipse.uml2.diagram.profile 0.8.0.v200806112132 org.eclipse.datatools.enablement.jdt.classpath 1.0.1.v200805152355 org.eclipse.emf.validation.ocl.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.net4j.buddies 1.0.0.v200806180305 net.sourceforge.lpg.lpgjavaruntime 1.1.0.v200803061910 org.eclipse.emf.ecore.editor 2.4.0.v200806091234 org.apache.commons.lang 2.3.0.v200803061910 org.eclipse.ocl.uml 1.2.0.v200805130238 org.eclipse.emf.mapping.ecore2ecore 2.4.0.v200806091234 com.swtdesigner.fragment.jdt.core 6.7.0.200806270151 org.eclipse.ecf.provider.xmpp 2.0.0.v20080623-0046 org.eclipse.wst.common.modulecore 1.1.201.v200808071700 org.eclipse.mylyn.jira.ui 3.0.2.v20080918-1100-e3x org.eclipse.draw2d.doc.isv 3.4.0.v20080606 org.python.pydev.core 1.3.2 org.eclipse.mylyn.compatibility 3.0.0.v20080619-1900 org.eclipse.buckminster.maven 1.1.0.r09319 org.eclipse.buckminster.cmdline 1.0.0.r09319 org.apache.batik.css 1.6.0.v200805290154 org.eclipse.ecf.telephony.call.ui 1.2.0.v20080623-0046 org.eclipse.wst.common.emfworkbench.integration 1.1.200.v200805140020 org.python.pydev 1.0.1 org.eclipse.datatools.enablement.ibm.db2.luw.dbdefinition 1.0.0.v200805152355 org.eclipse.team.svn.resource.ignore.rules.jdt.source 0.7.1.I20080612-1500 org.eclipse.ecf.server 1.3.0.v20080623-0046 org.python.pydev 1.2.5 org.python.pydev.core 1.2.1 org.eclipse.datatools.sqltools.sqlscrapbook 1.0.0.v200806021003 org.eclipse.birt.chart.reportitem 2.3.0.v20080610 org.eclipse.uml2.diagram.codegen 0.8.0.v200806112132 org.eclipse.xsd.edit 2.4.0.v200806091234 org.eclipse.buckminster.opml 1.0.0.r09319 org.python.pydev.parser 1.3.5 org.eclipse.gmf.runtime.diagram.ui 1.1.0.v20080610-1132 org.eclipse.ocl.source 1.2.0.v200805130238-34-9oA55S5I6M7JBK com.windowtester.eclipse.ui 3.5.0.200806270034 org.eclipse.tptp.platform.agentcontroller 4.2.200.v200806162043 org.python.pydev 1.3.11 org.eclipse.datatools.connectivity.apache.derby.ui 1.0.0.v200805160737 org.eclipse.datatools.sqltools.routineeditor 1.0.0.v200805261703 org.eclipse.wst.xsd.ui 1.2.102.v200808141745 org.eclipse.equinox.http 1.0.200.v20080421-2006 org.jivesoftware.smack 2.2.1 org.eclipse.mylyn.compatibility 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.java.ui 3.0.0.v20080619-1900 org.eclipse.core.variables 3.2.100.v20080529-1300 org.python.pydev.jython 1.3.13 org.python.pydev.parser 1.3.20 org.eclipse.tptp.platform.models.hierarchy 4.5.0.v200806120100 org.eclipse.ecf.examples.updatesite.client 1.0.100.v20080623-0046 org.eclipse.datatools.enablement.msft.sqlserver.ui 1.0.0.v200805160737 org.eclipse.datatools.enablement.mysql 1.0.0.v200805152355 org.eclipse.jdt.debug 3.4.0.v20080604 org.antlr.runtime 3.0.0.v200803061811 org.python.pydev.parser 1.2.7 org.eclipse.hyades.execution 4.4.200.v200806120100 org.eclipse.ecf.provider.ui 1.3.0.v20080623-0046 org.eclipse.birt.chart.cshelp 2.3.0.v20080616 org.eclipse.buckminster.p4.ui 1.0.0.r09319 org.python.pydev 1.3.15 org.eclipse.datatools.enablement.ibm.ui 1.0.0.v200805152355 org.eclipse.buckminster.sax 1.0.0.r09175 org.eclipse.equinox.supplement 1.1.0.v20080421-2006 org.eclipse.wst.common.frameworks 1.1.200.v200805140020 org.eclipse.mylyn 3.0.2.v20080918-1100-e3x org.eclipse.gmf.map 2.1.0.v20080521 org.eclipse.wst.standard.schemas 1.0.101.v200806010600 org.python.pydev.ast 1.0.3 org.eclipse.m2m.qvt.oml.runtime 1.0.0.v20080611-1330 org.eclipse.mylyn.ide.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.sqltools.sqlbuilder 1.0.0.v200806070500 org.eclipse.datatools.modelbase.derby 1.0.0.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.0 org.eclipse.emf.compare.ui 0.8.0.v200806180301 org.eclipse.ecf.provider.filetransfer.scp 2.0.0.v20080623-0046 org.eclipse.uml2.search.ocl.ui 0.7.0.v200806130939 org.eclipse.mylyn.context.ui 3.0.1.v20080721-2100-e3x org.python.pydev.templates 1.3.20 org.eclipse.gmf.runtime.diagram.ui.resources.editor 1.1.0.v20080425-1959 org.eclipse.gmf.examples.ui.pde 1.0.200.v20080425-1959 org.eclipse.buckminster.installer 1.0.0.r09319 org.eclipse.m2m.atl.examples 2.0.0.v200806101117 org.eclipse.datatools.modelbase.sql.xml.query 1.0.0.v200805152355 org.eclipse.emf.search.doc 0.7.0.v200806130939 org.eclipse.datatools.enablement.oracle.dbdefinition 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.0 javax.xml.bind 2.0.0.v200803061811 org.apache.xmlrpc 3.0.0.v20080530-1550 org.eclipse.ui.views.log 1.0.0.v20080522-2200 org.python.pydev.core 1.3.10 org.eclipse.ecf.examples.updatesite.server 1.0.100.v20080623-0046 org.eclipse.birt.core.ui 2.3.0.v20080515 org.eclipse.core.filebuffers 3.4.0.v20080603-2000 org.eclipse.mylyn.team.ui 3.0.1.v20080721-2100-e3x org.eclipse.wst.command.env 1.0.306.v200807231700 org.eclipse.team.cvs.ssh2 3.2.200.I20080604 org.eclipse.emf.search.ecore.ocl.ui 0.7.0.v200806130939 org.eclipse.ecf.example.collab.editor 1.0.200.v20080623-0046 org.eclipse.ecf.provider.jslp 2.0.0.v20080623-0046 org.eclipse.datatools.sqltools.result 1.0.0.v200805301309 org.eclipse.emf.teneo.jpox 1.0.0.v200806111928 org.eclipse.gmf.runtime.emf.clipboard.core 1.1.0.v20080425-1959 com.instantiations.eclipse.ast.editor 5.5.0 org.eclipse.mylyn.tasks.bugs 3.0.2.v20080918-1100-e3x org.eclipse.jsch.core 1.1.100.I20080604 org.eclipse.pde.core 3.4.0.v20080604-2000 org.python.pydev 0.9.4 org.python.pydev.jython 1.3.0
+* toolingorg.eclipse.equinox.simpleconfigurator 1.0.0.v20080604 requires either org.python.pydev.core 0.9.7 org.eclipse.m2m.qvt.oml.trace.edit 1.0.0.v20080611-1330 org.eclipse.emf.codegen.ecore 2.4.0.v200806091234 org.eclipse.uml2.common.edit 1.4.0.v200805131030 org.eclipse.core.runtime 3.4.0.v20080512 org.python.pydev.core 1.3.9 javax.xml.soap 1.2.0.v200806030421 org.eclipse.gmf.runtime.common.ui.action.ide 1.1.0.v20080425-1959 org.eclipse.emf.cdo.edit 1.0.0.v200806180411 org.eclipse.ecf.provider.msn 1.2.0.v20080623-0046 org.eclipse.equinox.frameworkadmin.equinox 1.0.0.v20080529-1225 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.1 org.eclipse.equinox.http.servletbridge 1.0.0.v20080427-0830 org.python.pydev 0.9.5 org.python.pydev.parser 1.2.3 org.eclipse.emf.example.installer 1.0.0.v200806091234 com.instantiations.assist.eclipse 5.5.0 org.eclipse.wst.common.environment 1.0.201.v200805140020 org.eclipse.zest.source 1.0.0.v20080115-53-8xB4CE899O274A org.eclipse.emf.ant 2.4.0.v200806091234 com.instantiations.eclipse.mail 5.5.1 org.python.pydev.parser 1.3.1 org.eclipse.birt.chart.engine 2.3.0.v20080606 org.eclipse.core.resources 3.4.0.v20080604-1400 org.eclipse.birt.report.engine.emitter.postscript 2.3.0.v20080610 org.python.pydev.jython 1.1.0 org.eclipse.ui.workbench.compatibility 3.2.0.I20080509-2000 com.nordea.cd.dev.plugin.builderruntime 1.0.0 org.eclipse.m2m.atl.adt.editor 2.0.0.v200806101117 org.eclipse.equinox.p2.director.app 1.0.0.v20080604 org.eclipse.mylyn.tasks.core 3.0.0.v20080619-1900 org.python.pydev.ast 1.0.4 org.eclipse.m2m.atl.compilers.atl2006 2.0.0.v200806101117 org.eclipse.datatools.enablement.sybase.asa.ui 1.0.1.v200805310538 org.eclipse.emf.mapping.ecore2xml.ui 2.4.0.v200806091234 org.eclipse.wst.dtd.ui 1.0.301.v200808072012 org.eclipse.birt.chart.engine.extension 2.3.0.v20080611 org.eclipse.jface.databinding 1.2.0.I20080515-2000a org.eclipse.birt.chart.reportitem.ui 2.3.0.v20080610 org.eclipse.datatools.enablement.hsqldb.ui 1.0.0.v200805152355 org.eclipse.mylyn.ide.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.security.ui 1.0.0.v20080603-1810 org.eclipse.wst.common.emfworkbench.integration 1.1.201.v200808071700 org.eclipse.gmf.validate 1.1.0.v20080603-1553 org.eclipse.emf.mapping.ecore2ecore.editor 2.4.0.v200806091234 org.eclipse.ecf.provider.irc 1.3.0.v20080623-0046 org.eclipse.emf.validation.doc 1.2.0.v200805130238 org.python.pydev.ast 1.2.8 org.eclipse.emf.teneo.doc 1.0.0.v200806111928 org.python.pydev.jython 1.3.12 org.eclipse.emf.ecoretools.source 0.8.0.v200806130600 org.eclipse.equinox.p2.updatesite 1.0.0.v20080529-1800 org.eclipse.ecf.presence.bot 1.2.0.v20080623-0046 com.swtdesigner.properties.java5 1.0.0 org.eclipse.platform.doc.isv 3.4.0.v20080613-1330 org.python.pydev.core 1.2.3 org.eclipse.datatools.connectivity.db.generic 1.0.0.v200805152355 org.eclipse.uml2.diagram.clazz 0.8.0.v200806112132 org.eclipse.birt.report.designer.ui.views 2.3.0.v20080606 org.eclipse.mylyn.monitor.core 3.0.2.v20080918-1100-e3x com.instantiations.eclipse.debug 5.3.2.200806270030 org.eclipse.gmf.runtime.common.ui.action 1.1.0.v20080425-1959 org.eclipse.equinox.useradmin 1.1.0.v20080508-1815 org.eclipse.mylyn.commons.ui 3.0.2.v20080918-1100-e3x org.eclipse.equinox.cm 1.0.0.v20080509-1800 org.eclipse.uml2.diagram.component 0.8.0.v200806112132 org.eclipse.swt.layout.grouplayout 1.1.0 org.python.pydev 1.2.4 javax.servlet 2.4.0.v200806031604 org.eclipse.uml2.examples.uml.ui 2.2.0.v200805131030 org.python.pydev.ast 1.3.10 org.eclipse.birt.report.designer.ui.ide 2.3.0.v20080606 org.python.pydev.parser 1.3.18 com.swtdesigner.layout.group 6.7.0.200806270151 org.eclipse.m2m.qvt.oml.runtime.source 1.0.0.v20080611-1330-5--AgI99m9cDD4DNN9 org.eclipse.mylyn.tasks.ui 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.3.13 org.eclipse.emf.teneo.jpox.eclipse 1.0.0.v200806111928 org.eclipse.equinox.transforms.xslt 1.0.0.v20080610 org.python.pydev.core 1.0.7 org.eclipse.datatools.enablement.ibm.db2.zseries.ui 1.0.0.v200805160737 org.eclipse.mylyn.resources.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.enablement.oda.ws 1.1.0.v200805261930 org.eclipse.equinox.frameworkadmin 1.0.0.v20080430-1750 org.eclipse.birt.chart.device.extension 2.3.0.v20080424 org.eclipse.net4j.jvm 1.0.0.v200806180305 org.eclipse.emf.cdo.migrator 1.0.0.v200806180411 org.python.pydev.jython 1.3.1 org.eclipse.m2m.qvt.oml.cst.parser 1.0.0.v20080611-1330 com.xored.composer.ui 1.3.4.200809042225 org.eclipse.datatools.enablement.sybase.ui 1.0.0.v200806041138 org.eclipse.ecf.remoteservice.ui 2.0.0.v20080623-0046 org.eclipse.net4j.db.mysql 1.0.0.v200806180305 org.eclipse.update.scheduler 3.2.100.v20080404 org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide 1.1.0.v20080425-1959 org.eclipse.wst.dtdeditor.doc.user 1.0.400.v200805150028 org.eclipse.wst.xmleditor.doc.user 1.0.401.v200808071323 org.eclipse.gmf.runtime.common.ui.services.dnd 1.1.0.v20080425-1959 org.eclipse.uml2.common 1.4.0.v200805131030 org.apache.jasper 5.5.17.v200806031609 org.python.pydev 1.0.8 org.eclipse.datatools.doc.user 1.6.0.20080606124249 org.objectweb.asm 3.1.0.v200803061910 org.eclipse.emf.cdo.doc 1.0.0.v200806180411 org.python.pydev.core 1.3.17 org.eclipse.core.resources.compatibility 3.4.0.v20080604-1400 com.instantiations.eclipse.startup 5.3.2.200806270030 org.eclipse.datatools.connectivity.apache.derby.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.graphdef.codegen 2.0.100.v20080528-1052 org.eclipse.emf.common 2.4.0.v200806091234 org.eclipse.wst.xml.ui.infopop 1.0.300.v200805140200 org.python.pydev.core 1.3.0 org.eclipse.equinox.p2.touchpoint.natives 1.0.0.v20080505-1850 org.eclipse.ant.core 3.2.0.v20080529 org.eclipse.ui.workbench 3.4.0.I20080606-1300 org.eclipse.ecf.provider.xmpp.ui 2.0.0.v20080623-0046 org.w3c.sac 1.3.0.v20070710 org.python.pydev.jython 1.2.3 org.eclipse.mylyn.context.ui 3.0.0.v20080619-1900 org.eclipse.ecf.doc 1.3.0.v20080623-0046 org.eclipse.ecf.provider.bittorrent.ui 0.2.0.v20080623-0046 com.xored.swt.composer 1.3.4.200809042225 org.python.pydev.parser 1.0.4 org.eclipse.help.webapp 3.3.100.v20080528 org.eclipse.uml2.diagram.deploy 0.8.0.v200806112132 org.eclipse.ecf.provider.irc.ui 1.3.0.v20080623-0046 org.python.pydev 1.3.18 org.eclipse.m2m.atl.source 2.0.0.v200806101117 org.eclipse.mylyn.tasks.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.identity 2.0.0.v20080611-1715 org.eclipse.ocl.ecore 1.2.0.v200805130238 org.eclipse.core.expressions 3.4.0.v20080603-2000 org.eclipse.core.runtime.compatibility.registry 3.2.200.v20080610 org.eclipse.tptp.platform.la.core 4.3.200.v200805231116 org.eclipse.m2m.atl.service.core 2.0.0.v200806101117 org.apache.commons.logging 1.0.4.v20080605-1930 org.eclipse.platform.doc.user 3.4.0.v20080612-1340 com.windowtester.runtime.junit4 3.5.0.200806270034 org.python.pydev.parser 1.2.8 org.eclipse.uml2.examples.source 2.2.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.providers 1.1.0.v20080503-1740 org.python.pydev.jython 1.3.20 org.python.pydev.jython 1.0.7 org.eclipse.m2m.qvt.oml.common 1.0.0.v20080611-1330 org.eclipse.wst.sse.ui 1.1.0.v200806041847 org.eclipse.core.resources.win32.x86 3.4.0.v20071204 org.eclipse.swt.widgets.baseline 1.1.0 com.xored.swt.composer.win32.win32.x86 1.3.4.200809042225 org.eclipse.datatools.enablement.mysql.ui 1.0.0.v200805152355 org.eclipse.m2m.atl.ocl.core 2.0.0.v200806101117 org.eclipse.emf.codegen.ecore.ui 2.4.0.v200806091234 org.eclipse.equinox.http.servlet 1.0.100.v20080427-0830 org.python.pydev.ast 1.3.2 org.python.pydev 1.3.6 org.eclipse.birt.report.viewer 2.3.0.v20080606 org.apache.batik.extension 1.6.0.v200805290154 org.eclipse.uml2.diagram.statemachine 0.8.0.v200806112132 org.python.pydev.parser 1.3.10 org.eclipse.equinox.p2.ui.admin.rcp 1.0.0.v20080604 org.eclipse.emf.compare.match 0.8.0.v200806180301 org.eclipse.datatools.enablement.oracle.ui 1.0.0.v200805240040 org.python.pydev 0.7.1 com.lowagie.itext 1.5.4.v20080228 org.eclipse.birt.report.designer.ui.preview.web 2.3.0.v200806102 org.eclipse.birt.report.designer.ui.samples.ide 2.3.0.v20080606 org.eclipse.xsd.ecore.converter 2.4.0.v200806091234 org.eclipse.jdt.compiler.tool 1.0.100.v_874 org.eclipse.equinox.registry 3.4.0.v20080516-0950 org.eclipse.wst.dtd.ui.infopop 1.0.300.v200805140200 org.python.pydev.ast 0.9.5 org.eclipse.ui.workbench.texteditor 3.4.0.v20080603-2000 org.eclipse.cvs 1.0.100.v20080603 org.eclipse.uml2.search.ui 0.7.0.v200806130939 org.eclipse.gmf.common 1.1.1.v20080610-1132 org.eclipse.uml2.uml.editor 2.2.0.v200805131030 org.eclipse.m2m.atl.engine 2.0.0.v200806101117 org.eclipse.net4j.http.common 1.0.0.v200806180305 org.eclipse.ecf.presence.ui 1.2.0.v20080623-0046 org.python.pydev.parser 1.2.2 org.eclipse.emf.cdo.tests.model3.edit 1.0.0.v200806180411 org.eclipse.emf.cdo.tests.model1 1.0.0.v200806180411 org.eclipse.m2m.atl.engine.vm 2.0.0.v200806101117 com.instantiations.eclipse.mail 5.5.0 org.eclipse.emf.ocl.source 1.1.100.v200805130238-108Y7w311916241349 com.windowtester.swt.runtime.legacy 3.5.1.200809042232 org.eclipse.uml2tools 0.8.0.v200806112132 org.eclipse.emf.search.genmodel.ui 0.7.0.v200806130939 org.eclipse.mylyn.jira.core 3.0.2.v20080918-1100-e3x org.eclipse.uml2.uml.ecore.importer 2.2.0.v200805131030 org.eclipse.emf.transaction.doc 1.2.0.v200805130238 org.eclipse.tptp.platform.logging.events 4.3.200.v200805310100 org.python.pydev.core 1.3.8 org.eclipse.xsd.ecore.importer 2.4.0.v200806091234 org.eclipse.emf.teneo.source 1.0.0.v200806111928-78--DUUEFDEz0MMNLVD org.eclipse.uml2 2.1.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.render 1.1.0.v20080603-1553 com.windowtester.swt.runtime.os.win32 3.5.0.200806270034 org.eclipse.rcp 3.4.0.v20080507 org.eclipse.xsd.mapping 2.4.0.v200806091234 org.eclipse.emf.workspace.doc 1.2.0.v200805130238 org.eclipse.pde.api.tools 1.0.0.v20080529-1150 org.eclipse.emf.mapping.ecore2xml 2.4.0.v200806091234 org.eclipse.swt.win32.win32.x86 3.4.0.v3448f org.apache.derby 10.1.2.1_v200803061811 org.eclipse.m2m.qvt.oml.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.python.pydev.parser 1.3.0 org.eclipse.ecf.protocol.msn 1.2.0.v20080623-0046 com.instantiations.eclipse.ui 5.3.2.200809042027 org.eclipse.jet.core 1.1.0.v20080415 org.eclipse.datatools.enablement.sybase.ase.models 1.0.1.v200805152355 com.nordea.cd.dev.plugin.builderruntime 1.0.1 com.instantiations.assist.eclipse.core 5.5.0 org.python.pydev.ast 1.0.5 org.eclipse.ecf.filetransfer 2.0.0.v20080611-1715 org.python.pydev.parser 0.9.5 org.python.pydev.core 1.2.2 org.eclipse.emf.transaction.ui 1.2.0.v200805130238 org.eclipse.gmf.runtime.gef.ui 1.1.0.v20080503-1740 org.eclipse.wst.xml.core 1.1.301.v200808072008 org.eclipse.uml2.diagram.clazz.search 0.7.0.v200806130939 org.sat4j.core 2.0.0.v20080602 org.eclipse.datatools.connectivity.ui 1.1.0.v200806040132 org.eclipse.birt.report.designer.ui.editors 2.3.0.v20080610a org.eclipse.equinox.p2.reconciler.dropins 1.0.0.v20080611 org.eclipse.wst.common.project.facet.core 1.3.1.v200807031821 org.python.pydev.jython 1.3.11 org.eclipse.datatools.enablement.postgresql 1.0.1.v200805152355 org.eclipse.ltk.ui.refactoring 3.4.0.v20080605-1800 org.eclipse.datatools.enablement.sybase.ase 1.0.1.v200806040735 org.python.pydev.ast 1.2.9 org.eclipse.datatools.connectivity.oda 3.1.2.v200805152355 org.eclipse.wst.common.emf 1.1.201.v200808071700 org.apache.batik.dom.svg 1.6.0.v200805290154 org.eclipse.birt.chart 2.3.0.v20080304 org.python.pydev.jython 1.2.9 org.python.pydev.ast 1.3.11 org.eclipse.datatools.enablement.mysql.dbdefinition 1.0.1.v200805170742 org.python.pydev.parser 1.3.19 org.python.pydev.core 1.0.6 org.eclipse.uml2.diagram 0.8.0.v200806112132 org.eclipse.jdt.junit4.runtime 1.0.200.v20080603-2000 org.python.pydev.ast 1.3.12 org.eclipse.swt 3.4.0.v3448f org.eclipse.emf.ecoretools.diagram.search 0.7.0.v200806130939 org.eclipse.pde.ui.templates 3.4.0.v20080514-1500 com.instantiations.packager.ui 2.5.1 org.eclipse.emf.cdo.server.db 1.0.0.v200806180411 org.eclipse.datatools.enablement.sybase.asa 1.0.1.v200805310538 org.eclipse.emf.compare 0.8.0.v200806180301 org.eclipse.datatools.enablement.oda.ws.ui 1.1.0.v200805261930 org.eclipse.jdt.launching 3.4.0.v20080529-1300 org.eclipse.mylyn.tasks.ui 3.0.0.v20080619-1900 org.apache.ws.jaxme 0.5.1.v20080530-1550 org.eclipse.mylyn.bugzilla.ui 3.0.0.v20080619-1900 org.apache.commons.el 1.0.0.v200806031608 org.python.pydev 1.2.3 org.w3c.dom.smil 1.0.0.v200806040011 org.eclipse.wst.validation.infopop 1.0.300.v200806041506 org.python.pydev 1.0.7 org.eclipse.net4j.source 1.0.0.v200806180305 org.eclipse.m2m.qvt.oml.ocl 1.0.0.v20080611-1330 org.eclipse.uml2.uml.edit 2.2.0.v200805131030 org.eclipse.emf.search.ui 0.7.0.v200806130939 org.python.pydev.core 1.3.16 org.eclipse.emf.validation.ui 1.2.0.v200805130238 org.eclipse.datatools.enablement.oda.xml 1.1.0.v200805270900 org.eclipse.ltk.core.refactoring 3.4.0.v20080603-2000 org.python.pydev.jython 1.3.2 com.windowtester.swt.codegen 3.5.0.200806270034 org.eclipse.datatools.sqltools.ddlgen.ui 1.0.0.v200805152355 org.apache.xerces 2.9.0.v200805270400 org.eclipse.birt.report.engine.dataextraction 2.3.0.v20080611 org.eclipse.equinox.jmx.vm 1.0.0.v20070515 org.eclipse.birt.report.data.oda.jdbc.ui 2.3.0.v20080606 org.eclipse.equinox.ds 1.0.0.v20080427-0830 org.eclipse.mylyn.bugzilla.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.http.jetty 2.0.0.v20080425 org.eclipse.mylyn.team.ui 3.0.2.v20080918-1100-e3x org.python.pydev.jython 1.2.4 org.eclipse.birt.chart.device.svg 2.3.0.v20080526 org.python.pydev.parser 1.0.5 org.eclipse.ui.presentations.r21 3.2.100.I20080512-2000 org.eclipse.mylyn 3.0.0.v20080619-1900 org.eclipse.m2m.qvt.oml.doc 1.0.0.v20080611-1330 org.eclipse.team.svn.nl1.sources 0.7.1.I20080612-1500 org.eclipse.mylyn.resources.ui 3.0.0.v20080619-1900 org.eclipse.datatools.enablement.ibm.db2.luw 1.0.0.v200805152355 org.python.pydev.core 1.3.1 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.1 org.eclipse.ecf.provider.filetransfer 2.0.0.v20080611-1715 org.eclipse.emf.cdo.tests.mango.edit 1.0.0.v200806180411 org.python.pydev.parser 1.2.9 org.eclipse.m2m.qvt.oml.emf.util 1.0.0.v20080611-1330 org.eclipse.team.cvs.ssh 3.2.100.I20080604 org.python.pydev.jython 1.3.19 org.python.pydev.jython 1.0.8 org.python.pydev.ast 1.2.1 org.eclipse.m2m.qvt.oml.project 1.0.0.v20080611-1330 com.instantiations.assist.eclipse.core.ui 5.5.1 org.eclipse.datatools.enablement.ibm.db2.zseries.dbdefinition 1.0.0.v200805152355 org.eclipse.datatools.enablement.ibm.db2.iseries 1.0.0.v200805152355 com.swtdesigner.fragment.jdt.core 6.7.1.200809050053 org.eclipse.equinox.device 1.0.1.v20080303 org.eclipse.equinox.http.jetty 1.1.0.v20080425 org.eclipse.emf.cdo.tests.model3 1.0.0.v200806180411 org.eclipse.emf.teneo.hibernate.mapper 1.0.0.v200806111928 org.eclipse.compare 3.4.0.I20080604 org.polarion.eclipse.team.svn.connector.javahl 2.0.1.I20080612-1500 org.eclipse.gmf.runtime.diagram.ui.geoshapes 1.1.0.v20080503-1740 org.eclipse.emf.mint.ui 0.7.0.v200806172223 org.eclipse.ui.win32 3.2.100.v20080408-0800 org.eclipse.jet.source 0.9.0.v20080516 org.python.pydev 1.3.17 com.windowtester.runtime.junit4 3.5.1.200809042232 org.eclipse.ecf.examples.remoteservices.server 1.0.100.v20080623-0046 org.eclipse.text 3.4.0.v20080605-1800 org.eclipse.uml2.diagram.common 0.8.0.v200806112132 org.eclipse.datatools.connectivity.sqm.core.ui 1.1.0.v200806070326 org.python.pydev.core 0.9.7.99 org.eclipse.net4j.jms 1.0.0.v200806180305 org.junit4 4.3.1 org.eclipse.epp.usagedata.recording 1.0.0.R200806162215 org.eclipse.buckminster.remote 1.0.0.r09326 org.eclipse.gmf.tooling 2.1.0.v20080425-1959 org.eclipse.emf.cdo.tests.model2 1.0.0.v200806180411 org.eclipse.emf.ecore.sdo.editor 2.4.0.v200806091234 com.instantiations.swt.graph 5.5.0 org.eclipse.uml2.search 0.7.0.v200806130939 org.python.pydev 1.3.5 org.python.pydev.ast 1.3.3 org.eclipse.datatools.enablement.msft.sqlserver 1.0.1.v200805152355 org.python.pydev.parser 1.3.11 org.eclipse.datatools.enablement.sap.maxdb.dbdefinition 1.0.0.v200805152355 com.windowtester.swing.recorder 3.5.0.200806270034 org.eclipse.gmf.runtime.common.ui.printing.win32 1.1.0.v20080612-1355 org.python.pydev.ast 1.3.20 org.eclipse.wst.common.snippets 1.1.200.v200805140415 org.eclipse.mylyn.commons.core 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.tasks.core 3.0.2.v20080918-1100-e3x org.eclipse.jdt.doc.user 3.4.0.v20080612-1340 org.eclipse.birt.chart.ui 2.3.0.v20080522 org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb 2.3.0.v20080606 org.eclipse.uml2.diagram.examples.clazz 0.8.0.v200806112132 org.eclipse.ecf.provider.msn.ui 1.3.0.v20080623-0046 org.python.pydev.parser 1.3.3 org.eclipse.ui.ide.application 1.0.0.I20080603-2000 org.python.pydev.ast 1.0.6 org.eclipse.equinox.jsp.jasper.registry 1.0.0.v20080427-0830 org.eclipse.equinox.p2.engine 1.0.0.v20080522-1735 com.nordea.cd.dev.plugin.builderruntime 1.0.2 com.instantiations.assist.eclipse.core 5.5.1 org.eclipse.m2m.qvt.oml 1.0.0.v20080611-1330 org.eclipse.mylyn.commons.ui 3.0.1.v20080721-2100-e3x org.eclipse.update.core.win32 3.2.100.v20080107 org.eclipse.datatools.sqltools.db.derby 1.0.0.v200805152355 com.instantiations.assist.eclipse.admin 5.5.0 org.eclipse.ecf.telephony.call 1.2.0.v20080623-0046 org.eclipse.mylyn.monitor.core 3.0.0.v20080619-1900 org.eclipse.epp.usagedata.ui 1.0.0.R200806162215 org.eclipse.ui.ide 3.4.0.I20080606-1300 org.eclipse.hyades.lta.sdb 4.5.0.v200806051823 org.eclipse.birt.report.model.adapter.oda 2.3.0.v20080523 org.eclipse.emf.compare.doc 0.8.0.v200806180301 org.eclipse.equinox.servletbridge 1.0.100.v20080427-0830 com.instantiations.common.help 5.3.2.200809042027 org.eclipse.jdt.core 3.4.0.v_874 org.eclipse.equinox.p2.director 1.0.0.v20080604 org.eclipse.gmf.runtime.emf.ui.properties 1.1.0.v20080425-1959 org.eclipse.emf.exporter 2.4.0.v200806091234 org.python.pydev.core 1.3.7 org.eclipse.uml2.diagram.def 0.8.0.v200806112132 org.python.pydev.parser 1.2.1 org.eclipse.wst.command.env.ui 1.1.0.v200805140415 org.eclipse.wst.common.modulecore 1.1.200.v200806091800 org.python.pydev 0.9.7 org.eclipse.gmf.graphdef.edit 2.0.100.v20080610-1132 org.eclipse.birt.report.designer.ui.cubebuilder 2.3.0.v20080606 org.eclipse.m2m.atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.actions 1.1.0.v20080603-1553 com.instantiations.common.core 5.3.2.200806270030 org.eclipse.datatools.enablement.ibm.informix 1.0.0.v200805152355 org.eclipse.net4j.tcp 1.0.0.v200806180305 org.eclipse.wst.common.environment 1.0.202.v200807161459 com.instantiations.common.core 5.3.2.200809042027 org.eclipse.birt.report.data.oda.xml 2.3.0.v20080606 org.eclipse.pde.api.tools.ui 1.0.0.v20080603 org.eclipse.debug.ui 3.4.0.v20080529-1300 org.python.pydev 1.2.2 org.eclipse.team.svn.ui.nl1 0.7.1.I20080612-1500 org.apache.batik.transcoder 1.6.0.v200805290154 org.eclipse.emf.ecore.sdo.edit 2.4.0.v200806091234 org.python.pydev.parser 1.3.16 org.eclipse.wst.command.env.ui 1.1.1.v200807162242 org.eclipse.uml2.diagram.codegen.edit 0.8.0.v200806112132 org.eclipse.datatools.connectivity.db.generic.ui 1.0.1.v200805152355 org.eclipse.mylyn.resources.ui 3.0.2.v20080918-1100-e3x org.python.pydev.ast 1.3.8 org.python.pydev 1.3.0 org.eclipse.net4j.db 1.0.0.v200806180305 org.python.pydev.ast 1.3.15 org.eclipse.uml2.codegen.ecore 1.4.0.v200805201126 org.eclipse.gmf.sdk 1.0.0.v20080425-1959 org.eclipse.equinox.p2.core 1.0.0.v20080530-1237 org.python.pydev.jython 1.3.10 org.eclipse.emf.cdo 1.0.0.v200806180411 org.eclipse.emf.search.genmodel 0.7.0.v200806130939 org.eclipse.ui.navigator 3.3.100.I20080606-1300 org.eclipse.team.svn.mylyn 0.7.1.I20080612-1500 org.python.pydev.core 1.2.5 org.eclipse.tptp.platform.lta.la.core 4.5.0.v200805132041 org.eclipse.wst.sse.core 1.1.301.v200808072008 org.eclipse.tptp.platform.lta.log.views 4.5.0.v200806051823 org.eclipse.mylyn.java.ui 3.0.2.v20080918-1100-e3x org.eclipse.emf.search.codegen 0.7.0.v200806130939 com.instantiations.common.ui 5.3.2.200806270030 org.eclipse.ecf 2.0.0.v20080611-1715 org.eclipse.equinox.p2.ui.sdk 1.0.0.v20080605-1731 org.apache.commons.discovery 0.2.0.v200806030120 org.eclipse.datatools.help 1.5.0.v200805152355 org.python.pydev.parser 0.9.7.99 org.w3c.css.sac 1.3.0.v200805290154 org.eclipse.jet.examples 0.9.0.v20080211 org.eclipse.mylyn.bugzilla.ide 3.0.2.v20080918-1100-e3x org.eclipse.pde.junit.runtime 3.4.0.v20080529-1800 org.eclipse.emf.commonj.sdo 2.4.0.v200806091234 org.python.pydev.jython 1.2.1 com.instantiations.tools 5.3.2.200806270030 com.windowtester.runtime 3.5.1.200809042232 org.eclipse.wst.validation 1.2.0.v200806051402 org.eclipse.ecf.docshare 2.0.0.v20080623-0046 com.instantiations.eclipse.model.jsp 5.5.1 org.eclipse.emf.teneo.hibernate.eclipse 1.0.0.v200806111928 com.jcraft.jsch 0.1.37.v200803061811 org.python.pydev.parser 1.0.6 org.eclipse.emf.converter 2.4.0.v200806091234 org.eclipse.equinox.common 3.4.0.v20080421-2006 org.eclipse.buckminster.ui 1.0.0.r09319 org.eclipse.datatools.sqltools.tablewizard 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.0 org.eclipse.uml2.source 2.2.0.v200805201126 org.eclipse.team.cvs.ui 3.3.100.I20080604 org.python.pydev.jython 1.3.3 org.eclipse.emf.search.ocl 0.7.0.v200806130939 org.eclipse.datatools.enablement.sybase.asa.models 1.0.0.v200805152355 org.eclipse.sdk 3.4.0.v200806172000 org.eclipse.xsd.ecore.exporter 2.4.0.v200806091234 org.apache.commons.codec 1.3.0.v20080530-1600 org.eclipse.equinox.p2.exemplarysetup 1.0.0.v20080427-2136 org.eclipse.equinox.io 1.0.0.v20080218 org.eclipse.wst.common.project.facet.core 1.3.0.v200805140020 org.eclipse.wst.common.ui 1.1.301.v200805140415 org.eclipse.emf.databinding.edit 1.0.0.v200806091234 org.mortbay.jetty.server 6.1.7.v200806031612 org.eclipse.wst.dtd.core 1.1.200.v200805140200 org.python.pydev 1.0.6 org.eclipse.uml2.diagram.activity 0.8.0.v200806112132 org.eclipse.emf.importer.rose 2.4.0.v200806091234 org.eclipse.core.net.win32.x86 1.0.0.I20080521 javax.activation 1.1.0.v200804101140 org.python.pydev.core 1.3.15 org.python.pydev.parser 1.3.8 com.instantiations.assist.eclipse.coverage.ui 5.5.1.200809042337 org.eclipse.emf.ecoretools.filters 0.8.0.v200806130600 org.python.pydev.ast 1.3.0 org.eclipse.birt.report.data.oda.xml.ui 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase 1.0.1.v200805310538 org.python.pydev 1.3.8 org.eclipse.equinox.ip 1.0.0.v20080218 org.eclipse.datatools.connectivity.console.profile 1.0.0.v200805231345 org.eclipse.ecf.sharedobject 1.3.0.v20080623-0046 org.eclipse.debug.core 3.4.0.v20080612 org.eclipse.wst.xmleditor.doc.user 1.0.400.v200805211530 org.eclipse.datatools.enablement.sap.maxdb 1.0.0.v200805152355 org.python.pydev.ast 0.9.7 com.windowtester.swt.runtime.legacy 3.5.0.200806270034 org.eclipse.equinox.simpleconfigurator.manipulator 1.0.0.v20080427-2136 org.eclipse.equinox.p2.touchpoint.eclipse 1.0.0.v20080529-1225 com.instantiations.swt.graph 5.5.1 org.eclipse.gmf.doc 1.2.0.v20080516-1143 org.python.pydev 1.3.20 com.windowtester.swing.runtime 3.5.1.200809042232 org.eclipse.datatools.enablement.ibm.db2.iseries.ui 1.0.0.v200805160737 org.eclipse.datatools.connectivity.oda.profile 3.0.6.v200805152355 org.eclipse.mylyn.pde.ui 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.commons.ui 3.0.0.v20080619-1900 org.eclipse.emf.workspace.source 1.2.0.v200805130238-23-8s733I3C59379I org.eclipse.core.boot 3.1.100.v20080218 org.python.pydev.ast 1.2.2 org.eclipse.birt.doc 2.3.0.v20080617a com.instantiations.assist.eclipse.core.ui 5.5.0 org.python.pydev.jython 1.3.18 org.python.pydev.jython 1.0.5 org.eclipse.emf.validation 1.2.0.v200805170232 org.eclipse.equinox.jmx.client.rmi 1.0.0 org.eclipse.emf.mapping.ecore 2.4.0.v200806091234 com.instantiations.assist.eclipse.coverage 5.5.1.200809042337 com.instantiations.helpeditor.ui 1.3.4.200806270212 org.eclipse.emf.edit.ui 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editor.script 2.3.0.v200806102 org.eclipse.gmf.ecore.editor 2.0.100.v20080610-1132 com.windowtester.swt.recorder 3.5.1.200809042232 org.eclipse.uml2.diagram.source 0.8.0.v200806112132 org.eclipse.equinox.util 1.0.0.v20080414 org.eclipse.ecf.examples.source 2.0.0.v20080623-0046 org.eclipse.emf.mapping.xsd2ecore.editor 2.4.0.v200806091234 org.eclipse.pde.p2.ui 1.0.0.v20080604-2000 org.eclipse.birt.resources 2.3.0.v20080313 org.eclipse.emf.query.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.emf.ecore.change.edit 2.4.0.v200806091234 org.eclipse.datatools.sqltools.editor.core 1.0.0.v200805152355 org.polarion.eclipse.team.svn.connector.svnkit 2.0.1.I20080612-1500 org.eclipse.buckminster.download 1.1.0.r09319 com.swtdesigner 6.7.0.200806270151 org.python.pydev.parser 1.3.2 org.eclipse.jdt.compiler.apt 1.0.100.v20080513-1235 org.python.pydev.ast 1.0.7 com.windowtester.swt.gef.codegen 3.5.0.200806270034 org.eclipse.emf.ecore 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editors.schematic 2.3.0.v200806102 org.eclipse.pde.build 3.4.0.v20080604 com.instantiations.assist.eclipse 5.5.1 org.eclipse.birt.report.designer.ui.editor.xml.wtp 2.3.0.v200806102 org.eclipse.emf.cdo.tests.model1.edit 1.0.0.v200806180411 org.python.pydev 0.9.8 javax.xml 1.3.4.v200806030440 org.python.pydev 0.4.2 org.polarion.eclipse.team.svn.connector.javahl.win32 2.0.1.I20080612-1500 org.apache.ws.commons.util 1.0.0.v20080530-1550 org.apache.batik.bridge 1.6.0.v200805290154 org.eclipse.emf.search 0.7.0.v200806130939 org.eclipse.datatools.sqltools.parsers.sql.xml.query 1.0.0.v200805152355 org.eclipse.team.core 3.4.0.I20080605 org.eclipse.tptp.platform.execution 4.4.100.v200806050100 org.eclipse.uml2.diagram.parser 0.8.0.v200806112132 org.eclipse.birt.report.item.crosstab.core 2.3.0.v20080606 org.python.pydev.core 0.9.8 org.eclipse.uml2.search.common.ui 0.7.0.v200806130939 org.eclipse.mylyn.ide.ui 3.0.0.v20080619-1900 org.eclipse.xsd.cheatsheets 2.3.0.v200806091234 org.eclipse.wst.xsd.core 1.1.300.v200805282012 org.eclipse.net4j.http 1.0.0.v200806180305 org.python.pydev.core 1.3.6 org.eclipse.ui.externaltools 3.2.0.v20080514-1542 org.eclipse.birt.report.engine.emitter.prototype.excel 2.3.0.v20080606 org.python.pydev.parser 1.3.17 com.instantiations.eclipse.util 5.3.2.200806270030 org.eclipse.ui.editors 3.4.0.v20080603-2000 org.eclipse.buckminster.slf4j 1.0.0 org.python.pydev.ast 1.3.9 org.eclipse.gef.source 3.4.0.v20080115-677-8082A5696H274A org.python.pydev.core 1.0.8 org.python.pydev.ast 1.3.14 org.eclipse.team.ui 3.4.0.I20080604 org.eclipse.emf.query.ocl.source 1.2.0.v200805130238-11-7w311916241349 com.windowtester.swt.runtime 3.5.0.200806270034 org.eclipse.osgi.jmx 1.0.0.v20080610-1530 org.eclipse.net4j.examples.source 1.0.0.v200806180305 org.eclipse.tptp.monitoring.lta.symptom.doc.user 4.5.0.v200805132041 org.eclipse.equinox.p2.updatechecker 1.0.0.v20080427-2136 org.eclipse.ui.views 3.3.0.I20080509-2000 org.eclipse.emf.search.ocl.ui 0.7.0.v200806130939 javax.mail 1.4.0.v200804091730 ch.ethz.iks.slp 1.0.0.RC4_v200806091030 org.eclipse.core.resources.jmx 1.0.0.v20070510 javax.wsdl 1.4.0.v200806030407 org.eclipse.wst.xml.ui 1.0.401.v200807240448 org.python.pydev 1.2.1 org.eclipse.birt.chart.ui.extension 2.3.0.v20080610 org.python.pydev.core 0.9.8.3 org.python.pydev.parser 0.9.7 org.eclipse.jem.util 2.0.100.v200805140020 org.eclipse.tptp.monitoring.lta.la.core 4.5.0.v200805270100 org.python.pydev.core 0.9.8.2 org.eclipse.jdt.junit.runtime 3.3.0.v20080603-2000 org.python.pydev.core 1.2.4 org.python.pydev.core 0.9.8.1 org.eclipse.ecf.discovery 2.0.0.v20080623-0046 org.apache.xml.serializer 2.7.1.v200806030322 org.python.pydev.core 0.9.8.7 org.python.pydev.core 0.9.8.6 org.eclipse.gmf.runtime.draw2d.ui.render.awt 1.1.0.v20080603-1553 com.windowtester.eclipse.help 3.5.1.200809042232 org.python.pydev.core 0.9.8.5 org.python.pydev.core 0.9.8.4 org.python.pydev 0.9.8.7 org.eclipse.birt.report.engine.emitter.ppt 2.3.0.v20080606 org.apache.commons.httpclient 3.1.0.v20080605-1935 com.windowtester.runtime.legacy 3.5.0.200806270034 org.eclipse.datatools.enablement.oda.xml.ui 1.1.0.v200805270900 org.python.pydev 0.9.8.3 org.eclipse.mylyn.compatibility 3.0.2.v20080918-1100-e3x org.python.pydev 0.9.8.4 org.python.pydev 0.9.8.5 org.eclipse.wst.common.project.facet.ui 1.3.0.v200805281731 org.eclipse.gmf.tooldef 2.0.0.v20080417-1610 org.python.pydev 0.9.8.6 org.eclipse.core.commands 3.4.0.I20080509-2000 org.python.pydev.jython 1.3.9 org.eclipse.datatools.modelbase.sql.edit 1.0.0.v200805152355 org.python.pydev 0.9.8.2 org.python.pydev 0.9.8.1 org.eclipse.emf.cdo.server.hibernate.libraries 1.0.0.v200806180411 org.eclipse.equinox.p2.ui.admin 1.0.0.v20080522-1735 org.eclipse.wst.common.core 1.1.201.v200806010600 org.eclipse.emf.compare.diff.edit 0.8.0.v200806180301 com.swtdesigner.layout.group.designer 6.7.0.200806270151 org.eclipse.ui.views.properties.tabbed 3.4.0.I20080527-2000 org.python.pydev.jython 1.2.2 org.eclipse.wst.common.emf 1.1.200.v200805140020 com.instantiations.packager.refactoring 2.5.1 com.instantiations.assist.eclipse.fragment.jdt 5.5.1 org.eclipse.datatools.connectivity.dbdefinition.genericJDBC 1.0.0.v200805152355 org.python.pydev.parser 1.0.7 org.eclipse.datatools.sqltools.data.ui 1.1.0.v200805310400 org.eclipse.buckminster.core 1.1.0.r09336 org.eclipse.mylyn.tasks.core 3.0.1.v20080721-2100-e3x org.eclipse.birt.report.designer.ui.samplesview 2.3.0.v20080606 org.eclipse.equinox.launcher 1.0.100.v20080509-1800 org.eclipse.birt.report.item.crosstab.ui 2.3.0.v20080606 org.eclipse.m2m.atl.adt.perspective 2.0.0.v200806101117 javax.servlet.jsp 2.0.0.v200806031607 com.swtdesigner 6.7.1.200809050053 org.eclipse.jet.ui 0.9.0.v20080527 org.eclipse.m2m.qvt.oml.common.ui 1.0.0.v20080611-1330 com.swtdesigner.layout.group 6.7.1.200809050053 org.eclipse.gmf.runtime.common.ui.services.action 1.1.0.v20080507-2230 org.eclipse.emf.search.ecore.ui 0.7.0.v200806130939 org.python.pydev 1.0.5 org.eclipse.emf.workspace.ui 1.2.0.v200805130238 com.instantiations.helpeditor.core.toc 1.3.4.200809042225 org.slf4j.extendable 1.4.3 org.python.pydev.core 1.3.14 org.eclipse.hyades.logging.core 4.3.200.v200804110100 org.eclipse.datatools.enablement.postgresql.ui 1.0.0.v200806060334 org.eclipse.gmf.graphdef 2.0.100.v20080528-1052 org.eclipse.mylyn.help.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.protocol.bittorrent 0.3.0 org.eclipse.birt.report.engine 2.3.0.v20080616 org.eclipse.datatools.connectivity.ui.dse 1.1.0.v200805152355 org.eclipse.mylyn.bugzilla.core 3.0.0.v20080619-1900 org.python.pydev.jython 1.3.4 org.python.pydev 0.9.0 org.eclipse.equinox.preferences.jmx 1.0.0.v20070510 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.1 org.eclipse.datatools.enablement.postgresql.dbdefinition 1.0.0.v200805152355 org.eclipse.m2m.qvt.oml.common.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.eclipse.tptp.monitoring.lta.logui 4.5.0.v200805141427 org.eclipse.birt.report.debug.ui 2.3.0.v200806102 org.eclipse.gmf.runtime.emf.ui 1.1.0.v20080516-1748 org.eclipse.ui.cheatsheets 3.3.100.v20080508 org.python.pydev 1.2.9 org.eclipse.birt.report.engine.emitter.wpml 2.3.0.v20080606 org.eclipse.help.appserver 3.1.300.v20080507 org.python.pydev.parser 1.3.9 com.xored.composer.ui 1.3.4.200806270212 org.eclipse.datatools.sqltools.tabledataeditor 1.0.0.v200805240400 org.eclipse.gmf.runtime.emf.type.core 1.1.0.v20080425-1959 org.python.pydev 1.3.7 com.ibm.icu.base 3.8.1.v20080530 org.python.pydev.ast 1.3.1 org.apache.batik.pdf 1.6.0.v200806031500 org.eclipse.emf.mapping.ui 2.4.0.v200806091234 org.eclipse.net4j.db.derby 1.0.0.v200806180305 org.eclipse.net4j.http.server 1.0.0.v200806180305 org.python.pydev.jython 1.3.17 org.python.pydev.jython 1.0.6 org.python.pydev.ast 1.2.3 org.eclipse.team.svn.sources 0.7.1.I20080612-1500 org.eclipse.uml2.diagram.usecase 0.8.0.v200806112132 org.eclipse.wst.sse.core 1.1.300.v200805221633 org.eclipse.birt.report.designer.ui 2.3.0.v20080606 org.eclipse.jdt.apt.ui 3.3.100.v20080407-1345 com.instantiations.eclipse.debug 5.3.2.200809042027 org.eclipse.gmf.codegen.ui 1.1.0.v20080512-1200 com.instantiations.designer.databinding 6.7.1.200809050053 org.python.pydev.core 1.0.1 com.windowtester.swt.runtime.gef 3.5.0.200806270034 com.instantiations.common.ui 5.3.2.200809042027 org.python.pydev 1.3.19 org.eclipse.ui.forms 3.3.100.v20080611 org.eclipse.birt.data 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase.ase.ui 1.0.1.v200805310538 org.polarion.eclipse.team.svn.connector 2.0.1.I20080612-1500 org.eclipse.emf.common.ui 2.4.0.v200806091234 org.eclipse.datatools.enablement.ibm.informix.dbdefinition 1.0.0.v200805152355 org.eclipse.wst.xsdeditor.doc.user 1.0.400.v200805150028 org.eclipse.emf.mint.doc 0.7.0.v200806172223 org.eclipse.buckminster.generic 1.0.0.r09319 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.1 org.eclipse.emf.validation.examples 1.2.0.v200805280204 org.eclipse.team.svn.core 0.7.1.I20080612-1500 org.python.pydev.ast 1.2.4 org.eclipse.emf.cdo.server.hibernate 1.0.0.v200806180411 org.python.pydev.jython 1.3.8 org.eclipse.gmf.xpand 1.1.0.v20080528-1052 org.eclipse.datatools.sqltools.data.core 1.0.0.v200805152355 org.eclipse.emf.ecoretools 0.8.0.v200806130600 org.python.pydev.core 1.3.18 org.eclipse.gmf.runtime.common.core 1.1.0.v20080425-1959 org.eclipse.emf 2.4.0.v200806091234 org.eclipse.emf.ecoretools.properties 0.8.0.v200806130600 org.python.pydev.core 1.2.7 org.python.pydev.parser 0.9.8 org.eclipse.datatools.enablement.ibm.db2.luw.ui 1.0.0.v200805160737 org.eclipse.mylyn.team.ui 3.0.0.v20080619-1900 org.eclipse.help.base 3.3.100.v20080617 org.eclipse.m2m.atl.doc 2.0.0.v200806101117 org.eclipse.net4j.examples 1.0.0.v200806180305 org.eclipse.birt.data.aggregation 2.3.0.v20080606 org.eclipse.gmf.examples 1.0.100.v20080425-1959 org.eclipse.emf.search.common 0.7.0.v200806130939 org.python.pydev.ast 1.3.17 org.eclipse.ecf.provider.filetransfer.ssl 1.0.0.v20080611-1715 org.python.pydev.core 1.0.3 org.eclipse.team.svn.core.nl1 0.7.1.I20080612-1500 org.eclipse.emf.cdo.server.hibernate.teneo 1.0.0.v200806180411 org.eclipse.wst.validation.ui 1.2.1.v200807292117 org.python.pydev.parser 1.0.3 org.python.pydev.ast 1.3.6 org.eclipse.search 3.4.0.v20080603-2000 org.eclipse.jet 0.9.0.v20080527 org.python.pydev 1.3.2 org.python.pydev.jython 1.2.6 org.python.pydev.parser 1.3.14 org.eclipse.datatools.oda.cshelp 1.0.0.v200805152355 org.eclipse.jdt.junit 3.4.0.v20080603-2000 org.eclipse.datatools.sqltools.debugger.core 1.0.0.v200805152355 org.mortbay.jetty 5.1.14.v200806031611 org.eclipse.equinox.p2.garbagecollector 1.0.0.v20080506-1939 org.eclipse.m2m.atl.adt.debug 2.0.0.v200806101117 org.eclipse.equinox.jmx.client 1.0.0.v20070515 org.python.pydev.core 1.3.5 org.eclipse.mylyn.bugzilla.core 3.0.1.v20080721-2100-e3x org.python.pydev.parser 0.9.8.3 org.python.pydev.parser 0.9.8.2 org.python.pydev.parser 0.9.8.1 org.eclipse.osgi.services 3.1.200.v20071203 org.python.pydev 1.0.4 org.eclipse.hyades.lta.logging.adapter 4.5.0.v200806121215 org.eclipse.datatools.sqltools.sqleditor 1.0.0.v200805152355 org.python.pydev.parser 0.9.8.7 org.python.pydev.parser 0.9.8.6 org.eclipse.gmf.runtime.emf.core 1.1.0.v20080425-1959 org.python.pydev.parser 0.9.8.5 org.eclipse.core.contenttype 3.3.0.v20080604-1400 org.eclipse.ecf.datashare 1.3.0.v20080623-0046 org.python.pydev.parser 0.9.8.4 org.eclipse.tptp.platform.common.ui 4.4.100.v200806110100 org.junit 3.8.2.v20080602-1318 com.instantiations.assist.eclipse.coverage 5.5.0.200806270255 javax.activation 1.1.0.v200806101325 com.instantiations.assist.eclipse.scheduler 5.5.1 javax.management 1.2.0.v200803061811 org.eclipse.emf.edit 2.4.0.v200806091234 org.eclipse.ecf.provider.discovery 2.0.0.v20080623-0046 org.eclipse.birt.chart.device.pdf 2.3.0.v20080417 org.eclipse.equinox.wireadmin 1.0.0.v20080407 org.python.pydev.ast 1.0.8 org.eclipse.net4j.buddies.server 1.0.0.v200806180305 org.eclipse.wst.internet.cache 1.0.301.v200805140020 com.windowtester.runtime 3.5.0.200806270034 org.mx4j.jmx 3.0.3.v200802291451 org.eclipse.pde.ui 3.4.0.v20080530 org.eclipse.ocl 1.2.0.v200806091438 org.eclipse.birt.cshelp 2.3.0.v20080617 org.eclipse.emf.query.doc 1.2.0.v200805130238 org.eclipse.pde.runtime 3.4.0.v20080530-1200 org.apache.axis 1.4.0.v200807230600 org.apache.log4j 1.2.13.v200806030600 org.eclipse.ui.intro 3.2.200.v20080610 com.instantiations.assist.eclipse.pattern 5.5.1 com.xored.swt.composer 1.3.4.200806270212 org.apache.batik.ext.awt 1.6.0.v200805290154 org.eclipse.emf.cdo.ui 1.0.0.v200806180411 org.eclipse.jface 3.4.0.I20080606-1300 com.windowtester.swt.runtime.gef 3.5.1.200809042232 org.eclipse.gmf.runtime.emf.type.ui 1.1.0.v20080425-1959 org.eclipse.uml2.uml 2.2.0.v200805141133 org.objectweb.asm 3.0.0.v200803061811 org.python.pydev.core 1.1.0 org.eclipse.ecf.discovery.ui 2.0.0.v20080623-0046 org.python.pydev 1.3.14 org.eclipse.gmf.runtime.diagram.ui.printing 1.1.0.v20080501-1739 org.eclipse.mylyn.ide.ant 3.0.2.v20080918-1100-e3x org.eclipse.xsd.example.installer 1.0.0.v200806091234 org.eclipse.uml2.diagram.examples.profile 0.8.0.v200806112132 org.eclipse.ui.intro.universal 3.2.200.v20080508 org.python.pydev.ast 0.9.7.99 org.eclipse.emf.codegen 2.4.0.v200806091234 org.eclipse.equinox.p2.metadata 1.0.0.v20080514-1900 org.eclipse.ecf.example.collab 1.3.0.v20080623-0046 org.python.pydev.parser 1.2.4 org.eclipse.birt.report.engine.emitter.html 2.3.0.v20080606 org.python.pydev.jython 1.3.16 org.eclipse.osgi 3.4.0.v20080605-1900 org.eclipse.emf.databinding 1.0.0.v200806091234 org.eclipse.help 3.3.100.v20080610 org.eclipse.net4j.db.hsqldb 1.0.0.v200806180305 org.eclipse.gmf.runtime.diagram.ui.dnd 1.1.0.v20080425-1959 org.eclipse.birt.report.model 2.3.0.v20080605 org.eclipse.datatools.enablement.finfo 1.5.1.v200805152355 org.eclipse.jsch.ui 1.1.100.I20080415 org.python.pydev 1.3.10 org.python.pydev.parser 1.3.6 org.eclipse.emf.mapping.ecore.editor 2.4.0.v200806091234 org.eclipse.datatools.sqltools.common.ui 1.0.0.v200805152355 org.eclipse.birt.report.engine.emitter.pdf 2.3.0.v20080606 org.python.pydev 1.2.8 com.instantiations.packager.help 2.5.1 org.eclipse.equinox.p2.directorywatcher 1.0.0.v20080505-1850 org.eclipse.draw2d 3.4.0.v20080529 org.eclipse.draw2d.source 3.4.0.v20080115-33-7w3119163_ org.eclipse.ecf.ui 2.0.0.v20080623-0046 org.eclipse.birt.report.data.oda.jdbc.dbprofile 2.3.0.v20080606 org.eclipse.equinox.security.win32.x86 1.0.0.v20080529-1600 org.eclipse.wst.xml.ui 1.0.400.v200806051910 org.eclipse.jdt.ui 3.4.0.v20080603-2000 org.eclipse.equinox.p2.ui 1.0.0.v20080530-1237 org.eclipse.hyades.lta.logging.adapter.ui 4.5.0.v200805132041 org.eclipse.mylyn.monitor.ui 3.0.0.v20080619-1900 org.python.pydev 0.9.1 org.eclipse.emf.ecore.sdo.doc 2.4.0.v200806091234 com.instantiations.eclipse.ast.editor 5.5.1 org.eclipse.ant.ui 3.3.0.v20080529 org.python.pydev.core 1.3.13 org.eclipse.gef.doc.isv 3.4.0.v20080606 org.apache.xml.resolver 1.2.0.v200806030312 org.eclipse.datatools.enablement.ibm.db2.iseries.dbdefinition 1.0.0.v200806100223 org.eclipse.birt 2.3.0.v20080304 org.eclipse.equinox.security 1.0.0.v20080512-1800 com.instantiations.tools 5.3.2.200809042027 org.eclipse.jdt.core.manipulation 1.2.0.v20080603-2000 org.eclipse.gmf.runtime.diagram.ui.printing.render 1.1.0.v20080425-1959 org.eclipse.net4j.buddies.ui 1.0.0.v200806180305 org.eclipse.emf.codegen.ui 2.4.0.v200806091234 org.eclipse.team.svn 0.7.1.I20080612-1500 org.eclipse.wst.command.env.infopop 1.0.100.v200805301544 org.eclipse.datatools.enablement.hsqldb.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.runtime.common.ui.services.properties 1.1.0.v20080425-1959 org.eclipse.emf.cheatsheets 2.4.0.v200806091234 org.eclipse.ecf.presence.collab.ui 1.2.0.v20080623-0046 org.eclipse.update.core 3.2.200.v20080515 org.eclipse.wst.command.env.core 1.0.204.v200805140020 org.apache.batik.swing 1.6.0.v200805290154 org.eclipse.birt.report.designer.samplereports 2.3.0.v20080606 org.python.pydev.parser 1.0.8 org.eclipse.xsd 2.4.0.v200806091234 com.instantiations.assist.eclipse.fragment.jdt 5.5.0 org.eclipse.emf.transaction 1.2.0.v200805130238 org.eclipse.mylyn.team.cvs 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.ui 1.0.0.v20080611-1330 org.eclipse.emf.validation.source 1.2.0.v200805130238-35-9oA55S5J8H5ADM org.eclipse.datatools.enablement.hsqldb 1.0.0.v200805152355 org.eclipse.wst.common.uriresolver 1.1.301.v200805140415 org.eclipse.equinox.jsp.jasper 1.0.100.v20080427-0830 org.eclipse.osgi.util 3.1.300.v20080303 org.eclipse.datatools.connectivity.oda.consumer 3.1.2.v200805230718 org.eclipse.emf.compare.source 0.8.0.v200806180301 org.python.pydev.core 1.3.19 org.eclipse.emf.query.examples 1.2.0.v200805130238 org.eclipse.buckminster.runtime 1.1.0.r09338 org.eclipse.datatools.enablement.sybase.asa.dbdefinition 1.0.0.v200805240040 org.eclipse.datatools.sqltools.sql 1.0.0.v200805152355 org.apache.batik.svggen 1.6.0.v200805290154 org.eclipse.buckminster.cvs 1.0.0.r09319 org.python.pydev.core 1.2.6 org.eclipse.equinox.simpleconfigurator 1.0.0.v20080604 org.eclipse.help.ui 3.3.100.v20080521 org.apache.batik.dom 1.6.0.v200805290154 org.python.pydev.parser 1.1.0 org.eclipse.ecf.server.generic 1.2.0.v20080623-0046 com.windowtester.swt.runtime.win32 3.5.0.200806270034 org.eclipse.emf.cdo.examples 1.0.0.v200806180411 org.eclipse.ecf.provider.remoteservice 1.3.0.v20080623-0046 org.eclipse.gmf.runtime.notation.edit 1.1.0.v20080507-1326 org.eclipse.core.filesystem 1.2.0.v20080604-1400 org.eclipse.m2m.qvt.oml.runtime.ui 1.0.0.v20080611-1330 org.eclipse.emf.cdo.server.hibernate.source 1.0.0.v200806180411 org.python.pydev.jython 1.3.7 org.eclipse.gmf.codegen.edit 2.1.0.v20080610-1132 org.eclipse.buckminster.pde 1.1.0.r09351 org.python.pydev.ast 1.2.5 org.python.pydev.core 1.0.2 org.python.pydev.ast 1.3.16 org.apache.batik.parser 1.6.0.v200805290154 org.python.pydev.parser 1.0.2 org.eclipse.wst.common.infopop 1.0.100.v200805301550 org.eclipse.ecf.remoteservice 2.0.0.v20080623-0046 org.python.pydev 1.3.1 org.python.pydev.jython 1.2.5 org.eclipse.emf.mapping 2.4.0.v200806091234 org.eclipse.emf.cdo.server.hibernate.id 1.0.0.v200806180411 com.windowtester.runtime.legacy 3.5.1.200809042232 org.python.pydev.ast 1.3.7 org.eclipse.datatools.enablement.oracle 1.0.0.v200805152355 org.python.pydev.parser 1.3.15 org.eclipse.emf.importer 2.4.0.v200806091234 org.eclipse.birt.example 2.3.0.v20080304 org.eclipse.birt.report.designer.ui.lib 2.3.0.v20080606 org.eclipse.emf.cdo.server.source 1.0.0.v200806180411 org.eclipse.gmf.runtime.common.ui.services 1.1.0.v20080612-1229 org.eclipse.datatools.sqltools.db.generic 1.0.0.v200805152355 org.eclipse.net4j 1.0.0.v200806180305 org.eclipse.jdt 3.4.0.v20080603-2000 org.eclipse.emf.cdo.source 1.0.0.v200806180411 org.eclipse.datatools.connectivity 1.1.0.v200805160228 com.instantiations.assist.eclipse.scheduler 5.5.0 org.eclipse.emf.ecore.sdo.source 2.4.0.v200806091234 org.eclipse.wst.sse.doc.user 1.1.0.v200805211530 org.python.pydev 0.9.7.99 org.eclipse.emf.transaction.source 1.2.0.v200805130238-23-8s733I3C59379I org.w3c.dom.svg 1.1.0.v200806040011 org.python.pydev.core 1.3.4 javax.xml.rpc 1.1.0.v200806030420 org.eclipse.ocl.uml.source 1.2.0.v200805130238-11-7w311916241349 com.instantiations.eclipse.ui 5.3.2.200806270030 org.eclipse.jface.text 3.4.0.v20080603-2000 org.apache.batik.xml 1.6.0.v200805290154 org.python.pydev 1.0.3 org.eclipse.gmf.bridge.ui.dashboard 2.0.0.v20080417-1610 org.apache.lucene 1.9.1.v20080530-1600 org.eclipse.emf.query.ocl 1.2.0.v200805130238 org.eclipse.uml2.uml.resources 2.2.0.v200805131030 org.eclipse.ecf.provider.r_osgi 2.0.0.v20080623-0046 org.eclipse.emf.importer.java 2.4.0.v200806091234 org.python.pydev.debug 1.3.20 org.eclipse.emf.ecore.xmi 2.4.0.v200806091234 org.python.pydev.mylyn 0.3.0 com.instantiations.assist.eclipse.pattern 5.5.0 org.eclipse.emf.source 2.4.0.v200806091234 org.eclipse.ui.browser 3.2.200.v20080507 org.eclipse.tptp.lta.sdb.epi 4.5.0.v200805132041 org.eclipse.net4j.doc 1.0.0.v200806180305 org.eclipse.gmf.bridge 1.1.0.v20080528-1052 com.instantiations.assist.eclipse.admin 5.5.1 org.eclipse.ecf.presence 1.3.0.v20080623-0046 org.eclipse.jet.editor 0.9.0.v20080226 org.eclipse.emf.mint 0.7.0.v200806172223 org.eclipse.ecf.provider 1.3.0.v20080623-0046 com.instantiations.assist.eclipse.core.ant 5.5.0 org.apache.axis 1.4.0.v200806030120 org.eclipse.equinox.p2.metadata.repository 1.0.0.v20080604 com.ibm.icu 3.8.1.v20080530 org.eclipse.gmf.runtime.diagram.ui.properties 1.1.0.v20080603-1553 org.eclipse.team.svn.mylyn.source 0.7.1.I20080612-1500 org.eclipse.ecf.provider.datashare 1.3.0.v20080623-0046 org.eclipse.birt.report.data.oda.sampledb 2.3.0.v20080606 org.eclipse.m2m.atl.drivers.emf4atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.providers.ide 1.1.0.v20080425-1959 org.python.pydev 0.8.0 org.eclipse.datatools.connectivity.sqm.server.ui 1.1.0.v200806050117 com.nordea.cd.dev.plugin.stubbuilder 1.0.2 org.eclipse.emf.mapping.xsd2ecore 2.4.0.v200806091234 org.python.pydev.parser 1.2.5 org.eclipse.xsd.mapping.editor 2.4.0.v200806091234 org.python.pydev.jython 1.3.15 org.eclipse.gmf.xpand.editor 1.0.0.v20080425-1959 org.eclipse.tptp.platform.lta.common 4.5.0.v200806050100 org.eclipse.buckminster.pde.ui 1.0.0.r09319 org.eclipse.emf.validation.ocl 1.2.0.v200805130238 org.eclipse.ui.console 3.3.0.v20080529-1300 org.eclipse.net4j.ui 1.0.0.v200806180305 org.eclipse.emf.workspace 1.2.0.v200805130238 org.python.pydev.ast 0.9.8.6 org.python.pydev.ast 0.9.8.5 org.eclipse.emf.teneo.annotations 1.0.0.v200806111928 org.python.pydev.ast 0.9.8.4 org.eclipse.ui.net 1.0.0.I20080605 org.python.pydev.ast 0.9.8.3 org.eclipse.net4j.db.source 1.0.0.v200806180305 org.eclipse.zest.core 1.0.0.v20080115 org.python.pydev.ast 0.9.8.2 org.eclipse.tptp.lta.log.epi 4.5.0.v200805132041 org.python.pydev.ast 0.9.8.1 org.python.pydev 1.3.13 org.eclipse.equinox.app 1.1.0.v20080421-2006 org.eclipse.equinox.p2.metadata.generator 1.0.0.v20080604 org.python.pydev 1.2.7 org.eclipse.emf.ocl.examples 1.2.0.v200805130238 org.eclipse.mylyn.jira.core 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.commons.net 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql.query 1.0.1.v200805152355 org.eclipse.datatools.sqltools.plan 1.0.0.v200805152355 com.swtdesigner.help 6.7.1.200809050053 org.eclipse.ecf.ssl 1.0.0.v20080611-1715 org.eclipse.team.cvs.core 3.3.100.I20080605 org.python.pydev.ast 0.9.8 com.instantiations.helpeditor.core.toc 1.3.4.200806270212 org.eclipse.core.databinding 1.1.0.I20080527-2000 org.eclipse.tptp.platform.common 4.3.200.v200805300100 org.eclipse.net4j.util.ui 1.0.0.v200806180305 org.eclipse.mylyn.commons.core 3.0.0.v20080619-1900 org.python.pydev 1.3.9 org.eclipse.emf.search.common.ui 0.7.0.v200806130939 org.eclipse.m2m.atl.engine.emfvm 2.0.0.v200806101117 org.eclipse.uml2.diagram.csd 0.8.0.v200806112132 org.python.pydev.parser 1.3.7 org.eclipse.team.svn.ui 0.7.1.I20080612-1500 org.python.pydev.core 1.3.12 org.eclipse.datatools.modelbase.sql.query.edit 1.0.0.v200806070329 com.instantiations.packager.core 2.5.1 com.windowtester.swing.runtime 3.5.0.200806270034 org.eclipse.update.ui 3.2.100.v20080318 org.apache.commons.codec 1.2.0.v20080530-1550 org.eclipse.mylyn.bugzilla.core 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.editor.ui 1.0.0.v20080611-1330 org.eclipse.m2m.qvt.oml.samples 1.0.0.v20080611-1330 org.eclipse.mylyn.context.core 3.0.0.v20080619-1900 org.eclipse.xsd.source 2.4.0.v200806091234 org.eclipse.gmf.runtime.diagram.core 1.1.0.v20080425-1959 org.eclipse.m2m.atl.drivers.uml24atl 2.0.0.v200806101117 com.instantiations.eclipse.util 5.3.2.200809042027 org.eclipse.emf.ecore.sdo 2.4.0.v200806091234 com.instantiations.eclipse.startup 5.3.2.200809042027 org.eclipse.gmf 1.0.0.v20080425-1959 org.python.pydev 0.9.2 org.apache.batik.util.gui 1.6.0.v200805290154 org.python.pydev.ast 0.9.8.7 com.nordea.cd.dev.plugin.wsdl2java 1.0.2 org.eclipse.datatools.enablement.sybase.models 1.0.0.v200805152355 org.python.pydev.ast 1.0.1 org.eclipse.emf.compare.diff 0.8.0.v200806180301 org.eclipse.birt.report.designer 2.3.0.v200806102 org.eclipse.equinox.http.registry 1.0.100.v20080427-0830 ch.ethz.iks.r_osgi.remote 1.0.0.RC2_v20080623-0046 org.eclipse.gmf.graphdef.codegen.ui 1.0.100.v20080425-1959 org.eclipse.m2m.qvt.oml.editor.source 1.0.0.v20080611-1330-1--7w3119172202441 org.sat4j.pb 2.0.0.v20080602 org.eclipse.wst.validation 1.2.1.v200807292117 org.apache.batik.util 1.6.0.v200805290154 org.eclipse.equinox.transforms.hook 1.0.0.v20080610 org.eclipse.emf.teneo.hibernate 1.0.0.v200806111928 org.eclipse.uml2.examples 2.1.0.v200805131030 org.eclipse.mylyn.java.tasks 3.0.2.v20080918-1100-e3x org.eclipse.equinox.preferences 3.2.200.v20080421-2006 com.instantiations.assist.eclipse.fragment.swt 5.5.0 org.eclipse.ocl.doc 1.2.0.v200805130238 org.eclipse.jdt.apt.core 3.3.100.v20080513-1235 org.eclipse.birt.report.engine.fonts 2.3.0.v20080606 org.eclipse.mylyn.monitor.ui 3.0.2.v20080918-1100-e3x org.eclipse.gmf.tooldef.edit 2.0.0.v20080610-1132 org.eclipse.gmf.runtime.draw2d.ui.render 1.1.0.v20080507-2230 com.windowtester.swt.platform.ext 3.5.0.200806270034 org.eclipse.ecf.example.clients 1.3.0.v20080623-0046 org.eclipse.core.net 1.1.0.I20080604 org.eclipse.wst.xsd.core 1.1.301.v200807240448 org.eclipse.datatools.connectivity.oda.flatfile 3.0.6.v200805261930 org.python.pydev.refactoring 1.3.20 org.python.pydev.parser 1.0.1 org.python.pydev.ast 1.3.19 org.eclipse.equinox.registry.jmx 1.0.0.v20080610-1530 com.instantiations.eclipse.model.jsp 5.5.0 org.eclipse.mylyn.context.ui 3.0.2.v20080918-1100-e3x org.python.pydev.core 1.0.5 org.eclipse.hyades.lta.resources.database 4.5.0.v200805271330 org.python.pydev 0.6.1 org.python.pydev.parser 1.3.12 org.eclipse.equinox.p2.console 1.0.0.v20080514-1900 org.eclipse.mylyn.commons.net 3.0.1.v20080721-2100-e3x org.eclipse.net4j.jms.api 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.lexer 1.0.1.v200805152355 org.python.pydev.ast 1.3.4 org.python.pydev 1.3.4 org.python.pydev.jython 1.2.8 org.python.pydev 0.8.5 org.python.pydev 0.5.3 org.eclipse.wst.sse.ui 1.1.1.v200808141919 org.eclipse.emf.query 1.2.0.v200805130238 org.eclipse.core.runtime.compatibility 3.2.0.v20071008 org.eclipse.gmf.runtime.notation 1.1.0.v20080507-1326 org.eclipse.birt.report.data.oda.sampledb.ui 2.3.0.v20080606 org.python.pydev.ast 1.2.6 com.instantiations.eclipse.mail.ui 5.5.1 org.eclipse.zest.layouts 1.0.0.v20080226 org.python.pydev.jython 1.3.6 org.eclipse.net4j.jms.admin 1.0.0.v200806180305 org.eclipse.core.databinding.beans 1.1.0.I20080508-2000a org.python.pydev 1.1.0 org.python.pydev.core 1.3.20 org.eclipse.gmf.runtime.emf.commands.core 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.common.ui.services.dnd.ide 1.1.0.v20080425-1959 org.eclipse.datatools.connectivity.apache.derby 1.0.1.v200805152355 org.python.pydev.core 1.2.9 org.eclipse.mylyn.context.core 3.0.2.v20080918-1100-e3x org.eclipse.equinox.p2.artifact.repository 1.0.0.v20080609-0850 org.eclipse.gef 3.4.0.v20080526 org.eclipse.gmf.runtime.common.ui 1.1.0.v20080512-1200 org.eclipse.emf.ecoretools.tabbedproperties 0.8.0.v200806130600 com.instantiations.assist.eclipse.core.ant 5.5.1 org.eclipse.emf.ecore.change 2.4.0.v200806091234 org.eclipse.jet.doc 0.9.0.v20080522 org.eclipse.emf.transaction.examples 1.2.0.v200806051817 org.eclipse.gmf.runtime.draw2d.ui 1.1.0.v20080610-1132 org.eclipse.equinox.jmx.server.rmi 1.0.0.v20070510 org.eclipse.ecf.examples.remoteservices.common 1.0.100.v20080623-0046 org.eclipse.wst.standard.schemas 1.0.102.v200807220733 org.eclipse.equinox.p2.jarprocessor 1.0.0.v20080514-1900 org.eclipse.birt.report.data.oda.jdbc 2.3.0.v20080610 com.windowtester.runner 3.5.0.200806270034 com.windowtester.swt.codegen 3.5.1.200809042232 org.eclipse.emf.cdo.tests.model2.edit 1.0.0.v200806180411 javax.wsdl 1.5.1.v200806030408 org.eclipse.datatools.enablement.sap.maxdb.ui 1.0.0.v200805152355 org.eclipse.equinox.launcher.win32.win32.x86 1.0.100.v20080509-1800 org.eclipse.birt.core 2.3.0.v20080606 javax.servlet 2.5.0.v200806031605 org.eclipse.uml2.codegen.ecore.ui 1.4.0.v200805131030 com.windowtester.swt.recorder 3.5.0.200806270034 org.eclipse.mylyn 3.0.1.v20080721-2100-e3x org.eclipse.uml2.search.ocl 0.7.0.v200806130939 org.python.pydev.core 1.3.3 org.eclipse.core.jobs 3.4.0.v20080512 org.python.pydev.core 0.9.5 org.eclipse.emf.validation.ui.ide 1.2.0.v200805130238 org.python.pydev 1.0.2 org.eclipse.wst.validation.ui 1.2.0.v200805262011 com.windowtester.swing.recorder 3.5.1.200809042232 com.instantiations.helpeditor.help 1.3.4.200809042225 org.eclipse.gmf.map.edit 2.1.0.v20080610-1132 org.eclipse.emf.ecore.edit 2.4.0.v200806091234 org.eclipse.datatools.enablement.msft.sqlserver.dbdefinition 1.0.0.v200805152355 org.mortbay.jetty.util 6.1.7.v200806031612 org.eclipse.datatools.sqltools.parsers.sql 1.0.1.v200805152355 org.eclipse.xsd.doc 2.4.0.v200806091234 org.eclipse.jdt.doc.isv 3.4.0.v20080612-1340 org.eclipse.jdt.apt.pluggable.core 1.0.100.v20080407-1345 org.eclipse.ecf.provider.bittorrent 0.3.0.v20080623-0046 org.eclipse.mylyn.monitor.ui 3.0.1.v20080721-2100-e3x org.python.pydev.jython 1.0.4 org.eclipse.wst.common.project.facet.ui 1.3.1.v200807301432 javax.xml.bind 2.0.0.v20080604-1500 org.apache.derby.core 10.3.1.4 org.eclipse.birt.report.debug.core 2.3.0.v200806102 org.python.pydev.parser 1.3.4 org.eclipse.jdt.debug.ui 3.3.0.v20080603 org.python.pydev.help 1.3.20 org.python.pydev 1.3.12 org.eclipse.gef.examples.ui.pde 3.4.0.v20080226 org.eclipse.ecf.provider.jmdns 2.0.0.v20080623-0046 org.eclipse.xsd.editor 2.4.0.v200806091234 org.python.pydev 1.2.6 org.eclipse.buckminster.generic.ui 1.0.0.r09319 org.eclipse.emf.ocl 1.1.100.v200805130238 org.eclipse.emf.search.ecore 0.7.0.v200806130939 org.eclipse.wst.common.frameworks.ui 1.1.200.v200805221400 org.eclipse.emf.ecoretools.doc 0.8.0.v200806130600 org.eclipse.wst.sse.ui.infopop 1.0.200.v200805301545 org.eclipse.tptp.platform.common.ui.trace 4.3.200.v200805290100 org.eclipse.net4j.jms.server 1.0.0.v200806180305 org.eclipse.ecf.filetransfer.ui 1.4.0.v20080623-0046 org.eclipse.birt.chart.device.swt 2.3.0.v20080522 org.eclipse.wst.xsd.ui 1.2.101.v200806051910 org.eclipse.emf.cdo.examples.source 1.0.0.v200806180411 org.eclipse.birt.report.designer.ui.lib.explorer 2.3.0.v20080606 org.mozilla.rhino 1.6.7.v20080214 org.python.pydev 1.3.16 org.eclipse.buckminster.ant 1.1.0.r09351 org.eclipse.equinox.metatype 1.0.0.v20070827 org.eclipse.m2m.atl.adt.wizard 2.0.0.v200806101117 org.eclipse.wst.command.env 1.0.305.v200805281530 org.eclipse.swt.jmx 1.0.0.v20070510 org.eclipse.emf.cdo.common 1.0.0.v200806180411 org.eclipse.ecf.examples.remoteservices.client 1.0.100.v20080623-0046 org.python.pydev.jython 1.3.14 org.python.pydev.parser 1.2.6 org.eclipse.emf.ecoretools.diagram.ui.outline 0.8.0.v200806130600 org.eclipse.emf.teneo.eclipse 1.0.0.v200806111928 org.eclipse.emf.cdo.tests.mango 1.0.0.v200806180411 org.eclipse.net4j.buddies.common 1.0.0.v200806180305 org.eclipse.net4j.buddies.chat 1.0.0.v200806180305 org.eclipse.mylyn.bugzilla.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.0 org.eclipse.datatools.enablement.sybase.ase.dbdefinition 1.0.0.v200805240040 org.apache.ant 1.7.0.v200803061910 org.eclipse.datatools.connectivity.oda.design 3.0.6.v200805152355 org.eclipse.emf.ocl.doc 1.1.100.v200805130238 org.eclipse.tptp.lta.gla.ui.epi 4.5.0.v200805160100 org.eclipse.equinox.jmx.server 1.0.0.v20071015 org.eclipse.wst.xml.core 1.1.300.v200806051910 org.eclipse.datatools.connectivity.oda.template.ui 3.0.6.v200805152355 org.python.pydev.ast 1.0.2 org.eclipse.birt.report.data.adapter 2.3.0.v20080606 org.eclipse.birt.chart.runtime 2.3.0.v20080304 org.eclipse.net4j.ui.source 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.query 1.0.1.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.1 org.eclipse.wst.dtd.ui 1.0.300.v200805152207 org.eclipse.mylyn.java.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.connectivity.oda.design.ui 3.0.6.v200805152355 org.eclipse.birt.report.designer.core 2.3.0.v200806102 org.eclipse.buckminster.jdt 1.0.0.r09319 org.eclipse.buckminster.p4 1.0.0.r09319 org.eclipse.ecf.core.source 2.0.0.v20080623-0046 org.eclipse.birt.report.runtime 2.3.0.v20080304 org.python.pydev.ast 1.1.0 com.windowtester.swt.runtime 3.5.1.200809042232 org.eclipse.uml2.doc 2.2.0.v200805201350 org.eclipse.mylyn.context.core 3.0.1.v20080721-2100-e3x org.eclipse.gmf.runtime.notation.providers 1.1.0.v20080425-1959 org.eclipse.tptp.platform.lta.log.doc.user 4.5.0.v200805132041 org.eclipse.team.svn.help 0.7.1.I20080612-1500 org.python.pydev 0.9.3 com.windowtester.swt.runtime.win32 3.5.1.200809042232 org.eclipse.m2m.qvt.oml.ocl.emf.libraries 1.0.0.v20080611-1330 org.eclipse.hyades.lta.analysis.engine 4.5.0.v200805271330 org.python.pydev.core 1.3.11 org.eclipse.datatools.connectivity.sqm.core 1.0.1.v200806041052 org.eclipse.equinox.jmx.server.xmlrpc 1.0.0.v20070608 org.eclipse.platform 3.3.100.v200806172000 org.eclipse.ui 3.4.0.I20080610-1200 org.eclipse.net4j.buddies.chat.ui 1.0.0.v200806180305 org.eclipse.emf.search.ecore.ocl 0.7.0.v200806130939 org.eclipse.gmf.codegen 2.1.0.v20080610-1132 org.eclipse.emf.teneo 1.0.0.v200806111928 org.eclipse.datatools.connectivity.oda.flatfile.ui 3.0.6.v200805261930 org.python.pydev.core 1.0.4 org.eclipse.equinox.p2.extensionlocation 1.0.0.v20080523-0001 org.eclipse.buckminster.remote.cloudsmith 1.0.0.r09319 org.python.pydev.ast 1.3.18 org.eclipse.birt.report.engine.dataextraction.csv 2.3.0.v200806102 org.eclipse.equinox.log 1.1.0.v20080414 org.python.pydev.parser 1.3.13 org.python.pydev 1.3.3 com.windowtester.eclipse.help 3.5.0.200806270034 org.python.pydev.jython 1.2.7 org.eclipse.m2m.qvt.oml.emf.util.ui 1.0.0.v20080611-1330 org.eclipse.gmf.runtime.common.ui.printing 1.1.0.v20080425-1959 org.python.pydev.ast 1.3.5 org.eclipse.uml2.uml.ecore.exporter 2.2.0.v200805131030 org.eclipse.equinox.event 1.1.0.v20080225 org.eclipse.epp.usagedata.gathering 1.0.0.R200806162215 com.instantiations.assist.eclipse.fragment.swt 5.5.1 org.eclipse.emf.cdo.server 1.0.0.v200806180411 org.eclipse.core.filesystem.win32.x86 1.1.0.v20080604-1400 org.eclipse.datatools.enablement.ibm.db2.zseries 1.0.0.v200805152355 com.windowtester.swt.platform.ext 3.5.1.200809042232 org.eclipse.birt.chart.examples 2.3.0.v20080612 org.eclipse.gmf.bridge.ui 1.1.100.v20080417-1610 org.eclipse.emf.doc 2.4.0.v200806091234 org.eclipse.emf.ecoretools.diagram 0.8.0.v200806130600 org.eclipse.ecf.provider.filetransfer.efs 1.5.0.v20080623-0046 org.eclipse.mylyn.commons.net 3.0.0.v20080619-1900 org.python.pydev.core 1.2.8 org.eclipse.datatools.modelbase.dbdefinition 1.0.0.v200805152355 javax.management.remote 1.0.0.v200803061811 org.eclipse.net4j.util 1.0.0.v200806180305 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.0 org.eclipse.ui.navigator.resources 3.3.100.I20080606-1300 org.apache.lucene.analysis 1.9.1.v20080530-1600 org.python.pydev.jython 1.3.5 org.eclipse.m2m.atl.adt.builder 2.0.0.v200806101117 org.eclipse.mylyn.monitor.core 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.2.7 com.instantiations.eclipse.mail.ui 5.5.0 org.eclipse.tptp.platform.models.lta 4.5.0.v200805132041 org.eclipse.mylyn.commons.core 3.0.1.v20080721-2100-e3x org.eclipse.team.svn.nl1 0.7.1.I20080612-1500 org.eclipse.birt.report.data.oda.jdbc.dbprofile.ui 2.3.0.v20080606 org.eclipse.pde 3.4.0.v20080603 org.eclipse.net4j.jms.server.jdbc 1.0.0.v200806180305 org.eclipse.pde.doc.user 3.3.0.v20080611-1530 org.eclipse.core.runtime.compatibility.auth 3.2.100.v20070502 org.eclipse.tptp.platform.iac.administrator 4.4.100.v200806120100 org.eclipse.emf.importer.ecore 2.4.0.v200806091234 org.eclipse.equinox.jmx.client.xmlrpc 1.0.0.v20070515 org.eclipse.equinox.jmx.common 1.0.0.v20070510 org.eclipse.datatools.enablement.ibm.informix.ui 1.0.0.v200805160737 com.instantiations.installer 2.5.1 org.eclipse.hyades.lta.logging.parsers 4.5.0.v200805271330 org.eclipse.uml2.diagram.profile 0.8.0.v200806112132 org.eclipse.datatools.enablement.jdt.classpath 1.0.1.v200805152355 org.eclipse.emf.validation.ocl.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.net4j.buddies 1.0.0.v200806180305 net.sourceforge.lpg.lpgjavaruntime 1.1.0.v200803061910 org.eclipse.emf.ecore.editor 2.4.0.v200806091234 org.apache.commons.lang 2.3.0.v200803061910 org.eclipse.ocl.uml 1.2.0.v200805130238 org.eclipse.emf.mapping.ecore2ecore 2.4.0.v200806091234 com.swtdesigner.fragment.jdt.core 6.7.0.200806270151 org.eclipse.ecf.provider.xmpp 2.0.0.v20080623-0046 org.eclipse.wst.common.modulecore 1.1.201.v200808071700 org.eclipse.mylyn.jira.ui 3.0.2.v20080918-1100-e3x org.eclipse.draw2d.doc.isv 3.4.0.v20080606 org.python.pydev.core 1.3.2 org.eclipse.mylyn.compatibility 3.0.0.v20080619-1900 org.eclipse.buckminster.maven 1.1.0.r09319 org.eclipse.buckminster.cmdline 1.0.0.r09319 org.apache.batik.css 1.6.0.v200805290154 org.eclipse.ecf.telephony.call.ui 1.2.0.v20080623-0046 org.eclipse.wst.common.emfworkbench.integration 1.1.200.v200805140020 org.python.pydev 1.0.1 org.eclipse.datatools.enablement.ibm.db2.luw.dbdefinition 1.0.0.v200805152355 org.eclipse.team.svn.resource.ignore.rules.jdt.source 0.7.1.I20080612-1500 org.eclipse.ecf.server 1.3.0.v20080623-0046 org.python.pydev 1.2.5 org.python.pydev.core 1.2.1 org.eclipse.datatools.sqltools.sqlscrapbook 1.0.0.v200806021003 org.eclipse.birt.chart.reportitem 2.3.0.v20080610 org.eclipse.uml2.diagram.codegen 0.8.0.v200806112132 org.eclipse.xsd.edit 2.4.0.v200806091234 org.eclipse.buckminster.opml 1.0.0.r09319 org.python.pydev.parser 1.3.5 org.eclipse.gmf.runtime.diagram.ui 1.1.0.v20080610-1132 org.eclipse.ocl.source 1.2.0.v200805130238-34-9oA55S5I6M7JBK com.windowtester.eclipse.ui 3.5.0.200806270034 org.eclipse.tptp.platform.agentcontroller 4.2.200.v200806162043 org.python.pydev 1.3.11 org.eclipse.datatools.connectivity.apache.derby.ui 1.0.0.v200805160737 org.eclipse.datatools.sqltools.routineeditor 1.0.0.v200805261703 org.eclipse.wst.xsd.ui 1.2.102.v200808141745 org.eclipse.equinox.http 1.0.200.v20080421-2006 org.jivesoftware.smack 2.2.1 org.eclipse.mylyn.compatibility 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.java.ui 3.0.0.v20080619-1900 org.eclipse.core.variables 3.2.100.v20080529-1300 org.python.pydev.jython 1.3.13 org.python.pydev.parser 1.3.20 org.eclipse.tptp.platform.models.hierarchy 4.5.0.v200806120100 org.eclipse.ecf.examples.updatesite.client 1.0.100.v20080623-0046 org.eclipse.datatools.enablement.msft.sqlserver.ui 1.0.0.v200805160737 org.eclipse.datatools.enablement.mysql 1.0.0.v200805152355 org.eclipse.jdt.debug 3.4.0.v20080604 org.antlr.runtime 3.0.0.v200803061811 org.python.pydev.parser 1.2.7 org.eclipse.hyades.execution 4.4.200.v200806120100 org.eclipse.ecf.provider.ui 1.3.0.v20080623-0046 org.eclipse.birt.chart.cshelp 2.3.0.v20080616 org.eclipse.buckminster.p4.ui 1.0.0.r09319 org.python.pydev 1.3.15 org.eclipse.datatools.enablement.ibm.ui 1.0.0.v200805152355 org.eclipse.buckminster.sax 1.0.0.r09175 org.eclipse.equinox.supplement 1.1.0.v20080421-2006 org.eclipse.wst.common.frameworks 1.1.200.v200805140020 org.eclipse.mylyn 3.0.2.v20080918-1100-e3x org.eclipse.gmf.map 2.1.0.v20080521 org.eclipse.wst.standard.schemas 1.0.101.v200806010600 org.python.pydev.ast 1.0.3 org.eclipse.m2m.qvt.oml.runtime 1.0.0.v20080611-1330 org.eclipse.mylyn.ide.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.sqltools.sqlbuilder 1.0.0.v200806070500 org.eclipse.datatools.modelbase.derby 1.0.0.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.0 org.eclipse.emf.compare.ui 0.8.0.v200806180301 org.eclipse.ecf.provider.filetransfer.scp 2.0.0.v20080623-0046 org.eclipse.uml2.search.ocl.ui 0.7.0.v200806130939 org.eclipse.mylyn.context.ui 3.0.1.v20080721-2100-e3x org.python.pydev.templates 1.3.20 org.eclipse.gmf.runtime.diagram.ui.resources.editor 1.1.0.v20080425-1959 org.eclipse.gmf.examples.ui.pde 1.0.200.v20080425-1959 org.eclipse.buckminster.installer 1.0.0.r09319 org.eclipse.m2m.atl.examples 2.0.0.v200806101117 org.eclipse.datatools.modelbase.sql.xml.query 1.0.0.v200805152355 org.eclipse.emf.search.doc 0.7.0.v200806130939 org.eclipse.datatools.enablement.oracle.dbdefinition 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.0 javax.xml.bind 2.0.0.v200803061811 org.apache.xmlrpc 3.0.0.v20080530-1550 org.eclipse.ui.views.log 1.0.0.v20080522-2200 org.python.pydev.core 1.3.10 org.eclipse.ecf.examples.updatesite.server 1.0.100.v20080623-0046 org.eclipse.birt.core.ui 2.3.0.v20080515 org.eclipse.core.filebuffers 3.4.0.v20080603-2000 org.eclipse.mylyn.team.ui 3.0.1.v20080721-2100-e3x org.eclipse.wst.command.env 1.0.306.v200807231700 org.eclipse.team.cvs.ssh2 3.2.200.I20080604 org.eclipse.emf.search.ecore.ocl.ui 0.7.0.v200806130939 org.eclipse.ecf.example.collab.editor 1.0.200.v20080623-0046 org.eclipse.ecf.provider.jslp 2.0.0.v20080623-0046 org.eclipse.datatools.sqltools.result 1.0.0.v200805301309 org.eclipse.emf.teneo.jpox 1.0.0.v200806111928 org.eclipse.gmf.runtime.emf.clipboard.core 1.1.0.v20080425-1959 com.instantiations.eclipse.ast.editor 5.5.0 org.eclipse.mylyn.tasks.bugs 3.0.2.v20080918-1100-e3x org.eclipse.jsch.core 1.1.100.I20080604 org.eclipse.pde.core 3.4.0.v20080604-2000 org.python.pydev 0.9.4 org.python.pydev.jython 1.3.0
-1 x2948 +1 x16 +1 x528 +1 x118 +1 x17 +1 x21 +1 x34 +1 x599 +1 x658 +1 x659 +1 x35 +1 x660 +1 x40 +1 x44 +1 x661 +1 x50 +1 x662 +1 x51 +1 x101 +1 x103 +1 x112 +1 x663 +1 x125 +1 x191 +1 x53 +1 x664 +1 x665 +1 x666 +1 x162 +1 x167 +1 x667 +1 x326 +1 x188 +1 x187 +1 x173 +1 x203 +1 x192 +1 x190 +1 x668 +1 x578 +1 x669 +1 x670 +1 x208 +1 x213 +1 x671 +1 x223 +1 x672 +1 x229 +1 x230 +1 x231 +1 x673 +1 x674 +1 x675 +1 x676 +1 x248 +1 x251 +1 x252 +1 x677 +1 x678 +1 x253 +1 x260 +1 x87 +1 x264 +1 x267 +1 x272 +1 x291 +1 x679 +1 x680 +1 x681 +1 x46 +1 x682 +1 x297 +1 x298 +1 x313 +1 x683 +1 x684 +1 x314 +1 x685 +1 x686 +1 x333 +1 x498 +1 x334 +1 x687 +1 x339 +1 x688 +1 x348 +1 x350 +1 x689 +1 x355 +1 x357 +1 x690 +1 x185 +1 x691 +1 x360 +1 x692 +1 x693 +1 x694 +1 x366 +1 x695 +1 x18 +1 x367 +1 x382 +1 x696 +1 x392 +1 x697 +1 x461 +1 x698 +1 x95 +1 x617 +1 x699 +1 x114 +1 x413 +1 x464 +1 x700 +1 x80 +1 x65 +1 x701 +1 x702 +1 x422 +1 x703 +1 x423 +1 x704 +1 x427 +1 x705 +1 x429 +1 x706 +1 x707 +1 x708 +1 x432 +1 x433 +1 x709 +1 x710 +1 x159 +1 x711 +1 x712 +1 x434 +1 x331 +1 x713 +1 x714 +1 x715 +1 x436 +1 x444 +1 x451 +1 x501 +1 x519 +1 x197 +1 x513 +1 x512 +1 x716 +1 x514 +1 x717 +1 x516 +1 x47 +1 x718 +1 x719 +1 x534 +1 x720 +1 x721 +1 x722 +1 x530 +1 x723 +1 x724 +1 x532 +1 x531 +1 x533 +1 x725 +1 x726 +1 x402 +1 x26 +1 x727 +1 x552 +1 x41 +1 x728 +1 x729 +1 x560 +1 x730 +1 x168 +1 x731 +1 x582 +1 x592 +1 x586 +1 x593 +1 x595 +1 x732 +1 x733 +1 x596 +1 x734 +1 x735 +1 x597 +1 x602 +1 x610 +1 x129 +1 x460 +1 x736 +1 x623 +1 x737 +1 x738 +1 x739 +1 x634 +1 x740 +1 x635 +1 x636 +1 x204 +1 x645 +1 x741 +1 x647 +1 x648 +1 x38 +1 x649 +1 x652 +1 x742 +1 x380 +1 x88 +1 x653 +1 x655 +1 x743 +1 x477 +1 x744 +1 x745 +1 x198 +1 x746 +1 x747 +1 x175 +1 x303 +1 x748 +1 x220 +1 x749 +1 x750 +1 x751 +1 x752 +1 x753 +1 x340 +1 x217 +1 x754 +1 x755 +1 x756 +1 x757 +1 x758 +1 x759 +1 x492 +1 x760 +1 x408 +1 x761 +1 x72 +1 x762 +1 x763 +1 x764 +1 x765 +1 x184 +1 x766 +1 x510 +1 x73 +1 x767 +1 x768 +1 x769 +1 x374 +1 x770 +1 x771 +1 x14 +1 x772 +1 x773 +1 x774 +1 x775 +1 x776 +1 x454 +1 x777 +1 x344 +1 x178 +1 x778 +1 x779 +1 x186 +1 x347 +1 x780 +1 x781 +1 x782 +1 x783 +1 x784 +1 x785 +1 x786 +1 x787 +1 x788 +1 x789 +1 x790 +1 x791 +1 x792 +1 x625 +1 x793 +1 x794 +1 x472 +1 x795 +1 x796 +1 x797 +1 x798 +1 x521 +1 x799 +1 x800 +1 x801 +1 x802 +1 x525 +1 x91 +1 x803 +1 x804 +1 x805 +1 x806 +1 x807 +1 x587 +1 x808 +1 x315 +1 x809 +1 x810 +1 x811 +1 x812 +1 x813 +1 x814 +1 x815 +1 x816 +1 x68 +1 x817 +1 x179 +1 x486 +1 x818 +1 x410 +1 x819 +1 x820 +1 x821 +1 x822 +1 x823 +1 x824 +1 x825 +1 x826 +1 x827 +1 x638 +1 x828 +1 x829 +1 x830 +1 x372 +1 x831 +1 x832 +1 x9 +1 x263 +1 x324 +1 x411 +1 x833 +1 x834 +1 x835 +1 x836 +1 x837 +1 x838 +1 x839 +1 x430 +1 x840 +1 x381 +1 x89 +1 x518 +1 x328 +1 x841 +1 x621 +1 x842 +1 x843 +1 x330 +1 x844 +1 x57 +1 x153 +1 x845 +1 x846 +1 x48 +1 x847 +1 x70 +1 x848 +1 x849 +1 x850 +1 x467 +1 x851 +1 x852 +1 x853 +1 x854 +1 x855 +1 x856 +1 x857 +1 x858 +1 x447 +1 x83 +1 x859 +1 x860 +1 x861 +1 x82 +1 x862 +1 x863 +1 x74 +1 x864 +1 x632 +1 x865 +1 x866 +1 x867 +1 x5 +1 x868 +1 x869 +1 x870 +1 x871 +1 x872 +1 x361 +1 x873 +1 x604 +1 x874 +1 x875 +1 x876 +1 x594 +1 x877 +1 x183 +1 x289 +1 x495 +1 x138 +1 x194 +1 x143 +1 x878 +1 x879 +1 x85 +1 x36 +1 x880 +1 x881 +1 x177 +1 x882 +1 x883 +1 x884 +1 x885 +1 x886 +1 x887 +1 x888 +1 x889 +1 x370 +1 x219 +1 x890 +1 x891 +1 x892 +1 x893 +1 x894 +1 x895 +1 x24 +1 x896 +1 x897 +1 x898 +1 x899 +1 x900 +1 x901 +1 x902 +1 x180 +1 x903 +1 x904 +1 x349 +1 x905 +1 x906 +1 x221 +1 x10 +1 x907 +1 x908 +1 x193 +1 x909 +1 x910 +1 x911 +1 x912 +1 x913 +1 x474 +1 x914 +1 x915 +1 x244 +1 x916 +1 x917 +1 x176 +1 x918 +1 x919 +1 x920 +1 x921 +1 x75 +1 x922 +1 x923 +1 x924 +1 x925 +1 x926 +1 x927 +1 x928 +1 x929 +1 x930 +1 x931 +1 x932 +1 x343 +1 x933 +1 x327 +1 x934 +1 x935 +1 x936 +1 x937 +1 x90 +1 x938 +1 x939 +1 x940 +1 x941 +1 x643 +1 x942 +1 x943 +1 x147 +1 x944 +1 x945 +1 x946 +1 x947 +1 x948 +1 x949 +1 x950 +1 x165 +1 x951 +1 x952 +1 x953 +1 x954 +1 x955 +1 x956 +1 x249 +1 x957 +1 x401 +1 x958 +1 x959 +1 x132 +1 x304 +1 x960 +1 x961 +1 x962 +1 x963 +1 x964 +1 x371 +1 x965 +1 x966 +1 x967 +1 x968 +1 x969 +1 x970 +1 x971 +1 x972 +1 x973 +1 x974 +1 x470 +1 x975 +1 x976 +1 x590 +1 x977 +1 x978 +1 x473 +1 x523 +1 x579 +1 x979 +1 x97 +1 x61 +1 x980 +1 x981 +1 x982 +1 x478 +1 x983 +1 x984 +1 x985 +1 x986 +1 x987 +1 x988 +1 x155 +1 x989 +1 x59 +1 x990 +1 x991 +1 x992 +1 x993 +1 x345 +1 x201 +1 x994 +1 x995 +1 x481 +1 x996 +1 x215 +1 x151 +1 x482 +1 x407 +1 x484 +1 x483 +1 x997 +1 x998 +1 x485 +1 x488 +1 x999 +1 x1000 +1 x489 +1 x490 +1 x1001 +1 x1002 +1 x1003 +1 x1004 +1 x511 +1 x1005 +1 x1006 +1 x1007 +1 x1008 +1 x1009 +1 x1010 +1 x1011 +1 x1012 +1 x1013 +1 x1014 +1 x1015 +1 x1016 +1 x1017 +1 x1018 +1 x1019 +1 x1020 +1 x1021 +1 x136 +1 x1022 +1 x216 +1 x1023 +1 x1024 +1 x1025 +1 x1026 +1 x1027 +1 x384 +1 x325 +1 x1028 +1 x657 +1 x1029 +1 x1030 +1 x368 +1 x250 +1 x1031 +1 x520 +1 x1032 +1 x266 +1 x1033 +1 x1034 +1 x1035 +1 x1036 +1 x1037 +1 x466 +1 x149 +1 x1038 +1 x1039 +1 x1040 +1 x1041 +1 x258 +1 x1042 +1 x1043 +1 x1044 +1 x1045 +1 x1046 +1 x1047 +1 x1048 +1 x1049 +1 x152 +1 x1050 +1 x1051 +1 x305 +1 x1052 +1 x1053 +1 x1054 +1 x1055 +1 x1056 +1 x1057 +1 x1058 +1 x1059 +1 x553 +1 x1060 +1 x1061 +1 x224 +1 x1062 +1 x1063 +1 x1064 +1 x1065 +1 x1066 +1 x1067 +1 x1068 +1 x195 +1 x259 +1 x399 +1 x86 +1 x1069 +1 x1070 +1 x494 +1 x1071 +1 x84 +1 x1072 +1 x140 +1 x256 +1 x1073 +1 x1074 +1 x146 +1 x1075 +1 x1076 +1 x1077 +1 x1078 +1 x1079 +1 x1080 +1 x628 +1 x1081 +1 x1082 +1 x1083 +1 x562 +1 x1084 +1 x239 +1 x458 +1 x1085 +1 x1086 +1 x241 +1 x462 +1 x1087 +1 x1088 +1 x1089 +1 x78 +1 x1090 +1 x1091 +1 x1092 +1 x1093 +1 x1094 +1 x1095 +1 x1096 +1 x469 +1 x631 +1 x1097 +1 x12 +1 x1098 +1 x1099 +1 x81 +1 x1100 +1 x1101 +1 x1102 +1 x1103 +1 x1104 +1 x406 +1 x1105 +1 x1106 +1 x1107 +1 x169 +1 x1108 +1 x476 +1 x1109 +1 x1110 +1 x1111 +1 x1112 +1 x49 +1 x1113 +1 x150 +1 x1114 +1 x1115 +1 x1116 +1 x1117 +1 x1118 +1 x28 +1 x1119 +1 x1120 +1 x137 +1 x409 +1 x1121 +1 x1122 +1 x99 +1 x1123 +1 x145 +1 x1124 +1 x1125 +1 x1126 +1 x1127 +1 x1128 +1 x11 +1 x373 +1 x1129 +1 x308 +1 x358 +1 x1130 +1 x1131 +1 x1132 +1 x600 +1 x1133 +1 x424 +1 x1134 +1 x1135 +1 x1136 +1 x1137 +1 x561 +1 x1138 +1 x1139 +1 x603 +1 x1140 +1 x456 +1 x1141 +1 x1142 +1 x1143 +1 x1144 +1 x1145 +1 x1146 +1 x425 +1 x1147 +1 x115 +1 x1148 +1 x1149 +1 x1150 +1 x1151 +1 x1152 +1 x23 +1 x1153 +1 x76 +1 x1154 +1 x1155 +1 x300 +1 x1156 +1 x1157 +1 x1158 +1 x1159 +1 x1160 +1 x1161 +1 x1162 +1 x1163 +1 x1164 +1 x1165 +1 x575 +1 x1166 +1 x583 +1 x1167 +1 x1168 +1 x200 +1 x71 +1 x1169 +1 x1170 +1 x322 +1 x1171 +1 x1172 +1 x1173 +1 x397 +1 x480 +1 x1174 +1 x1175 +1 x1176 +1 x576 +1 x209 +1 x1177 +1 x403 +1 x1178 +1 x1179 +1 x416 +1 x1180 +1 x13 +1 x1181 +1 x1182 +1 x1183 +1 x1184 +1 x1185 +1 x1186 +1 x1187 +1 x1188 +1 x1189 +1 x310 +1 x1190 +1 x1191 +1 x1192 +1 x524 +1 x1193 +1 x1194 +1 x202 +1 x1195 +1 x102 +1 x1196 +1 x1197 +1 x452 +1 x1198 +1 x386 +1 x1199 +1 x1200 +1 x1201 +1 x1202 +1 x457 +1 x1203 +1 x79 +1 x1204 +1 x1205 +1 x1206 +1 x1207 +1 x1208 +1 x1209 +1 x1210 +1 x160 +1 x527 +1 x1211 +1 x1212 +1 x1213 +1 x1214 +1 x1215 +1 x463 +1 x1216 +1 x1217 +1 x1218 +1 x7 +1 x1219 +1 x1220 +1 x1221 +1 x642 +1 x1222 +1 x1223 +1 x1224 +1 x1225 +1 x1226 +1 x605 +1 x1227 +1 x301 +1 x1228 +1 x449 +1 x1229 +1 x353 +1 x396 +1 x1230 +1 x174 +1 x98 +1 x1231 +1 x1232 +1 x1233 +1 x1234 +1 x1235 +1 x479 +1 x598 +1 x1236 +1 x1237 +1 x63 +1 x1238 +1 x1239 +1 x1240 +1 x1241 +1 x1242 +1 x1243 +1 x1244 +1 x1245 +1 x1246 +1 x170 +1 x1247 +1 x1248 +1 x1249 +1 x317 +1 x226 +1 x1250 +1 x1251 +1 x1252 +1 x37 +1 x1253 +1 x1254 +1 x1255 +1 x1256 +1 x601 +1 x1257 +1 x142 +1 x446 +1 x1258 +1 x1259 +1 x1260 +1 x1261 +1 x1262 +1 x1263 +1 x182 +1 x1264 +1 x1265 +1 x1266 +1 x1267 +1 x1268 +1 x1269 +1 x139 +1 x1270 +1 x1271 +1 x133 +1 x1272 +1 x1273 +1 x1274 +1 x1275 +1 x1276 +1 x1277 +1 x1278 +1 x1279 +1 x1280 +1 x1281 +1 x1282 +1 x1283 +1 x1284 +1 x1285 +1 x32 +1 x1286 +1 x1287 +1 x1288 +1 x1289 +1 x275 +1 x1290 +1 x1291 +1 x1292 +1 x1293 +1 x1294 +1 x1295 +1 x1296 +1 x1297 +1 x131 +1 x1298 +1 x262 +1 x1299 +1 x1300 +1 x503 +1 x1301 +1 x1302 +1 x629 +1 x475 +1 x1303 +1 x1304 +1 x1305 +1 x1306 +1 x1307 +1 x1308 +1 x1309 +1 x1310 +1 x319 +1 x1311 +1 x1312 +1 x1313 +1 x96 +1 x1314 +1 x94 +1 x1315 +1 x1316 +1 x1317 +1 x1318 +1 x1319 +1 x1320 +1 x1321 +1 x1322 +1 x1323 +1 x431 +1 x1324 +1 x1325 +1 x1326 +1 x1327 +1 x218 +1 x1328 +1 x1329 +1 x1330 +1 x1331 +1 x1332 +1 x27 +1 x1333 +1 x1334 +1 x398 +1 x1335 +1 x321 +1 x1336 +1 x1337 +1 x1338 +1 x1339 +1 x316 +1 x1340 +1 x1341 +1 x1342 +1 x1343 +1 x1344 +1 x1345 +1 x1346 +1 x1347 +1 x459 +1 x135 +1 x1348 +1 x1349 +1 x1350 +1 x277 +1 x1351 +1 x1352 +1 x1353 +1 x1354 +1 x1355 +1 x1356 +1 x1357 +1 x196 +1 x1358 +1 x52 +1 x1359 +1 x1360 +1 x1361 +1 x92 +1 x1362 +1 x1363 +1 x1364 +1 x1365 +1 x1366 +1 x468 +1 x448 +1 x1367 +1 x619 +1 x471 +1 x318 +1 x1368 +1 x254 +1 x265 +1 x242 +1 x1369 +1 x20 +1 x1370 +1 x1371 +1 x1372 +1 x1373 +1 x1374 +1 x1375 +1 x1376 +1 x1377 +1 x1378 +1 x1379 +1 x1380 +1 x1381 +1 x1382 +1 x1383 +1 x299 +1 x45 +1 x1384 +1 x1385 +1 x1386 +1 x1387 +1 x491 +1 x25 +1 x493 +1 x1388 +1 x1389 +1 x1390 +1 x369 +1 x1391 +1 x1392 +1 x19 +1 x1393 +1 x1394 +1 x1395 +1 x589 +1 x1396 +1 x400 +1 x1397 +1 x323 +1 x1398 +1 x8 +1 x1399 +1 x1400 +1 x1401 +1 x1402 +1 x404 +1 x1403 +1 x1404 +1 x1405 +1 x1406 +1 x1407 +1 x1408 +1 x1409 +1 x1410 +1 x1411 +1 x6 +1 x1412 +1 x1413 +1 x144 +1 x1414 +1 x1415 +1 x1416 +1 x1417 +1 x1418 +1 x302 +1 x1419 +1 x1420 +1 x1421 +1 x1422 +1 x1423 +1 x1424 +1 x1425 +1 x1426 +1 x1427 +1 x1428 +1 x1429 +1 x243 +1 x1430 +1 x1431 +1 x1432 +1 x1433 +1 x1434 +1 x1435 +1 x1436 +1 x1437 +1 x113 +1 x1438 +1 x1439 +1 x1440 +1 x1441 +1 x199 +1 x1442 +1 x1443 +1 x1444 +1 x1445 +1 x1446 +1 x1447 +1 x1448 +1 x1449 +1 x1450 +1 x257 +1 x255 +1 x1451 +1 x1452 +1 x1453 +1 x1454 +1 x1455 +1 x1456 +1 x1457 +1 x320 +1 x1458 +1 x154 +1 x1459 +1 x1460 +1 x1461 +1 x1462 +1 x134 +1 x497 +1 x181 +1 x1463 +1 x148 +1 x54 +1 x1464 +1 x1465 +1 x1466 +1 x1467 +1 x1468 +1 x453 +1 x1469 +1 x1470 +1 x1471 +1 x1472 +1 x1473 +1 x1474 +1 x1475 +1 x1476 +1 x1477 +1 x522 +1 x1478 +1 x1479 +1 x1480 +1 x1481 +1 x1482 +1 x1483 +1 x1484 +1 x1485 +1 x335 +1 x1486 +1 x1487 +1 x1488 +1 x1489 +1 x240 +1 x1490 +1 x276 +1 x465 +1 x1491 +1 x1492 +1 x1493 +1 x1494 +1 x1495 +1 x1496 +1 x1497 +1 x1498 +1 x329 +1 x1499 +1 x93 +1 x130 +1 x261 +1 x630 +1 x1500 +1 x1501 +1 x1502 +1 x1503 +1 x31 +1 x1504 +1 x1505 +1 x1506 +1 x1507 +1 x1508 +1 x1509 +1 x141 +1 x1510 +1 x1511 +1 x1512 +1 x1513 +1 x1514 +1 x225 +1 x1515 +1 x1516 +1 x205 +1 x1517 +1 x1518 +1 x1519 +1 x1520 +1 x1521 +1 x496 +1 x1522 +1 x387 +1 x1523 +1 x1524 +1 x1525 +1 x1526 +1 x1527 +1 x1528 +1 x1529 +1 x1530 +1 x1531 +1 x455 +1 x1532 +1 x577 +1 x1533 +1 x1534 +1 x1535 +1 x1536 +1 x445 +1 x1537 +1 x1538 +1 x1539 +1 x1540 +1 x618 +1 x1541 +1 x1542 +1 x1543 +1 x1544 +1 x1545 +1 x1546 +1 x414 +1 x1547 +1 x1548 +1 x1549 +1 x1550 +1 x1551 +1 x515 +1 x405 +1 x1552 +1 x1553 +1 x1554 +1 x1555 +1 x1556 +1 x1557 +1 x1558 +1 x336 +1 x385 +1 x39 +1 x214 +1 x1559 +1 x1560 +1 x1561 +1 x1562 +1 x526 +1 x1563 +1 x1564 +1 x620 +1 x1565 +1 x1566 +1 x1567 +1 x1568 +1 x1569 +1 x1570 +1 x1571 +1 x1572 +1 x1573 +1 x504 +1 x1574 +1 x1575 +1 x1576 +1 x1577 +1 x1578 +1 x1579 +1 x1580 +1 x487 +1 x1581 +1 x1582 +1 x639 +1 x1583 +1 x1584 +1 x1585 +1 x1586 +1 x1587 +1 x1588 +1 x1589 +1 x1590 +1 x1591 +1 x1592 +1 x1593 +1 x1594 +1 x637 +1 x1595 +1 x1596 >= 0;
* javax.xml.soap 1.2.0.v200806030421 requires either org.eclipse.osgi 3.4.0.v20080605-1900
-1 x599 +1 x23 >= 0;
@@ -12977,7 +12955,7 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
-1 x676 +1 x23 >= 0;
* toolingorg.eclipse.equinox.p2.reconciler.dropins 1.0.0.v20080611 requires either org.eclipse.equinox.p2.reconciler.dropins 1.0.0.v20080611
-1 x2961 +1 x748 >= 0;
-* toolingorg.eclipse.equinox.p2.reconciler.dropins 1.0.0.v20080611 requires either org.python.pydev.core 0.9.7 org.eclipse.m2m.qvt.oml.trace.edit 1.0.0.v20080611-1330 org.eclipse.emf.codegen.ecore 2.4.0.v200806091234 org.eclipse.uml2.common.edit 1.4.0.v200805131030 org.eclipse.core.runtime 3.4.0.v20080512 org.python.pydev.core 1.3.9 javax.xml.soap 1.2.0.v200806030421 org.eclipse.gmf.runtime.common.ui.action.ide 1.1.0.v20080425-1959 org.eclipse.emf.cdo.edit 1.0.0.v200806180411 org.eclipse.ecf.provider.msn 1.2.0.v20080623-0046 org.eclipse.equinox.frameworkadmin.equinox 1.0.0.v20080529-1225 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.1 org.eclipse.equinox.http.servletbridge 1.0.0.v20080427-0830 org.python.pydev 0.9.5 org.python.pydev.parser 1.2.3 org.eclipse.emf.example.installer 1.0.0.v200806091234 com.instantiations.assist.eclipse 5.5.0 org.eclipse.wst.common.environment 1.0.201.v200805140020 org.eclipse.zest.source 1.0.0.v20080115-53-8xB4CE899O274A org.eclipse.emf.ant 2.4.0.v200806091234 com.instantiations.eclipse.mail 5.5.1 org.python.pydev.parser 1.3.1 org.eclipse.birt.chart.engine 2.3.0.v20080606 org.eclipse.core.resources 3.4.0.v20080604-1400 org.eclipse.birt.report.engine.emitter.postscript 2.3.0.v20080610 org.python.pydev.jython 1.1.0 org.eclipse.ui.workbench.compatibility 3.2.0.I20080509-2000 com.nordea.cd.dev.plugin.builderruntime 1.0.0 org.eclipse.m2m.atl.adt.editor 2.0.0.v200806101117 org.eclipse.equinox.p2.director.app 1.0.0.v20080604 org.eclipse.mylyn.tasks.core 3.0.0.v20080619-1900 org.python.pydev.ast 1.0.4 org.eclipse.m2m.atl.compilers.atl2006 2.0.0.v200806101117 org.eclipse.datatools.enablement.sybase.asa.ui 1.0.1.v200805310538 org.eclipse.emf.mapping.ecore2xml.ui 2.4.0.v200806091234 org.eclipse.wst.dtd.ui 1.0.301.v200808072012 org.eclipse.birt.chart.engine.extension 2.3.0.v20080611 org.eclipse.jface.databinding 1.2.0.I20080515-2000a org.eclipse.birt.chart.reportitem.ui 2.3.0.v20080610 org.eclipse.datatools.enablement.hsqldb.ui 1.0.0.v200805152355 org.eclipse.mylyn.ide.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.security.ui 1.0.0.v20080603-1810 org.eclipse.wst.common.emfworkbench.integration 1.1.201.v200808071700 org.eclipse.gmf.validate 1.1.0.v20080603-1553 org.eclipse.emf.mapping.ecore2ecore.editor 2.4.0.v200806091234 org.eclipse.ecf.provider.irc 1.3.0.v20080623-0046 org.eclipse.emf.validation.doc 1.2.0.v200805130238 org.python.pydev.ast 1.2.8 org.eclipse.emf.teneo.doc 1.0.0.v200806111928 org.python.pydev.jython 1.3.12 org.eclipse.emf.ecoretools.source 0.8.0.v200806130600 org.eclipse.equinox.p2.updatesite 1.0.0.v20080529-1800 org.eclipse.ecf.presence.bot 1.2.0.v20080623-0046 com.swtdesigner.properties.java5 1.0.0 org.eclipse.platform.doc.isv 3.4.0.v20080613-1330 org.python.pydev.core 1.2.3 org.eclipse.datatools.connectivity.db.generic 1.0.0.v200805152355 org.eclipse.uml2.diagram.clazz 0.8.0.v200806112132 org.eclipse.birt.report.designer.ui.views 2.3.0.v20080606 org.eclipse.mylyn.monitor.core 3.0.2.v20080918-1100-e3x com.instantiations.eclipse.debug 5.3.2.200806270030 org.eclipse.gmf.runtime.common.ui.action 1.1.0.v20080425-1959 org.eclipse.equinox.useradmin 1.1.0.v20080508-1815 org.eclipse.mylyn.commons.ui 3.0.2.v20080918-1100-e3x org.eclipse.equinox.cm 1.0.0.v20080509-1800 org.eclipse.uml2.diagram.component 0.8.0.v200806112132 org.eclipse.swt.layout.grouplayout 1.1.0 org.python.pydev 1.2.4 javax.servlet 2.4.0.v200806031604 org.eclipse.uml2.examples.uml.ui 2.2.0.v200805131030 org.python.pydev.ast 1.3.10 org.eclipse.birt.report.designer.ui.ide 2.3.0.v20080606 org.python.pydev.parser 1.3.18 com.swtdesigner.layout.group 6.7.0.200806270151 org.eclipse.m2m.qvt.oml.runtime.source 1.0.0.v20080611-1330-5--AgI99m9cDD4DNN9 org.eclipse.mylyn.tasks.ui 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.3.13 org.eclipse.emf.teneo.jpox.eclipse 1.0.0.v200806111928 org.eclipse.equinox.transforms.xslt 1.0.0.v20080610 org.python.pydev.core 1.0.7 org.eclipse.datatools.enablement.ibm.db2.zseries.ui 1.0.0.v200805160737 org.eclipse.mylyn.resources.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.enablement.oda.ws 1.1.0.v200805261930 org.eclipse.equinox.frameworkadmin 1.0.0.v20080430-1750 org.eclipse.birt.chart.device.extension 2.3.0.v20080424 org.eclipse.net4j.jvm 1.0.0.v200806180305 org.eclipse.emf.cdo.migrator 1.0.0.v200806180411 org.python.pydev.jython 1.3.1 org.eclipse.m2m.qvt.oml.cst.parser 1.0.0.v20080611-1330 com.xored.composer.ui 1.3.4.200809042225 org.eclipse.datatools.enablement.sybase.ui 1.0.0.v200806041138 org.eclipse.ecf.remoteservice.ui 2.0.0.v20080623-0046 org.eclipse.net4j.db.mysql 1.0.0.v200806180305 org.eclipse.update.scheduler 3.2.100.v20080404 org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide 1.1.0.v20080425-1959 org.eclipse.wst.dtdeditor.doc.user 1.0.400.v200805150028 org.eclipse.wst.xmleditor.doc.user 1.0.401.v200808071323 org.eclipse.gmf.runtime.common.ui.services.dnd 1.1.0.v20080425-1959 org.eclipse.uml2.common 1.4.0.v200805131030 org.apache.jasper 5.5.17.v200806031609 org.python.pydev 1.0.8 org.eclipse.datatools.doc.user 1.6.0.20080606124249 org.objectweb.asm 3.1.0.v200803061910 org.eclipse.emf.cdo.doc 1.0.0.v200806180411 org.python.pydev.core 1.3.17 org.eclipse.core.resources.compatibility 3.4.0.v20080604-1400 com.instantiations.eclipse.startup 5.3.2.200806270030 org.eclipse.datatools.connectivity.apache.derby.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.graphdef.codegen 2.0.100.v20080528-1052 org.eclipse.emf.common 2.4.0.v200806091234 org.eclipse.wst.xml.ui.infopop 1.0.300.v200805140200 org.python.pydev.core 1.3.0 org.eclipse.equinox.p2.touchpoint.natives 1.0.0.v20080505-1850 org.eclipse.ant.core 3.2.0.v20080529 org.eclipse.ui.workbench 3.4.0.I20080606-1300 org.eclipse.ecf.provider.xmpp.ui 2.0.0.v20080623-0046 org.w3c.sac 1.3.0.v20070710 org.python.pydev.jython 1.2.3 org.eclipse.mylyn.context.ui 3.0.0.v20080619-1900 org.eclipse.ecf.doc 1.3.0.v20080623-0046 org.eclipse.ecf.provider.bittorrent.ui 0.2.0.v20080623-0046 com.xored.swt.composer 1.3.4.200809042225 org.python.pydev.parser 1.0.4 org.eclipse.help.webapp 3.3.100.v20080528 org.eclipse.uml2.diagram.deploy 0.8.0.v200806112132 org.eclipse.ecf.provider.irc.ui 1.3.0.v20080623-0046 org.python.pydev 1.3.18 org.eclipse.m2m.atl.source 2.0.0.v200806101117 org.eclipse.mylyn.tasks.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.identity 2.0.0.v20080611-1715 org.eclipse.ocl.ecore 1.2.0.v200805130238 org.eclipse.core.expressions 3.4.0.v20080603-2000 org.eclipse.core.runtime.compatibility.registry 3.2.200.v20080610 org.eclipse.tptp.platform.la.core 4.3.200.v200805231116 org.eclipse.m2m.atl.service.core 2.0.0.v200806101117 org.apache.commons.logging 1.0.4.v20080605-1930 org.eclipse.platform.doc.user 3.4.0.v20080612-1340 com.windowtester.runtime.junit4 3.5.0.200806270034 org.python.pydev.parser 1.2.8 org.eclipse.uml2.examples.source 2.2.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.providers 1.1.0.v20080503-1740 org.python.pydev.jython 1.3.20 org.python.pydev.jython 1.0.7 org.eclipse.m2m.qvt.oml.common 1.0.0.v20080611-1330 org.eclipse.wst.sse.ui 1.1.0.v200806041847 org.eclipse.core.resources.win32.x86 3.4.0.v20071204 org.eclipse.swt.widgets.baseline 1.1.0 com.xored.swt.composer.win32.win32.x86 1.3.4.200809042225 org.eclipse.datatools.enablement.mysql.ui 1.0.0.v200805152355 org.eclipse.m2m.atl.ocl.core 2.0.0.v200806101117 org.eclipse.emf.codegen.ecore.ui 2.4.0.v200806091234 org.eclipse.equinox.http.servlet 1.0.100.v20080427-0830 org.python.pydev.ast 1.3.2 org.python.pydev 1.3.6 org.eclipse.birt.report.viewer 2.3.0.v20080606 org.apache.batik.extension 1.6.0.v200805290154 org.eclipse.uml2.diagram.statemachine 0.8.0.v200806112132 org.python.pydev.parser 1.3.10 org.eclipse.equinox.p2.ui.admin.rcp 1.0.0.v20080604 org.eclipse.emf.compare.match 0.8.0.v200806180301 org.eclipse.datatools.enablement.oracle.ui 1.0.0.v200805240040 org.python.pydev 0.7.1 com.lowagie.itext 1.5.4.v20080228 org.eclipse.birt.report.designer.ui.preview.web 2.3.0.v200806102 org.eclipse.birt.report.designer.ui.samples.ide 2.3.0.v20080606 org.eclipse.xsd.ecore.converter 2.4.0.v200806091234 org.eclipse.jdt.compiler.tool 1.0.100.v_874 org.eclipse.equinox.registry 3.4.0.v20080516-0950 org.eclipse.wst.dtd.ui.infopop 1.0.300.v200805140200 org.python.pydev.ast 0.9.5 org.eclipse.ui.workbench.texteditor 3.4.0.v20080603-2000 org.eclipse.cvs 1.0.100.v20080603 org.eclipse.uml2.search.ui 0.7.0.v200806130939 org.eclipse.gmf.common 1.1.1.v20080610-1132 org.eclipse.uml2.uml.editor 2.2.0.v200805131030 org.eclipse.m2m.atl.engine 2.0.0.v200806101117 org.eclipse.net4j.http.common 1.0.0.v200806180305 org.eclipse.ecf.presence.ui 1.2.0.v20080623-0046 org.python.pydev.parser 1.2.2 org.eclipse.emf.cdo.tests.model3.edit 1.0.0.v200806180411 org.eclipse.emf.cdo.tests.model1 1.0.0.v200806180411 org.eclipse.m2m.atl.engine.vm 2.0.0.v200806101117 com.instantiations.eclipse.mail 5.5.0 org.eclipse.emf.ocl.source 1.1.100.v200805130238-108Y7w311916241349 com.windowtester.swt.runtime.legacy 3.5.1.200809042232 org.eclipse.uml2tools 0.8.0.v200806112132 org.eclipse.emf.search.genmodel.ui 0.7.0.v200806130939 org.eclipse.mylyn.jira.core 3.0.2.v20080918-1100-e3x org.eclipse.uml2.uml.ecore.importer 2.2.0.v200805131030 org.eclipse.emf.transaction.doc 1.2.0.v200805130238 org.eclipse.tptp.platform.logging.events 4.3.200.v200805310100 org.python.pydev.core 1.3.8 org.eclipse.xsd.ecore.importer 2.4.0.v200806091234 org.eclipse.emf.teneo.source 1.0.0.v200806111928-78--DUUEFDEz0MMNLVD org.eclipse.uml2 2.1.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.render 1.1.0.v20080603-1553 com.windowtester.swt.runtime.os.win32 3.5.0.200806270034 org.eclipse.rcp 3.4.0.v20080507 org.eclipse.xsd.mapping 2.4.0.v200806091234 org.eclipse.emf.workspace.doc 1.2.0.v200805130238 org.eclipse.pde.api.tools 1.0.0.v20080529-1150 org.eclipse.emf.mapping.ecore2xml 2.4.0.v200806091234 org.eclipse.swt.win32.win32.x86 3.4.0.v3448f org.apache.derby 10.1.2.1_v200803061811 org.eclipse.m2m.qvt.oml.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.python.pydev.parser 1.3.0 org.eclipse.ecf.protocol.msn 1.2.0.v20080623-0046 com.instantiations.eclipse.ui 5.3.2.200809042027 org.eclipse.jet.core 1.1.0.v20080415 org.eclipse.datatools.enablement.sybase.ase.models 1.0.1.v200805152355 com.nordea.cd.dev.plugin.builderruntime 1.0.1 com.instantiations.assist.eclipse.core 5.5.0 org.python.pydev.ast 1.0.5 org.eclipse.ecf.filetransfer 2.0.0.v20080611-1715 org.python.pydev.parser 0.9.5 org.python.pydev.core 1.2.2 org.eclipse.emf.transaction.ui 1.2.0.v200805130238 org.eclipse.gmf.runtime.gef.ui 1.1.0.v20080503-1740 org.eclipse.wst.xml.core 1.1.301.v200808072008 org.eclipse.uml2.diagram.clazz.search 0.7.0.v200806130939 org.sat4j.core 2.0.0.v20080602 org.eclipse.datatools.connectivity.ui 1.1.0.v200806040132 org.eclipse.birt.report.designer.ui.editors 2.3.0.v20080610a org.eclipse.equinox.p2.reconciler.dropins 1.0.0.v20080611 org.eclipse.wst.common.project.facet.core 1.3.1.v200807031821 org.python.pydev.jython 1.3.11 org.eclipse.datatools.enablement.postgresql 1.0.1.v200805152355 org.eclipse.ltk.ui.refactoring 3.4.0.v20080605-1800 org.eclipse.datatools.enablement.sybase.ase 1.0.1.v200806040735 org.python.pydev.ast 1.2.9 org.eclipse.datatools.connectivity.oda 3.1.2.v200805152355 org.eclipse.wst.common.emf 1.1.201.v200808071700 org.apache.batik.dom.svg 1.6.0.v200805290154 org.eclipse.birt.chart 2.3.0.v20080304 org.python.pydev.jython 1.2.9 org.python.pydev.ast 1.3.11 org.eclipse.datatools.enablement.mysql.dbdefinition 1.0.1.v200805170742 org.python.pydev.parser 1.3.19 org.python.pydev.core 1.0.6 org.eclipse.uml2.diagram 0.8.0.v200806112132 org.eclipse.jdt.junit4.runtime 1.0.200.v20080603-2000 org.python.pydev.ast 1.3.12 org.eclipse.swt 3.4.0.v3448f org.eclipse.emf.ecoretools.diagram.search 0.7.0.v200806130939 org.eclipse.pde.ui.templates 3.4.0.v20080514-1500 com.instantiations.packager.ui 2.5.1 org.eclipse.emf.cdo.server.db 1.0.0.v200806180411 org.eclipse.datatools.enablement.sybase.asa 1.0.1.v200805310538 org.eclipse.emf.compare 0.8.0.v200806180301 org.eclipse.datatools.enablement.oda.ws.ui 1.1.0.v200805261930 org.eclipse.jdt.launching 3.4.0.v20080529-1300 org.eclipse.mylyn.tasks.ui 3.0.0.v20080619-1900 org.apache.ws.jaxme 0.5.1.v20080530-1550 org.eclipse.mylyn.bugzilla.ui 3.0.0.v20080619-1900 org.apache.commons.el 1.0.0.v200806031608 org.python.pydev 1.2.3 org.w3c.dom.smil 1.0.0.v200806040011 org.eclipse.wst.validation.infopop 1.0.300.v200806041506 org.python.pydev 1.0.7 org.eclipse.net4j.source 1.0.0.v200806180305 org.eclipse.m2m.qvt.oml.ocl 1.0.0.v20080611-1330 org.eclipse.uml2.uml.edit 2.2.0.v200805131030 org.eclipse.emf.search.ui 0.7.0.v200806130939 org.python.pydev.core 1.3.16 org.eclipse.emf.validation.ui 1.2.0.v200805130238 org.eclipse.datatools.enablement.oda.xml 1.1.0.v200805270900 org.eclipse.ltk.core.refactoring 3.4.0.v20080603-2000 org.python.pydev.jython 1.3.2 com.windowtester.swt.codegen 3.5.0.200806270034 org.eclipse.datatools.sqltools.ddlgen.ui 1.0.0.v200805152355 org.apache.xerces 2.9.0.v200805270400 org.eclipse.birt.report.engine.dataextraction 2.3.0.v20080611 org.eclipse.equinox.jmx.vm 1.0.0.v20070515 org.eclipse.birt.report.data.oda.jdbc.ui 2.3.0.v20080606 org.eclipse.equinox.ds 1.0.0.v20080427-0830 org.eclipse.mylyn.bugzilla.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.http.jetty 2.0.0.v20080425 org.eclipse.mylyn.team.ui 3.0.2.v20080918-1100-e3x org.python.pydev.jython 1.2.4 org.eclipse.birt.chart.device.svg 2.3.0.v20080526 org.python.pydev.parser 1.0.5 org.eclipse.ui.presentations.r21 3.2.100.I20080512-2000 org.eclipse.mylyn 3.0.0.v20080619-1900 org.eclipse.m2m.qvt.oml.doc 1.0.0.v20080611-1330 org.eclipse.team.svn.nl1.sources 0.7.1.I20080612-1500 org.eclipse.mylyn.resources.ui 3.0.0.v20080619-1900 org.eclipse.datatools.enablement.ibm.db2.luw 1.0.0.v200805152355 org.python.pydev.core 1.3.1 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.1 org.eclipse.ecf.provider.filetransfer 2.0.0.v20080611-1715 org.eclipse.emf.cdo.tests.mango.edit 1.0.0.v200806180411 org.python.pydev.parser 1.2.9 org.eclipse.m2m.qvt.oml.emf.util 1.0.0.v20080611-1330 org.eclipse.team.cvs.ssh 3.2.100.I20080604 org.python.pydev.jython 1.3.19 org.python.pydev.jython 1.0.8 org.python.pydev.ast 1.2.1 org.eclipse.m2m.qvt.oml.project 1.0.0.v20080611-1330 com.instantiations.assist.eclipse.core.ui 5.5.1 org.eclipse.datatools.enablement.ibm.db2.zseries.dbdefinition 1.0.0.v200805152355 org.eclipse.datatools.enablement.ibm.db2.iseries 1.0.0.v200805152355 com.swtdesigner.fragment.jdt.core 6.7.1.200809050053 org.eclipse.equinox.device 1.0.1.v20080303 org.eclipse.equinox.http.jetty 1.1.0.v20080425 org.eclipse.emf.cdo.tests.model3 1.0.0.v200806180411 org.eclipse.emf.teneo.hibernate.mapper 1.0.0.v200806111928 org.eclipse.compare 3.4.0.I20080604 org.polarion.eclipse.team.svn.connector.javahl 2.0.1.I20080612-1500 org.eclipse.gmf.runtime.diagram.ui.geoshapes 1.1.0.v20080503-1740 org.eclipse.emf.mint.ui 0.7.0.v200806172223 org.eclipse.ui.win32 3.2.100.v20080408-0800 org.eclipse.jet.source 0.9.0.v20080516 org.python.pydev 1.3.17 com.windowtester.runtime.junit4 3.5.1.200809042232 org.eclipse.ecf.examples.remoteservices.server 1.0.100.v20080623-0046 org.eclipse.text 3.4.0.v20080605-1800 org.eclipse.uml2.diagram.common 0.8.0.v200806112132 org.eclipse.datatools.connectivity.sqm.core.ui 1.1.0.v200806070326 org.python.pydev.core 0.9.7.99 org.eclipse.net4j.jms 1.0.0.v200806180305 org.junit4 4.3.1 org.eclipse.epp.usagedata.recording 1.0.0.R200806162215 org.eclipse.buckminster.remote 1.0.0.r09326 org.eclipse.gmf.tooling 2.1.0.v20080425-1959 org.eclipse.emf.cdo.tests.model2 1.0.0.v200806180411 org.eclipse.emf.ecore.sdo.editor 2.4.0.v200806091234 com.instantiations.swt.graph 5.5.0 org.eclipse.uml2.search 0.7.0.v200806130939 org.python.pydev 1.3.5 org.python.pydev.ast 1.3.3 org.eclipse.update.configurator 3.2.200.v20080417 org.eclipse.datatools.enablement.msft.sqlserver 1.0.1.v200805152355 org.python.pydev.parser 1.3.11 org.eclipse.datatools.enablement.sap.maxdb.dbdefinition 1.0.0.v200805152355 com.windowtester.swing.recorder 3.5.0.200806270034 org.eclipse.gmf.runtime.common.ui.printing.win32 1.1.0.v20080612-1355 org.python.pydev.ast 1.3.20 org.eclipse.wst.common.snippets 1.1.200.v200805140415 org.eclipse.mylyn.commons.core 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.tasks.core 3.0.2.v20080918-1100-e3x org.eclipse.jdt.doc.user 3.4.0.v20080612-1340 org.eclipse.birt.chart.ui 2.3.0.v20080522 org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb 2.3.0.v20080606 org.eclipse.uml2.diagram.examples.clazz 0.8.0.v200806112132 org.eclipse.ecf.provider.msn.ui 1.3.0.v20080623-0046 org.python.pydev.parser 1.3.3 org.eclipse.ui.ide.application 1.0.0.I20080603-2000 org.python.pydev.ast 1.0.6 org.eclipse.equinox.jsp.jasper.registry 1.0.0.v20080427-0830 org.eclipse.equinox.p2.engine 1.0.0.v20080522-1735 com.nordea.cd.dev.plugin.builderruntime 1.0.2 com.instantiations.assist.eclipse.core 5.5.1 org.eclipse.m2m.qvt.oml 1.0.0.v20080611-1330 org.eclipse.mylyn.commons.ui 3.0.1.v20080721-2100-e3x org.eclipse.update.core.win32 3.2.100.v20080107 org.eclipse.datatools.sqltools.db.derby 1.0.0.v200805152355 com.instantiations.assist.eclipse.admin 5.5.0 org.eclipse.ecf.telephony.call 1.2.0.v20080623-0046 org.eclipse.mylyn.monitor.core 3.0.0.v20080619-1900 org.eclipse.epp.usagedata.ui 1.0.0.R200806162215 org.eclipse.ui.ide 3.4.0.I20080606-1300 org.eclipse.hyades.lta.sdb 4.5.0.v200806051823 org.eclipse.birt.report.model.adapter.oda 2.3.0.v20080523 org.eclipse.emf.compare.doc 0.8.0.v200806180301 org.eclipse.equinox.servletbridge 1.0.100.v20080427-0830 com.instantiations.common.help 5.3.2.200809042027 org.eclipse.jdt.core 3.4.0.v_874 org.eclipse.equinox.p2.director 1.0.0.v20080604 org.eclipse.gmf.runtime.emf.ui.properties 1.1.0.v20080425-1959 org.eclipse.emf.exporter 2.4.0.v200806091234 org.python.pydev.core 1.3.7 org.eclipse.uml2.diagram.def 0.8.0.v200806112132 org.python.pydev.parser 1.2.1 org.eclipse.wst.command.env.ui 1.1.0.v200805140415 org.eclipse.wst.common.modulecore 1.1.200.v200806091800 org.python.pydev 0.9.7 org.eclipse.gmf.graphdef.edit 2.0.100.v20080610-1132 org.eclipse.birt.report.designer.ui.cubebuilder 2.3.0.v20080606 org.eclipse.m2m.atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.actions 1.1.0.v20080603-1553 com.instantiations.common.core 5.3.2.200806270030 org.eclipse.datatools.enablement.ibm.informix 1.0.0.v200805152355 org.eclipse.net4j.tcp 1.0.0.v200806180305 org.eclipse.wst.common.environment 1.0.202.v200807161459 com.instantiations.common.core 5.3.2.200809042027 org.eclipse.birt.report.data.oda.xml 2.3.0.v20080606 org.eclipse.pde.api.tools.ui 1.0.0.v20080603 org.eclipse.debug.ui 3.4.0.v20080529-1300 org.python.pydev 1.2.2 org.eclipse.team.svn.ui.nl1 0.7.1.I20080612-1500 org.apache.batik.transcoder 1.6.0.v200805290154 org.eclipse.emf.ecore.sdo.edit 2.4.0.v200806091234 org.python.pydev.parser 1.3.16 org.eclipse.wst.command.env.ui 1.1.1.v200807162242 org.eclipse.uml2.diagram.codegen.edit 0.8.0.v200806112132 org.eclipse.datatools.connectivity.db.generic.ui 1.0.1.v200805152355 org.eclipse.mylyn.resources.ui 3.0.2.v20080918-1100-e3x org.python.pydev.ast 1.3.8 org.python.pydev 1.3.0 org.eclipse.net4j.db 1.0.0.v200806180305 org.python.pydev.ast 1.3.15 org.eclipse.uml2.codegen.ecore 1.4.0.v200805201126 org.eclipse.gmf.sdk 1.0.0.v20080425-1959 org.eclipse.equinox.p2.core 1.0.0.v20080530-1237 org.python.pydev.jython 1.3.10 org.eclipse.emf.cdo 1.0.0.v200806180411 org.eclipse.emf.search.genmodel 0.7.0.v200806130939 org.eclipse.ui.navigator 3.3.100.I20080606-1300 org.eclipse.team.svn.mylyn 0.7.1.I20080612-1500 org.python.pydev.core 1.2.5 org.eclipse.tptp.platform.lta.la.core 4.5.0.v200805132041 org.eclipse.wst.sse.core 1.1.301.v200808072008 org.eclipse.tptp.platform.lta.log.views 4.5.0.v200806051823 org.eclipse.mylyn.java.ui 3.0.2.v20080918-1100-e3x org.eclipse.emf.search.codegen 0.7.0.v200806130939 com.instantiations.common.ui 5.3.2.200806270030 org.eclipse.ecf 2.0.0.v20080611-1715 org.eclipse.equinox.p2.ui.sdk 1.0.0.v20080605-1731 org.apache.commons.discovery 0.2.0.v200806030120 org.eclipse.datatools.help 1.5.0.v200805152355 org.python.pydev.parser 0.9.7.99 org.w3c.css.sac 1.3.0.v200805290154 org.eclipse.jet.examples 0.9.0.v20080211 org.eclipse.mylyn.bugzilla.ide 3.0.2.v20080918-1100-e3x org.eclipse.pde.junit.runtime 3.4.0.v20080529-1800 org.eclipse.emf.commonj.sdo 2.4.0.v200806091234 org.python.pydev.jython 1.2.1 com.instantiations.tools 5.3.2.200806270030 com.windowtester.runtime 3.5.1.200809042232 org.eclipse.wst.validation 1.2.0.v200806051402 org.eclipse.ecf.docshare 2.0.0.v20080623-0046 com.instantiations.eclipse.model.jsp 5.5.1 org.eclipse.emf.teneo.hibernate.eclipse 1.0.0.v200806111928 com.jcraft.jsch 0.1.37.v200803061811 org.python.pydev.parser 1.0.6 org.eclipse.emf.converter 2.4.0.v200806091234 org.eclipse.equinox.common 3.4.0.v20080421-2006 org.eclipse.buckminster.ui 1.0.0.r09319 org.eclipse.datatools.sqltools.tablewizard 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.0 org.eclipse.uml2.source 2.2.0.v200805201126 org.eclipse.team.cvs.ui 3.3.100.I20080604 org.python.pydev.jython 1.3.3 org.eclipse.emf.search.ocl 0.7.0.v200806130939 org.eclipse.datatools.enablement.sybase.asa.models 1.0.0.v200805152355 org.eclipse.sdk 3.4.0.v200806172000 org.eclipse.xsd.ecore.exporter 2.4.0.v200806091234 org.apache.commons.codec 1.3.0.v20080530-1600 org.eclipse.equinox.p2.exemplarysetup 1.0.0.v20080427-2136 org.eclipse.equinox.io 1.0.0.v20080218 org.eclipse.wst.common.project.facet.core 1.3.0.v200805140020 org.eclipse.wst.common.ui 1.1.301.v200805140415 org.eclipse.emf.databinding.edit 1.0.0.v200806091234 org.mortbay.jetty.server 6.1.7.v200806031612 org.eclipse.wst.dtd.core 1.1.200.v200805140200 org.python.pydev 1.0.6 org.eclipse.uml2.diagram.activity 0.8.0.v200806112132 org.eclipse.emf.importer.rose 2.4.0.v200806091234 org.eclipse.core.net.win32.x86 1.0.0.I20080521 javax.activation 1.1.0.v200804101140 org.python.pydev.core 1.3.15 org.python.pydev.parser 1.3.8 com.instantiations.assist.eclipse.coverage.ui 5.5.1.200809042337 org.eclipse.emf.ecoretools.filters 0.8.0.v200806130600 org.python.pydev.ast 1.3.0 org.eclipse.birt.report.data.oda.xml.ui 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase 1.0.1.v200805310538 org.python.pydev 1.3.8 org.eclipse.equinox.ip 1.0.0.v20080218 org.eclipse.datatools.connectivity.console.profile 1.0.0.v200805231345 org.eclipse.ecf.sharedobject 1.3.0.v20080623-0046 org.eclipse.debug.core 3.4.0.v20080612 org.eclipse.wst.xmleditor.doc.user 1.0.400.v200805211530 org.eclipse.datatools.enablement.sap.maxdb 1.0.0.v200805152355 org.python.pydev.ast 0.9.7 com.windowtester.swt.runtime.legacy 3.5.0.200806270034 org.eclipse.equinox.simpleconfigurator.manipulator 1.0.0.v20080427-2136 org.eclipse.equinox.p2.touchpoint.eclipse 1.0.0.v20080529-1225 com.instantiations.swt.graph 5.5.1 org.eclipse.gmf.doc 1.2.0.v20080516-1143 org.python.pydev 1.3.20 com.windowtester.swing.runtime 3.5.1.200809042232 org.eclipse.datatools.enablement.ibm.db2.iseries.ui 1.0.0.v200805160737 org.eclipse.datatools.connectivity.oda.profile 3.0.6.v200805152355 org.eclipse.mylyn.pde.ui 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.commons.ui 3.0.0.v20080619-1900 org.eclipse.emf.workspace.source 1.2.0.v200805130238-23-8s733I3C59379I org.eclipse.core.boot 3.1.100.v20080218 org.python.pydev.ast 1.2.2 org.eclipse.birt.doc 2.3.0.v20080617a com.instantiations.assist.eclipse.core.ui 5.5.0 org.python.pydev.jython 1.3.18 org.python.pydev.jython 1.0.5 org.eclipse.emf.validation 1.2.0.v200805170232 org.eclipse.equinox.jmx.client.rmi 1.0.0 org.eclipse.emf.mapping.ecore 2.4.0.v200806091234 com.instantiations.assist.eclipse.coverage 5.5.1.200809042337 com.instantiations.helpeditor.ui 1.3.4.200806270212 org.eclipse.emf.edit.ui 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editor.script 2.3.0.v200806102 org.eclipse.gmf.ecore.editor 2.0.100.v20080610-1132 com.windowtester.swt.recorder 3.5.1.200809042232 org.eclipse.uml2.diagram.source 0.8.0.v200806112132 org.eclipse.equinox.util 1.0.0.v20080414 org.eclipse.ecf.examples.source 2.0.0.v20080623-0046 org.eclipse.emf.mapping.xsd2ecore.editor 2.4.0.v200806091234 org.eclipse.pde.p2.ui 1.0.0.v20080604-2000 org.eclipse.birt.resources 2.3.0.v20080313 org.eclipse.emf.query.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.emf.ecore.change.edit 2.4.0.v200806091234 org.eclipse.datatools.sqltools.editor.core 1.0.0.v200805152355 org.polarion.eclipse.team.svn.connector.svnkit 2.0.1.I20080612-1500 org.eclipse.buckminster.download 1.1.0.r09319 com.swtdesigner 6.7.0.200806270151 org.python.pydev.parser 1.3.2 org.eclipse.jdt.compiler.apt 1.0.100.v20080513-1235 org.python.pydev.ast 1.0.7 com.windowtester.swt.gef.codegen 3.5.0.200806270034 org.eclipse.emf.ecore 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editors.schematic 2.3.0.v200806102 org.eclipse.pde.build 3.4.0.v20080604 com.instantiations.assist.eclipse 5.5.1 org.eclipse.birt.report.designer.ui.editor.xml.wtp 2.3.0.v200806102 org.eclipse.emf.cdo.tests.model1.edit 1.0.0.v200806180411 org.python.pydev 0.9.8 javax.xml 1.3.4.v200806030440 org.python.pydev 0.4.2 org.polarion.eclipse.team.svn.connector.javahl.win32 2.0.1.I20080612-1500 org.apache.ws.commons.util 1.0.0.v20080530-1550 org.apache.batik.bridge 1.6.0.v200805290154 org.eclipse.emf.search 0.7.0.v200806130939 org.eclipse.datatools.sqltools.parsers.sql.xml.query 1.0.0.v200805152355 org.eclipse.team.core 3.4.0.I20080605 org.eclipse.tptp.platform.execution 4.4.100.v200806050100 org.eclipse.uml2.diagram.parser 0.8.0.v200806112132 org.eclipse.birt.report.item.crosstab.core 2.3.0.v20080606 org.python.pydev.core 0.9.8 org.eclipse.uml2.search.common.ui 0.7.0.v200806130939 org.eclipse.mylyn.ide.ui 3.0.0.v20080619-1900 org.eclipse.xsd.cheatsheets 2.3.0.v200806091234 org.eclipse.wst.xsd.core 1.1.300.v200805282012 org.eclipse.net4j.http 1.0.0.v200806180305 org.python.pydev.core 1.3.6 org.eclipse.ui.externaltools 3.2.0.v20080514-1542 org.eclipse.birt.report.engine.emitter.prototype.excel 2.3.0.v20080606 org.python.pydev.parser 1.3.17 com.instantiations.eclipse.util 5.3.2.200806270030 org.eclipse.ui.editors 3.4.0.v20080603-2000 org.eclipse.buckminster.slf4j 1.0.0 org.python.pydev.ast 1.3.9 org.eclipse.gef.source 3.4.0.v20080115-677-8082A5696H274A org.python.pydev.core 1.0.8 org.python.pydev.ast 1.3.14 org.eclipse.team.ui 3.4.0.I20080604 org.eclipse.emf.query.ocl.source 1.2.0.v200805130238-11-7w311916241349 com.windowtester.swt.runtime 3.5.0.200806270034 org.eclipse.osgi.jmx 1.0.0.v20080610-1530 org.eclipse.net4j.examples.source 1.0.0.v200806180305 org.eclipse.tptp.monitoring.lta.symptom.doc.user 4.5.0.v200805132041 org.eclipse.equinox.p2.updatechecker 1.0.0.v20080427-2136 org.eclipse.ui.views 3.3.0.I20080509-2000 org.eclipse.emf.search.ocl.ui 0.7.0.v200806130939 javax.mail 1.4.0.v200804091730 ch.ethz.iks.slp 1.0.0.RC4_v200806091030 org.eclipse.core.resources.jmx 1.0.0.v20070510 javax.wsdl 1.4.0.v200806030407 org.eclipse.wst.xml.ui 1.0.401.v200807240448 org.python.pydev 1.2.1 org.eclipse.birt.chart.ui.extension 2.3.0.v20080610 org.python.pydev.core 0.9.8.3 org.python.pydev.parser 0.9.7 org.eclipse.jem.util 2.0.100.v200805140020 org.eclipse.tptp.monitoring.lta.la.core 4.5.0.v200805270100 org.python.pydev.core 0.9.8.2 org.eclipse.jdt.junit.runtime 3.3.0.v20080603-2000 org.python.pydev.core 1.2.4 org.python.pydev.core 0.9.8.1 org.eclipse.ecf.discovery 2.0.0.v20080623-0046 org.apache.xml.serializer 2.7.1.v200806030322 org.python.pydev.core 0.9.8.7 org.python.pydev.core 0.9.8.6 org.eclipse.gmf.runtime.draw2d.ui.render.awt 1.1.0.v20080603-1553 com.windowtester.eclipse.help 3.5.1.200809042232 org.python.pydev.core 0.9.8.5 org.python.pydev.core 0.9.8.4 org.python.pydev 0.9.8.7 org.eclipse.birt.report.engine.emitter.ppt 2.3.0.v20080606 org.apache.commons.httpclient 3.1.0.v20080605-1935 com.windowtester.runtime.legacy 3.5.0.200806270034 org.eclipse.datatools.enablement.oda.xml.ui 1.1.0.v200805270900 org.python.pydev 0.9.8.3 org.eclipse.mylyn.compatibility 3.0.2.v20080918-1100-e3x org.python.pydev 0.9.8.4 org.python.pydev 0.9.8.5 org.eclipse.wst.common.project.facet.ui 1.3.0.v200805281731 org.eclipse.gmf.tooldef 2.0.0.v20080417-1610 org.python.pydev 0.9.8.6 org.eclipse.core.commands 3.4.0.I20080509-2000 org.python.pydev.jython 1.3.9 org.eclipse.datatools.modelbase.sql.edit 1.0.0.v200805152355 org.python.pydev 0.9.8.2 org.python.pydev 0.9.8.1 org.eclipse.emf.cdo.server.hibernate.libraries 1.0.0.v200806180411 org.eclipse.equinox.p2.ui.admin 1.0.0.v20080522-1735 org.eclipse.wst.common.core 1.1.201.v200806010600 org.eclipse.emf.compare.diff.edit 0.8.0.v200806180301 com.swtdesigner.layout.group.designer 6.7.0.200806270151 org.eclipse.ui.views.properties.tabbed 3.4.0.I20080527-2000 org.python.pydev.jython 1.2.2 org.eclipse.wst.common.emf 1.1.200.v200805140020 com.instantiations.packager.refactoring 2.5.1 com.instantiations.assist.eclipse.fragment.jdt 5.5.1 org.eclipse.datatools.connectivity.dbdefinition.genericJDBC 1.0.0.v200805152355 org.python.pydev.parser 1.0.7 org.eclipse.datatools.sqltools.data.ui 1.1.0.v200805310400 org.eclipse.buckminster.core 1.1.0.r09336 org.eclipse.mylyn.tasks.core 3.0.1.v20080721-2100-e3x org.eclipse.birt.report.designer.ui.samplesview 2.3.0.v20080606 org.eclipse.equinox.launcher 1.0.100.v20080509-1800 org.eclipse.birt.report.item.crosstab.ui 2.3.0.v20080606 org.eclipse.m2m.atl.adt.perspective 2.0.0.v200806101117 javax.servlet.jsp 2.0.0.v200806031607 com.swtdesigner 6.7.1.200809050053 org.eclipse.jet.ui 0.9.0.v20080527 org.eclipse.m2m.qvt.oml.common.ui 1.0.0.v20080611-1330 com.swtdesigner.layout.group 6.7.1.200809050053 org.eclipse.gmf.runtime.common.ui.services.action 1.1.0.v20080507-2230 org.eclipse.emf.search.ecore.ui 0.7.0.v200806130939 org.python.pydev 1.0.5 org.eclipse.emf.workspace.ui 1.2.0.v200805130238 com.instantiations.helpeditor.core.toc 1.3.4.200809042225 org.slf4j.extendable 1.4.3 org.python.pydev.core 1.3.14 org.eclipse.hyades.logging.core 4.3.200.v200804110100 org.eclipse.datatools.enablement.postgresql.ui 1.0.0.v200806060334 org.eclipse.gmf.graphdef 2.0.100.v20080528-1052 org.eclipse.mylyn.help.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.protocol.bittorrent 0.3.0 org.eclipse.birt.report.engine 2.3.0.v20080616 org.eclipse.datatools.connectivity.ui.dse 1.1.0.v200805152355 org.eclipse.mylyn.bugzilla.core 3.0.0.v20080619-1900 org.python.pydev.jython 1.3.4 org.python.pydev 0.9.0 org.eclipse.equinox.preferences.jmx 1.0.0.v20070510 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.1 org.eclipse.datatools.enablement.postgresql.dbdefinition 1.0.0.v200805152355 org.eclipse.m2m.qvt.oml.common.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.eclipse.tptp.monitoring.lta.logui 4.5.0.v200805141427 org.eclipse.birt.report.debug.ui 2.3.0.v200806102 org.eclipse.gmf.runtime.emf.ui 1.1.0.v20080516-1748 org.eclipse.ui.cheatsheets 3.3.100.v20080508 org.python.pydev 1.2.9 org.eclipse.birt.report.engine.emitter.wpml 2.3.0.v20080606 org.eclipse.help.appserver 3.1.300.v20080507 org.python.pydev.parser 1.3.9 com.xored.composer.ui 1.3.4.200806270212 org.eclipse.datatools.sqltools.tabledataeditor 1.0.0.v200805240400 org.eclipse.gmf.runtime.emf.type.core 1.1.0.v20080425-1959 org.python.pydev 1.3.7 com.ibm.icu.base 3.8.1.v20080530 org.python.pydev.ast 1.3.1 org.apache.batik.pdf 1.6.0.v200806031500 org.eclipse.emf.mapping.ui 2.4.0.v200806091234 org.eclipse.net4j.db.derby 1.0.0.v200806180305 org.eclipse.net4j.http.server 1.0.0.v200806180305 org.python.pydev.jython 1.3.17 org.python.pydev.jython 1.0.6 org.python.pydev.ast 1.2.3 org.eclipse.team.svn.sources 0.7.1.I20080612-1500 org.eclipse.uml2.diagram.usecase 0.8.0.v200806112132 org.eclipse.wst.sse.core 1.1.300.v200805221633 org.eclipse.birt.report.designer.ui 2.3.0.v20080606 org.eclipse.jdt.apt.ui 3.3.100.v20080407-1345 com.instantiations.eclipse.debug 5.3.2.200809042027 org.eclipse.gmf.codegen.ui 1.1.0.v20080512-1200 com.instantiations.designer.databinding 6.7.1.200809050053 org.python.pydev.core 1.0.1 com.windowtester.swt.runtime.gef 3.5.0.200806270034 com.instantiations.common.ui 5.3.2.200809042027 org.python.pydev 1.3.19 org.eclipse.ui.forms 3.3.100.v20080611 org.eclipse.birt.data 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase.ase.ui 1.0.1.v200805310538 org.polarion.eclipse.team.svn.connector 2.0.1.I20080612-1500 org.eclipse.emf.common.ui 2.4.0.v200806091234 org.eclipse.datatools.enablement.ibm.informix.dbdefinition 1.0.0.v200805152355 org.eclipse.wst.xsdeditor.doc.user 1.0.400.v200805150028 org.eclipse.emf.mint.doc 0.7.0.v200806172223 org.eclipse.buckminster.generic 1.0.0.r09319 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.1 org.eclipse.emf.validation.examples 1.2.0.v200805280204 org.eclipse.team.svn.core 0.7.1.I20080612-1500 org.python.pydev.ast 1.2.4 org.eclipse.emf.cdo.server.hibernate 1.0.0.v200806180411 org.python.pydev.jython 1.3.8 org.eclipse.gmf.xpand 1.1.0.v20080528-1052 org.eclipse.datatools.sqltools.data.core 1.0.0.v200805152355 org.eclipse.emf.ecoretools 0.8.0.v200806130600 org.python.pydev.core 1.3.18 org.eclipse.gmf.runtime.common.core 1.1.0.v20080425-1959 org.eclipse.emf 2.4.0.v200806091234 org.eclipse.emf.ecoretools.properties 0.8.0.v200806130600 org.python.pydev.core 1.2.7 org.python.pydev.parser 0.9.8 org.eclipse.datatools.enablement.ibm.db2.luw.ui 1.0.0.v200805160737 org.eclipse.mylyn.team.ui 3.0.0.v20080619-1900 org.eclipse.help.base 3.3.100.v20080617 org.eclipse.m2m.atl.doc 2.0.0.v200806101117 org.eclipse.net4j.examples 1.0.0.v200806180305 org.eclipse.birt.data.aggregation 2.3.0.v20080606 org.eclipse.gmf.examples 1.0.100.v20080425-1959 org.eclipse.emf.search.common 0.7.0.v200806130939 org.python.pydev.ast 1.3.17 org.eclipse.ecf.provider.filetransfer.ssl 1.0.0.v20080611-1715 org.python.pydev.core 1.0.3 org.eclipse.team.svn.core.nl1 0.7.1.I20080612-1500 org.eclipse.emf.cdo.server.hibernate.teneo 1.0.0.v200806180411 org.eclipse.wst.validation.ui 1.2.1.v200807292117 org.python.pydev.parser 1.0.3 org.python.pydev.ast 1.3.6 org.eclipse.search 3.4.0.v20080603-2000 org.eclipse.jet 0.9.0.v20080527 org.python.pydev 1.3.2 org.python.pydev.jython 1.2.6 org.python.pydev.parser 1.3.14 org.eclipse.datatools.oda.cshelp 1.0.0.v200805152355 org.eclipse.jdt.junit 3.4.0.v20080603-2000 org.eclipse.datatools.sqltools.debugger.core 1.0.0.v200805152355 org.mortbay.jetty 5.1.14.v200806031611 org.eclipse.equinox.p2.garbagecollector 1.0.0.v20080506-1939 org.eclipse.m2m.atl.adt.debug 2.0.0.v200806101117 org.eclipse.equinox.jmx.client 1.0.0.v20070515 org.python.pydev.core 1.3.5 org.eclipse.mylyn.bugzilla.core 3.0.1.v20080721-2100-e3x org.python.pydev.parser 0.9.8.3 org.python.pydev.parser 0.9.8.2 org.python.pydev.parser 0.9.8.1 org.eclipse.osgi.services 3.1.200.v20071203 org.python.pydev 1.0.4 org.eclipse.hyades.lta.logging.adapter 4.5.0.v200806121215 org.eclipse.datatools.sqltools.sqleditor 1.0.0.v200805152355 org.python.pydev.parser 0.9.8.7 org.python.pydev.parser 0.9.8.6 org.eclipse.gmf.runtime.emf.core 1.1.0.v20080425-1959 org.python.pydev.parser 0.9.8.5 org.eclipse.core.contenttype 3.3.0.v20080604-1400 org.eclipse.ecf.datashare 1.3.0.v20080623-0046 org.python.pydev.parser 0.9.8.4 org.eclipse.tptp.platform.common.ui 4.4.100.v200806110100 org.junit 3.8.2.v20080602-1318 com.instantiations.assist.eclipse.coverage 5.5.0.200806270255 javax.activation 1.1.0.v200806101325 com.instantiations.assist.eclipse.scheduler 5.5.1 javax.management 1.2.0.v200803061811 org.eclipse.emf.edit 2.4.0.v200806091234 org.eclipse.ecf.provider.discovery 2.0.0.v20080623-0046 org.eclipse.birt.chart.device.pdf 2.3.0.v20080417 org.eclipse.equinox.wireadmin 1.0.0.v20080407 org.python.pydev.ast 1.0.8 org.eclipse.net4j.buddies.server 1.0.0.v200806180305 org.eclipse.wst.internet.cache 1.0.301.v200805140020 com.windowtester.runtime 3.5.0.200806270034 org.mx4j.jmx 3.0.3.v200802291451 org.eclipse.pde.ui 3.4.0.v20080530 org.eclipse.ocl 1.2.0.v200806091438 org.eclipse.birt.cshelp 2.3.0.v20080617 org.eclipse.emf.query.doc 1.2.0.v200805130238 org.eclipse.pde.runtime 3.4.0.v20080530-1200 org.apache.axis 1.4.0.v200807230600 org.apache.log4j 1.2.13.v200806030600 org.eclipse.ui.intro 3.2.200.v20080610 com.instantiations.assist.eclipse.pattern 5.5.1 com.xored.swt.composer 1.3.4.200806270212 org.apache.batik.ext.awt 1.6.0.v200805290154 org.eclipse.emf.cdo.ui 1.0.0.v200806180411 org.eclipse.jface 3.4.0.I20080606-1300 com.windowtester.swt.runtime.gef 3.5.1.200809042232 org.eclipse.gmf.runtime.emf.type.ui 1.1.0.v20080425-1959 org.eclipse.uml2.uml 2.2.0.v200805141133 org.objectweb.asm 3.0.0.v200803061811 org.python.pydev.core 1.1.0 org.eclipse.ecf.discovery.ui 2.0.0.v20080623-0046 org.python.pydev 1.3.14 org.eclipse.gmf.runtime.diagram.ui.printing 1.1.0.v20080501-1739 org.eclipse.mylyn.ide.ant 3.0.2.v20080918-1100-e3x org.eclipse.xsd.example.installer 1.0.0.v200806091234 org.eclipse.uml2.diagram.examples.profile 0.8.0.v200806112132 org.eclipse.ui.intro.universal 3.2.200.v20080508 org.python.pydev.ast 0.9.7.99 org.eclipse.emf.codegen 2.4.0.v200806091234 org.eclipse.equinox.p2.metadata 1.0.0.v20080514-1900 org.eclipse.ecf.example.collab 1.3.0.v20080623-0046 org.python.pydev.parser 1.2.4 org.eclipse.birt.report.engine.emitter.html 2.3.0.v20080606 org.python.pydev.jython 1.3.16 org.eclipse.osgi 3.4.0.v20080605-1900 org.eclipse.emf.databinding 1.0.0.v200806091234 org.eclipse.help 3.3.100.v20080610 org.eclipse.net4j.db.hsqldb 1.0.0.v200806180305 org.eclipse.gmf.runtime.diagram.ui.dnd 1.1.0.v20080425-1959 org.eclipse.birt.report.model 2.3.0.v20080605 org.eclipse.datatools.enablement.finfo 1.5.1.v200805152355 org.eclipse.jsch.ui 1.1.100.I20080415 org.python.pydev 1.3.10 org.python.pydev.parser 1.3.6 org.eclipse.emf.mapping.ecore.editor 2.4.0.v200806091234 org.eclipse.datatools.sqltools.common.ui 1.0.0.v200805152355 org.eclipse.birt.report.engine.emitter.pdf 2.3.0.v20080606 org.python.pydev 1.2.8 com.instantiations.packager.help 2.5.1 org.eclipse.equinox.p2.directorywatcher 1.0.0.v20080505-1850 org.eclipse.draw2d 3.4.0.v20080529 org.eclipse.draw2d.source 3.4.0.v20080115-33-7w3119163_ org.eclipse.ecf.ui 2.0.0.v20080623-0046 org.eclipse.birt.report.data.oda.jdbc.dbprofile 2.3.0.v20080606 org.eclipse.equinox.security.win32.x86 1.0.0.v20080529-1600 org.eclipse.wst.xml.ui 1.0.400.v200806051910 org.eclipse.jdt.ui 3.4.0.v20080603-2000 org.eclipse.equinox.p2.ui 1.0.0.v20080530-1237 org.eclipse.hyades.lta.logging.adapter.ui 4.5.0.v200805132041 org.eclipse.mylyn.monitor.ui 3.0.0.v20080619-1900 org.python.pydev 0.9.1 org.eclipse.emf.ecore.sdo.doc 2.4.0.v200806091234 com.instantiations.eclipse.ast.editor 5.5.1 org.eclipse.ant.ui 3.3.0.v20080529 org.python.pydev.core 1.3.13 org.eclipse.gef.doc.isv 3.4.0.v20080606 org.apache.xml.resolver 1.2.0.v200806030312 org.eclipse.datatools.enablement.ibm.db2.iseries.dbdefinition 1.0.0.v200806100223 org.eclipse.birt 2.3.0.v20080304 org.eclipse.equinox.security 1.0.0.v20080512-1800 com.instantiations.tools 5.3.2.200809042027 org.eclipse.jdt.core.manipulation 1.2.0.v20080603-2000 org.eclipse.gmf.runtime.diagram.ui.printing.render 1.1.0.v20080425-1959 org.eclipse.net4j.buddies.ui 1.0.0.v200806180305 org.eclipse.emf.codegen.ui 2.4.0.v200806091234 org.eclipse.team.svn 0.7.1.I20080612-1500 org.eclipse.wst.command.env.infopop 1.0.100.v200805301544 org.eclipse.datatools.enablement.hsqldb.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.runtime.common.ui.services.properties 1.1.0.v20080425-1959 org.eclipse.emf.cheatsheets 2.4.0.v200806091234 org.eclipse.ecf.presence.collab.ui 1.2.0.v20080623-0046 org.eclipse.update.core 3.2.200.v20080515 org.eclipse.wst.command.env.core 1.0.204.v200805140020 org.apache.batik.swing 1.6.0.v200805290154 org.eclipse.birt.report.designer.samplereports 2.3.0.v20080606 org.python.pydev.parser 1.0.8 org.eclipse.xsd 2.4.0.v200806091234 com.instantiations.assist.eclipse.fragment.jdt 5.5.0 org.eclipse.emf.transaction 1.2.0.v200805130238 org.eclipse.mylyn.team.cvs 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.ui 1.0.0.v20080611-1330 org.eclipse.emf.validation.source 1.2.0.v200805130238-35-9oA55S5J8H5ADM org.eclipse.datatools.enablement.hsqldb 1.0.0.v200805152355 org.eclipse.wst.common.uriresolver 1.1.301.v200805140415 org.eclipse.equinox.jsp.jasper 1.0.100.v20080427-0830 org.eclipse.osgi.util 3.1.300.v20080303 org.eclipse.datatools.connectivity.oda.consumer 3.1.2.v200805230718 org.eclipse.emf.compare.source 0.8.0.v200806180301 org.python.pydev.core 1.3.19 org.eclipse.emf.query.examples 1.2.0.v200805130238 org.eclipse.buckminster.runtime 1.1.0.r09338 org.eclipse.datatools.enablement.sybase.asa.dbdefinition 1.0.0.v200805240040 org.eclipse.datatools.sqltools.sql 1.0.0.v200805152355 org.apache.batik.svggen 1.6.0.v200805290154 org.eclipse.buckminster.cvs 1.0.0.r09319 org.python.pydev.core 1.2.6 org.eclipse.equinox.simpleconfigurator 1.0.0.v20080604 org.eclipse.help.ui 3.3.100.v20080521 org.apache.batik.dom 1.6.0.v200805290154 org.python.pydev.parser 1.1.0 org.eclipse.ecf.server.generic 1.2.0.v20080623-0046 com.windowtester.swt.runtime.win32 3.5.0.200806270034 org.eclipse.emf.cdo.examples 1.0.0.v200806180411 org.eclipse.ecf.provider.remoteservice 1.3.0.v20080623-0046 org.eclipse.gmf.runtime.notation.edit 1.1.0.v20080507-1326 org.eclipse.core.filesystem 1.2.0.v20080604-1400 org.eclipse.m2m.qvt.oml.runtime.ui 1.0.0.v20080611-1330 org.eclipse.emf.cdo.server.hibernate.source 1.0.0.v200806180411 org.python.pydev.jython 1.3.7 org.eclipse.gmf.codegen.edit 2.1.0.v20080610-1132 org.eclipse.buckminster.pde 1.1.0.r09351 org.python.pydev.ast 1.2.5 org.python.pydev.core 1.0.2 org.python.pydev.ast 1.3.16 org.apache.batik.parser 1.6.0.v200805290154 org.python.pydev.parser 1.0.2 org.eclipse.wst.common.infopop 1.0.100.v200805301550 org.eclipse.ecf.remoteservice 2.0.0.v20080623-0046 org.python.pydev 1.3.1 org.python.pydev.jython 1.2.5 org.eclipse.emf.mapping 2.4.0.v200806091234 org.eclipse.emf.cdo.server.hibernate.id 1.0.0.v200806180411 com.windowtester.runtime.legacy 3.5.1.200809042232 org.python.pydev.ast 1.3.7 org.eclipse.datatools.enablement.oracle 1.0.0.v200805152355 org.python.pydev.parser 1.3.15 org.eclipse.emf.importer 2.4.0.v200806091234 org.eclipse.birt.example 2.3.0.v20080304 org.eclipse.birt.report.designer.ui.lib 2.3.0.v20080606 org.eclipse.emf.cdo.server.source 1.0.0.v200806180411 org.eclipse.gmf.runtime.common.ui.services 1.1.0.v20080612-1229 org.eclipse.datatools.sqltools.db.generic 1.0.0.v200805152355 org.eclipse.net4j 1.0.0.v200806180305 org.eclipse.jdt 3.4.0.v20080603-2000 org.eclipse.emf.cdo.source 1.0.0.v200806180411 org.eclipse.datatools.connectivity 1.1.0.v200805160228 com.instantiations.assist.eclipse.scheduler 5.5.0 org.eclipse.emf.ecore.sdo.source 2.4.0.v200806091234 org.eclipse.wst.sse.doc.user 1.1.0.v200805211530 org.python.pydev 0.9.7.99 org.eclipse.emf.transaction.source 1.2.0.v200805130238-23-8s733I3C59379I org.w3c.dom.svg 1.1.0.v200806040011 org.python.pydev.core 1.3.4 javax.xml.rpc 1.1.0.v200806030420 org.eclipse.ocl.uml.source 1.2.0.v200805130238-11-7w311916241349 com.instantiations.eclipse.ui 5.3.2.200806270030 org.eclipse.jface.text 3.4.0.v20080603-2000 org.apache.batik.xml 1.6.0.v200805290154 org.python.pydev 1.0.3 org.eclipse.gmf.bridge.ui.dashboard 2.0.0.v20080417-1610 org.apache.lucene 1.9.1.v20080530-1600 org.eclipse.emf.query.ocl 1.2.0.v200805130238 org.eclipse.uml2.uml.resources 2.2.0.v200805131030 org.eclipse.ecf.provider.r_osgi 2.0.0.v20080623-0046 org.eclipse.emf.importer.java 2.4.0.v200806091234 org.python.pydev.debug 1.3.20 org.eclipse.emf.ecore.xmi 2.4.0.v200806091234 org.python.pydev.mylyn 0.3.0 com.instantiations.assist.eclipse.pattern 5.5.0 org.eclipse.emf.source 2.4.0.v200806091234 org.eclipse.ui.browser 3.2.200.v20080507 org.eclipse.tptp.lta.sdb.epi 4.5.0.v200805132041 org.eclipse.net4j.doc 1.0.0.v200806180305 org.eclipse.gmf.bridge 1.1.0.v20080528-1052 com.instantiations.assist.eclipse.admin 5.5.1 org.eclipse.ecf.presence 1.3.0.v20080623-0046 org.eclipse.jet.editor 0.9.0.v20080226 org.eclipse.emf.mint 0.7.0.v200806172223 org.eclipse.ecf.provider 1.3.0.v20080623-0046 com.instantiations.assist.eclipse.core.ant 5.5.0 org.apache.axis 1.4.0.v200806030120 org.eclipse.equinox.p2.metadata.repository 1.0.0.v20080604 com.ibm.icu 3.8.1.v20080530 org.eclipse.gmf.runtime.diagram.ui.properties 1.1.0.v20080603-1553 org.eclipse.team.svn.mylyn.source 0.7.1.I20080612-1500 org.eclipse.ecf.provider.datashare 1.3.0.v20080623-0046 org.eclipse.birt.report.data.oda.sampledb 2.3.0.v20080606 org.eclipse.m2m.atl.drivers.emf4atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.providers.ide 1.1.0.v20080425-1959 org.python.pydev 0.8.0 org.eclipse.datatools.connectivity.sqm.server.ui 1.1.0.v200806050117 com.nordea.cd.dev.plugin.stubbuilder 1.0.2 org.eclipse.emf.mapping.xsd2ecore 2.4.0.v200806091234 org.python.pydev.parser 1.2.5 org.eclipse.xsd.mapping.editor 2.4.0.v200806091234 org.python.pydev.jython 1.3.15 org.eclipse.gmf.xpand.editor 1.0.0.v20080425-1959 org.eclipse.tptp.platform.lta.common 4.5.0.v200806050100 org.eclipse.buckminster.pde.ui 1.0.0.r09319 org.eclipse.emf.validation.ocl 1.2.0.v200805130238 org.eclipse.ui.console 3.3.0.v20080529-1300 org.eclipse.net4j.ui 1.0.0.v200806180305 org.eclipse.emf.workspace 1.2.0.v200805130238 org.python.pydev.ast 0.9.8.6 org.python.pydev.ast 0.9.8.5 org.eclipse.emf.teneo.annotations 1.0.0.v200806111928 org.python.pydev.ast 0.9.8.4 org.eclipse.ui.net 1.0.0.I20080605 org.python.pydev.ast 0.9.8.3 org.eclipse.net4j.db.source 1.0.0.v200806180305 org.eclipse.zest.core 1.0.0.v20080115 org.python.pydev.ast 0.9.8.2 org.eclipse.tptp.lta.log.epi 4.5.0.v200805132041 org.python.pydev.ast 0.9.8.1 org.python.pydev 1.3.13 org.eclipse.equinox.app 1.1.0.v20080421-2006 org.eclipse.equinox.p2.metadata.generator 1.0.0.v20080604 org.python.pydev 1.2.7 org.eclipse.emf.ocl.examples 1.2.0.v200805130238 org.eclipse.mylyn.jira.core 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.commons.net 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql.query 1.0.1.v200805152355 org.eclipse.datatools.sqltools.plan 1.0.0.v200805152355 com.swtdesigner.help 6.7.1.200809050053 org.eclipse.ecf.ssl 1.0.0.v20080611-1715 org.eclipse.team.cvs.core 3.3.100.I20080605 org.python.pydev.ast 0.9.8 com.instantiations.helpeditor.core.toc 1.3.4.200806270212 org.eclipse.core.databinding 1.1.0.I20080527-2000 org.eclipse.tptp.platform.common 4.3.200.v200805300100 org.eclipse.net4j.util.ui 1.0.0.v200806180305 org.eclipse.mylyn.commons.core 3.0.0.v20080619-1900 org.python.pydev 1.3.9 org.eclipse.emf.search.common.ui 0.7.0.v200806130939 org.eclipse.m2m.atl.engine.emfvm 2.0.0.v200806101117 org.eclipse.uml2.diagram.csd 0.8.0.v200806112132 org.python.pydev.parser 1.3.7 org.eclipse.team.svn.ui 0.7.1.I20080612-1500 org.python.pydev.core 1.3.12 org.eclipse.datatools.modelbase.sql.query.edit 1.0.0.v200806070329 com.instantiations.packager.core 2.5.1 com.windowtester.swing.runtime 3.5.0.200806270034 org.eclipse.update.ui 3.2.100.v20080318 org.apache.commons.codec 1.2.0.v20080530-1550 org.eclipse.mylyn.bugzilla.core 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.editor.ui 1.0.0.v20080611-1330 org.eclipse.m2m.qvt.oml.samples 1.0.0.v20080611-1330 org.eclipse.mylyn.context.core 3.0.0.v20080619-1900 org.eclipse.xsd.source 2.4.0.v200806091234 org.eclipse.gmf.runtime.diagram.core 1.1.0.v20080425-1959 org.eclipse.m2m.atl.drivers.uml24atl 2.0.0.v200806101117 com.instantiations.eclipse.util 5.3.2.200809042027 org.eclipse.emf.ecore.sdo 2.4.0.v200806091234 com.instantiations.eclipse.startup 5.3.2.200809042027 org.eclipse.gmf 1.0.0.v20080425-1959 org.python.pydev 0.9.2 org.apache.batik.util.gui 1.6.0.v200805290154 org.python.pydev.ast 0.9.8.7 com.nordea.cd.dev.plugin.wsdl2java 1.0.2 org.eclipse.datatools.enablement.sybase.models 1.0.0.v200805152355 org.python.pydev.ast 1.0.1 org.eclipse.emf.compare.diff 0.8.0.v200806180301 org.eclipse.birt.report.designer 2.3.0.v200806102 org.eclipse.equinox.http.registry 1.0.100.v20080427-0830 ch.ethz.iks.r_osgi.remote 1.0.0.RC2_v20080623-0046 org.eclipse.gmf.graphdef.codegen.ui 1.0.100.v20080425-1959 org.eclipse.m2m.qvt.oml.editor.source 1.0.0.v20080611-1330-1--7w3119172202441 org.sat4j.pb 2.0.0.v20080602 org.eclipse.wst.validation 1.2.1.v200807292117 org.apache.batik.util 1.6.0.v200805290154 org.eclipse.equinox.transforms.hook 1.0.0.v20080610 org.eclipse.emf.teneo.hibernate 1.0.0.v200806111928 org.eclipse.uml2.examples 2.1.0.v200805131030 org.eclipse.mylyn.java.tasks 3.0.2.v20080918-1100-e3x org.eclipse.equinox.preferences 3.2.200.v20080421-2006 com.instantiations.assist.eclipse.fragment.swt 5.5.0 org.eclipse.ocl.doc 1.2.0.v200805130238 org.eclipse.jdt.apt.core 3.3.100.v20080513-1235 org.eclipse.birt.report.engine.fonts 2.3.0.v20080606 org.eclipse.mylyn.monitor.ui 3.0.2.v20080918-1100-e3x org.eclipse.gmf.tooldef.edit 2.0.0.v20080610-1132 org.eclipse.gmf.runtime.draw2d.ui.render 1.1.0.v20080507-2230 com.windowtester.swt.platform.ext 3.5.0.200806270034 org.eclipse.ecf.example.clients 1.3.0.v20080623-0046 org.eclipse.core.net 1.1.0.I20080604 org.eclipse.wst.xsd.core 1.1.301.v200807240448 org.eclipse.datatools.connectivity.oda.flatfile 3.0.6.v200805261930 org.python.pydev.refactoring 1.3.20 org.python.pydev.parser 1.0.1 org.python.pydev.ast 1.3.19 org.eclipse.equinox.registry.jmx 1.0.0.v20080610-1530 com.instantiations.eclipse.model.jsp 5.5.0 org.eclipse.mylyn.context.ui 3.0.2.v20080918-1100-e3x org.python.pydev.core 1.0.5 org.eclipse.hyades.lta.resources.database 4.5.0.v200805271330 org.python.pydev 0.6.1 org.python.pydev.parser 1.3.12 org.eclipse.equinox.p2.console 1.0.0.v20080514-1900 org.eclipse.mylyn.commons.net 3.0.1.v20080721-2100-e3x org.eclipse.net4j.jms.api 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.lexer 1.0.1.v200805152355 org.python.pydev.ast 1.3.4 org.python.pydev 1.3.4 org.python.pydev.jython 1.2.8 org.python.pydev 0.8.5 org.python.pydev 0.5.3 org.eclipse.wst.sse.ui 1.1.1.v200808141919 org.eclipse.emf.query 1.2.0.v200805130238 org.eclipse.core.runtime.compatibility 3.2.0.v20071008 org.eclipse.gmf.runtime.notation 1.1.0.v20080507-1326 org.eclipse.birt.report.data.oda.sampledb.ui 2.3.0.v20080606 org.python.pydev.ast 1.2.6 com.instantiations.eclipse.mail.ui 5.5.1 org.eclipse.zest.layouts 1.0.0.v20080226 org.python.pydev.jython 1.3.6 org.eclipse.net4j.jms.admin 1.0.0.v200806180305 org.eclipse.core.databinding.beans 1.1.0.I20080508-2000a org.python.pydev 1.1.0 org.python.pydev.core 1.3.20 org.eclipse.gmf.runtime.emf.commands.core 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.common.ui.services.dnd.ide 1.1.0.v20080425-1959 org.eclipse.datatools.connectivity.apache.derby 1.0.1.v200805152355 org.python.pydev.core 1.2.9 org.eclipse.mylyn.context.core 3.0.2.v20080918-1100-e3x org.eclipse.equinox.p2.artifact.repository 1.0.0.v20080609-0850 org.eclipse.gef 3.4.0.v20080526 org.eclipse.gmf.runtime.common.ui 1.1.0.v20080512-1200 org.eclipse.emf.ecoretools.tabbedproperties 0.8.0.v200806130600 com.instantiations.assist.eclipse.core.ant 5.5.1 org.eclipse.emf.ecore.change 2.4.0.v200806091234 org.eclipse.jet.doc 0.9.0.v20080522 org.eclipse.emf.transaction.examples 1.2.0.v200806051817 org.eclipse.gmf.runtime.draw2d.ui 1.1.0.v20080610-1132 org.eclipse.equinox.jmx.server.rmi 1.0.0.v20070510 org.eclipse.ecf.examples.remoteservices.common 1.0.100.v20080623-0046 org.eclipse.wst.standard.schemas 1.0.102.v200807220733 org.eclipse.equinox.p2.jarprocessor 1.0.0.v20080514-1900 org.eclipse.birt.report.data.oda.jdbc 2.3.0.v20080610 com.windowtester.runner 3.5.0.200806270034 com.windowtester.swt.codegen 3.5.1.200809042232 org.eclipse.emf.cdo.tests.model2.edit 1.0.0.v200806180411 javax.wsdl 1.5.1.v200806030408 org.eclipse.datatools.enablement.sap.maxdb.ui 1.0.0.v200805152355 org.eclipse.equinox.launcher.win32.win32.x86 1.0.100.v20080509-1800 org.eclipse.birt.core 2.3.0.v20080606 javax.servlet 2.5.0.v200806031605 org.eclipse.uml2.codegen.ecore.ui 1.4.0.v200805131030 com.windowtester.swt.recorder 3.5.0.200806270034 org.eclipse.mylyn 3.0.1.v20080721-2100-e3x org.eclipse.uml2.search.ocl 0.7.0.v200806130939 org.python.pydev.core 1.3.3 org.eclipse.core.jobs 3.4.0.v20080512 org.python.pydev.core 0.9.5 org.eclipse.emf.validation.ui.ide 1.2.0.v200805130238 org.python.pydev 1.0.2 org.eclipse.wst.validation.ui 1.2.0.v200805262011 com.windowtester.swing.recorder 3.5.1.200809042232 com.instantiations.helpeditor.help 1.3.4.200809042225 org.eclipse.gmf.map.edit 2.1.0.v20080610-1132 org.eclipse.emf.ecore.edit 2.4.0.v200806091234 org.eclipse.datatools.enablement.msft.sqlserver.dbdefinition 1.0.0.v200805152355 org.mortbay.jetty.util 6.1.7.v200806031612 org.eclipse.datatools.sqltools.parsers.sql 1.0.1.v200805152355 org.eclipse.xsd.doc 2.4.0.v200806091234 org.eclipse.jdt.doc.isv 3.4.0.v20080612-1340 org.eclipse.jdt.apt.pluggable.core 1.0.100.v20080407-1345 org.eclipse.ecf.provider.bittorrent 0.3.0.v20080623-0046 org.eclipse.mylyn.monitor.ui 3.0.1.v20080721-2100-e3x org.python.pydev.jython 1.0.4 org.eclipse.wst.common.project.facet.ui 1.3.1.v200807301432 javax.xml.bind 2.0.0.v20080604-1500 org.apache.derby.core 10.3.1.4 org.eclipse.birt.report.debug.core 2.3.0.v200806102 org.python.pydev.parser 1.3.4 org.eclipse.jdt.debug.ui 3.3.0.v20080603 org.python.pydev.help 1.3.20 org.python.pydev 1.3.12 org.eclipse.gef.examples.ui.pde 3.4.0.v20080226 org.eclipse.ecf.provider.jmdns 2.0.0.v20080623-0046 org.eclipse.xsd.editor 2.4.0.v200806091234 org.python.pydev 1.2.6 org.eclipse.buckminster.generic.ui 1.0.0.r09319 org.eclipse.emf.ocl 1.1.100.v200805130238 org.eclipse.emf.search.ecore 0.7.0.v200806130939 org.eclipse.wst.common.frameworks.ui 1.1.200.v200805221400 org.eclipse.emf.ecoretools.doc 0.8.0.v200806130600 org.eclipse.wst.sse.ui.infopop 1.0.200.v200805301545 org.eclipse.tptp.platform.common.ui.trace 4.3.200.v200805290100 org.eclipse.net4j.jms.server 1.0.0.v200806180305 org.eclipse.ecf.filetransfer.ui 1.4.0.v20080623-0046 org.eclipse.birt.chart.device.swt 2.3.0.v20080522 org.eclipse.wst.xsd.ui 1.2.101.v200806051910 org.eclipse.emf.cdo.examples.source 1.0.0.v200806180411 org.eclipse.birt.report.designer.ui.lib.explorer 2.3.0.v20080606 org.mozilla.rhino 1.6.7.v20080214 org.python.pydev 1.3.16 org.eclipse.buckminster.ant 1.1.0.r09351 org.eclipse.equinox.metatype 1.0.0.v20070827 org.eclipse.m2m.atl.adt.wizard 2.0.0.v200806101117 org.eclipse.wst.command.env 1.0.305.v200805281530 org.eclipse.swt.jmx 1.0.0.v20070510 org.eclipse.emf.cdo.common 1.0.0.v200806180411 org.eclipse.ecf.examples.remoteservices.client 1.0.100.v20080623-0046 org.python.pydev.jython 1.3.14 org.python.pydev.parser 1.2.6 org.eclipse.emf.ecoretools.diagram.ui.outline 0.8.0.v200806130600 org.eclipse.emf.teneo.eclipse 1.0.0.v200806111928 org.eclipse.emf.cdo.tests.mango 1.0.0.v200806180411 org.eclipse.net4j.buddies.common 1.0.0.v200806180305 org.eclipse.net4j.buddies.chat 1.0.0.v200806180305 org.eclipse.mylyn.bugzilla.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.0 org.eclipse.datatools.enablement.sybase.ase.dbdefinition 1.0.0.v200805240040 org.apache.ant 1.7.0.v200803061910 org.eclipse.datatools.connectivity.oda.design 3.0.6.v200805152355 org.eclipse.emf.ocl.doc 1.1.100.v200805130238 org.eclipse.tptp.lta.gla.ui.epi 4.5.0.v200805160100 org.eclipse.equinox.jmx.server 1.0.0.v20071015 org.eclipse.wst.xml.core 1.1.300.v200806051910 org.eclipse.datatools.connectivity.oda.template.ui 3.0.6.v200805152355 org.python.pydev.ast 1.0.2 org.eclipse.birt.report.data.adapter 2.3.0.v20080606 org.eclipse.birt.chart.runtime 2.3.0.v20080304 org.eclipse.net4j.ui.source 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.query 1.0.1.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.1 org.eclipse.wst.dtd.ui 1.0.300.v200805152207 org.eclipse.mylyn.java.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.connectivity.oda.design.ui 3.0.6.v200805152355 org.eclipse.birt.report.designer.core 2.3.0.v200806102 org.eclipse.buckminster.jdt 1.0.0.r09319 org.eclipse.buckminster.p4 1.0.0.r09319 org.eclipse.ecf.core.source 2.0.0.v20080623-0046 org.eclipse.birt.report.runtime 2.3.0.v20080304 org.python.pydev.ast 1.1.0 com.windowtester.swt.runtime 3.5.1.200809042232 org.eclipse.uml2.doc 2.2.0.v200805201350 org.eclipse.mylyn.context.core 3.0.1.v20080721-2100-e3x org.eclipse.gmf.runtime.notation.providers 1.1.0.v20080425-1959 org.eclipse.tptp.platform.lta.log.doc.user 4.5.0.v200805132041 org.eclipse.team.svn.help 0.7.1.I20080612-1500 org.python.pydev 0.9.3 com.windowtester.swt.runtime.win32 3.5.1.200809042232 org.eclipse.m2m.qvt.oml.ocl.emf.libraries 1.0.0.v20080611-1330 org.eclipse.hyades.lta.analysis.engine 4.5.0.v200805271330 org.python.pydev.core 1.3.11 org.eclipse.datatools.connectivity.sqm.core 1.0.1.v200806041052 org.eclipse.equinox.jmx.server.xmlrpc 1.0.0.v20070608 org.eclipse.platform 3.3.100.v200806172000 org.eclipse.ui 3.4.0.I20080610-1200 org.eclipse.net4j.buddies.chat.ui 1.0.0.v200806180305 org.eclipse.emf.search.ecore.ocl 0.7.0.v200806130939 org.eclipse.gmf.codegen 2.1.0.v20080610-1132 org.eclipse.emf.teneo 1.0.0.v200806111928 org.eclipse.datatools.connectivity.oda.flatfile.ui 3.0.6.v200805261930 org.python.pydev.core 1.0.4 org.eclipse.equinox.p2.extensionlocation 1.0.0.v20080523-0001 org.eclipse.buckminster.remote.cloudsmith 1.0.0.r09319 org.python.pydev.ast 1.3.18 org.eclipse.birt.report.engine.dataextraction.csv 2.3.0.v200806102 org.eclipse.equinox.log 1.1.0.v20080414 org.python.pydev.parser 1.3.13 org.python.pydev 1.3.3 com.windowtester.eclipse.help 3.5.0.200806270034 org.python.pydev.jython 1.2.7 org.eclipse.m2m.qvt.oml.emf.util.ui 1.0.0.v20080611-1330 org.eclipse.gmf.runtime.common.ui.printing 1.1.0.v20080425-1959 org.python.pydev.ast 1.3.5 org.eclipse.uml2.uml.ecore.exporter 2.2.0.v200805131030 org.eclipse.equinox.event 1.1.0.v20080225 org.eclipse.epp.usagedata.gathering 1.0.0.R200806162215 com.instantiations.assist.eclipse.fragment.swt 5.5.1 org.eclipse.emf.cdo.server 1.0.0.v200806180411 org.eclipse.core.filesystem.win32.x86 1.1.0.v20080604-1400 org.eclipse.datatools.enablement.ibm.db2.zseries 1.0.0.v200805152355 com.windowtester.swt.platform.ext 3.5.1.200809042232 org.eclipse.birt.chart.examples 2.3.0.v20080612 org.eclipse.gmf.bridge.ui 1.1.100.v20080417-1610 org.eclipse.emf.doc 2.4.0.v200806091234 org.eclipse.emf.ecoretools.diagram 0.8.0.v200806130600 org.eclipse.ecf.provider.filetransfer.efs 1.5.0.v20080623-0046 org.eclipse.mylyn.commons.net 3.0.0.v20080619-1900 org.python.pydev.core 1.2.8 org.eclipse.datatools.modelbase.dbdefinition 1.0.0.v200805152355 javax.management.remote 1.0.0.v200803061811 org.eclipse.net4j.util 1.0.0.v200806180305 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.0 org.eclipse.ui.navigator.resources 3.3.100.I20080606-1300 org.apache.lucene.analysis 1.9.1.v20080530-1600 org.python.pydev.jython 1.3.5 org.eclipse.m2m.atl.adt.builder 2.0.0.v200806101117 org.eclipse.mylyn.monitor.core 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.2.7 com.instantiations.eclipse.mail.ui 5.5.0 org.eclipse.tptp.platform.models.lta 4.5.0.v200805132041 org.eclipse.mylyn.commons.core 3.0.1.v20080721-2100-e3x org.eclipse.team.svn.nl1 0.7.1.I20080612-1500 org.eclipse.birt.report.data.oda.jdbc.dbprofile.ui 2.3.0.v20080606 org.eclipse.pde 3.4.0.v20080603 org.eclipse.net4j.jms.server.jdbc 1.0.0.v200806180305 org.eclipse.pde.doc.user 3.3.0.v20080611-1530 org.eclipse.core.runtime.compatibility.auth 3.2.100.v20070502 org.eclipse.tptp.platform.iac.administrator 4.4.100.v200806120100 org.eclipse.emf.importer.ecore 2.4.0.v200806091234 org.eclipse.equinox.jmx.client.xmlrpc 1.0.0.v20070515 org.eclipse.equinox.jmx.common 1.0.0.v20070510 org.eclipse.datatools.enablement.ibm.informix.ui 1.0.0.v200805160737 com.instantiations.installer 2.5.1 org.eclipse.hyades.lta.logging.parsers 4.5.0.v200805271330 org.eclipse.uml2.diagram.profile 0.8.0.v200806112132 org.eclipse.datatools.enablement.jdt.classpath 1.0.1.v200805152355 org.eclipse.emf.validation.ocl.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.net4j.buddies 1.0.0.v200806180305 net.sourceforge.lpg.lpgjavaruntime 1.1.0.v200803061910 org.eclipse.emf.ecore.editor 2.4.0.v200806091234 org.apache.commons.lang 2.3.0.v200803061910 org.eclipse.ocl.uml 1.2.0.v200805130238 org.eclipse.emf.mapping.ecore2ecore 2.4.0.v200806091234 com.swtdesigner.fragment.jdt.core 6.7.0.200806270151 org.eclipse.ecf.provider.xmpp 2.0.0.v20080623-0046 org.eclipse.wst.common.modulecore 1.1.201.v200808071700 org.eclipse.mylyn.jira.ui 3.0.2.v20080918-1100-e3x org.eclipse.draw2d.doc.isv 3.4.0.v20080606 org.python.pydev.core 1.3.2 org.eclipse.mylyn.compatibility 3.0.0.v20080619-1900 org.eclipse.buckminster.maven 1.1.0.r09319 org.eclipse.buckminster.cmdline 1.0.0.r09319 org.apache.batik.css 1.6.0.v200805290154 org.eclipse.ecf.telephony.call.ui 1.2.0.v20080623-0046 org.eclipse.wst.common.emfworkbench.integration 1.1.200.v200805140020 org.python.pydev 1.0.1 org.eclipse.datatools.enablement.ibm.db2.luw.dbdefinition 1.0.0.v200805152355 org.eclipse.team.svn.resource.ignore.rules.jdt.source 0.7.1.I20080612-1500 org.eclipse.ecf.server 1.3.0.v20080623-0046 org.python.pydev 1.2.5 org.python.pydev.core 1.2.1 org.eclipse.datatools.sqltools.sqlscrapbook 1.0.0.v200806021003 org.eclipse.birt.chart.reportitem 2.3.0.v20080610 org.eclipse.uml2.diagram.codegen 0.8.0.v200806112132 org.eclipse.xsd.edit 2.4.0.v200806091234 org.eclipse.buckminster.opml 1.0.0.r09319 org.python.pydev.parser 1.3.5 org.eclipse.gmf.runtime.diagram.ui 1.1.0.v20080610-1132 org.eclipse.ocl.source 1.2.0.v200805130238-34-9oA55S5I6M7JBK com.windowtester.eclipse.ui 3.5.0.200806270034 org.eclipse.tptp.platform.agentcontroller 4.2.200.v200806162043 org.python.pydev 1.3.11 org.eclipse.datatools.connectivity.apache.derby.ui 1.0.0.v200805160737 org.eclipse.datatools.sqltools.routineeditor 1.0.0.v200805261703 org.eclipse.wst.xsd.ui 1.2.102.v200808141745 org.eclipse.equinox.http 1.0.200.v20080421-2006 org.jivesoftware.smack 2.2.1 org.eclipse.mylyn.compatibility 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.java.ui 3.0.0.v20080619-1900 org.eclipse.core.variables 3.2.100.v20080529-1300 org.python.pydev.jython 1.3.13 org.python.pydev.parser 1.3.20 org.eclipse.tptp.platform.models.hierarchy 4.5.0.v200806120100 org.eclipse.ecf.examples.updatesite.client 1.0.100.v20080623-0046 org.eclipse.datatools.enablement.msft.sqlserver.ui 1.0.0.v200805160737 org.eclipse.datatools.enablement.mysql 1.0.0.v200805152355 org.eclipse.jdt.debug 3.4.0.v20080604 org.antlr.runtime 3.0.0.v200803061811 org.python.pydev.parser 1.2.7 org.eclipse.hyades.execution 4.4.200.v200806120100 org.eclipse.ecf.provider.ui 1.3.0.v20080623-0046 org.eclipse.birt.chart.cshelp 2.3.0.v20080616 org.eclipse.buckminster.p4.ui 1.0.0.r09319 org.python.pydev 1.3.15 org.eclipse.datatools.enablement.ibm.ui 1.0.0.v200805152355 org.eclipse.buckminster.sax 1.0.0.r09175 org.eclipse.equinox.supplement 1.1.0.v20080421-2006 org.eclipse.wst.common.frameworks 1.1.200.v200805140020 org.eclipse.mylyn 3.0.2.v20080918-1100-e3x org.eclipse.gmf.map 2.1.0.v20080521 org.eclipse.wst.standard.schemas 1.0.101.v200806010600 org.python.pydev.ast 1.0.3 org.eclipse.m2m.qvt.oml.runtime 1.0.0.v20080611-1330 org.eclipse.mylyn.ide.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.sqltools.sqlbuilder 1.0.0.v200806070500 org.eclipse.datatools.modelbase.derby 1.0.0.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.0 org.eclipse.emf.compare.ui 0.8.0.v200806180301 org.eclipse.ecf.provider.filetransfer.scp 2.0.0.v20080623-0046 org.eclipse.uml2.search.ocl.ui 0.7.0.v200806130939 org.eclipse.mylyn.context.ui 3.0.1.v20080721-2100-e3x org.python.pydev.templates 1.3.20 org.eclipse.gmf.runtime.diagram.ui.resources.editor 1.1.0.v20080425-1959 org.eclipse.gmf.examples.ui.pde 1.0.200.v20080425-1959 org.eclipse.buckminster.installer 1.0.0.r09319 org.eclipse.m2m.atl.examples 2.0.0.v200806101117 org.eclipse.datatools.modelbase.sql.xml.query 1.0.0.v200805152355 org.eclipse.emf.search.doc 0.7.0.v200806130939 org.eclipse.datatools.enablement.oracle.dbdefinition 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.0 javax.xml.bind 2.0.0.v200803061811 org.apache.xmlrpc 3.0.0.v20080530-1550 org.eclipse.ui.views.log 1.0.0.v20080522-2200 org.python.pydev.core 1.3.10 org.eclipse.ecf.examples.updatesite.server 1.0.100.v20080623-0046 org.eclipse.birt.core.ui 2.3.0.v20080515 org.eclipse.core.filebuffers 3.4.0.v20080603-2000 org.eclipse.mylyn.team.ui 3.0.1.v20080721-2100-e3x org.eclipse.wst.command.env 1.0.306.v200807231700 org.eclipse.team.cvs.ssh2 3.2.200.I20080604 org.eclipse.emf.search.ecore.ocl.ui 0.7.0.v200806130939 org.eclipse.ecf.example.collab.editor 1.0.200.v20080623-0046 org.eclipse.ecf.provider.jslp 2.0.0.v20080623-0046 org.eclipse.datatools.sqltools.result 1.0.0.v200805301309 org.eclipse.emf.teneo.jpox 1.0.0.v200806111928 org.eclipse.gmf.runtime.emf.clipboard.core 1.1.0.v20080425-1959 com.instantiations.eclipse.ast.editor 5.5.0 org.eclipse.mylyn.tasks.bugs 3.0.2.v20080918-1100-e3x org.eclipse.jsch.core 1.1.100.I20080604 org.eclipse.pde.core 3.4.0.v20080604-2000 org.python.pydev 0.9.4 org.python.pydev.jython 1.3.0
+* toolingorg.eclipse.equinox.p2.reconciler.dropins 1.0.0.v20080611 requires either org.python.pydev.core 0.9.7 org.eclipse.m2m.qvt.oml.trace.edit 1.0.0.v20080611-1330 org.eclipse.emf.codegen.ecore 2.4.0.v200806091234 org.eclipse.uml2.common.edit 1.4.0.v200805131030 org.eclipse.core.runtime 3.4.0.v20080512 org.python.pydev.core 1.3.9 javax.xml.soap 1.2.0.v200806030421 org.eclipse.gmf.runtime.common.ui.action.ide 1.1.0.v20080425-1959 org.eclipse.emf.cdo.edit 1.0.0.v200806180411 org.eclipse.ecf.provider.msn 1.2.0.v20080623-0046 org.eclipse.equinox.frameworkadmin.equinox 1.0.0.v20080529-1225 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.1 org.eclipse.equinox.http.servletbridge 1.0.0.v20080427-0830 org.python.pydev 0.9.5 org.python.pydev.parser 1.2.3 org.eclipse.emf.example.installer 1.0.0.v200806091234 com.instantiations.assist.eclipse 5.5.0 org.eclipse.wst.common.environment 1.0.201.v200805140020 org.eclipse.zest.source 1.0.0.v20080115-53-8xB4CE899O274A org.eclipse.emf.ant 2.4.0.v200806091234 com.instantiations.eclipse.mail 5.5.1 org.python.pydev.parser 1.3.1 org.eclipse.birt.chart.engine 2.3.0.v20080606 org.eclipse.core.resources 3.4.0.v20080604-1400 org.eclipse.birt.report.engine.emitter.postscript 2.3.0.v20080610 org.python.pydev.jython 1.1.0 org.eclipse.ui.workbench.compatibility 3.2.0.I20080509-2000 com.nordea.cd.dev.plugin.builderruntime 1.0.0 org.eclipse.m2m.atl.adt.editor 2.0.0.v200806101117 org.eclipse.equinox.p2.director.app 1.0.0.v20080604 org.eclipse.mylyn.tasks.core 3.0.0.v20080619-1900 org.python.pydev.ast 1.0.4 org.eclipse.m2m.atl.compilers.atl2006 2.0.0.v200806101117 org.eclipse.datatools.enablement.sybase.asa.ui 1.0.1.v200805310538 org.eclipse.emf.mapping.ecore2xml.ui 2.4.0.v200806091234 org.eclipse.wst.dtd.ui 1.0.301.v200808072012 org.eclipse.birt.chart.engine.extension 2.3.0.v20080611 org.eclipse.jface.databinding 1.2.0.I20080515-2000a org.eclipse.birt.chart.reportitem.ui 2.3.0.v20080610 org.eclipse.datatools.enablement.hsqldb.ui 1.0.0.v200805152355 org.eclipse.mylyn.ide.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.security.ui 1.0.0.v20080603-1810 org.eclipse.wst.common.emfworkbench.integration 1.1.201.v200808071700 org.eclipse.gmf.validate 1.1.0.v20080603-1553 org.eclipse.emf.mapping.ecore2ecore.editor 2.4.0.v200806091234 org.eclipse.ecf.provider.irc 1.3.0.v20080623-0046 org.eclipse.emf.validation.doc 1.2.0.v200805130238 org.python.pydev.ast 1.2.8 org.eclipse.emf.teneo.doc 1.0.0.v200806111928 org.python.pydev.jython 1.3.12 org.eclipse.emf.ecoretools.source 0.8.0.v200806130600 org.eclipse.equinox.p2.updatesite 1.0.0.v20080529-1800 org.eclipse.ecf.presence.bot 1.2.0.v20080623-0046 com.swtdesigner.properties.java5 1.0.0 org.eclipse.platform.doc.isv 3.4.0.v20080613-1330 org.python.pydev.core 1.2.3 org.eclipse.datatools.connectivity.db.generic 1.0.0.v200805152355 org.eclipse.uml2.diagram.clazz 0.8.0.v200806112132 org.eclipse.birt.report.designer.ui.views 2.3.0.v20080606 org.eclipse.mylyn.monitor.core 3.0.2.v20080918-1100-e3x com.instantiations.eclipse.debug 5.3.2.200806270030 org.eclipse.gmf.runtime.common.ui.action 1.1.0.v20080425-1959 org.eclipse.equinox.useradmin 1.1.0.v20080508-1815 org.eclipse.mylyn.commons.ui 3.0.2.v20080918-1100-e3x org.eclipse.equinox.cm 1.0.0.v20080509-1800 org.eclipse.uml2.diagram.component 0.8.0.v200806112132 org.eclipse.swt.layout.grouplayout 1.1.0 org.python.pydev 1.2.4 javax.servlet 2.4.0.v200806031604 org.eclipse.uml2.examples.uml.ui 2.2.0.v200805131030 org.python.pydev.ast 1.3.10 org.eclipse.birt.report.designer.ui.ide 2.3.0.v20080606 org.python.pydev.parser 1.3.18 com.swtdesigner.layout.group 6.7.0.200806270151 org.eclipse.m2m.qvt.oml.runtime.source 1.0.0.v20080611-1330-5--AgI99m9cDD4DNN9 org.eclipse.mylyn.tasks.ui 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.3.13 org.eclipse.emf.teneo.jpox.eclipse 1.0.0.v200806111928 org.eclipse.equinox.transforms.xslt 1.0.0.v20080610 org.python.pydev.core 1.0.7 org.eclipse.datatools.enablement.ibm.db2.zseries.ui 1.0.0.v200805160737 org.eclipse.mylyn.resources.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.enablement.oda.ws 1.1.0.v200805261930 org.eclipse.equinox.frameworkadmin 1.0.0.v20080430-1750 org.eclipse.birt.chart.device.extension 2.3.0.v20080424 org.eclipse.net4j.jvm 1.0.0.v200806180305 org.eclipse.emf.cdo.migrator 1.0.0.v200806180411 org.python.pydev.jython 1.3.1 org.eclipse.m2m.qvt.oml.cst.parser 1.0.0.v20080611-1330 com.xored.composer.ui 1.3.4.200809042225 org.eclipse.datatools.enablement.sybase.ui 1.0.0.v200806041138 org.eclipse.ecf.remoteservice.ui 2.0.0.v20080623-0046 org.eclipse.net4j.db.mysql 1.0.0.v200806180305 org.eclipse.update.scheduler 3.2.100.v20080404 org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide 1.1.0.v20080425-1959 org.eclipse.wst.dtdeditor.doc.user 1.0.400.v200805150028 org.eclipse.wst.xmleditor.doc.user 1.0.401.v200808071323 org.eclipse.gmf.runtime.common.ui.services.dnd 1.1.0.v20080425-1959 org.eclipse.uml2.common 1.4.0.v200805131030 org.apache.jasper 5.5.17.v200806031609 org.python.pydev 1.0.8 org.eclipse.datatools.doc.user 1.6.0.20080606124249 org.objectweb.asm 3.1.0.v200803061910 org.eclipse.emf.cdo.doc 1.0.0.v200806180411 org.python.pydev.core 1.3.17 org.eclipse.core.resources.compatibility 3.4.0.v20080604-1400 com.instantiations.eclipse.startup 5.3.2.200806270030 org.eclipse.datatools.connectivity.apache.derby.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.graphdef.codegen 2.0.100.v20080528-1052 org.eclipse.emf.common 2.4.0.v200806091234 org.eclipse.wst.xml.ui.infopop 1.0.300.v200805140200 org.python.pydev.core 1.3.0 org.eclipse.equinox.p2.touchpoint.natives 1.0.0.v20080505-1850 org.eclipse.ant.core 3.2.0.v20080529 org.eclipse.ui.workbench 3.4.0.I20080606-1300 org.eclipse.ecf.provider.xmpp.ui 2.0.0.v20080623-0046 org.w3c.sac 1.3.0.v20070710 org.python.pydev.jython 1.2.3 org.eclipse.mylyn.context.ui 3.0.0.v20080619-1900 org.eclipse.ecf.doc 1.3.0.v20080623-0046 org.eclipse.ecf.provider.bittorrent.ui 0.2.0.v20080623-0046 com.xored.swt.composer 1.3.4.200809042225 org.python.pydev.parser 1.0.4 org.eclipse.help.webapp 3.3.100.v20080528 org.eclipse.uml2.diagram.deploy 0.8.0.v200806112132 org.eclipse.ecf.provider.irc.ui 1.3.0.v20080623-0046 org.python.pydev 1.3.18 org.eclipse.m2m.atl.source 2.0.0.v200806101117 org.eclipse.mylyn.tasks.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.identity 2.0.0.v20080611-1715 org.eclipse.ocl.ecore 1.2.0.v200805130238 org.eclipse.core.expressions 3.4.0.v20080603-2000 org.eclipse.core.runtime.compatibility.registry 3.2.200.v20080610 org.eclipse.tptp.platform.la.core 4.3.200.v200805231116 org.eclipse.m2m.atl.service.core 2.0.0.v200806101117 org.apache.commons.logging 1.0.4.v20080605-1930 org.eclipse.platform.doc.user 3.4.0.v20080612-1340 com.windowtester.runtime.junit4 3.5.0.200806270034 org.python.pydev.parser 1.2.8 org.eclipse.uml2.examples.source 2.2.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.providers 1.1.0.v20080503-1740 org.python.pydev.jython 1.3.20 org.python.pydev.jython 1.0.7 org.eclipse.m2m.qvt.oml.common 1.0.0.v20080611-1330 org.eclipse.wst.sse.ui 1.1.0.v200806041847 org.eclipse.core.resources.win32.x86 3.4.0.v20071204 org.eclipse.swt.widgets.baseline 1.1.0 com.xored.swt.composer.win32.win32.x86 1.3.4.200809042225 org.eclipse.datatools.enablement.mysql.ui 1.0.0.v200805152355 org.eclipse.m2m.atl.ocl.core 2.0.0.v200806101117 org.eclipse.emf.codegen.ecore.ui 2.4.0.v200806091234 org.eclipse.equinox.http.servlet 1.0.100.v20080427-0830 org.python.pydev.ast 1.3.2 org.python.pydev 1.3.6 org.eclipse.birt.report.viewer 2.3.0.v20080606 org.apache.batik.extension 1.6.0.v200805290154 org.eclipse.uml2.diagram.statemachine 0.8.0.v200806112132 org.python.pydev.parser 1.3.10 org.eclipse.equinox.p2.ui.admin.rcp 1.0.0.v20080604 org.eclipse.emf.compare.match 0.8.0.v200806180301 org.eclipse.datatools.enablement.oracle.ui 1.0.0.v200805240040 org.python.pydev 0.7.1 com.lowagie.itext 1.5.4.v20080228 org.eclipse.birt.report.designer.ui.preview.web 2.3.0.v200806102 org.eclipse.birt.report.designer.ui.samples.ide 2.3.0.v20080606 org.eclipse.xsd.ecore.converter 2.4.0.v200806091234 org.eclipse.jdt.compiler.tool 1.0.100.v_874 org.eclipse.equinox.registry 3.4.0.v20080516-0950 org.eclipse.wst.dtd.ui.infopop 1.0.300.v200805140200 org.python.pydev.ast 0.9.5 org.eclipse.ui.workbench.texteditor 3.4.0.v20080603-2000 org.eclipse.cvs 1.0.100.v20080603 org.eclipse.uml2.search.ui 0.7.0.v200806130939 org.eclipse.gmf.common 1.1.1.v20080610-1132 org.eclipse.uml2.uml.editor 2.2.0.v200805131030 org.eclipse.m2m.atl.engine 2.0.0.v200806101117 org.eclipse.net4j.http.common 1.0.0.v200806180305 org.eclipse.ecf.presence.ui 1.2.0.v20080623-0046 org.python.pydev.parser 1.2.2 org.eclipse.emf.cdo.tests.model3.edit 1.0.0.v200806180411 org.eclipse.emf.cdo.tests.model1 1.0.0.v200806180411 org.eclipse.m2m.atl.engine.vm 2.0.0.v200806101117 com.instantiations.eclipse.mail 5.5.0 org.eclipse.emf.ocl.source 1.1.100.v200805130238-108Y7w311916241349 com.windowtester.swt.runtime.legacy 3.5.1.200809042232 org.eclipse.uml2tools 0.8.0.v200806112132 org.eclipse.emf.search.genmodel.ui 0.7.0.v200806130939 org.eclipse.mylyn.jira.core 3.0.2.v20080918-1100-e3x org.eclipse.uml2.uml.ecore.importer 2.2.0.v200805131030 org.eclipse.emf.transaction.doc 1.2.0.v200805130238 org.eclipse.tptp.platform.logging.events 4.3.200.v200805310100 org.python.pydev.core 1.3.8 org.eclipse.xsd.ecore.importer 2.4.0.v200806091234 org.eclipse.emf.teneo.source 1.0.0.v200806111928-78--DUUEFDEz0MMNLVD org.eclipse.uml2 2.1.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.render 1.1.0.v20080603-1553 com.windowtester.swt.runtime.os.win32 3.5.0.200806270034 org.eclipse.rcp 3.4.0.v20080507 org.eclipse.xsd.mapping 2.4.0.v200806091234 org.eclipse.emf.workspace.doc 1.2.0.v200805130238 org.eclipse.pde.api.tools 1.0.0.v20080529-1150 org.eclipse.emf.mapping.ecore2xml 2.4.0.v200806091234 org.eclipse.swt.win32.win32.x86 3.4.0.v3448f org.apache.derby 10.1.2.1_v200803061811 org.eclipse.m2m.qvt.oml.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.python.pydev.parser 1.3.0 org.eclipse.ecf.protocol.msn 1.2.0.v20080623-0046 com.instantiations.eclipse.ui 5.3.2.200809042027 org.eclipse.jet.core 1.1.0.v20080415 org.eclipse.datatools.enablement.sybase.ase.models 1.0.1.v200805152355 com.nordea.cd.dev.plugin.builderruntime 1.0.1 com.instantiations.assist.eclipse.core 5.5.0 org.python.pydev.ast 1.0.5 org.eclipse.ecf.filetransfer 2.0.0.v20080611-1715 org.python.pydev.parser 0.9.5 org.python.pydev.core 1.2.2 org.eclipse.emf.transaction.ui 1.2.0.v200805130238 org.eclipse.gmf.runtime.gef.ui 1.1.0.v20080503-1740 org.eclipse.wst.xml.core 1.1.301.v200808072008 org.eclipse.uml2.diagram.clazz.search 0.7.0.v200806130939 org.sat4j.core 2.0.0.v20080602 org.eclipse.datatools.connectivity.ui 1.1.0.v200806040132 org.eclipse.birt.report.designer.ui.editors 2.3.0.v20080610a org.eclipse.equinox.p2.reconciler.dropins 1.0.0.v20080611 org.eclipse.wst.common.project.facet.core 1.3.1.v200807031821 org.python.pydev.jython 1.3.11 org.eclipse.datatools.enablement.postgresql 1.0.1.v200805152355 org.eclipse.ltk.ui.refactoring 3.4.0.v20080605-1800 org.eclipse.datatools.enablement.sybase.ase 1.0.1.v200806040735 org.python.pydev.ast 1.2.9 org.eclipse.datatools.connectivity.oda 3.1.2.v200805152355 org.eclipse.wst.common.emf 1.1.201.v200808071700 org.apache.batik.dom.svg 1.6.0.v200805290154 org.eclipse.birt.chart 2.3.0.v20080304 org.python.pydev.jython 1.2.9 org.python.pydev.ast 1.3.11 org.eclipse.datatools.enablement.mysql.dbdefinition 1.0.1.v200805170742 org.python.pydev.parser 1.3.19 org.python.pydev.core 1.0.6 org.eclipse.uml2.diagram 0.8.0.v200806112132 org.eclipse.jdt.junit4.runtime 1.0.200.v20080603-2000 org.python.pydev.ast 1.3.12 org.eclipse.swt 3.4.0.v3448f org.eclipse.emf.ecoretools.diagram.search 0.7.0.v200806130939 org.eclipse.pde.ui.templates 3.4.0.v20080514-1500 com.instantiations.packager.ui 2.5.1 org.eclipse.emf.cdo.server.db 1.0.0.v200806180411 org.eclipse.datatools.enablement.sybase.asa 1.0.1.v200805310538 org.eclipse.emf.compare 0.8.0.v200806180301 org.eclipse.datatools.enablement.oda.ws.ui 1.1.0.v200805261930 org.eclipse.jdt.launching 3.4.0.v20080529-1300 org.eclipse.mylyn.tasks.ui 3.0.0.v20080619-1900 org.apache.ws.jaxme 0.5.1.v20080530-1550 org.eclipse.mylyn.bugzilla.ui 3.0.0.v20080619-1900 org.apache.commons.el 1.0.0.v200806031608 org.python.pydev 1.2.3 org.w3c.dom.smil 1.0.0.v200806040011 org.eclipse.wst.validation.infopop 1.0.300.v200806041506 org.python.pydev 1.0.7 org.eclipse.net4j.source 1.0.0.v200806180305 org.eclipse.m2m.qvt.oml.ocl 1.0.0.v20080611-1330 org.eclipse.uml2.uml.edit 2.2.0.v200805131030 org.eclipse.emf.search.ui 0.7.0.v200806130939 org.python.pydev.core 1.3.16 org.eclipse.emf.validation.ui 1.2.0.v200805130238 org.eclipse.datatools.enablement.oda.xml 1.1.0.v200805270900 org.eclipse.ltk.core.refactoring 3.4.0.v20080603-2000 org.python.pydev.jython 1.3.2 com.windowtester.swt.codegen 3.5.0.200806270034 org.eclipse.datatools.sqltools.ddlgen.ui 1.0.0.v200805152355 org.apache.xerces 2.9.0.v200805270400 org.eclipse.birt.report.engine.dataextraction 2.3.0.v20080611 org.eclipse.equinox.jmx.vm 1.0.0.v20070515 org.eclipse.birt.report.data.oda.jdbc.ui 2.3.0.v20080606 org.eclipse.equinox.ds 1.0.0.v20080427-0830 org.eclipse.mylyn.bugzilla.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.http.jetty 2.0.0.v20080425 org.eclipse.mylyn.team.ui 3.0.2.v20080918-1100-e3x org.python.pydev.jython 1.2.4 org.eclipse.birt.chart.device.svg 2.3.0.v20080526 org.python.pydev.parser 1.0.5 org.eclipse.ui.presentations.r21 3.2.100.I20080512-2000 org.eclipse.mylyn 3.0.0.v20080619-1900 org.eclipse.m2m.qvt.oml.doc 1.0.0.v20080611-1330 org.eclipse.team.svn.nl1.sources 0.7.1.I20080612-1500 org.eclipse.mylyn.resources.ui 3.0.0.v20080619-1900 org.eclipse.datatools.enablement.ibm.db2.luw 1.0.0.v200805152355 org.python.pydev.core 1.3.1 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.1 org.eclipse.ecf.provider.filetransfer 2.0.0.v20080611-1715 org.eclipse.emf.cdo.tests.mango.edit 1.0.0.v200806180411 org.python.pydev.parser 1.2.9 org.eclipse.m2m.qvt.oml.emf.util 1.0.0.v20080611-1330 org.eclipse.team.cvs.ssh 3.2.100.I20080604 org.python.pydev.jython 1.3.19 org.python.pydev.jython 1.0.8 org.python.pydev.ast 1.2.1 org.eclipse.m2m.qvt.oml.project 1.0.0.v20080611-1330 com.instantiations.assist.eclipse.core.ui 5.5.1 org.eclipse.datatools.enablement.ibm.db2.zseries.dbdefinition 1.0.0.v200805152355 org.eclipse.datatools.enablement.ibm.db2.iseries 1.0.0.v200805152355 com.swtdesigner.fragment.jdt.core 6.7.1.200809050053 org.eclipse.equinox.device 1.0.1.v20080303 org.eclipse.equinox.http.jetty 1.1.0.v20080425 org.eclipse.emf.cdo.tests.model3 1.0.0.v200806180411 org.eclipse.emf.teneo.hibernate.mapper 1.0.0.v200806111928 org.eclipse.compare 3.4.0.I20080604 org.polarion.eclipse.team.svn.connector.javahl 2.0.1.I20080612-1500 org.eclipse.gmf.runtime.diagram.ui.geoshapes 1.1.0.v20080503-1740 org.eclipse.emf.mint.ui 0.7.0.v200806172223 org.eclipse.ui.win32 3.2.100.v20080408-0800 org.eclipse.jet.source 0.9.0.v20080516 org.python.pydev 1.3.17 com.windowtester.runtime.junit4 3.5.1.200809042232 org.eclipse.ecf.examples.remoteservices.server 1.0.100.v20080623-0046 org.eclipse.text 3.4.0.v20080605-1800 org.eclipse.uml2.diagram.common 0.8.0.v200806112132 org.eclipse.datatools.connectivity.sqm.core.ui 1.1.0.v200806070326 org.python.pydev.core 0.9.7.99 org.eclipse.net4j.jms 1.0.0.v200806180305 org.junit4 4.3.1 org.eclipse.epp.usagedata.recording 1.0.0.R200806162215 org.eclipse.buckminster.remote 1.0.0.r09326 org.eclipse.gmf.tooling 2.1.0.v20080425-1959 org.eclipse.emf.cdo.tests.model2 1.0.0.v200806180411 org.eclipse.emf.ecore.sdo.editor 2.4.0.v200806091234 com.instantiations.swt.graph 5.5.0 org.eclipse.uml2.search 0.7.0.v200806130939 org.python.pydev 1.3.5 org.python.pydev.ast 1.3.3 org.eclipse.datatools.enablement.msft.sqlserver 1.0.1.v200805152355 org.python.pydev.parser 1.3.11 org.eclipse.datatools.enablement.sap.maxdb.dbdefinition 1.0.0.v200805152355 com.windowtester.swing.recorder 3.5.0.200806270034 org.eclipse.gmf.runtime.common.ui.printing.win32 1.1.0.v20080612-1355 org.python.pydev.ast 1.3.20 org.eclipse.wst.common.snippets 1.1.200.v200805140415 org.eclipse.mylyn.commons.core 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.tasks.core 3.0.2.v20080918-1100-e3x org.eclipse.jdt.doc.user 3.4.0.v20080612-1340 org.eclipse.birt.chart.ui 2.3.0.v20080522 org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb 2.3.0.v20080606 org.eclipse.uml2.diagram.examples.clazz 0.8.0.v200806112132 org.eclipse.ecf.provider.msn.ui 1.3.0.v20080623-0046 org.python.pydev.parser 1.3.3 org.eclipse.ui.ide.application 1.0.0.I20080603-2000 org.python.pydev.ast 1.0.6 org.eclipse.equinox.jsp.jasper.registry 1.0.0.v20080427-0830 org.eclipse.equinox.p2.engine 1.0.0.v20080522-1735 com.nordea.cd.dev.plugin.builderruntime 1.0.2 com.instantiations.assist.eclipse.core 5.5.1 org.eclipse.m2m.qvt.oml 1.0.0.v20080611-1330 org.eclipse.mylyn.commons.ui 3.0.1.v20080721-2100-e3x org.eclipse.update.core.win32 3.2.100.v20080107 org.eclipse.datatools.sqltools.db.derby 1.0.0.v200805152355 com.instantiations.assist.eclipse.admin 5.5.0 org.eclipse.ecf.telephony.call 1.2.0.v20080623-0046 org.eclipse.mylyn.monitor.core 3.0.0.v20080619-1900 org.eclipse.epp.usagedata.ui 1.0.0.R200806162215 org.eclipse.ui.ide 3.4.0.I20080606-1300 org.eclipse.hyades.lta.sdb 4.5.0.v200806051823 org.eclipse.birt.report.model.adapter.oda 2.3.0.v20080523 org.eclipse.emf.compare.doc 0.8.0.v200806180301 org.eclipse.equinox.servletbridge 1.0.100.v20080427-0830 com.instantiations.common.help 5.3.2.200809042027 org.eclipse.jdt.core 3.4.0.v_874 org.eclipse.equinox.p2.director 1.0.0.v20080604 org.eclipse.gmf.runtime.emf.ui.properties 1.1.0.v20080425-1959 org.eclipse.emf.exporter 2.4.0.v200806091234 org.python.pydev.core 1.3.7 org.eclipse.uml2.diagram.def 0.8.0.v200806112132 org.python.pydev.parser 1.2.1 org.eclipse.wst.command.env.ui 1.1.0.v200805140415 org.eclipse.wst.common.modulecore 1.1.200.v200806091800 org.python.pydev 0.9.7 org.eclipse.gmf.graphdef.edit 2.0.100.v20080610-1132 org.eclipse.birt.report.designer.ui.cubebuilder 2.3.0.v20080606 org.eclipse.m2m.atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.actions 1.1.0.v20080603-1553 com.instantiations.common.core 5.3.2.200806270030 org.eclipse.datatools.enablement.ibm.informix 1.0.0.v200805152355 org.eclipse.net4j.tcp 1.0.0.v200806180305 org.eclipse.wst.common.environment 1.0.202.v200807161459 com.instantiations.common.core 5.3.2.200809042027 org.eclipse.birt.report.data.oda.xml 2.3.0.v20080606 org.eclipse.pde.api.tools.ui 1.0.0.v20080603 org.eclipse.debug.ui 3.4.0.v20080529-1300 org.python.pydev 1.2.2 org.eclipse.team.svn.ui.nl1 0.7.1.I20080612-1500 org.apache.batik.transcoder 1.6.0.v200805290154 org.eclipse.emf.ecore.sdo.edit 2.4.0.v200806091234 org.python.pydev.parser 1.3.16 org.eclipse.wst.command.env.ui 1.1.1.v200807162242 org.eclipse.uml2.diagram.codegen.edit 0.8.0.v200806112132 org.eclipse.datatools.connectivity.db.generic.ui 1.0.1.v200805152355 org.eclipse.mylyn.resources.ui 3.0.2.v20080918-1100-e3x org.python.pydev.ast 1.3.8 org.python.pydev 1.3.0 org.eclipse.net4j.db 1.0.0.v200806180305 org.python.pydev.ast 1.3.15 org.eclipse.uml2.codegen.ecore 1.4.0.v200805201126 org.eclipse.gmf.sdk 1.0.0.v20080425-1959 org.eclipse.equinox.p2.core 1.0.0.v20080530-1237 org.python.pydev.jython 1.3.10 org.eclipse.emf.cdo 1.0.0.v200806180411 org.eclipse.emf.search.genmodel 0.7.0.v200806130939 org.eclipse.ui.navigator 3.3.100.I20080606-1300 org.eclipse.team.svn.mylyn 0.7.1.I20080612-1500 org.python.pydev.core 1.2.5 org.eclipse.tptp.platform.lta.la.core 4.5.0.v200805132041 org.eclipse.wst.sse.core 1.1.301.v200808072008 org.eclipse.tptp.platform.lta.log.views 4.5.0.v200806051823 org.eclipse.mylyn.java.ui 3.0.2.v20080918-1100-e3x org.eclipse.emf.search.codegen 0.7.0.v200806130939 com.instantiations.common.ui 5.3.2.200806270030 org.eclipse.ecf 2.0.0.v20080611-1715 org.eclipse.equinox.p2.ui.sdk 1.0.0.v20080605-1731 org.apache.commons.discovery 0.2.0.v200806030120 org.eclipse.datatools.help 1.5.0.v200805152355 org.python.pydev.parser 0.9.7.99 org.w3c.css.sac 1.3.0.v200805290154 org.eclipse.jet.examples 0.9.0.v20080211 org.eclipse.mylyn.bugzilla.ide 3.0.2.v20080918-1100-e3x org.eclipse.pde.junit.runtime 3.4.0.v20080529-1800 org.eclipse.emf.commonj.sdo 2.4.0.v200806091234 org.python.pydev.jython 1.2.1 com.instantiations.tools 5.3.2.200806270030 com.windowtester.runtime 3.5.1.200809042232 org.eclipse.wst.validation 1.2.0.v200806051402 org.eclipse.ecf.docshare 2.0.0.v20080623-0046 com.instantiations.eclipse.model.jsp 5.5.1 org.eclipse.emf.teneo.hibernate.eclipse 1.0.0.v200806111928 com.jcraft.jsch 0.1.37.v200803061811 org.python.pydev.parser 1.0.6 org.eclipse.emf.converter 2.4.0.v200806091234 org.eclipse.equinox.common 3.4.0.v20080421-2006 org.eclipse.buckminster.ui 1.0.0.r09319 org.eclipse.datatools.sqltools.tablewizard 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.0 org.eclipse.uml2.source 2.2.0.v200805201126 org.eclipse.team.cvs.ui 3.3.100.I20080604 org.python.pydev.jython 1.3.3 org.eclipse.emf.search.ocl 0.7.0.v200806130939 org.eclipse.datatools.enablement.sybase.asa.models 1.0.0.v200805152355 org.eclipse.sdk 3.4.0.v200806172000 org.eclipse.xsd.ecore.exporter 2.4.0.v200806091234 org.apache.commons.codec 1.3.0.v20080530-1600 org.eclipse.equinox.p2.exemplarysetup 1.0.0.v20080427-2136 org.eclipse.equinox.io 1.0.0.v20080218 org.eclipse.wst.common.project.facet.core 1.3.0.v200805140020 org.eclipse.wst.common.ui 1.1.301.v200805140415 org.eclipse.emf.databinding.edit 1.0.0.v200806091234 org.mortbay.jetty.server 6.1.7.v200806031612 org.eclipse.wst.dtd.core 1.1.200.v200805140200 org.python.pydev 1.0.6 org.eclipse.uml2.diagram.activity 0.8.0.v200806112132 org.eclipse.emf.importer.rose 2.4.0.v200806091234 org.eclipse.core.net.win32.x86 1.0.0.I20080521 javax.activation 1.1.0.v200804101140 org.python.pydev.core 1.3.15 org.python.pydev.parser 1.3.8 com.instantiations.assist.eclipse.coverage.ui 5.5.1.200809042337 org.eclipse.emf.ecoretools.filters 0.8.0.v200806130600 org.python.pydev.ast 1.3.0 org.eclipse.birt.report.data.oda.xml.ui 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase 1.0.1.v200805310538 org.python.pydev 1.3.8 org.eclipse.equinox.ip 1.0.0.v20080218 org.eclipse.datatools.connectivity.console.profile 1.0.0.v200805231345 org.eclipse.ecf.sharedobject 1.3.0.v20080623-0046 org.eclipse.debug.core 3.4.0.v20080612 org.eclipse.wst.xmleditor.doc.user 1.0.400.v200805211530 org.eclipse.datatools.enablement.sap.maxdb 1.0.0.v200805152355 org.python.pydev.ast 0.9.7 com.windowtester.swt.runtime.legacy 3.5.0.200806270034 org.eclipse.equinox.simpleconfigurator.manipulator 1.0.0.v20080427-2136 org.eclipse.equinox.p2.touchpoint.eclipse 1.0.0.v20080529-1225 com.instantiations.swt.graph 5.5.1 org.eclipse.gmf.doc 1.2.0.v20080516-1143 org.python.pydev 1.3.20 com.windowtester.swing.runtime 3.5.1.200809042232 org.eclipse.datatools.enablement.ibm.db2.iseries.ui 1.0.0.v200805160737 org.eclipse.datatools.connectivity.oda.profile 3.0.6.v200805152355 org.eclipse.mylyn.pde.ui 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.commons.ui 3.0.0.v20080619-1900 org.eclipse.emf.workspace.source 1.2.0.v200805130238-23-8s733I3C59379I org.eclipse.core.boot 3.1.100.v20080218 org.python.pydev.ast 1.2.2 org.eclipse.birt.doc 2.3.0.v20080617a com.instantiations.assist.eclipse.core.ui 5.5.0 org.python.pydev.jython 1.3.18 org.python.pydev.jython 1.0.5 org.eclipse.emf.validation 1.2.0.v200805170232 org.eclipse.equinox.jmx.client.rmi 1.0.0 org.eclipse.emf.mapping.ecore 2.4.0.v200806091234 com.instantiations.assist.eclipse.coverage 5.5.1.200809042337 com.instantiations.helpeditor.ui 1.3.4.200806270212 org.eclipse.emf.edit.ui 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editor.script 2.3.0.v200806102 org.eclipse.gmf.ecore.editor 2.0.100.v20080610-1132 com.windowtester.swt.recorder 3.5.1.200809042232 org.eclipse.uml2.diagram.source 0.8.0.v200806112132 org.eclipse.equinox.util 1.0.0.v20080414 org.eclipse.ecf.examples.source 2.0.0.v20080623-0046 org.eclipse.emf.mapping.xsd2ecore.editor 2.4.0.v200806091234 org.eclipse.pde.p2.ui 1.0.0.v20080604-2000 org.eclipse.birt.resources 2.3.0.v20080313 org.eclipse.emf.query.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.emf.ecore.change.edit 2.4.0.v200806091234 org.eclipse.datatools.sqltools.editor.core 1.0.0.v200805152355 org.polarion.eclipse.team.svn.connector.svnkit 2.0.1.I20080612-1500 org.eclipse.buckminster.download 1.1.0.r09319 com.swtdesigner 6.7.0.200806270151 org.python.pydev.parser 1.3.2 org.eclipse.jdt.compiler.apt 1.0.100.v20080513-1235 org.python.pydev.ast 1.0.7 com.windowtester.swt.gef.codegen 3.5.0.200806270034 org.eclipse.emf.ecore 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editors.schematic 2.3.0.v200806102 org.eclipse.pde.build 3.4.0.v20080604 com.instantiations.assist.eclipse 5.5.1 org.eclipse.birt.report.designer.ui.editor.xml.wtp 2.3.0.v200806102 org.eclipse.emf.cdo.tests.model1.edit 1.0.0.v200806180411 org.python.pydev 0.9.8 javax.xml 1.3.4.v200806030440 org.python.pydev 0.4.2 org.polarion.eclipse.team.svn.connector.javahl.win32 2.0.1.I20080612-1500 org.apache.ws.commons.util 1.0.0.v20080530-1550 org.apache.batik.bridge 1.6.0.v200805290154 org.eclipse.emf.search 0.7.0.v200806130939 org.eclipse.datatools.sqltools.parsers.sql.xml.query 1.0.0.v200805152355 org.eclipse.team.core 3.4.0.I20080605 org.eclipse.tptp.platform.execution 4.4.100.v200806050100 org.eclipse.uml2.diagram.parser 0.8.0.v200806112132 org.eclipse.birt.report.item.crosstab.core 2.3.0.v20080606 org.python.pydev.core 0.9.8 org.eclipse.uml2.search.common.ui 0.7.0.v200806130939 org.eclipse.mylyn.ide.ui 3.0.0.v20080619-1900 org.eclipse.xsd.cheatsheets 2.3.0.v200806091234 org.eclipse.wst.xsd.core 1.1.300.v200805282012 org.eclipse.net4j.http 1.0.0.v200806180305 org.python.pydev.core 1.3.6 org.eclipse.ui.externaltools 3.2.0.v20080514-1542 org.eclipse.birt.report.engine.emitter.prototype.excel 2.3.0.v20080606 org.python.pydev.parser 1.3.17 com.instantiations.eclipse.util 5.3.2.200806270030 org.eclipse.ui.editors 3.4.0.v20080603-2000 org.eclipse.buckminster.slf4j 1.0.0 org.python.pydev.ast 1.3.9 org.eclipse.gef.source 3.4.0.v20080115-677-8082A5696H274A org.python.pydev.core 1.0.8 org.python.pydev.ast 1.3.14 org.eclipse.team.ui 3.4.0.I20080604 org.eclipse.emf.query.ocl.source 1.2.0.v200805130238-11-7w311916241349 com.windowtester.swt.runtime 3.5.0.200806270034 org.eclipse.osgi.jmx 1.0.0.v20080610-1530 org.eclipse.net4j.examples.source 1.0.0.v200806180305 org.eclipse.tptp.monitoring.lta.symptom.doc.user 4.5.0.v200805132041 org.eclipse.equinox.p2.updatechecker 1.0.0.v20080427-2136 org.eclipse.ui.views 3.3.0.I20080509-2000 org.eclipse.emf.search.ocl.ui 0.7.0.v200806130939 javax.mail 1.4.0.v200804091730 ch.ethz.iks.slp 1.0.0.RC4_v200806091030 org.eclipse.core.resources.jmx 1.0.0.v20070510 javax.wsdl 1.4.0.v200806030407 org.eclipse.wst.xml.ui 1.0.401.v200807240448 org.python.pydev 1.2.1 org.eclipse.birt.chart.ui.extension 2.3.0.v20080610 org.python.pydev.core 0.9.8.3 org.python.pydev.parser 0.9.7 org.eclipse.jem.util 2.0.100.v200805140020 org.eclipse.tptp.monitoring.lta.la.core 4.5.0.v200805270100 org.python.pydev.core 0.9.8.2 org.eclipse.jdt.junit.runtime 3.3.0.v20080603-2000 org.python.pydev.core 1.2.4 org.python.pydev.core 0.9.8.1 org.eclipse.ecf.discovery 2.0.0.v20080623-0046 org.apache.xml.serializer 2.7.1.v200806030322 org.python.pydev.core 0.9.8.7 org.python.pydev.core 0.9.8.6 org.eclipse.gmf.runtime.draw2d.ui.render.awt 1.1.0.v20080603-1553 com.windowtester.eclipse.help 3.5.1.200809042232 org.python.pydev.core 0.9.8.5 org.python.pydev.core 0.9.8.4 org.python.pydev 0.9.8.7 org.eclipse.birt.report.engine.emitter.ppt 2.3.0.v20080606 org.apache.commons.httpclient 3.1.0.v20080605-1935 com.windowtester.runtime.legacy 3.5.0.200806270034 org.eclipse.datatools.enablement.oda.xml.ui 1.1.0.v200805270900 org.python.pydev 0.9.8.3 org.eclipse.mylyn.compatibility 3.0.2.v20080918-1100-e3x org.python.pydev 0.9.8.4 org.python.pydev 0.9.8.5 org.eclipse.wst.common.project.facet.ui 1.3.0.v200805281731 org.eclipse.gmf.tooldef 2.0.0.v20080417-1610 org.python.pydev 0.9.8.6 org.eclipse.core.commands 3.4.0.I20080509-2000 org.python.pydev.jython 1.3.9 org.eclipse.datatools.modelbase.sql.edit 1.0.0.v200805152355 org.python.pydev 0.9.8.2 org.python.pydev 0.9.8.1 org.eclipse.emf.cdo.server.hibernate.libraries 1.0.0.v200806180411 org.eclipse.equinox.p2.ui.admin 1.0.0.v20080522-1735 org.eclipse.wst.common.core 1.1.201.v200806010600 org.eclipse.emf.compare.diff.edit 0.8.0.v200806180301 com.swtdesigner.layout.group.designer 6.7.0.200806270151 org.eclipse.ui.views.properties.tabbed 3.4.0.I20080527-2000 org.python.pydev.jython 1.2.2 org.eclipse.wst.common.emf 1.1.200.v200805140020 com.instantiations.packager.refactoring 2.5.1 com.instantiations.assist.eclipse.fragment.jdt 5.5.1 org.eclipse.datatools.connectivity.dbdefinition.genericJDBC 1.0.0.v200805152355 org.python.pydev.parser 1.0.7 org.eclipse.datatools.sqltools.data.ui 1.1.0.v200805310400 org.eclipse.buckminster.core 1.1.0.r09336 org.eclipse.mylyn.tasks.core 3.0.1.v20080721-2100-e3x org.eclipse.birt.report.designer.ui.samplesview 2.3.0.v20080606 org.eclipse.equinox.launcher 1.0.100.v20080509-1800 org.eclipse.birt.report.item.crosstab.ui 2.3.0.v20080606 org.eclipse.m2m.atl.adt.perspective 2.0.0.v200806101117 javax.servlet.jsp 2.0.0.v200806031607 com.swtdesigner 6.7.1.200809050053 org.eclipse.jet.ui 0.9.0.v20080527 org.eclipse.m2m.qvt.oml.common.ui 1.0.0.v20080611-1330 com.swtdesigner.layout.group 6.7.1.200809050053 org.eclipse.gmf.runtime.common.ui.services.action 1.1.0.v20080507-2230 org.eclipse.emf.search.ecore.ui 0.7.0.v200806130939 org.python.pydev 1.0.5 org.eclipse.emf.workspace.ui 1.2.0.v200805130238 com.instantiations.helpeditor.core.toc 1.3.4.200809042225 org.slf4j.extendable 1.4.3 org.python.pydev.core 1.3.14 org.eclipse.hyades.logging.core 4.3.200.v200804110100 org.eclipse.datatools.enablement.postgresql.ui 1.0.0.v200806060334 org.eclipse.gmf.graphdef 2.0.100.v20080528-1052 org.eclipse.mylyn.help.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.protocol.bittorrent 0.3.0 org.eclipse.birt.report.engine 2.3.0.v20080616 org.eclipse.datatools.connectivity.ui.dse 1.1.0.v200805152355 org.eclipse.mylyn.bugzilla.core 3.0.0.v20080619-1900 org.python.pydev.jython 1.3.4 org.python.pydev 0.9.0 org.eclipse.equinox.preferences.jmx 1.0.0.v20070510 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.1 org.eclipse.datatools.enablement.postgresql.dbdefinition 1.0.0.v200805152355 org.eclipse.m2m.qvt.oml.common.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.eclipse.tptp.monitoring.lta.logui 4.5.0.v200805141427 org.eclipse.birt.report.debug.ui 2.3.0.v200806102 org.eclipse.gmf.runtime.emf.ui 1.1.0.v20080516-1748 org.eclipse.ui.cheatsheets 3.3.100.v20080508 org.python.pydev 1.2.9 org.eclipse.birt.report.engine.emitter.wpml 2.3.0.v20080606 org.eclipse.help.appserver 3.1.300.v20080507 org.python.pydev.parser 1.3.9 com.xored.composer.ui 1.3.4.200806270212 org.eclipse.datatools.sqltools.tabledataeditor 1.0.0.v200805240400 org.eclipse.gmf.runtime.emf.type.core 1.1.0.v20080425-1959 org.python.pydev 1.3.7 com.ibm.icu.base 3.8.1.v20080530 org.python.pydev.ast 1.3.1 org.apache.batik.pdf 1.6.0.v200806031500 org.eclipse.emf.mapping.ui 2.4.0.v200806091234 org.eclipse.net4j.db.derby 1.0.0.v200806180305 org.eclipse.net4j.http.server 1.0.0.v200806180305 org.python.pydev.jython 1.3.17 org.python.pydev.jython 1.0.6 org.python.pydev.ast 1.2.3 org.eclipse.team.svn.sources 0.7.1.I20080612-1500 org.eclipse.uml2.diagram.usecase 0.8.0.v200806112132 org.eclipse.wst.sse.core 1.1.300.v200805221633 org.eclipse.birt.report.designer.ui 2.3.0.v20080606 org.eclipse.jdt.apt.ui 3.3.100.v20080407-1345 com.instantiations.eclipse.debug 5.3.2.200809042027 org.eclipse.gmf.codegen.ui 1.1.0.v20080512-1200 com.instantiations.designer.databinding 6.7.1.200809050053 org.python.pydev.core 1.0.1 com.windowtester.swt.runtime.gef 3.5.0.200806270034 com.instantiations.common.ui 5.3.2.200809042027 org.python.pydev 1.3.19 org.eclipse.ui.forms 3.3.100.v20080611 org.eclipse.birt.data 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase.ase.ui 1.0.1.v200805310538 org.polarion.eclipse.team.svn.connector 2.0.1.I20080612-1500 org.eclipse.emf.common.ui 2.4.0.v200806091234 org.eclipse.datatools.enablement.ibm.informix.dbdefinition 1.0.0.v200805152355 org.eclipse.wst.xsdeditor.doc.user 1.0.400.v200805150028 org.eclipse.emf.mint.doc 0.7.0.v200806172223 org.eclipse.buckminster.generic 1.0.0.r09319 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.1 org.eclipse.emf.validation.examples 1.2.0.v200805280204 org.eclipse.team.svn.core 0.7.1.I20080612-1500 org.python.pydev.ast 1.2.4 org.eclipse.emf.cdo.server.hibernate 1.0.0.v200806180411 org.python.pydev.jython 1.3.8 org.eclipse.gmf.xpand 1.1.0.v20080528-1052 org.eclipse.datatools.sqltools.data.core 1.0.0.v200805152355 org.eclipse.emf.ecoretools 0.8.0.v200806130600 org.python.pydev.core 1.3.18 org.eclipse.gmf.runtime.common.core 1.1.0.v20080425-1959 org.eclipse.emf 2.4.0.v200806091234 org.eclipse.emf.ecoretools.properties 0.8.0.v200806130600 org.python.pydev.core 1.2.7 org.python.pydev.parser 0.9.8 org.eclipse.datatools.enablement.ibm.db2.luw.ui 1.0.0.v200805160737 org.eclipse.mylyn.team.ui 3.0.0.v20080619-1900 org.eclipse.help.base 3.3.100.v20080617 org.eclipse.m2m.atl.doc 2.0.0.v200806101117 org.eclipse.net4j.examples 1.0.0.v200806180305 org.eclipse.birt.data.aggregation 2.3.0.v20080606 org.eclipse.gmf.examples 1.0.100.v20080425-1959 org.eclipse.emf.search.common 0.7.0.v200806130939 org.python.pydev.ast 1.3.17 org.eclipse.ecf.provider.filetransfer.ssl 1.0.0.v20080611-1715 org.python.pydev.core 1.0.3 org.eclipse.team.svn.core.nl1 0.7.1.I20080612-1500 org.eclipse.emf.cdo.server.hibernate.teneo 1.0.0.v200806180411 org.eclipse.wst.validation.ui 1.2.1.v200807292117 org.python.pydev.parser 1.0.3 org.python.pydev.ast 1.3.6 org.eclipse.search 3.4.0.v20080603-2000 org.eclipse.jet 0.9.0.v20080527 org.python.pydev 1.3.2 org.python.pydev.jython 1.2.6 org.python.pydev.parser 1.3.14 org.eclipse.datatools.oda.cshelp 1.0.0.v200805152355 org.eclipse.jdt.junit 3.4.0.v20080603-2000 org.eclipse.datatools.sqltools.debugger.core 1.0.0.v200805152355 org.mortbay.jetty 5.1.14.v200806031611 org.eclipse.equinox.p2.garbagecollector 1.0.0.v20080506-1939 org.eclipse.m2m.atl.adt.debug 2.0.0.v200806101117 org.eclipse.equinox.jmx.client 1.0.0.v20070515 org.python.pydev.core 1.3.5 org.eclipse.mylyn.bugzilla.core 3.0.1.v20080721-2100-e3x org.python.pydev.parser 0.9.8.3 org.python.pydev.parser 0.9.8.2 org.python.pydev.parser 0.9.8.1 org.eclipse.osgi.services 3.1.200.v20071203 org.python.pydev 1.0.4 org.eclipse.hyades.lta.logging.adapter 4.5.0.v200806121215 org.eclipse.datatools.sqltools.sqleditor 1.0.0.v200805152355 org.python.pydev.parser 0.9.8.7 org.python.pydev.parser 0.9.8.6 org.eclipse.gmf.runtime.emf.core 1.1.0.v20080425-1959 org.python.pydev.parser 0.9.8.5 org.eclipse.core.contenttype 3.3.0.v20080604-1400 org.eclipse.ecf.datashare 1.3.0.v20080623-0046 org.python.pydev.parser 0.9.8.4 org.eclipse.tptp.platform.common.ui 4.4.100.v200806110100 org.junit 3.8.2.v20080602-1318 com.instantiations.assist.eclipse.coverage 5.5.0.200806270255 javax.activation 1.1.0.v200806101325 com.instantiations.assist.eclipse.scheduler 5.5.1 javax.management 1.2.0.v200803061811 org.eclipse.emf.edit 2.4.0.v200806091234 org.eclipse.ecf.provider.discovery 2.0.0.v20080623-0046 org.eclipse.birt.chart.device.pdf 2.3.0.v20080417 org.eclipse.equinox.wireadmin 1.0.0.v20080407 org.python.pydev.ast 1.0.8 org.eclipse.net4j.buddies.server 1.0.0.v200806180305 org.eclipse.wst.internet.cache 1.0.301.v200805140020 com.windowtester.runtime 3.5.0.200806270034 org.mx4j.jmx 3.0.3.v200802291451 org.eclipse.pde.ui 3.4.0.v20080530 org.eclipse.ocl 1.2.0.v200806091438 org.eclipse.birt.cshelp 2.3.0.v20080617 org.eclipse.emf.query.doc 1.2.0.v200805130238 org.eclipse.pde.runtime 3.4.0.v20080530-1200 org.apache.axis 1.4.0.v200807230600 org.apache.log4j 1.2.13.v200806030600 org.eclipse.ui.intro 3.2.200.v20080610 com.instantiations.assist.eclipse.pattern 5.5.1 com.xored.swt.composer 1.3.4.200806270212 org.apache.batik.ext.awt 1.6.0.v200805290154 org.eclipse.emf.cdo.ui 1.0.0.v200806180411 org.eclipse.jface 3.4.0.I20080606-1300 com.windowtester.swt.runtime.gef 3.5.1.200809042232 org.eclipse.gmf.runtime.emf.type.ui 1.1.0.v20080425-1959 org.eclipse.uml2.uml 2.2.0.v200805141133 org.objectweb.asm 3.0.0.v200803061811 org.python.pydev.core 1.1.0 org.eclipse.ecf.discovery.ui 2.0.0.v20080623-0046 org.python.pydev 1.3.14 org.eclipse.gmf.runtime.diagram.ui.printing 1.1.0.v20080501-1739 org.eclipse.mylyn.ide.ant 3.0.2.v20080918-1100-e3x org.eclipse.xsd.example.installer 1.0.0.v200806091234 org.eclipse.uml2.diagram.examples.profile 0.8.0.v200806112132 org.eclipse.ui.intro.universal 3.2.200.v20080508 org.python.pydev.ast 0.9.7.99 org.eclipse.emf.codegen 2.4.0.v200806091234 org.eclipse.equinox.p2.metadata 1.0.0.v20080514-1900 org.eclipse.ecf.example.collab 1.3.0.v20080623-0046 org.python.pydev.parser 1.2.4 org.eclipse.birt.report.engine.emitter.html 2.3.0.v20080606 org.python.pydev.jython 1.3.16 org.eclipse.osgi 3.4.0.v20080605-1900 org.eclipse.emf.databinding 1.0.0.v200806091234 org.eclipse.help 3.3.100.v20080610 org.eclipse.net4j.db.hsqldb 1.0.0.v200806180305 org.eclipse.gmf.runtime.diagram.ui.dnd 1.1.0.v20080425-1959 org.eclipse.birt.report.model 2.3.0.v20080605 org.eclipse.datatools.enablement.finfo 1.5.1.v200805152355 org.eclipse.jsch.ui 1.1.100.I20080415 org.python.pydev 1.3.10 org.python.pydev.parser 1.3.6 org.eclipse.emf.mapping.ecore.editor 2.4.0.v200806091234 org.eclipse.datatools.sqltools.common.ui 1.0.0.v200805152355 org.eclipse.birt.report.engine.emitter.pdf 2.3.0.v20080606 org.python.pydev 1.2.8 com.instantiations.packager.help 2.5.1 org.eclipse.equinox.p2.directorywatcher 1.0.0.v20080505-1850 org.eclipse.draw2d 3.4.0.v20080529 org.eclipse.draw2d.source 3.4.0.v20080115-33-7w3119163_ org.eclipse.ecf.ui 2.0.0.v20080623-0046 org.eclipse.birt.report.data.oda.jdbc.dbprofile 2.3.0.v20080606 org.eclipse.equinox.security.win32.x86 1.0.0.v20080529-1600 org.eclipse.wst.xml.ui 1.0.400.v200806051910 org.eclipse.jdt.ui 3.4.0.v20080603-2000 org.eclipse.equinox.p2.ui 1.0.0.v20080530-1237 org.eclipse.hyades.lta.logging.adapter.ui 4.5.0.v200805132041 org.eclipse.mylyn.monitor.ui 3.0.0.v20080619-1900 org.python.pydev 0.9.1 org.eclipse.emf.ecore.sdo.doc 2.4.0.v200806091234 com.instantiations.eclipse.ast.editor 5.5.1 org.eclipse.ant.ui 3.3.0.v20080529 org.python.pydev.core 1.3.13 org.eclipse.gef.doc.isv 3.4.0.v20080606 org.apache.xml.resolver 1.2.0.v200806030312 org.eclipse.datatools.enablement.ibm.db2.iseries.dbdefinition 1.0.0.v200806100223 org.eclipse.birt 2.3.0.v20080304 org.eclipse.equinox.security 1.0.0.v20080512-1800 com.instantiations.tools 5.3.2.200809042027 org.eclipse.jdt.core.manipulation 1.2.0.v20080603-2000 org.eclipse.gmf.runtime.diagram.ui.printing.render 1.1.0.v20080425-1959 org.eclipse.net4j.buddies.ui 1.0.0.v200806180305 org.eclipse.emf.codegen.ui 2.4.0.v200806091234 org.eclipse.team.svn 0.7.1.I20080612-1500 org.eclipse.wst.command.env.infopop 1.0.100.v200805301544 org.eclipse.datatools.enablement.hsqldb.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.runtime.common.ui.services.properties 1.1.0.v20080425-1959 org.eclipse.emf.cheatsheets 2.4.0.v200806091234 org.eclipse.ecf.presence.collab.ui 1.2.0.v20080623-0046 org.eclipse.update.core 3.2.200.v20080515 org.eclipse.wst.command.env.core 1.0.204.v200805140020 org.apache.batik.swing 1.6.0.v200805290154 org.eclipse.birt.report.designer.samplereports 2.3.0.v20080606 org.python.pydev.parser 1.0.8 org.eclipse.xsd 2.4.0.v200806091234 com.instantiations.assist.eclipse.fragment.jdt 5.5.0 org.eclipse.emf.transaction 1.2.0.v200805130238 org.eclipse.mylyn.team.cvs 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.ui 1.0.0.v20080611-1330 org.eclipse.emf.validation.source 1.2.0.v200805130238-35-9oA55S5J8H5ADM org.eclipse.datatools.enablement.hsqldb 1.0.0.v200805152355 org.eclipse.wst.common.uriresolver 1.1.301.v200805140415 org.eclipse.equinox.jsp.jasper 1.0.100.v20080427-0830 org.eclipse.osgi.util 3.1.300.v20080303 org.eclipse.datatools.connectivity.oda.consumer 3.1.2.v200805230718 org.eclipse.emf.compare.source 0.8.0.v200806180301 org.python.pydev.core 1.3.19 org.eclipse.emf.query.examples 1.2.0.v200805130238 org.eclipse.buckminster.runtime 1.1.0.r09338 org.eclipse.datatools.enablement.sybase.asa.dbdefinition 1.0.0.v200805240040 org.eclipse.datatools.sqltools.sql 1.0.0.v200805152355 org.apache.batik.svggen 1.6.0.v200805290154 org.eclipse.buckminster.cvs 1.0.0.r09319 org.python.pydev.core 1.2.6 org.eclipse.equinox.simpleconfigurator 1.0.0.v20080604 org.eclipse.help.ui 3.3.100.v20080521 org.apache.batik.dom 1.6.0.v200805290154 org.python.pydev.parser 1.1.0 org.eclipse.ecf.server.generic 1.2.0.v20080623-0046 com.windowtester.swt.runtime.win32 3.5.0.200806270034 org.eclipse.emf.cdo.examples 1.0.0.v200806180411 org.eclipse.ecf.provider.remoteservice 1.3.0.v20080623-0046 org.eclipse.gmf.runtime.notation.edit 1.1.0.v20080507-1326 org.eclipse.core.filesystem 1.2.0.v20080604-1400 org.eclipse.m2m.qvt.oml.runtime.ui 1.0.0.v20080611-1330 org.eclipse.emf.cdo.server.hibernate.source 1.0.0.v200806180411 org.python.pydev.jython 1.3.7 org.eclipse.gmf.codegen.edit 2.1.0.v20080610-1132 org.eclipse.buckminster.pde 1.1.0.r09351 org.python.pydev.ast 1.2.5 org.python.pydev.core 1.0.2 org.python.pydev.ast 1.3.16 org.apache.batik.parser 1.6.0.v200805290154 org.python.pydev.parser 1.0.2 org.eclipse.wst.common.infopop 1.0.100.v200805301550 org.eclipse.ecf.remoteservice 2.0.0.v20080623-0046 org.python.pydev 1.3.1 org.python.pydev.jython 1.2.5 org.eclipse.emf.mapping 2.4.0.v200806091234 org.eclipse.emf.cdo.server.hibernate.id 1.0.0.v200806180411 com.windowtester.runtime.legacy 3.5.1.200809042232 org.python.pydev.ast 1.3.7 org.eclipse.datatools.enablement.oracle 1.0.0.v200805152355 org.python.pydev.parser 1.3.15 org.eclipse.emf.importer 2.4.0.v200806091234 org.eclipse.birt.example 2.3.0.v20080304 org.eclipse.birt.report.designer.ui.lib 2.3.0.v20080606 org.eclipse.emf.cdo.server.source 1.0.0.v200806180411 org.eclipse.gmf.runtime.common.ui.services 1.1.0.v20080612-1229 org.eclipse.datatools.sqltools.db.generic 1.0.0.v200805152355 org.eclipse.net4j 1.0.0.v200806180305 org.eclipse.jdt 3.4.0.v20080603-2000 org.eclipse.emf.cdo.source 1.0.0.v200806180411 org.eclipse.datatools.connectivity 1.1.0.v200805160228 com.instantiations.assist.eclipse.scheduler 5.5.0 org.eclipse.emf.ecore.sdo.source 2.4.0.v200806091234 org.eclipse.wst.sse.doc.user 1.1.0.v200805211530 org.python.pydev 0.9.7.99 org.eclipse.emf.transaction.source 1.2.0.v200805130238-23-8s733I3C59379I org.w3c.dom.svg 1.1.0.v200806040011 org.python.pydev.core 1.3.4 javax.xml.rpc 1.1.0.v200806030420 org.eclipse.ocl.uml.source 1.2.0.v200805130238-11-7w311916241349 com.instantiations.eclipse.ui 5.3.2.200806270030 org.eclipse.jface.text 3.4.0.v20080603-2000 org.apache.batik.xml 1.6.0.v200805290154 org.python.pydev 1.0.3 org.eclipse.gmf.bridge.ui.dashboard 2.0.0.v20080417-1610 org.apache.lucene 1.9.1.v20080530-1600 org.eclipse.emf.query.ocl 1.2.0.v200805130238 org.eclipse.uml2.uml.resources 2.2.0.v200805131030 org.eclipse.ecf.provider.r_osgi 2.0.0.v20080623-0046 org.eclipse.emf.importer.java 2.4.0.v200806091234 org.python.pydev.debug 1.3.20 org.eclipse.emf.ecore.xmi 2.4.0.v200806091234 org.python.pydev.mylyn 0.3.0 com.instantiations.assist.eclipse.pattern 5.5.0 org.eclipse.emf.source 2.4.0.v200806091234 org.eclipse.ui.browser 3.2.200.v20080507 org.eclipse.tptp.lta.sdb.epi 4.5.0.v200805132041 org.eclipse.net4j.doc 1.0.0.v200806180305 org.eclipse.gmf.bridge 1.1.0.v20080528-1052 com.instantiations.assist.eclipse.admin 5.5.1 org.eclipse.ecf.presence 1.3.0.v20080623-0046 org.eclipse.jet.editor 0.9.0.v20080226 org.eclipse.emf.mint 0.7.0.v200806172223 org.eclipse.ecf.provider 1.3.0.v20080623-0046 com.instantiations.assist.eclipse.core.ant 5.5.0 org.apache.axis 1.4.0.v200806030120 org.eclipse.equinox.p2.metadata.repository 1.0.0.v20080604 com.ibm.icu 3.8.1.v20080530 org.eclipse.gmf.runtime.diagram.ui.properties 1.1.0.v20080603-1553 org.eclipse.team.svn.mylyn.source 0.7.1.I20080612-1500 org.eclipse.ecf.provider.datashare 1.3.0.v20080623-0046 org.eclipse.birt.report.data.oda.sampledb 2.3.0.v20080606 org.eclipse.m2m.atl.drivers.emf4atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.providers.ide 1.1.0.v20080425-1959 org.python.pydev 0.8.0 org.eclipse.datatools.connectivity.sqm.server.ui 1.1.0.v200806050117 com.nordea.cd.dev.plugin.stubbuilder 1.0.2 org.eclipse.emf.mapping.xsd2ecore 2.4.0.v200806091234 org.python.pydev.parser 1.2.5 org.eclipse.xsd.mapping.editor 2.4.0.v200806091234 org.python.pydev.jython 1.3.15 org.eclipse.gmf.xpand.editor 1.0.0.v20080425-1959 org.eclipse.tptp.platform.lta.common 4.5.0.v200806050100 org.eclipse.buckminster.pde.ui 1.0.0.r09319 org.eclipse.emf.validation.ocl 1.2.0.v200805130238 org.eclipse.ui.console 3.3.0.v20080529-1300 org.eclipse.net4j.ui 1.0.0.v200806180305 org.eclipse.emf.workspace 1.2.0.v200805130238 org.python.pydev.ast 0.9.8.6 org.python.pydev.ast 0.9.8.5 org.eclipse.emf.teneo.annotations 1.0.0.v200806111928 org.python.pydev.ast 0.9.8.4 org.eclipse.ui.net 1.0.0.I20080605 org.python.pydev.ast 0.9.8.3 org.eclipse.net4j.db.source 1.0.0.v200806180305 org.eclipse.zest.core 1.0.0.v20080115 org.python.pydev.ast 0.9.8.2 org.eclipse.tptp.lta.log.epi 4.5.0.v200805132041 org.python.pydev.ast 0.9.8.1 org.python.pydev 1.3.13 org.eclipse.equinox.app 1.1.0.v20080421-2006 org.eclipse.equinox.p2.metadata.generator 1.0.0.v20080604 org.python.pydev 1.2.7 org.eclipse.emf.ocl.examples 1.2.0.v200805130238 org.eclipse.mylyn.jira.core 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.commons.net 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql.query 1.0.1.v200805152355 org.eclipse.datatools.sqltools.plan 1.0.0.v200805152355 com.swtdesigner.help 6.7.1.200809050053 org.eclipse.ecf.ssl 1.0.0.v20080611-1715 org.eclipse.team.cvs.core 3.3.100.I20080605 org.python.pydev.ast 0.9.8 com.instantiations.helpeditor.core.toc 1.3.4.200806270212 org.eclipse.core.databinding 1.1.0.I20080527-2000 org.eclipse.tptp.platform.common 4.3.200.v200805300100 org.eclipse.net4j.util.ui 1.0.0.v200806180305 org.eclipse.mylyn.commons.core 3.0.0.v20080619-1900 org.python.pydev 1.3.9 org.eclipse.emf.search.common.ui 0.7.0.v200806130939 org.eclipse.m2m.atl.engine.emfvm 2.0.0.v200806101117 org.eclipse.uml2.diagram.csd 0.8.0.v200806112132 org.python.pydev.parser 1.3.7 org.eclipse.team.svn.ui 0.7.1.I20080612-1500 org.python.pydev.core 1.3.12 org.eclipse.datatools.modelbase.sql.query.edit 1.0.0.v200806070329 com.instantiations.packager.core 2.5.1 com.windowtester.swing.runtime 3.5.0.200806270034 org.eclipse.update.ui 3.2.100.v20080318 org.apache.commons.codec 1.2.0.v20080530-1550 org.eclipse.mylyn.bugzilla.core 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.editor.ui 1.0.0.v20080611-1330 org.eclipse.m2m.qvt.oml.samples 1.0.0.v20080611-1330 org.eclipse.mylyn.context.core 3.0.0.v20080619-1900 org.eclipse.xsd.source 2.4.0.v200806091234 org.eclipse.gmf.runtime.diagram.core 1.1.0.v20080425-1959 org.eclipse.m2m.atl.drivers.uml24atl 2.0.0.v200806101117 com.instantiations.eclipse.util 5.3.2.200809042027 org.eclipse.emf.ecore.sdo 2.4.0.v200806091234 com.instantiations.eclipse.startup 5.3.2.200809042027 org.eclipse.gmf 1.0.0.v20080425-1959 org.python.pydev 0.9.2 org.apache.batik.util.gui 1.6.0.v200805290154 org.python.pydev.ast 0.9.8.7 com.nordea.cd.dev.plugin.wsdl2java 1.0.2 org.eclipse.datatools.enablement.sybase.models 1.0.0.v200805152355 org.python.pydev.ast 1.0.1 org.eclipse.emf.compare.diff 0.8.0.v200806180301 org.eclipse.birt.report.designer 2.3.0.v200806102 org.eclipse.equinox.http.registry 1.0.100.v20080427-0830 ch.ethz.iks.r_osgi.remote 1.0.0.RC2_v20080623-0046 org.eclipse.gmf.graphdef.codegen.ui 1.0.100.v20080425-1959 org.eclipse.m2m.qvt.oml.editor.source 1.0.0.v20080611-1330-1--7w3119172202441 org.sat4j.pb 2.0.0.v20080602 org.eclipse.wst.validation 1.2.1.v200807292117 org.apache.batik.util 1.6.0.v200805290154 org.eclipse.equinox.transforms.hook 1.0.0.v20080610 org.eclipse.emf.teneo.hibernate 1.0.0.v200806111928 org.eclipse.uml2.examples 2.1.0.v200805131030 org.eclipse.mylyn.java.tasks 3.0.2.v20080918-1100-e3x org.eclipse.equinox.preferences 3.2.200.v20080421-2006 com.instantiations.assist.eclipse.fragment.swt 5.5.0 org.eclipse.ocl.doc 1.2.0.v200805130238 org.eclipse.jdt.apt.core 3.3.100.v20080513-1235 org.eclipse.birt.report.engine.fonts 2.3.0.v20080606 org.eclipse.mylyn.monitor.ui 3.0.2.v20080918-1100-e3x org.eclipse.gmf.tooldef.edit 2.0.0.v20080610-1132 org.eclipse.gmf.runtime.draw2d.ui.render 1.1.0.v20080507-2230 com.windowtester.swt.platform.ext 3.5.0.200806270034 org.eclipse.ecf.example.clients 1.3.0.v20080623-0046 org.eclipse.core.net 1.1.0.I20080604 org.eclipse.wst.xsd.core 1.1.301.v200807240448 org.eclipse.datatools.connectivity.oda.flatfile 3.0.6.v200805261930 org.python.pydev.refactoring 1.3.20 org.python.pydev.parser 1.0.1 org.python.pydev.ast 1.3.19 org.eclipse.equinox.registry.jmx 1.0.0.v20080610-1530 com.instantiations.eclipse.model.jsp 5.5.0 org.eclipse.mylyn.context.ui 3.0.2.v20080918-1100-e3x org.python.pydev.core 1.0.5 org.eclipse.hyades.lta.resources.database 4.5.0.v200805271330 org.python.pydev 0.6.1 org.python.pydev.parser 1.3.12 org.eclipse.equinox.p2.console 1.0.0.v20080514-1900 org.eclipse.mylyn.commons.net 3.0.1.v20080721-2100-e3x org.eclipse.net4j.jms.api 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.lexer 1.0.1.v200805152355 org.python.pydev.ast 1.3.4 org.python.pydev 1.3.4 org.python.pydev.jython 1.2.8 org.python.pydev 0.8.5 org.python.pydev 0.5.3 org.eclipse.wst.sse.ui 1.1.1.v200808141919 org.eclipse.emf.query 1.2.0.v200805130238 org.eclipse.core.runtime.compatibility 3.2.0.v20071008 org.eclipse.gmf.runtime.notation 1.1.0.v20080507-1326 org.eclipse.birt.report.data.oda.sampledb.ui 2.3.0.v20080606 org.python.pydev.ast 1.2.6 com.instantiations.eclipse.mail.ui 5.5.1 org.eclipse.zest.layouts 1.0.0.v20080226 org.python.pydev.jython 1.3.6 org.eclipse.net4j.jms.admin 1.0.0.v200806180305 org.eclipse.core.databinding.beans 1.1.0.I20080508-2000a org.python.pydev 1.1.0 org.python.pydev.core 1.3.20 org.eclipse.gmf.runtime.emf.commands.core 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.common.ui.services.dnd.ide 1.1.0.v20080425-1959 org.eclipse.datatools.connectivity.apache.derby 1.0.1.v200805152355 org.python.pydev.core 1.2.9 org.eclipse.mylyn.context.core 3.0.2.v20080918-1100-e3x org.eclipse.equinox.p2.artifact.repository 1.0.0.v20080609-0850 org.eclipse.gef 3.4.0.v20080526 org.eclipse.gmf.runtime.common.ui 1.1.0.v20080512-1200 org.eclipse.emf.ecoretools.tabbedproperties 0.8.0.v200806130600 com.instantiations.assist.eclipse.core.ant 5.5.1 org.eclipse.emf.ecore.change 2.4.0.v200806091234 org.eclipse.jet.doc 0.9.0.v20080522 org.eclipse.emf.transaction.examples 1.2.0.v200806051817 org.eclipse.gmf.runtime.draw2d.ui 1.1.0.v20080610-1132 org.eclipse.equinox.jmx.server.rmi 1.0.0.v20070510 org.eclipse.ecf.examples.remoteservices.common 1.0.100.v20080623-0046 org.eclipse.wst.standard.schemas 1.0.102.v200807220733 org.eclipse.equinox.p2.jarprocessor 1.0.0.v20080514-1900 org.eclipse.birt.report.data.oda.jdbc 2.3.0.v20080610 com.windowtester.runner 3.5.0.200806270034 com.windowtester.swt.codegen 3.5.1.200809042232 org.eclipse.emf.cdo.tests.model2.edit 1.0.0.v200806180411 javax.wsdl 1.5.1.v200806030408 org.eclipse.datatools.enablement.sap.maxdb.ui 1.0.0.v200805152355 org.eclipse.equinox.launcher.win32.win32.x86 1.0.100.v20080509-1800 org.eclipse.birt.core 2.3.0.v20080606 javax.servlet 2.5.0.v200806031605 org.eclipse.uml2.codegen.ecore.ui 1.4.0.v200805131030 com.windowtester.swt.recorder 3.5.0.200806270034 org.eclipse.mylyn 3.0.1.v20080721-2100-e3x org.eclipse.uml2.search.ocl 0.7.0.v200806130939 org.python.pydev.core 1.3.3 org.eclipse.core.jobs 3.4.0.v20080512 org.python.pydev.core 0.9.5 org.eclipse.emf.validation.ui.ide 1.2.0.v200805130238 org.python.pydev 1.0.2 org.eclipse.wst.validation.ui 1.2.0.v200805262011 com.windowtester.swing.recorder 3.5.1.200809042232 com.instantiations.helpeditor.help 1.3.4.200809042225 org.eclipse.gmf.map.edit 2.1.0.v20080610-1132 org.eclipse.emf.ecore.edit 2.4.0.v200806091234 org.eclipse.datatools.enablement.msft.sqlserver.dbdefinition 1.0.0.v200805152355 org.mortbay.jetty.util 6.1.7.v200806031612 org.eclipse.datatools.sqltools.parsers.sql 1.0.1.v200805152355 org.eclipse.xsd.doc 2.4.0.v200806091234 org.eclipse.jdt.doc.isv 3.4.0.v20080612-1340 org.eclipse.jdt.apt.pluggable.core 1.0.100.v20080407-1345 org.eclipse.ecf.provider.bittorrent 0.3.0.v20080623-0046 org.eclipse.mylyn.monitor.ui 3.0.1.v20080721-2100-e3x org.python.pydev.jython 1.0.4 org.eclipse.wst.common.project.facet.ui 1.3.1.v200807301432 javax.xml.bind 2.0.0.v20080604-1500 org.apache.derby.core 10.3.1.4 org.eclipse.birt.report.debug.core 2.3.0.v200806102 org.python.pydev.parser 1.3.4 org.eclipse.jdt.debug.ui 3.3.0.v20080603 org.python.pydev.help 1.3.20 org.python.pydev 1.3.12 org.eclipse.gef.examples.ui.pde 3.4.0.v20080226 org.eclipse.ecf.provider.jmdns 2.0.0.v20080623-0046 org.eclipse.xsd.editor 2.4.0.v200806091234 org.python.pydev 1.2.6 org.eclipse.buckminster.generic.ui 1.0.0.r09319 org.eclipse.emf.ocl 1.1.100.v200805130238 org.eclipse.emf.search.ecore 0.7.0.v200806130939 org.eclipse.wst.common.frameworks.ui 1.1.200.v200805221400 org.eclipse.emf.ecoretools.doc 0.8.0.v200806130600 org.eclipse.wst.sse.ui.infopop 1.0.200.v200805301545 org.eclipse.tptp.platform.common.ui.trace 4.3.200.v200805290100 org.eclipse.net4j.jms.server 1.0.0.v200806180305 org.eclipse.ecf.filetransfer.ui 1.4.0.v20080623-0046 org.eclipse.birt.chart.device.swt 2.3.0.v20080522 org.eclipse.wst.xsd.ui 1.2.101.v200806051910 org.eclipse.emf.cdo.examples.source 1.0.0.v200806180411 org.eclipse.birt.report.designer.ui.lib.explorer 2.3.0.v20080606 org.mozilla.rhino 1.6.7.v20080214 org.python.pydev 1.3.16 org.eclipse.buckminster.ant 1.1.0.r09351 org.eclipse.equinox.metatype 1.0.0.v20070827 org.eclipse.m2m.atl.adt.wizard 2.0.0.v200806101117 org.eclipse.wst.command.env 1.0.305.v200805281530 org.eclipse.swt.jmx 1.0.0.v20070510 org.eclipse.emf.cdo.common 1.0.0.v200806180411 org.eclipse.ecf.examples.remoteservices.client 1.0.100.v20080623-0046 org.python.pydev.jython 1.3.14 org.python.pydev.parser 1.2.6 org.eclipse.emf.ecoretools.diagram.ui.outline 0.8.0.v200806130600 org.eclipse.emf.teneo.eclipse 1.0.0.v200806111928 org.eclipse.emf.cdo.tests.mango 1.0.0.v200806180411 org.eclipse.net4j.buddies.common 1.0.0.v200806180305 org.eclipse.net4j.buddies.chat 1.0.0.v200806180305 org.eclipse.mylyn.bugzilla.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.0 org.eclipse.datatools.enablement.sybase.ase.dbdefinition 1.0.0.v200805240040 org.apache.ant 1.7.0.v200803061910 org.eclipse.datatools.connectivity.oda.design 3.0.6.v200805152355 org.eclipse.emf.ocl.doc 1.1.100.v200805130238 org.eclipse.tptp.lta.gla.ui.epi 4.5.0.v200805160100 org.eclipse.equinox.jmx.server 1.0.0.v20071015 org.eclipse.wst.xml.core 1.1.300.v200806051910 org.eclipse.datatools.connectivity.oda.template.ui 3.0.6.v200805152355 org.python.pydev.ast 1.0.2 org.eclipse.birt.report.data.adapter 2.3.0.v20080606 org.eclipse.birt.chart.runtime 2.3.0.v20080304 org.eclipse.net4j.ui.source 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.query 1.0.1.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.1 org.eclipse.wst.dtd.ui 1.0.300.v200805152207 org.eclipse.mylyn.java.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.connectivity.oda.design.ui 3.0.6.v200805152355 org.eclipse.birt.report.designer.core 2.3.0.v200806102 org.eclipse.buckminster.jdt 1.0.0.r09319 org.eclipse.buckminster.p4 1.0.0.r09319 org.eclipse.ecf.core.source 2.0.0.v20080623-0046 org.eclipse.birt.report.runtime 2.3.0.v20080304 org.python.pydev.ast 1.1.0 com.windowtester.swt.runtime 3.5.1.200809042232 org.eclipse.uml2.doc 2.2.0.v200805201350 org.eclipse.mylyn.context.core 3.0.1.v20080721-2100-e3x org.eclipse.gmf.runtime.notation.providers 1.1.0.v20080425-1959 org.eclipse.tptp.platform.lta.log.doc.user 4.5.0.v200805132041 org.eclipse.team.svn.help 0.7.1.I20080612-1500 org.python.pydev 0.9.3 com.windowtester.swt.runtime.win32 3.5.1.200809042232 org.eclipse.m2m.qvt.oml.ocl.emf.libraries 1.0.0.v20080611-1330 org.eclipse.hyades.lta.analysis.engine 4.5.0.v200805271330 org.python.pydev.core 1.3.11 org.eclipse.datatools.connectivity.sqm.core 1.0.1.v200806041052 org.eclipse.equinox.jmx.server.xmlrpc 1.0.0.v20070608 org.eclipse.platform 3.3.100.v200806172000 org.eclipse.ui 3.4.0.I20080610-1200 org.eclipse.net4j.buddies.chat.ui 1.0.0.v200806180305 org.eclipse.emf.search.ecore.ocl 0.7.0.v200806130939 org.eclipse.gmf.codegen 2.1.0.v20080610-1132 org.eclipse.emf.teneo 1.0.0.v200806111928 org.eclipse.datatools.connectivity.oda.flatfile.ui 3.0.6.v200805261930 org.python.pydev.core 1.0.4 org.eclipse.equinox.p2.extensionlocation 1.0.0.v20080523-0001 org.eclipse.buckminster.remote.cloudsmith 1.0.0.r09319 org.python.pydev.ast 1.3.18 org.eclipse.birt.report.engine.dataextraction.csv 2.3.0.v200806102 org.eclipse.equinox.log 1.1.0.v20080414 org.python.pydev.parser 1.3.13 org.python.pydev 1.3.3 com.windowtester.eclipse.help 3.5.0.200806270034 org.python.pydev.jython 1.2.7 org.eclipse.m2m.qvt.oml.emf.util.ui 1.0.0.v20080611-1330 org.eclipse.gmf.runtime.common.ui.printing 1.1.0.v20080425-1959 org.python.pydev.ast 1.3.5 org.eclipse.uml2.uml.ecore.exporter 2.2.0.v200805131030 org.eclipse.equinox.event 1.1.0.v20080225 org.eclipse.epp.usagedata.gathering 1.0.0.R200806162215 com.instantiations.assist.eclipse.fragment.swt 5.5.1 org.eclipse.emf.cdo.server 1.0.0.v200806180411 org.eclipse.core.filesystem.win32.x86 1.1.0.v20080604-1400 org.eclipse.datatools.enablement.ibm.db2.zseries 1.0.0.v200805152355 com.windowtester.swt.platform.ext 3.5.1.200809042232 org.eclipse.birt.chart.examples 2.3.0.v20080612 org.eclipse.gmf.bridge.ui 1.1.100.v20080417-1610 org.eclipse.emf.doc 2.4.0.v200806091234 org.eclipse.emf.ecoretools.diagram 0.8.0.v200806130600 org.eclipse.ecf.provider.filetransfer.efs 1.5.0.v20080623-0046 org.eclipse.mylyn.commons.net 3.0.0.v20080619-1900 org.python.pydev.core 1.2.8 org.eclipse.datatools.modelbase.dbdefinition 1.0.0.v200805152355 javax.management.remote 1.0.0.v200803061811 org.eclipse.net4j.util 1.0.0.v200806180305 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.0 org.eclipse.ui.navigator.resources 3.3.100.I20080606-1300 org.apache.lucene.analysis 1.9.1.v20080530-1600 org.python.pydev.jython 1.3.5 org.eclipse.m2m.atl.adt.builder 2.0.0.v200806101117 org.eclipse.mylyn.monitor.core 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.2.7 com.instantiations.eclipse.mail.ui 5.5.0 org.eclipse.tptp.platform.models.lta 4.5.0.v200805132041 org.eclipse.mylyn.commons.core 3.0.1.v20080721-2100-e3x org.eclipse.team.svn.nl1 0.7.1.I20080612-1500 org.eclipse.birt.report.data.oda.jdbc.dbprofile.ui 2.3.0.v20080606 org.eclipse.pde 3.4.0.v20080603 org.eclipse.net4j.jms.server.jdbc 1.0.0.v200806180305 org.eclipse.pde.doc.user 3.3.0.v20080611-1530 org.eclipse.core.runtime.compatibility.auth 3.2.100.v20070502 org.eclipse.tptp.platform.iac.administrator 4.4.100.v200806120100 org.eclipse.emf.importer.ecore 2.4.0.v200806091234 org.eclipse.equinox.jmx.client.xmlrpc 1.0.0.v20070515 org.eclipse.equinox.jmx.common 1.0.0.v20070510 org.eclipse.datatools.enablement.ibm.informix.ui 1.0.0.v200805160737 com.instantiations.installer 2.5.1 org.eclipse.hyades.lta.logging.parsers 4.5.0.v200805271330 org.eclipse.uml2.diagram.profile 0.8.0.v200806112132 org.eclipse.datatools.enablement.jdt.classpath 1.0.1.v200805152355 org.eclipse.emf.validation.ocl.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.net4j.buddies 1.0.0.v200806180305 net.sourceforge.lpg.lpgjavaruntime 1.1.0.v200803061910 org.eclipse.emf.ecore.editor 2.4.0.v200806091234 org.apache.commons.lang 2.3.0.v200803061910 org.eclipse.ocl.uml 1.2.0.v200805130238 org.eclipse.emf.mapping.ecore2ecore 2.4.0.v200806091234 com.swtdesigner.fragment.jdt.core 6.7.0.200806270151 org.eclipse.ecf.provider.xmpp 2.0.0.v20080623-0046 org.eclipse.wst.common.modulecore 1.1.201.v200808071700 org.eclipse.mylyn.jira.ui 3.0.2.v20080918-1100-e3x org.eclipse.draw2d.doc.isv 3.4.0.v20080606 org.python.pydev.core 1.3.2 org.eclipse.mylyn.compatibility 3.0.0.v20080619-1900 org.eclipse.buckminster.maven 1.1.0.r09319 org.eclipse.buckminster.cmdline 1.0.0.r09319 org.apache.batik.css 1.6.0.v200805290154 org.eclipse.ecf.telephony.call.ui 1.2.0.v20080623-0046 org.eclipse.wst.common.emfworkbench.integration 1.1.200.v200805140020 org.python.pydev 1.0.1 org.eclipse.datatools.enablement.ibm.db2.luw.dbdefinition 1.0.0.v200805152355 org.eclipse.team.svn.resource.ignore.rules.jdt.source 0.7.1.I20080612-1500 org.eclipse.ecf.server 1.3.0.v20080623-0046 org.python.pydev 1.2.5 org.python.pydev.core 1.2.1 org.eclipse.datatools.sqltools.sqlscrapbook 1.0.0.v200806021003 org.eclipse.birt.chart.reportitem 2.3.0.v20080610 org.eclipse.uml2.diagram.codegen 0.8.0.v200806112132 org.eclipse.xsd.edit 2.4.0.v200806091234 org.eclipse.buckminster.opml 1.0.0.r09319 org.python.pydev.parser 1.3.5 org.eclipse.gmf.runtime.diagram.ui 1.1.0.v20080610-1132 org.eclipse.ocl.source 1.2.0.v200805130238-34-9oA55S5I6M7JBK com.windowtester.eclipse.ui 3.5.0.200806270034 org.eclipse.tptp.platform.agentcontroller 4.2.200.v200806162043 org.python.pydev 1.3.11 org.eclipse.datatools.connectivity.apache.derby.ui 1.0.0.v200805160737 org.eclipse.datatools.sqltools.routineeditor 1.0.0.v200805261703 org.eclipse.wst.xsd.ui 1.2.102.v200808141745 org.eclipse.equinox.http 1.0.200.v20080421-2006 org.jivesoftware.smack 2.2.1 org.eclipse.mylyn.compatibility 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.java.ui 3.0.0.v20080619-1900 org.eclipse.core.variables 3.2.100.v20080529-1300 org.python.pydev.jython 1.3.13 org.python.pydev.parser 1.3.20 org.eclipse.tptp.platform.models.hierarchy 4.5.0.v200806120100 org.eclipse.ecf.examples.updatesite.client 1.0.100.v20080623-0046 org.eclipse.datatools.enablement.msft.sqlserver.ui 1.0.0.v200805160737 org.eclipse.datatools.enablement.mysql 1.0.0.v200805152355 org.eclipse.jdt.debug 3.4.0.v20080604 org.antlr.runtime 3.0.0.v200803061811 org.python.pydev.parser 1.2.7 org.eclipse.hyades.execution 4.4.200.v200806120100 org.eclipse.ecf.provider.ui 1.3.0.v20080623-0046 org.eclipse.birt.chart.cshelp 2.3.0.v20080616 org.eclipse.buckminster.p4.ui 1.0.0.r09319 org.python.pydev 1.3.15 org.eclipse.datatools.enablement.ibm.ui 1.0.0.v200805152355 org.eclipse.buckminster.sax 1.0.0.r09175 org.eclipse.equinox.supplement 1.1.0.v20080421-2006 org.eclipse.wst.common.frameworks 1.1.200.v200805140020 org.eclipse.mylyn 3.0.2.v20080918-1100-e3x org.eclipse.gmf.map 2.1.0.v20080521 org.eclipse.wst.standard.schemas 1.0.101.v200806010600 org.python.pydev.ast 1.0.3 org.eclipse.m2m.qvt.oml.runtime 1.0.0.v20080611-1330 org.eclipse.mylyn.ide.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.sqltools.sqlbuilder 1.0.0.v200806070500 org.eclipse.datatools.modelbase.derby 1.0.0.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.0 org.eclipse.emf.compare.ui 0.8.0.v200806180301 org.eclipse.ecf.provider.filetransfer.scp 2.0.0.v20080623-0046 org.eclipse.uml2.search.ocl.ui 0.7.0.v200806130939 org.eclipse.mylyn.context.ui 3.0.1.v20080721-2100-e3x org.python.pydev.templates 1.3.20 org.eclipse.gmf.runtime.diagram.ui.resources.editor 1.1.0.v20080425-1959 org.eclipse.gmf.examples.ui.pde 1.0.200.v20080425-1959 org.eclipse.buckminster.installer 1.0.0.r09319 org.eclipse.m2m.atl.examples 2.0.0.v200806101117 org.eclipse.datatools.modelbase.sql.xml.query 1.0.0.v200805152355 org.eclipse.emf.search.doc 0.7.0.v200806130939 org.eclipse.datatools.enablement.oracle.dbdefinition 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.0 javax.xml.bind 2.0.0.v200803061811 org.apache.xmlrpc 3.0.0.v20080530-1550 org.eclipse.ui.views.log 1.0.0.v20080522-2200 org.python.pydev.core 1.3.10 org.eclipse.ecf.examples.updatesite.server 1.0.100.v20080623-0046 org.eclipse.birt.core.ui 2.3.0.v20080515 org.eclipse.core.filebuffers 3.4.0.v20080603-2000 org.eclipse.mylyn.team.ui 3.0.1.v20080721-2100-e3x org.eclipse.wst.command.env 1.0.306.v200807231700 org.eclipse.team.cvs.ssh2 3.2.200.I20080604 org.eclipse.emf.search.ecore.ocl.ui 0.7.0.v200806130939 org.eclipse.ecf.example.collab.editor 1.0.200.v20080623-0046 org.eclipse.ecf.provider.jslp 2.0.0.v20080623-0046 org.eclipse.datatools.sqltools.result 1.0.0.v200805301309 org.eclipse.emf.teneo.jpox 1.0.0.v200806111928 org.eclipse.gmf.runtime.emf.clipboard.core 1.1.0.v20080425-1959 com.instantiations.eclipse.ast.editor 5.5.0 org.eclipse.mylyn.tasks.bugs 3.0.2.v20080918-1100-e3x org.eclipse.jsch.core 1.1.100.I20080604 org.eclipse.pde.core 3.4.0.v20080604-2000 org.python.pydev 0.9.4 org.python.pydev.jython 1.3.0
-1 x2961 +1 x16 +1 x528 +1 x118 +1 x17 +1 x21 +1 x34 +1 x599 +1 x658 +1 x659 +1 x35 +1 x660 +1 x40 +1 x44 +1 x661 +1 x50 +1 x662 +1 x51 +1 x101 +1 x103 +1 x112 +1 x663 +1 x125 +1 x191 +1 x53 +1 x664 +1 x665 +1 x666 +1 x162 +1 x167 +1 x667 +1 x326 +1 x188 +1 x187 +1 x173 +1 x203 +1 x192 +1 x190 +1 x668 +1 x578 +1 x669 +1 x670 +1 x208 +1 x213 +1 x671 +1 x223 +1 x672 +1 x229 +1 x230 +1 x231 +1 x673 +1 x674 +1 x675 +1 x676 +1 x248 +1 x251 +1 x252 +1 x677 +1 x678 +1 x253 +1 x260 +1 x87 +1 x264 +1 x267 +1 x272 +1 x291 +1 x679 +1 x680 +1 x681 +1 x46 +1 x682 +1 x297 +1 x298 +1 x313 +1 x683 +1 x684 +1 x314 +1 x685 +1 x686 +1 x333 +1 x498 +1 x334 +1 x687 +1 x339 +1 x688 +1 x348 +1 x350 +1 x689 +1 x355 +1 x357 +1 x690 +1 x185 +1 x691 +1 x360 +1 x692 +1 x693 +1 x694 +1 x366 +1 x695 +1 x18 +1 x367 +1 x382 +1 x696 +1 x392 +1 x697 +1 x461 +1 x698 +1 x95 +1 x617 +1 x699 +1 x114 +1 x413 +1 x464 +1 x700 +1 x80 +1 x65 +1 x701 +1 x702 +1 x422 +1 x703 +1 x423 +1 x704 +1 x427 +1 x705 +1 x429 +1 x706 +1 x707 +1 x708 +1 x432 +1 x433 +1 x709 +1 x710 +1 x159 +1 x711 +1 x712 +1 x434 +1 x331 +1 x713 +1 x714 +1 x715 +1 x436 +1 x444 +1 x451 +1 x501 +1 x519 +1 x197 +1 x513 +1 x512 +1 x716 +1 x514 +1 x717 +1 x516 +1 x47 +1 x718 +1 x719 +1 x534 +1 x720 +1 x721 +1 x722 +1 x530 +1 x723 +1 x724 +1 x532 +1 x531 +1 x533 +1 x725 +1 x726 +1 x402 +1 x26 +1 x727 +1 x552 +1 x41 +1 x728 +1 x729 +1 x560 +1 x730 +1 x168 +1 x731 +1 x582 +1 x592 +1 x586 +1 x593 +1 x595 +1 x732 +1 x733 +1 x596 +1 x734 +1 x735 +1 x597 +1 x602 +1 x610 +1 x129 +1 x460 +1 x736 +1 x623 +1 x737 +1 x738 +1 x739 +1 x634 +1 x740 +1 x635 +1 x636 +1 x204 +1 x645 +1 x741 +1 x647 +1 x648 +1 x38 +1 x649 +1 x652 +1 x742 +1 x380 +1 x88 +1 x653 +1 x655 +1 x743 +1 x477 +1 x744 +1 x745 +1 x198 +1 x746 +1 x747 +1 x175 +1 x303 +1 x748 +1 x220 +1 x749 +1 x750 +1 x751 +1 x752 +1 x753 +1 x340 +1 x217 +1 x754 +1 x755 +1 x756 +1 x757 +1 x758 +1 x759 +1 x492 +1 x760 +1 x408 +1 x761 +1 x72 +1 x762 +1 x763 +1 x764 +1 x765 +1 x184 +1 x766 +1 x510 +1 x73 +1 x767 +1 x768 +1 x769 +1 x374 +1 x770 +1 x771 +1 x14 +1 x772 +1 x773 +1 x774 +1 x775 +1 x776 +1 x454 +1 x777 +1 x344 +1 x178 +1 x778 +1 x779 +1 x186 +1 x347 +1 x780 +1 x781 +1 x782 +1 x783 +1 x784 +1 x785 +1 x786 +1 x787 +1 x788 +1 x789 +1 x790 +1 x791 +1 x792 +1 x625 +1 x793 +1 x794 +1 x472 +1 x795 +1 x796 +1 x797 +1 x798 +1 x521 +1 x799 +1 x800 +1 x801 +1 x802 +1 x525 +1 x91 +1 x803 +1 x804 +1 x805 +1 x806 +1 x807 +1 x587 +1 x808 +1 x315 +1 x809 +1 x810 +1 x811 +1 x812 +1 x813 +1 x814 +1 x815 +1 x816 +1 x68 +1 x817 +1 x179 +1 x486 +1 x818 +1 x410 +1 x819 +1 x820 +1 x821 +1 x822 +1 x823 +1 x824 +1 x825 +1 x826 +1 x827 +1 x638 +1 x828 +1 x829 +1 x830 +1 x372 +1 x831 +1 x832 +1 x9 +1 x263 +1 x324 +1 x411 +1 x833 +1 x834 +1 x835 +1 x836 +1 x837 +1 x838 +1 x839 +1 x430 +1 x840 +1 x381 +1 x89 +1 x518 +1 x328 +1 x841 +1 x621 +1 x842 +1 x843 +1 x330 +1 x844 +1 x57 +1 x153 +1 x845 +1 x846 +1 x48 +1 x847 +1 x70 +1 x848 +1 x849 +1 x850 +1 x467 +1 x851 +1 x852 +1 x853 +1 x854 +1 x855 +1 x856 +1 x857 +1 x858 +1 x447 +1 x83 +1 x859 +1 x860 +1 x861 +1 x82 +1 x862 +1 x863 +1 x74 +1 x864 +1 x632 +1 x865 +1 x866 +1 x867 +1 x5 +1 x868 +1 x869 +1 x870 +1 x871 +1 x872 +1 x361 +1 x873 +1 x604 +1 x874 +1 x875 +1 x876 +1 x594 +1 x877 +1 x183 +1 x289 +1 x495 +1 x138 +1 x194 +1 x143 +1 x878 +1 x879 +1 x85 +1 x36 +1 x880 +1 x881 +1 x177 +1 x882 +1 x883 +1 x884 +1 x885 +1 x886 +1 x887 +1 x888 +1 x889 +1 x370 +1 x219 +1 x890 +1 x891 +1 x892 +1 x893 +1 x894 +1 x895 +1 x24 +1 x896 +1 x897 +1 x898 +1 x899 +1 x900 +1 x901 +1 x902 +1 x180 +1 x903 +1 x904 +1 x349 +1 x905 +1 x906 +1 x221 +1 x10 +1 x907 +1 x908 +1 x193 +1 x909 +1 x910 +1 x911 +1 x912 +1 x913 +1 x474 +1 x914 +1 x915 +1 x244 +1 x916 +1 x917 +1 x176 +1 x918 +1 x919 +1 x920 +1 x921 +1 x75 +1 x922 +1 x923 +1 x924 +1 x925 +1 x926 +1 x927 +1 x928 +1 x929 +1 x930 +1 x931 +1 x932 +1 x343 +1 x933 +1 x327 +1 x934 +1 x935 +1 x936 +1 x937 +1 x90 +1 x938 +1 x939 +1 x940 +1 x941 +1 x643 +1 x942 +1 x943 +1 x147 +1 x944 +1 x945 +1 x946 +1 x947 +1 x948 +1 x949 +1 x950 +1 x165 +1 x951 +1 x952 +1 x953 +1 x954 +1 x955 +1 x956 +1 x249 +1 x957 +1 x401 +1 x958 +1 x959 +1 x132 +1 x304 +1 x960 +1 x961 +1 x962 +1 x963 +1 x964 +1 x371 +1 x965 +1 x966 +1 x967 +1 x968 +1 x969 +1 x970 +1 x971 +1 x972 +1 x973 +1 x974 +1 x470 +1 x975 +1 x976 +1 x590 +1 x977 +1 x978 +1 x473 +1 x523 +1 x579 +1 x979 +1 x97 +1 x61 +1 x980 +1 x981 +1 x982 +1 x478 +1 x983 +1 x984 +1 x985 +1 x986 +1 x987 +1 x988 +1 x155 +1 x989 +1 x59 +1 x990 +1 x991 +1 x992 +1 x993 +1 x345 +1 x201 +1 x994 +1 x995 +1 x481 +1 x996 +1 x215 +1 x151 +1 x482 +1 x407 +1 x484 +1 x483 +1 x997 +1 x998 +1 x485 +1 x488 +1 x999 +1 x1000 +1 x489 +1 x490 +1 x1001 +1 x1002 +1 x1003 +1 x1004 +1 x511 +1 x1005 +1 x1006 +1 x1007 +1 x1008 +1 x1009 +1 x1010 +1 x1011 +1 x1012 +1 x1013 +1 x1014 +1 x1015 +1 x1016 +1 x1017 +1 x1018 +1 x1019 +1 x1020 +1 x1021 +1 x136 +1 x1022 +1 x216 +1 x1023 +1 x1024 +1 x1025 +1 x1026 +1 x1027 +1 x384 +1 x325 +1 x1028 +1 x657 +1 x1029 +1 x1030 +1 x368 +1 x250 +1 x1031 +1 x520 +1 x1032 +1 x266 +1 x1033 +1 x1034 +1 x1035 +1 x1036 +1 x1037 +1 x466 +1 x149 +1 x1038 +1 x1039 +1 x1040 +1 x1041 +1 x258 +1 x1042 +1 x1043 +1 x1044 +1 x1045 +1 x1046 +1 x1047 +1 x1048 +1 x1049 +1 x152 +1 x1050 +1 x1051 +1 x305 +1 x1052 +1 x1053 +1 x1054 +1 x1055 +1 x1056 +1 x1057 +1 x1058 +1 x1059 +1 x553 +1 x1060 +1 x1061 +1 x224 +1 x1062 +1 x1063 +1 x1064 +1 x1065 +1 x1066 +1 x1067 +1 x1068 +1 x195 +1 x259 +1 x399 +1 x86 +1 x1069 +1 x1070 +1 x494 +1 x1071 +1 x84 +1 x1072 +1 x140 +1 x256 +1 x1073 +1 x1074 +1 x146 +1 x1075 +1 x1076 +1 x1077 +1 x1078 +1 x1079 +1 x1080 +1 x628 +1 x1081 +1 x1082 +1 x1083 +1 x562 +1 x1084 +1 x239 +1 x458 +1 x1085 +1 x1086 +1 x241 +1 x462 +1 x1087 +1 x1088 +1 x1089 +1 x78 +1 x1090 +1 x1091 +1 x1092 +1 x1093 +1 x1094 +1 x1095 +1 x1096 +1 x469 +1 x631 +1 x1097 +1 x12 +1 x1098 +1 x1099 +1 x81 +1 x1100 +1 x1101 +1 x1102 +1 x1103 +1 x1104 +1 x406 +1 x1105 +1 x1106 +1 x1107 +1 x169 +1 x1108 +1 x476 +1 x1109 +1 x1110 +1 x1111 +1 x1112 +1 x49 +1 x1113 +1 x150 +1 x1114 +1 x1115 +1 x1116 +1 x1117 +1 x1118 +1 x28 +1 x1119 +1 x1120 +1 x137 +1 x409 +1 x1121 +1 x1122 +1 x99 +1 x1123 +1 x145 +1 x1124 +1 x1125 +1 x1126 +1 x1127 +1 x1128 +1 x11 +1 x373 +1 x1129 +1 x308 +1 x358 +1 x1130 +1 x1131 +1 x1132 +1 x600 +1 x1133 +1 x424 +1 x1134 +1 x1135 +1 x1136 +1 x1137 +1 x561 +1 x1138 +1 x1139 +1 x603 +1 x1140 +1 x456 +1 x1141 +1 x1142 +1 x1143 +1 x1144 +1 x1145 +1 x1146 +1 x425 +1 x1147 +1 x115 +1 x1148 +1 x1149 +1 x1150 +1 x1151 +1 x1152 +1 x23 +1 x1153 +1 x76 +1 x1154 +1 x1155 +1 x300 +1 x1156 +1 x1157 +1 x1158 +1 x1159 +1 x1160 +1 x1161 +1 x1162 +1 x1163 +1 x1164 +1 x1165 +1 x575 +1 x1166 +1 x583 +1 x1167 +1 x1168 +1 x200 +1 x71 +1 x1169 +1 x1170 +1 x322 +1 x1171 +1 x1172 +1 x1173 +1 x397 +1 x480 +1 x1174 +1 x1175 +1 x1176 +1 x576 +1 x209 +1 x1177 +1 x403 +1 x1178 +1 x1179 +1 x416 +1 x1180 +1 x13 +1 x1181 +1 x1182 +1 x1183 +1 x1184 +1 x1185 +1 x1186 +1 x1187 +1 x1188 +1 x1189 +1 x310 +1 x1190 +1 x1191 +1 x1192 +1 x524 +1 x1193 +1 x1194 +1 x202 +1 x1195 +1 x102 +1 x1196 +1 x1197 +1 x452 +1 x1198 +1 x386 +1 x1199 +1 x1200 +1 x1201 +1 x1202 +1 x457 +1 x1203 +1 x79 +1 x1204 +1 x1205 +1 x1206 +1 x1207 +1 x1208 +1 x1209 +1 x1210 +1 x160 +1 x527 +1 x1211 +1 x1212 +1 x1213 +1 x1214 +1 x1215 +1 x463 +1 x1216 +1 x1217 +1 x1218 +1 x7 +1 x1219 +1 x1220 +1 x1221 +1 x642 +1 x1222 +1 x1223 +1 x1224 +1 x1225 +1 x1226 +1 x605 +1 x1227 +1 x301 +1 x1228 +1 x449 +1 x1229 +1 x353 +1 x396 +1 x1230 +1 x174 +1 x98 +1 x1231 +1 x1232 +1 x1233 +1 x1234 +1 x1235 +1 x479 +1 x598 +1 x1236 +1 x1237 +1 x63 +1 x1238 +1 x1239 +1 x1240 +1 x1241 +1 x1242 +1 x1243 +1 x1244 +1 x1245 +1 x1246 +1 x170 +1 x1247 +1 x1248 +1 x1249 +1 x317 +1 x226 +1 x1250 +1 x1251 +1 x1252 +1 x37 +1 x1253 +1 x1254 +1 x1255 +1 x1256 +1 x601 +1 x1257 +1 x142 +1 x446 +1 x1258 +1 x1259 +1 x1260 +1 x1261 +1 x1262 +1 x1263 +1 x182 +1 x1264 +1 x1265 +1 x1266 +1 x1267 +1 x1268 +1 x1269 +1 x139 +1 x1270 +1 x1271 +1 x133 +1 x1272 +1 x1273 +1 x1274 +1 x1275 +1 x1276 +1 x1277 +1 x1278 +1 x1279 +1 x1280 +1 x1281 +1 x1282 +1 x1283 +1 x1284 +1 x1285 +1 x32 +1 x1286 +1 x1287 +1 x1288 +1 x1289 +1 x275 +1 x1290 +1 x1291 +1 x1292 +1 x1293 +1 x1294 +1 x1295 +1 x1296 +1 x1297 +1 x131 +1 x1298 +1 x262 +1 x1299 +1 x1300 +1 x503 +1 x1301 +1 x1302 +1 x629 +1 x475 +1 x1303 +1 x1304 +1 x1305 +1 x1306 +1 x1307 +1 x1308 +1 x1309 +1 x1310 +1 x319 +1 x1311 +1 x1312 +1 x1313 +1 x96 +1 x1314 +1 x94 +1 x1315 +1 x1316 +1 x1317 +1 x1318 +1 x1319 +1 x1320 +1 x1321 +1 x1322 +1 x1323 +1 x431 +1 x1324 +1 x1325 +1 x1326 +1 x1327 +1 x218 +1 x1328 +1 x1329 +1 x1330 +1 x1331 +1 x1332 +1 x27 +1 x1333 +1 x1334 +1 x398 +1 x1335 +1 x321 +1 x1336 +1 x1337 +1 x1338 +1 x1339 +1 x316 +1 x1340 +1 x1341 +1 x1342 +1 x1343 +1 x1344 +1 x1345 +1 x1346 +1 x1347 +1 x459 +1 x135 +1 x1348 +1 x1349 +1 x1350 +1 x277 +1 x1351 +1 x1352 +1 x1353 +1 x1354 +1 x1355 +1 x1356 +1 x1357 +1 x196 +1 x1358 +1 x52 +1 x1359 +1 x1360 +1 x1361 +1 x92 +1 x1362 +1 x1363 +1 x1364 +1 x1365 +1 x1366 +1 x468 +1 x448 +1 x1367 +1 x619 +1 x471 +1 x318 +1 x1368 +1 x254 +1 x265 +1 x242 +1 x1369 +1 x20 +1 x1370 +1 x1371 +1 x1372 +1 x1373 +1 x1374 +1 x1375 +1 x1376 +1 x1377 +1 x1378 +1 x1379 +1 x1380 +1 x1381 +1 x1382 +1 x1383 +1 x299 +1 x45 +1 x1384 +1 x1385 +1 x1386 +1 x1387 +1 x491 +1 x25 +1 x493 +1 x1388 +1 x1389 +1 x1390 +1 x369 +1 x1391 +1 x1392 +1 x19 +1 x1393 +1 x1394 +1 x1395 +1 x589 +1 x1396 +1 x400 +1 x1397 +1 x323 +1 x1398 +1 x8 +1 x1399 +1 x1400 +1 x1401 +1 x1402 +1 x404 +1 x1403 +1 x1404 +1 x1405 +1 x1406 +1 x1407 +1 x1408 +1 x1409 +1 x1410 +1 x1411 +1 x6 +1 x1412 +1 x1413 +1 x144 +1 x1414 +1 x1415 +1 x1416 +1 x1417 +1 x1418 +1 x302 +1 x1419 +1 x1420 +1 x1421 +1 x1422 +1 x1423 +1 x1424 +1 x1425 +1 x1426 +1 x1427 +1 x1428 +1 x1429 +1 x243 +1 x1430 +1 x1431 +1 x1432 +1 x1433 +1 x1434 +1 x1435 +1 x1436 +1 x1437 +1 x113 +1 x1438 +1 x1439 +1 x1440 +1 x1441 +1 x199 +1 x1442 +1 x1443 +1 x1444 +1 x1445 +1 x1446 +1 x1447 +1 x1448 +1 x1449 +1 x1450 +1 x257 +1 x255 +1 x1451 +1 x1452 +1 x1453 +1 x1454 +1 x1455 +1 x1456 +1 x1457 +1 x320 +1 x1458 +1 x154 +1 x1459 +1 x1460 +1 x1461 +1 x1462 +1 x134 +1 x497 +1 x181 +1 x1463 +1 x148 +1 x54 +1 x1464 +1 x1465 +1 x1466 +1 x1467 +1 x1468 +1 x453 +1 x1469 +1 x1470 +1 x1471 +1 x1472 +1 x1473 +1 x1474 +1 x1475 +1 x1476 +1 x1477 +1 x522 +1 x1478 +1 x1479 +1 x1480 +1 x1481 +1 x1482 +1 x1483 +1 x1484 +1 x1485 +1 x335 +1 x1486 +1 x1487 +1 x1488 +1 x1489 +1 x240 +1 x1490 +1 x276 +1 x465 +1 x1491 +1 x1492 +1 x1493 +1 x1494 +1 x1495 +1 x1496 +1 x1497 +1 x1498 +1 x329 +1 x1499 +1 x93 +1 x130 +1 x261 +1 x630 +1 x1500 +1 x1501 +1 x1502 +1 x1503 +1 x31 +1 x1504 +1 x1505 +1 x1506 +1 x1507 +1 x1508 +1 x1509 +1 x141 +1 x1510 +1 x1511 +1 x1512 +1 x1513 +1 x1514 +1 x225 +1 x1515 +1 x1516 +1 x205 +1 x1517 +1 x1518 +1 x1519 +1 x1520 +1 x1521 +1 x496 +1 x1522 +1 x387 +1 x1523 +1 x1524 +1 x1525 +1 x1526 +1 x1527 +1 x1528 +1 x1529 +1 x1530 +1 x1531 +1 x455 +1 x1532 +1 x577 +1 x1533 +1 x1534 +1 x1535 +1 x1536 +1 x445 +1 x1537 +1 x1538 +1 x1539 +1 x1540 +1 x618 +1 x1541 +1 x1542 +1 x1543 +1 x1544 +1 x1545 +1 x1546 +1 x414 +1 x1547 +1 x1548 +1 x1549 +1 x1550 +1 x1551 +1 x515 +1 x405 +1 x1552 +1 x1553 +1 x1554 +1 x1555 +1 x1556 +1 x1557 +1 x1558 +1 x336 +1 x385 +1 x39 +1 x214 +1 x1559 +1 x1560 +1 x1561 +1 x1562 +1 x526 +1 x1563 +1 x1564 +1 x620 +1 x1565 +1 x1566 +1 x1567 +1 x1568 +1 x1569 +1 x1570 +1 x1571 +1 x1572 +1 x1573 +1 x504 +1 x1574 +1 x1575 +1 x1576 +1 x1577 +1 x1578 +1 x1579 +1 x1580 +1 x487 +1 x1581 +1 x1582 +1 x639 +1 x1583 +1 x1584 +1 x1585 +1 x1586 +1 x1587 +1 x1588 +1 x1589 +1 x1590 +1 x1591 +1 x1592 +1 x1593 +1 x1594 +1 x637 +1 x1595 +1 x1596 >= 0;
* org.eclipse.datatools.connectivity.db.generic 1.0.0.v200805152355 requires either org.eclipse.core.runtime 3.4.0.v20080512
-1 x677 +1 x21 >= 0;
@@ -13265,8 +13243,6 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
-1 x692 +1 x1306 >= 0;
* org.eclipse.update.scheduler 3.2.100.v20080404 requires either org.eclipse.ui 3.4.0.I20080610-1200
-1 x692 +1 x54 >= 0;
-* org.eclipse.update.scheduler 3.2.100.v20080404 requires either org.eclipse.update.configurator 3.2.200.v20080417
--1 x692 +1 x638 >= 0;
* org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide 1.1.0.v20080425-1959 requires either org.eclipse.ui 3.4.0.I20080610-1200
-1 x693 +1 x54 >= 0;
* org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide 1.1.0.v20080425-1959 requires either org.eclipse.ui.ide 3.4.0.I20080606-1300
@@ -13311,8 +13287,6 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
-1 x2536 +1 x2962 >= 0;
* org.eclipse.platform.ide 3.4.0.I20080617-2000 requires either org.eclipse.equinox.p2.user.ui.feature.group 1.0.0.v20080516-7d--ETu637E5se-QIGiA
-1 x2536 +1 x2956 >= 0;
-* org.eclipse.platform.ide 3.4.0.I20080617-2000 requires either toolingwin32.win32.x86org.eclipse.update.configurator 3.2.200.v20080417
--1 x2536 +1 x2420 >= 0;
* org.eclipse.platform.ide 3.4.0.I20080617-2000 requires either org.eclipse.platform.ide.launcher.win32.win32.x86.eclipse.exe 3.4.0.I20080617-2000
-1 x2536 +1 x2963 >= 0;
* org.eclipse.platform.ide 3.4.0.I20080617-2000 requires either toolingwin32.win32.x86org.eclipse.core.runtime 3.4.0.v20080512
@@ -14130,8 +14104,6 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
* com.instantiations.assist.eclipse.core 5.5.0 requires optionaly either org.eclipse.osgi 3.4.0.v20080605-1900
-1 x2990 -1 x2991>= -1 ;
-1 x2991 1 x23 >= 0;
-* com.instantiations.assist.eclipse.core 5.5.0 requires either org.eclipse.update.configurator 3.2.200.v20080417
--1 x88 +1 x638 >= 0;
* com.instantiations.assist.eclipse.core 5.5.0 requires either org.eclipse.core.runtime 3.4.0.v20080512
-1 x88 +1 x21 >= 0;
-1 x88 1 x2990 1 x2989 1 x2991 >= 0;
@@ -14967,18 +14939,6 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
-1 x828 +1 x181 >= 0;
* org.eclipse.datatools.enablement.msft.sqlserver 1.0.1.v200805152355 requires either org.eclipse.datatools.connectivity 1.1.0.v200805160228
-1 x828 +1 x174 >= 0;
-* org.eclipse.update.configurator 3.2.200.v20080417 requires either org.eclipse.equinox.common 3.4.0.v20080421-2006
--1 x638 +1 x24 >= 0;
-* org.eclipse.update.configurator 3.2.200.v20080417 requires either org.eclipse.osgi 3.4.0.v20080605-1900
--1 x638 +1 x23 >= 0;
-* org.eclipse.update.configurator 3.2.200.v20080417 requires either com.windowtester.swing.recorder 3.5.1.200809042232 com.windowtester.runtime 3.5.1.200809042232 javax.xml 1.3.4.v200806030440 com.windowtester.swing.recorder 3.5.0.200806270034 com.windowtester.runtime 3.5.0.200806270034 a.jre 1.6.0
--1 x638 +1 x369 +1 x370 +1 x371 +1 x372 +1 x373 +1 x210 >= 0;
-* org.eclipse.update.configurator 3.2.200.v20080417 requires either com.windowtester.swing.recorder 3.5.1.200809042232 com.windowtester.runtime 3.5.1.200809042232 javax.xml 1.3.4.v200806030440 com.nordea.cd.dev.plugin.builderruntime 1.0.0 com.windowtester.swing.recorder 3.5.0.200806270034 com.nordea.cd.dev.plugin.builderruntime 1.0.1 com.windowtester.runtime 3.5.0.200806270034 com.nordea.cd.dev.plugin.builderruntime 1.0.2 a.jre 1.6.0
--1 x638 +1 x369 +1 x370 +1 x371 +1 x162 +1 x372 +1 x380 +1 x373 +1 x381 +1 x210 >= 0;
-* org.eclipse.update.configurator 3.2.200.v20080417 requires either com.windowtester.swing.recorder 3.5.1.200809042232 com.windowtester.runtime 3.5.1.200809042232 javax.xml 1.3.4.v200806030440 com.windowtester.swing.recorder 3.5.0.200806270034 com.windowtester.runtime 3.5.0.200806270034 a.jre 1.6.0
--1 x638 +1 x369 +1 x370 +1 x371 +1 x372 +1 x373 +1 x210 >= 0;
-* org.eclipse.update.configurator 3.2.200.v20080417 requires either com.windowtester.swing.recorder 3.5.1.200809042232 com.windowtester.runtime 3.5.1.200809042232 javax.xml 1.3.4.v200806030440 com.windowtester.swing.recorder 3.5.0.200806270034 com.windowtester.runtime 3.5.0.200806270034 a.jre 1.6.0
--1 x638 +1 x369 +1 x370 +1 x371 +1 x372 +1 x373 +1 x210 >= 0;
* org.eclipse.zest.sdk.feature.group 1.0.0.v20080115-53-8_GACFGHKZGOLXW_WSRQ6FDTE requires either org.eclipse.draw2d.sdk.feature.group 3.4.0.v20080115-677-8082A5655G3B9B8x422_274A
-1 x2700 +1 x556 >= 0;
* org.eclipse.zest.sdk.feature.group 1.0.0.v20080115-53-8_GACFGHKZGOLXW_WSRQ6FDTE requires either org.eclipse.zest.feature.group 1.0.0.v20080115-53-8xB4CE899O274A
@@ -15037,8 +14997,6 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
-1 x838 +1 x21 >= 0;
* org.eclipse.ui.ide.application 1.0.0.I20080603-2000 requires either org.eclipse.core.resources 3.4.0.v20080604-1400
-1 x838 +1 x53 >= 0;
-* org.eclipse.ui.ide.application 1.0.0.I20080603-2000 requires either org.eclipse.update.configurator 3.2.200.v20080417
--1 x838 +1 x638 >= 0;
* org.eclipse.ui.ide.application 1.0.0.I20080603-2000 requires either org.eclipse.ui 3.4.0.I20080610-1200
-1 x838 +1 x54 >= 0;
* org.eclipse.ui.ide.application 1.0.0.I20080603-2000 requires either org.eclipse.ui.navigator.resources 3.3.100.I20080606-1300
@@ -15089,8 +15047,6 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
* com.instantiations.assist.eclipse.core 5.5.1 requires optionaly either org.eclipse.osgi 3.4.0.v20080605-1900
-1 x3011 -1 x3012>= -1 ;
-1 x3012 1 x23 >= 0;
-* com.instantiations.assist.eclipse.core 5.5.1 requires either org.eclipse.update.configurator 3.2.200.v20080417
--1 x89 +1 x638 >= 0;
* com.instantiations.assist.eclipse.core 5.5.1 requires either org.eclipse.core.runtime 3.4.0.v20080512
-1 x89 +1 x21 >= 0;
-1 x89 1 x3011 1 x3010 1 x3012 >= 0;
@@ -15221,9 +15177,6 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
* org.eclipse.ui.ide 3.4.0.I20080606-1300 requires optionaly either org.eclipse.ui.views 3.3.0.I20080509-2000
-1 x3024 -1 x3025>= -1 ;
-1 x3025 1 x59 >= 0;
-* org.eclipse.ui.ide 3.4.0.I20080606-1300 requires optionaly either org.eclipse.update.configurator 3.2.200.v20080417
--1 x3024 -1 x3026>= -1 ;
- -1 x3026 1 x638 >= 0;
* org.eclipse.ui.ide 3.4.0.I20080606-1300 requires optionaly either org.eclipse.update.core 3.2.200.v20080515
-1 x3024 -1 x3027>= -1 ;
-1 x3027 1 x1185 >= 0;
@@ -16689,9 +16642,6 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
* com.swtdesigner 6.7.0.200806270151 requires optionaly either org.eclipse.jface.text 3.4.0.v20080603-2000
-1 x3080 -1 x3089>= -1 ;
-1 x3089 1 x63 >= 0;
-* com.swtdesigner 6.7.0.200806270151 requires optionaly either org.eclipse.update.configurator 3.2.200.v20080417
--1 x3080 -1 x3090>= -1 ;
- -1 x3090 1 x638 >= 0;
* com.swtdesigner 6.7.0.200806270151 requires optionaly either org.eclipse.osgi 3.4.0.v20080605-1900
-1 x3080 -1 x3091>= -1 ;
-1 x3091 1 x23 >= 0;
@@ -19760,8 +19710,6 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
-1 x1184 +1 x583 >= 0;
* org.eclipse.update.core 3.2.200.v20080515 requires either org.eclipse.core.runtime 3.4.0.v20080512
-1 x1185 +1 x21 >= 0;
-* org.eclipse.update.core 3.2.200.v20080515 requires either org.eclipse.update.configurator 3.2.200.v20080417
--1 x1185 +1 x638 >= 0;
* org.eclipse.update.core 3.2.200.v20080515 requires either org.eclipse.core.net 1.1.0.I20080604
-1 x1185 +1 x316 >= 0;
* org.eclipse.update.core 3.2.200.v20080515 requires either com.windowtester.swing.recorder 3.5.1.200809042232 com.windowtester.runtime 3.5.1.200809042232 javax.xml 1.3.4.v200806030440 com.windowtester.swing.recorder 3.5.0.200806270034 com.windowtester.runtime 3.5.0.200806270034 a.jre 1.6.0
@@ -20002,7 +19950,7 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
-1 x2608 +1 x2357 >= 0;
* org.eclipse.emf.mint.sdk.feature.group 0.7.0.v200806172223 requires either org.eclipse.emf.mint.sdk.feature.jar 0.7.0.v200806172223
-1 x2608 +1 x2133 >= 0;
-* tooling.osgi.bundle.default 1.0.0 requires either org.python.pydev.core 0.9.7 org.eclipse.m2m.qvt.oml.trace.edit 1.0.0.v20080611-1330 org.eclipse.emf.codegen.ecore 2.4.0.v200806091234 org.eclipse.uml2.common.edit 1.4.0.v200805131030 org.eclipse.core.runtime 3.4.0.v20080512 org.python.pydev.core 1.3.9 javax.xml.soap 1.2.0.v200806030421 org.eclipse.gmf.runtime.common.ui.action.ide 1.1.0.v20080425-1959 org.eclipse.emf.cdo.edit 1.0.0.v200806180411 org.eclipse.ecf.provider.msn 1.2.0.v20080623-0046 org.eclipse.equinox.frameworkadmin.equinox 1.0.0.v20080529-1225 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.1 org.eclipse.equinox.http.servletbridge 1.0.0.v20080427-0830 org.python.pydev 0.9.5 org.python.pydev.parser 1.2.3 org.eclipse.emf.example.installer 1.0.0.v200806091234 com.instantiations.assist.eclipse 5.5.0 org.eclipse.wst.common.environment 1.0.201.v200805140020 org.eclipse.zest.source 1.0.0.v20080115-53-8xB4CE899O274A org.eclipse.emf.ant 2.4.0.v200806091234 com.instantiations.eclipse.mail 5.5.1 org.python.pydev.parser 1.3.1 org.eclipse.birt.chart.engine 2.3.0.v20080606 org.eclipse.core.resources 3.4.0.v20080604-1400 org.eclipse.birt.report.engine.emitter.postscript 2.3.0.v20080610 org.python.pydev.jython 1.1.0 org.eclipse.ui.workbench.compatibility 3.2.0.I20080509-2000 com.nordea.cd.dev.plugin.builderruntime 1.0.0 org.eclipse.m2m.atl.adt.editor 2.0.0.v200806101117 org.eclipse.equinox.p2.director.app 1.0.0.v20080604 org.eclipse.mylyn.tasks.core 3.0.0.v20080619-1900 org.python.pydev.ast 1.0.4 org.eclipse.m2m.atl.compilers.atl2006 2.0.0.v200806101117 org.eclipse.datatools.enablement.sybase.asa.ui 1.0.1.v200805310538 org.eclipse.emf.mapping.ecore2xml.ui 2.4.0.v200806091234 org.eclipse.wst.dtd.ui 1.0.301.v200808072012 org.eclipse.birt.chart.engine.extension 2.3.0.v20080611 org.eclipse.jface.databinding 1.2.0.I20080515-2000a org.eclipse.birt.chart.reportitem.ui 2.3.0.v20080610 org.eclipse.datatools.enablement.hsqldb.ui 1.0.0.v200805152355 org.eclipse.mylyn.ide.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.security.ui 1.0.0.v20080603-1810 org.eclipse.wst.common.emfworkbench.integration 1.1.201.v200808071700 org.eclipse.gmf.validate 1.1.0.v20080603-1553 org.eclipse.emf.mapping.ecore2ecore.editor 2.4.0.v200806091234 org.eclipse.ecf.provider.irc 1.3.0.v20080623-0046 org.eclipse.emf.validation.doc 1.2.0.v200805130238 org.python.pydev.ast 1.2.8 org.eclipse.emf.teneo.doc 1.0.0.v200806111928 org.python.pydev.jython 1.3.12 org.eclipse.emf.ecoretools.source 0.8.0.v200806130600 org.eclipse.equinox.p2.updatesite 1.0.0.v20080529-1800 org.eclipse.ecf.presence.bot 1.2.0.v20080623-0046 com.swtdesigner.properties.java5 1.0.0 org.eclipse.platform.doc.isv 3.4.0.v20080613-1330 org.python.pydev.core 1.2.3 org.eclipse.datatools.connectivity.db.generic 1.0.0.v200805152355 org.eclipse.uml2.diagram.clazz 0.8.0.v200806112132 org.eclipse.birt.report.designer.ui.views 2.3.0.v20080606 org.eclipse.mylyn.monitor.core 3.0.2.v20080918-1100-e3x com.instantiations.eclipse.debug 5.3.2.200806270030 org.eclipse.gmf.runtime.common.ui.action 1.1.0.v20080425-1959 org.eclipse.equinox.useradmin 1.1.0.v20080508-1815 org.eclipse.mylyn.commons.ui 3.0.2.v20080918-1100-e3x org.eclipse.equinox.cm 1.0.0.v20080509-1800 org.eclipse.uml2.diagram.component 0.8.0.v200806112132 org.eclipse.swt.layout.grouplayout 1.1.0 org.python.pydev 1.2.4 javax.servlet 2.4.0.v200806031604 org.eclipse.uml2.examples.uml.ui 2.2.0.v200805131030 org.python.pydev.ast 1.3.10 org.eclipse.birt.report.designer.ui.ide 2.3.0.v20080606 org.python.pydev.parser 1.3.18 com.swtdesigner.layout.group 6.7.0.200806270151 org.eclipse.m2m.qvt.oml.runtime.source 1.0.0.v20080611-1330-5--AgI99m9cDD4DNN9 org.eclipse.mylyn.tasks.ui 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.3.13 org.eclipse.emf.teneo.jpox.eclipse 1.0.0.v200806111928 org.eclipse.equinox.transforms.xslt 1.0.0.v20080610 org.python.pydev.core 1.0.7 org.eclipse.datatools.enablement.ibm.db2.zseries.ui 1.0.0.v200805160737 org.eclipse.mylyn.resources.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.enablement.oda.ws 1.1.0.v200805261930 org.eclipse.equinox.frameworkadmin 1.0.0.v20080430-1750 org.eclipse.birt.chart.device.extension 2.3.0.v20080424 org.eclipse.net4j.jvm 1.0.0.v200806180305 org.eclipse.emf.cdo.migrator 1.0.0.v200806180411 org.python.pydev.jython 1.3.1 org.eclipse.m2m.qvt.oml.cst.parser 1.0.0.v20080611-1330 com.xored.composer.ui 1.3.4.200809042225 org.eclipse.datatools.enablement.sybase.ui 1.0.0.v200806041138 org.eclipse.ecf.remoteservice.ui 2.0.0.v20080623-0046 org.eclipse.net4j.db.mysql 1.0.0.v200806180305 org.eclipse.update.scheduler 3.2.100.v20080404 org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide 1.1.0.v20080425-1959 org.eclipse.wst.dtdeditor.doc.user 1.0.400.v200805150028 org.eclipse.wst.xmleditor.doc.user 1.0.401.v200808071323 org.eclipse.gmf.runtime.common.ui.services.dnd 1.1.0.v20080425-1959 org.eclipse.uml2.common 1.4.0.v200805131030 org.apache.jasper 5.5.17.v200806031609 org.python.pydev 1.0.8 org.eclipse.datatools.doc.user 1.6.0.20080606124249 org.objectweb.asm 3.1.0.v200803061910 org.eclipse.emf.cdo.doc 1.0.0.v200806180411 org.python.pydev.core 1.3.17 org.eclipse.core.resources.compatibility 3.4.0.v20080604-1400 com.instantiations.eclipse.startup 5.3.2.200806270030 org.eclipse.datatools.connectivity.apache.derby.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.graphdef.codegen 2.0.100.v20080528-1052 org.eclipse.emf.common 2.4.0.v200806091234 org.eclipse.wst.xml.ui.infopop 1.0.300.v200805140200 org.python.pydev.core 1.3.0 org.eclipse.equinox.p2.touchpoint.natives 1.0.0.v20080505-1850 org.eclipse.ant.core 3.2.0.v20080529 org.eclipse.ui.workbench 3.4.0.I20080606-1300 org.eclipse.ecf.provider.xmpp.ui 2.0.0.v20080623-0046 org.w3c.sac 1.3.0.v20070710 org.python.pydev.jython 1.2.3 org.eclipse.mylyn.context.ui 3.0.0.v20080619-1900 org.eclipse.ecf.doc 1.3.0.v20080623-0046 org.eclipse.ecf.provider.bittorrent.ui 0.2.0.v20080623-0046 com.xored.swt.composer 1.3.4.200809042225 org.python.pydev.parser 1.0.4 org.eclipse.help.webapp 3.3.100.v20080528 org.eclipse.uml2.diagram.deploy 0.8.0.v200806112132 org.eclipse.ecf.provider.irc.ui 1.3.0.v20080623-0046 org.python.pydev 1.3.18 org.eclipse.m2m.atl.source 2.0.0.v200806101117 org.eclipse.mylyn.tasks.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.identity 2.0.0.v20080611-1715 org.eclipse.ocl.ecore 1.2.0.v200805130238 org.eclipse.core.expressions 3.4.0.v20080603-2000 org.eclipse.core.runtime.compatibility.registry 3.2.200.v20080610 org.eclipse.tptp.platform.la.core 4.3.200.v200805231116 org.eclipse.m2m.atl.service.core 2.0.0.v200806101117 org.apache.commons.logging 1.0.4.v20080605-1930 org.eclipse.platform.doc.user 3.4.0.v20080612-1340 com.windowtester.runtime.junit4 3.5.0.200806270034 org.python.pydev.parser 1.2.8 org.eclipse.uml2.examples.source 2.2.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.providers 1.1.0.v20080503-1740 org.python.pydev.jython 1.3.20 org.python.pydev.jython 1.0.7 org.eclipse.m2m.qvt.oml.common 1.0.0.v20080611-1330 org.eclipse.wst.sse.ui 1.1.0.v200806041847 org.eclipse.core.resources.win32.x86 3.4.0.v20071204 org.eclipse.swt.widgets.baseline 1.1.0 com.xored.swt.composer.win32.win32.x86 1.3.4.200809042225 org.eclipse.datatools.enablement.mysql.ui 1.0.0.v200805152355 org.eclipse.m2m.atl.ocl.core 2.0.0.v200806101117 org.eclipse.emf.codegen.ecore.ui 2.4.0.v200806091234 org.eclipse.equinox.http.servlet 1.0.100.v20080427-0830 org.python.pydev.ast 1.3.2 org.python.pydev 1.3.6 org.eclipse.birt.report.viewer 2.3.0.v20080606 org.apache.batik.extension 1.6.0.v200805290154 org.eclipse.uml2.diagram.statemachine 0.8.0.v200806112132 org.python.pydev.parser 1.3.10 org.eclipse.equinox.p2.ui.admin.rcp 1.0.0.v20080604 org.eclipse.emf.compare.match 0.8.0.v200806180301 org.eclipse.datatools.enablement.oracle.ui 1.0.0.v200805240040 org.python.pydev 0.7.1 com.lowagie.itext 1.5.4.v20080228 org.eclipse.birt.report.designer.ui.preview.web 2.3.0.v200806102 org.eclipse.birt.report.designer.ui.samples.ide 2.3.0.v20080606 org.eclipse.xsd.ecore.converter 2.4.0.v200806091234 org.eclipse.jdt.compiler.tool 1.0.100.v_874 org.eclipse.equinox.registry 3.4.0.v20080516-0950 org.eclipse.wst.dtd.ui.infopop 1.0.300.v200805140200 org.python.pydev.ast 0.9.5 org.eclipse.ui.workbench.texteditor 3.4.0.v20080603-2000 org.eclipse.cvs 1.0.100.v20080603 org.eclipse.uml2.search.ui 0.7.0.v200806130939 org.eclipse.gmf.common 1.1.1.v20080610-1132 org.eclipse.uml2.uml.editor 2.2.0.v200805131030 org.eclipse.m2m.atl.engine 2.0.0.v200806101117 org.eclipse.net4j.http.common 1.0.0.v200806180305 org.eclipse.ecf.presence.ui 1.2.0.v20080623-0046 org.python.pydev.parser 1.2.2 org.eclipse.emf.cdo.tests.model3.edit 1.0.0.v200806180411 org.eclipse.emf.cdo.tests.model1 1.0.0.v200806180411 org.eclipse.m2m.atl.engine.vm 2.0.0.v200806101117 com.instantiations.eclipse.mail 5.5.0 org.eclipse.emf.ocl.source 1.1.100.v200805130238-108Y7w311916241349 com.windowtester.swt.runtime.legacy 3.5.1.200809042232 org.eclipse.uml2tools 0.8.0.v200806112132 org.eclipse.emf.search.genmodel.ui 0.7.0.v200806130939 org.eclipse.mylyn.jira.core 3.0.2.v20080918-1100-e3x org.eclipse.uml2.uml.ecore.importer 2.2.0.v200805131030 org.eclipse.emf.transaction.doc 1.2.0.v200805130238 org.eclipse.tptp.platform.logging.events 4.3.200.v200805310100 org.python.pydev.core 1.3.8 org.eclipse.xsd.ecore.importer 2.4.0.v200806091234 org.eclipse.emf.teneo.source 1.0.0.v200806111928-78--DUUEFDEz0MMNLVD org.eclipse.uml2 2.1.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.render 1.1.0.v20080603-1553 com.windowtester.swt.runtime.os.win32 3.5.0.200806270034 org.eclipse.rcp 3.4.0.v20080507 org.eclipse.xsd.mapping 2.4.0.v200806091234 org.eclipse.emf.workspace.doc 1.2.0.v200805130238 org.eclipse.pde.api.tools 1.0.0.v20080529-1150 org.eclipse.emf.mapping.ecore2xml 2.4.0.v200806091234 org.eclipse.swt.win32.win32.x86 3.4.0.v3448f org.apache.derby 10.1.2.1_v200803061811 org.eclipse.m2m.qvt.oml.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.python.pydev.parser 1.3.0 org.eclipse.ecf.protocol.msn 1.2.0.v20080623-0046 com.instantiations.eclipse.ui 5.3.2.200809042027 org.eclipse.jet.core 1.1.0.v20080415 org.eclipse.datatools.enablement.sybase.ase.models 1.0.1.v200805152355 com.nordea.cd.dev.plugin.builderruntime 1.0.1 com.instantiations.assist.eclipse.core 5.5.0 org.python.pydev.ast 1.0.5 org.eclipse.ecf.filetransfer 2.0.0.v20080611-1715 org.python.pydev.parser 0.9.5 org.python.pydev.core 1.2.2 org.eclipse.emf.transaction.ui 1.2.0.v200805130238 org.eclipse.gmf.runtime.gef.ui 1.1.0.v20080503-1740 org.eclipse.wst.xml.core 1.1.301.v200808072008 org.eclipse.uml2.diagram.clazz.search 0.7.0.v200806130939 org.sat4j.core 2.0.0.v20080602 org.eclipse.datatools.connectivity.ui 1.1.0.v200806040132 org.eclipse.birt.report.designer.ui.editors 2.3.0.v20080610a org.eclipse.equinox.p2.reconciler.dropins 1.0.0.v20080611 org.eclipse.wst.common.project.facet.core 1.3.1.v200807031821 org.python.pydev.jython 1.3.11 org.eclipse.datatools.enablement.postgresql 1.0.1.v200805152355 org.eclipse.ltk.ui.refactoring 3.4.0.v20080605-1800 org.eclipse.datatools.enablement.sybase.ase 1.0.1.v200806040735 org.python.pydev.ast 1.2.9 org.eclipse.datatools.connectivity.oda 3.1.2.v200805152355 org.eclipse.wst.common.emf 1.1.201.v200808071700 org.apache.batik.dom.svg 1.6.0.v200805290154 org.eclipse.birt.chart 2.3.0.v20080304 org.python.pydev.jython 1.2.9 org.python.pydev.ast 1.3.11 org.eclipse.datatools.enablement.mysql.dbdefinition 1.0.1.v200805170742 org.python.pydev.parser 1.3.19 org.python.pydev.core 1.0.6 org.eclipse.uml2.diagram 0.8.0.v200806112132 org.eclipse.jdt.junit4.runtime 1.0.200.v20080603-2000 org.python.pydev.ast 1.3.12 org.eclipse.swt 3.4.0.v3448f org.eclipse.emf.ecoretools.diagram.search 0.7.0.v200806130939 org.eclipse.pde.ui.templates 3.4.0.v20080514-1500 com.instantiations.packager.ui 2.5.1 org.eclipse.emf.cdo.server.db 1.0.0.v200806180411 org.eclipse.datatools.enablement.sybase.asa 1.0.1.v200805310538 org.eclipse.emf.compare 0.8.0.v200806180301 org.eclipse.datatools.enablement.oda.ws.ui 1.1.0.v200805261930 org.eclipse.jdt.launching 3.4.0.v20080529-1300 org.eclipse.mylyn.tasks.ui 3.0.0.v20080619-1900 org.apache.ws.jaxme 0.5.1.v20080530-1550 org.eclipse.mylyn.bugzilla.ui 3.0.0.v20080619-1900 org.apache.commons.el 1.0.0.v200806031608 org.python.pydev 1.2.3 org.w3c.dom.smil 1.0.0.v200806040011 org.eclipse.wst.validation.infopop 1.0.300.v200806041506 org.python.pydev 1.0.7 org.eclipse.net4j.source 1.0.0.v200806180305 org.eclipse.m2m.qvt.oml.ocl 1.0.0.v20080611-1330 org.eclipse.uml2.uml.edit 2.2.0.v200805131030 org.eclipse.emf.search.ui 0.7.0.v200806130939 org.python.pydev.core 1.3.16 org.eclipse.emf.validation.ui 1.2.0.v200805130238 org.eclipse.datatools.enablement.oda.xml 1.1.0.v200805270900 org.eclipse.ltk.core.refactoring 3.4.0.v20080603-2000 org.python.pydev.jython 1.3.2 com.windowtester.swt.codegen 3.5.0.200806270034 org.eclipse.datatools.sqltools.ddlgen.ui 1.0.0.v200805152355 org.apache.xerces 2.9.0.v200805270400 org.eclipse.birt.report.engine.dataextraction 2.3.0.v20080611 org.eclipse.equinox.jmx.vm 1.0.0.v20070515 org.eclipse.birt.report.data.oda.jdbc.ui 2.3.0.v20080606 org.eclipse.equinox.ds 1.0.0.v20080427-0830 org.eclipse.mylyn.bugzilla.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.http.jetty 2.0.0.v20080425 org.eclipse.mylyn.team.ui 3.0.2.v20080918-1100-e3x org.python.pydev.jython 1.2.4 org.eclipse.birt.chart.device.svg 2.3.0.v20080526 org.python.pydev.parser 1.0.5 org.eclipse.ui.presentations.r21 3.2.100.I20080512-2000 org.eclipse.mylyn 3.0.0.v20080619-1900 org.eclipse.m2m.qvt.oml.doc 1.0.0.v20080611-1330 org.eclipse.team.svn.nl1.sources 0.7.1.I20080612-1500 org.eclipse.mylyn.resources.ui 3.0.0.v20080619-1900 org.eclipse.datatools.enablement.ibm.db2.luw 1.0.0.v200805152355 org.python.pydev.core 1.3.1 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.1 org.eclipse.ecf.provider.filetransfer 2.0.0.v20080611-1715 org.eclipse.emf.cdo.tests.mango.edit 1.0.0.v200806180411 org.python.pydev.parser 1.2.9 org.eclipse.m2m.qvt.oml.emf.util 1.0.0.v20080611-1330 org.eclipse.team.cvs.ssh 3.2.100.I20080604 org.python.pydev.jython 1.3.19 org.python.pydev.jython 1.0.8 org.python.pydev.ast 1.2.1 org.eclipse.m2m.qvt.oml.project 1.0.0.v20080611-1330 com.instantiations.assist.eclipse.core.ui 5.5.1 org.eclipse.datatools.enablement.ibm.db2.zseries.dbdefinition 1.0.0.v200805152355 org.eclipse.datatools.enablement.ibm.db2.iseries 1.0.0.v200805152355 com.swtdesigner.fragment.jdt.core 6.7.1.200809050053 org.eclipse.equinox.device 1.0.1.v20080303 org.eclipse.equinox.http.jetty 1.1.0.v20080425 org.eclipse.emf.cdo.tests.model3 1.0.0.v200806180411 org.eclipse.emf.teneo.hibernate.mapper 1.0.0.v200806111928 org.eclipse.compare 3.4.0.I20080604 org.polarion.eclipse.team.svn.connector.javahl 2.0.1.I20080612-1500 org.eclipse.gmf.runtime.diagram.ui.geoshapes 1.1.0.v20080503-1740 org.eclipse.emf.mint.ui 0.7.0.v200806172223 org.eclipse.ui.win32 3.2.100.v20080408-0800 org.eclipse.jet.source 0.9.0.v20080516 org.python.pydev 1.3.17 com.windowtester.runtime.junit4 3.5.1.200809042232 org.eclipse.ecf.examples.remoteservices.server 1.0.100.v20080623-0046 org.eclipse.text 3.4.0.v20080605-1800 org.eclipse.uml2.diagram.common 0.8.0.v200806112132 org.eclipse.datatools.connectivity.sqm.core.ui 1.1.0.v200806070326 org.python.pydev.core 0.9.7.99 org.eclipse.net4j.jms 1.0.0.v200806180305 org.junit4 4.3.1 org.eclipse.epp.usagedata.recording 1.0.0.R200806162215 org.eclipse.buckminster.remote 1.0.0.r09326 org.eclipse.gmf.tooling 2.1.0.v20080425-1959 org.eclipse.emf.cdo.tests.model2 1.0.0.v200806180411 org.eclipse.emf.ecore.sdo.editor 2.4.0.v200806091234 com.instantiations.swt.graph 5.5.0 org.eclipse.uml2.search 0.7.0.v200806130939 org.python.pydev 1.3.5 org.python.pydev.ast 1.3.3 org.eclipse.update.configurator 3.2.200.v20080417 org.eclipse.datatools.enablement.msft.sqlserver 1.0.1.v200805152355 org.python.pydev.parser 1.3.11 org.eclipse.datatools.enablement.sap.maxdb.dbdefinition 1.0.0.v200805152355 com.windowtester.swing.recorder 3.5.0.200806270034 org.eclipse.gmf.runtime.common.ui.printing.win32 1.1.0.v20080612-1355 org.python.pydev.ast 1.3.20 org.eclipse.wst.common.snippets 1.1.200.v200805140415 org.eclipse.mylyn.commons.core 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.tasks.core 3.0.2.v20080918-1100-e3x org.eclipse.jdt.doc.user 3.4.0.v20080612-1340 org.eclipse.birt.chart.ui 2.3.0.v20080522 org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb 2.3.0.v20080606 org.eclipse.uml2.diagram.examples.clazz 0.8.0.v200806112132 org.eclipse.ecf.provider.msn.ui 1.3.0.v20080623-0046 org.python.pydev.parser 1.3.3 org.eclipse.ui.ide.application 1.0.0.I20080603-2000 org.python.pydev.ast 1.0.6 org.eclipse.equinox.jsp.jasper.registry 1.0.0.v20080427-0830 org.eclipse.equinox.p2.engine 1.0.0.v20080522-1735 com.nordea.cd.dev.plugin.builderruntime 1.0.2 com.instantiations.assist.eclipse.core 5.5.1 org.eclipse.m2m.qvt.oml 1.0.0.v20080611-1330 org.eclipse.mylyn.commons.ui 3.0.1.v20080721-2100-e3x org.eclipse.update.core.win32 3.2.100.v20080107 org.eclipse.datatools.sqltools.db.derby 1.0.0.v200805152355 com.instantiations.assist.eclipse.admin 5.5.0 org.eclipse.ecf.telephony.call 1.2.0.v20080623-0046 org.eclipse.mylyn.monitor.core 3.0.0.v20080619-1900 org.eclipse.epp.usagedata.ui 1.0.0.R200806162215 org.eclipse.ui.ide 3.4.0.I20080606-1300 org.eclipse.hyades.lta.sdb 4.5.0.v200806051823 org.eclipse.birt.report.model.adapter.oda 2.3.0.v20080523 org.eclipse.emf.compare.doc 0.8.0.v200806180301 org.eclipse.equinox.servletbridge 1.0.100.v20080427-0830 com.instantiations.common.help 5.3.2.200809042027 org.eclipse.jdt.core 3.4.0.v_874 org.eclipse.equinox.p2.director 1.0.0.v20080604 org.eclipse.gmf.runtime.emf.ui.properties 1.1.0.v20080425-1959 org.eclipse.emf.exporter 2.4.0.v200806091234 org.python.pydev.core 1.3.7 org.eclipse.uml2.diagram.def 0.8.0.v200806112132 org.python.pydev.parser 1.2.1 org.eclipse.wst.command.env.ui 1.1.0.v200805140415 org.eclipse.wst.common.modulecore 1.1.200.v200806091800 org.python.pydev 0.9.7 org.eclipse.gmf.graphdef.edit 2.0.100.v20080610-1132 org.eclipse.birt.report.designer.ui.cubebuilder 2.3.0.v20080606 org.eclipse.m2m.atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.actions 1.1.0.v20080603-1553 com.instantiations.common.core 5.3.2.200806270030 org.eclipse.datatools.enablement.ibm.informix 1.0.0.v200805152355 org.eclipse.net4j.tcp 1.0.0.v200806180305 org.eclipse.wst.common.environment 1.0.202.v200807161459 com.instantiations.common.core 5.3.2.200809042027 org.eclipse.birt.report.data.oda.xml 2.3.0.v20080606 org.eclipse.pde.api.tools.ui 1.0.0.v20080603 org.eclipse.debug.ui 3.4.0.v20080529-1300 org.python.pydev 1.2.2 org.eclipse.team.svn.ui.nl1 0.7.1.I20080612-1500 org.apache.batik.transcoder 1.6.0.v200805290154 org.eclipse.emf.ecore.sdo.edit 2.4.0.v200806091234 org.python.pydev.parser 1.3.16 org.eclipse.wst.command.env.ui 1.1.1.v200807162242 org.eclipse.uml2.diagram.codegen.edit 0.8.0.v200806112132 org.eclipse.datatools.connectivity.db.generic.ui 1.0.1.v200805152355 org.eclipse.mylyn.resources.ui 3.0.2.v20080918-1100-e3x org.python.pydev.ast 1.3.8 org.python.pydev 1.3.0 org.eclipse.net4j.db 1.0.0.v200806180305 org.python.pydev.ast 1.3.15 org.eclipse.uml2.codegen.ecore 1.4.0.v200805201126 org.eclipse.gmf.sdk 1.0.0.v20080425-1959 org.eclipse.equinox.p2.core 1.0.0.v20080530-1237 org.python.pydev.jython 1.3.10 org.eclipse.emf.cdo 1.0.0.v200806180411 org.eclipse.emf.search.genmodel 0.7.0.v200806130939 org.eclipse.ui.navigator 3.3.100.I20080606-1300 org.eclipse.team.svn.mylyn 0.7.1.I20080612-1500 org.python.pydev.core 1.2.5 org.eclipse.tptp.platform.lta.la.core 4.5.0.v200805132041 org.eclipse.wst.sse.core 1.1.301.v200808072008 org.eclipse.tptp.platform.lta.log.views 4.5.0.v200806051823 org.eclipse.mylyn.java.ui 3.0.2.v20080918-1100-e3x org.eclipse.emf.search.codegen 0.7.0.v200806130939 com.instantiations.common.ui 5.3.2.200806270030 org.eclipse.ecf 2.0.0.v20080611-1715 org.eclipse.equinox.p2.ui.sdk 1.0.0.v20080605-1731 org.apache.commons.discovery 0.2.0.v200806030120 org.eclipse.datatools.help 1.5.0.v200805152355 org.python.pydev.parser 0.9.7.99 org.w3c.css.sac 1.3.0.v200805290154 org.eclipse.jet.examples 0.9.0.v20080211 org.eclipse.mylyn.bugzilla.ide 3.0.2.v20080918-1100-e3x org.eclipse.pde.junit.runtime 3.4.0.v20080529-1800 org.eclipse.emf.commonj.sdo 2.4.0.v200806091234 org.python.pydev.jython 1.2.1 com.instantiations.tools 5.3.2.200806270030 com.windowtester.runtime 3.5.1.200809042232 org.eclipse.wst.validation 1.2.0.v200806051402 org.eclipse.ecf.docshare 2.0.0.v20080623-0046 com.instantiations.eclipse.model.jsp 5.5.1 org.eclipse.emf.teneo.hibernate.eclipse 1.0.0.v200806111928 com.jcraft.jsch 0.1.37.v200803061811 org.python.pydev.parser 1.0.6 org.eclipse.emf.converter 2.4.0.v200806091234 org.eclipse.equinox.common 3.4.0.v20080421-2006 org.eclipse.buckminster.ui 1.0.0.r09319 org.eclipse.datatools.sqltools.tablewizard 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.0 org.eclipse.uml2.source 2.2.0.v200805201126 org.eclipse.team.cvs.ui 3.3.100.I20080604 org.python.pydev.jython 1.3.3 org.eclipse.emf.search.ocl 0.7.0.v200806130939 org.eclipse.datatools.enablement.sybase.asa.models 1.0.0.v200805152355 org.eclipse.sdk 3.4.0.v200806172000 org.eclipse.xsd.ecore.exporter 2.4.0.v200806091234 org.apache.commons.codec 1.3.0.v20080530-1600 org.eclipse.equinox.p2.exemplarysetup 1.0.0.v20080427-2136 org.eclipse.equinox.io 1.0.0.v20080218 org.eclipse.wst.common.project.facet.core 1.3.0.v200805140020 org.eclipse.wst.common.ui 1.1.301.v200805140415 org.eclipse.emf.databinding.edit 1.0.0.v200806091234 org.mortbay.jetty.server 6.1.7.v200806031612 org.eclipse.wst.dtd.core 1.1.200.v200805140200 org.python.pydev 1.0.6 org.eclipse.uml2.diagram.activity 0.8.0.v200806112132 org.eclipse.emf.importer.rose 2.4.0.v200806091234 org.eclipse.core.net.win32.x86 1.0.0.I20080521 javax.activation 1.1.0.v200804101140 org.python.pydev.core 1.3.15 org.python.pydev.parser 1.3.8 com.instantiations.assist.eclipse.coverage.ui 5.5.1.200809042337 org.eclipse.emf.ecoretools.filters 0.8.0.v200806130600 org.python.pydev.ast 1.3.0 org.eclipse.birt.report.data.oda.xml.ui 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase 1.0.1.v200805310538 org.python.pydev 1.3.8 org.eclipse.equinox.ip 1.0.0.v20080218 org.eclipse.datatools.connectivity.console.profile 1.0.0.v200805231345 org.eclipse.ecf.sharedobject 1.3.0.v20080623-0046 org.eclipse.debug.core 3.4.0.v20080612 org.eclipse.wst.xmleditor.doc.user 1.0.400.v200805211530 org.eclipse.datatools.enablement.sap.maxdb 1.0.0.v200805152355 org.python.pydev.ast 0.9.7 com.windowtester.swt.runtime.legacy 3.5.0.200806270034 org.eclipse.equinox.simpleconfigurator.manipulator 1.0.0.v20080427-2136 org.eclipse.equinox.p2.touchpoint.eclipse 1.0.0.v20080529-1225 com.instantiations.swt.graph 5.5.1 org.eclipse.gmf.doc 1.2.0.v20080516-1143 org.python.pydev 1.3.20 com.windowtester.swing.runtime 3.5.1.200809042232 org.eclipse.datatools.enablement.ibm.db2.iseries.ui 1.0.0.v200805160737 org.eclipse.datatools.connectivity.oda.profile 3.0.6.v200805152355 org.eclipse.mylyn.pde.ui 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.commons.ui 3.0.0.v20080619-1900 org.eclipse.emf.workspace.source 1.2.0.v200805130238-23-8s733I3C59379I org.eclipse.core.boot 3.1.100.v20080218 org.python.pydev.ast 1.2.2 org.eclipse.birt.doc 2.3.0.v20080617a com.instantiations.assist.eclipse.core.ui 5.5.0 org.python.pydev.jython 1.3.18 org.python.pydev.jython 1.0.5 org.eclipse.emf.validation 1.2.0.v200805170232 org.eclipse.equinox.jmx.client.rmi 1.0.0 org.eclipse.emf.mapping.ecore 2.4.0.v200806091234 com.instantiations.assist.eclipse.coverage 5.5.1.200809042337 com.instantiations.helpeditor.ui 1.3.4.200806270212 org.eclipse.emf.edit.ui 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editor.script 2.3.0.v200806102 org.eclipse.gmf.ecore.editor 2.0.100.v20080610-1132 com.windowtester.swt.recorder 3.5.1.200809042232 org.eclipse.uml2.diagram.source 0.8.0.v200806112132 org.eclipse.equinox.util 1.0.0.v20080414 org.eclipse.ecf.examples.source 2.0.0.v20080623-0046 org.eclipse.emf.mapping.xsd2ecore.editor 2.4.0.v200806091234 org.eclipse.pde.p2.ui 1.0.0.v20080604-2000 org.eclipse.birt.resources 2.3.0.v20080313 org.eclipse.emf.query.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.emf.ecore.change.edit 2.4.0.v200806091234 org.eclipse.datatools.sqltools.editor.core 1.0.0.v200805152355 org.polarion.eclipse.team.svn.connector.svnkit 2.0.1.I20080612-1500 org.eclipse.buckminster.download 1.1.0.r09319 com.swtdesigner 6.7.0.200806270151 org.python.pydev.parser 1.3.2 org.eclipse.jdt.compiler.apt 1.0.100.v20080513-1235 org.python.pydev.ast 1.0.7 com.windowtester.swt.gef.codegen 3.5.0.200806270034 org.eclipse.emf.ecore 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editors.schematic 2.3.0.v200806102 org.eclipse.pde.build 3.4.0.v20080604 com.instantiations.assist.eclipse 5.5.1 org.eclipse.birt.report.designer.ui.editor.xml.wtp 2.3.0.v200806102 org.eclipse.emf.cdo.tests.model1.edit 1.0.0.v200806180411 org.python.pydev 0.9.8 javax.xml 1.3.4.v200806030440 org.python.pydev 0.4.2 org.polarion.eclipse.team.svn.connector.javahl.win32 2.0.1.I20080612-1500 org.apache.ws.commons.util 1.0.0.v20080530-1550 org.apache.batik.bridge 1.6.0.v200805290154 org.eclipse.emf.search 0.7.0.v200806130939 org.eclipse.datatools.sqltools.parsers.sql.xml.query 1.0.0.v200805152355 org.eclipse.team.core 3.4.0.I20080605 org.eclipse.tptp.platform.execution 4.4.100.v200806050100 org.eclipse.uml2.diagram.parser 0.8.0.v200806112132 org.eclipse.birt.report.item.crosstab.core 2.3.0.v20080606 org.python.pydev.core 0.9.8 org.eclipse.uml2.search.common.ui 0.7.0.v200806130939 org.eclipse.mylyn.ide.ui 3.0.0.v20080619-1900 org.eclipse.xsd.cheatsheets 2.3.0.v200806091234 org.eclipse.wst.xsd.core 1.1.300.v200805282012 org.eclipse.net4j.http 1.0.0.v200806180305 org.python.pydev.core 1.3.6 org.eclipse.ui.externaltools 3.2.0.v20080514-1542 org.eclipse.birt.report.engine.emitter.prototype.excel 2.3.0.v20080606 org.python.pydev.parser 1.3.17 com.instantiations.eclipse.util 5.3.2.200806270030 org.eclipse.ui.editors 3.4.0.v20080603-2000 org.eclipse.buckminster.slf4j 1.0.0 org.python.pydev.ast 1.3.9 org.eclipse.gef.source 3.4.0.v20080115-677-8082A5696H274A org.python.pydev.core 1.0.8 org.python.pydev.ast 1.3.14 org.eclipse.team.ui 3.4.0.I20080604 org.eclipse.emf.query.ocl.source 1.2.0.v200805130238-11-7w311916241349 com.windowtester.swt.runtime 3.5.0.200806270034 org.eclipse.osgi.jmx 1.0.0.v20080610-1530 org.eclipse.net4j.examples.source 1.0.0.v200806180305 org.eclipse.tptp.monitoring.lta.symptom.doc.user 4.5.0.v200805132041 org.eclipse.equinox.p2.updatechecker 1.0.0.v20080427-2136 org.eclipse.ui.views 3.3.0.I20080509-2000 org.eclipse.emf.search.ocl.ui 0.7.0.v200806130939 javax.mail 1.4.0.v200804091730 ch.ethz.iks.slp 1.0.0.RC4_v200806091030 org.eclipse.core.resources.jmx 1.0.0.v20070510 javax.wsdl 1.4.0.v200806030407 org.eclipse.wst.xml.ui 1.0.401.v200807240448 org.python.pydev 1.2.1 org.eclipse.birt.chart.ui.extension 2.3.0.v20080610 org.python.pydev.core 0.9.8.3 org.python.pydev.parser 0.9.7 org.eclipse.jem.util 2.0.100.v200805140020 org.eclipse.tptp.monitoring.lta.la.core 4.5.0.v200805270100 org.python.pydev.core 0.9.8.2 org.eclipse.jdt.junit.runtime 3.3.0.v20080603-2000 org.python.pydev.core 1.2.4 org.python.pydev.core 0.9.8.1 org.eclipse.ecf.discovery 2.0.0.v20080623-0046 org.apache.xml.serializer 2.7.1.v200806030322 org.python.pydev.core 0.9.8.7 org.python.pydev.core 0.9.8.6 org.eclipse.gmf.runtime.draw2d.ui.render.awt 1.1.0.v20080603-1553 com.windowtester.eclipse.help 3.5.1.200809042232 org.python.pydev.core 0.9.8.5 org.python.pydev.core 0.9.8.4 org.python.pydev 0.9.8.7 org.eclipse.birt.report.engine.emitter.ppt 2.3.0.v20080606 org.apache.commons.httpclient 3.1.0.v20080605-1935 com.windowtester.runtime.legacy 3.5.0.200806270034 org.eclipse.datatools.enablement.oda.xml.ui 1.1.0.v200805270900 org.python.pydev 0.9.8.3 org.eclipse.mylyn.compatibility 3.0.2.v20080918-1100-e3x org.python.pydev 0.9.8.4 org.python.pydev 0.9.8.5 org.eclipse.wst.common.project.facet.ui 1.3.0.v200805281731 org.eclipse.gmf.tooldef 2.0.0.v20080417-1610 org.python.pydev 0.9.8.6 org.eclipse.core.commands 3.4.0.I20080509-2000 org.python.pydev.jython 1.3.9 org.eclipse.datatools.modelbase.sql.edit 1.0.0.v200805152355 org.python.pydev 0.9.8.2 org.python.pydev 0.9.8.1 org.eclipse.emf.cdo.server.hibernate.libraries 1.0.0.v200806180411 org.eclipse.equinox.p2.ui.admin 1.0.0.v20080522-1735 org.eclipse.wst.common.core 1.1.201.v200806010600 org.eclipse.emf.compare.diff.edit 0.8.0.v200806180301 com.swtdesigner.layout.group.designer 6.7.0.200806270151 org.eclipse.ui.views.properties.tabbed 3.4.0.I20080527-2000 org.python.pydev.jython 1.2.2 org.eclipse.wst.common.emf 1.1.200.v200805140020 com.instantiations.packager.refactoring 2.5.1 com.instantiations.assist.eclipse.fragment.jdt 5.5.1 org.eclipse.datatools.connectivity.dbdefinition.genericJDBC 1.0.0.v200805152355 org.python.pydev.parser 1.0.7 org.eclipse.datatools.sqltools.data.ui 1.1.0.v200805310400 org.eclipse.buckminster.core 1.1.0.r09336 org.eclipse.mylyn.tasks.core 3.0.1.v20080721-2100-e3x org.eclipse.birt.report.designer.ui.samplesview 2.3.0.v20080606 org.eclipse.equinox.launcher 1.0.100.v20080509-1800 org.eclipse.birt.report.item.crosstab.ui 2.3.0.v20080606 org.eclipse.m2m.atl.adt.perspective 2.0.0.v200806101117 javax.servlet.jsp 2.0.0.v200806031607 com.swtdesigner 6.7.1.200809050053 org.eclipse.jet.ui 0.9.0.v20080527 org.eclipse.m2m.qvt.oml.common.ui 1.0.0.v20080611-1330 com.swtdesigner.layout.group 6.7.1.200809050053 org.eclipse.gmf.runtime.common.ui.services.action 1.1.0.v20080507-2230 org.eclipse.emf.search.ecore.ui 0.7.0.v200806130939 org.python.pydev 1.0.5 org.eclipse.emf.workspace.ui 1.2.0.v200805130238 com.instantiations.helpeditor.core.toc 1.3.4.200809042225 org.slf4j.extendable 1.4.3 org.python.pydev.core 1.3.14 org.eclipse.hyades.logging.core 4.3.200.v200804110100 org.eclipse.datatools.enablement.postgresql.ui 1.0.0.v200806060334 org.eclipse.gmf.graphdef 2.0.100.v20080528-1052 org.eclipse.mylyn.help.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.protocol.bittorrent 0.3.0 org.eclipse.birt.report.engine 2.3.0.v20080616 org.eclipse.datatools.connectivity.ui.dse 1.1.0.v200805152355 org.eclipse.mylyn.bugzilla.core 3.0.0.v20080619-1900 org.python.pydev.jython 1.3.4 org.python.pydev 0.9.0 org.eclipse.equinox.preferences.jmx 1.0.0.v20070510 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.1 org.eclipse.datatools.enablement.postgresql.dbdefinition 1.0.0.v200805152355 org.eclipse.m2m.qvt.oml.common.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.eclipse.tptp.monitoring.lta.logui 4.5.0.v200805141427 org.eclipse.birt.report.debug.ui 2.3.0.v200806102 org.eclipse.gmf.runtime.emf.ui 1.1.0.v20080516-1748 org.eclipse.ui.cheatsheets 3.3.100.v20080508 org.python.pydev 1.2.9 org.eclipse.birt.report.engine.emitter.wpml 2.3.0.v20080606 org.eclipse.help.appserver 3.1.300.v20080507 org.python.pydev.parser 1.3.9 com.xored.composer.ui 1.3.4.200806270212 org.eclipse.datatools.sqltools.tabledataeditor 1.0.0.v200805240400 org.eclipse.gmf.runtime.emf.type.core 1.1.0.v20080425-1959 org.python.pydev 1.3.7 com.ibm.icu.base 3.8.1.v20080530 org.python.pydev.ast 1.3.1 org.apache.batik.pdf 1.6.0.v200806031500 org.eclipse.emf.mapping.ui 2.4.0.v200806091234 org.eclipse.net4j.db.derby 1.0.0.v200806180305 org.eclipse.net4j.http.server 1.0.0.v200806180305 org.python.pydev.jython 1.3.17 org.python.pydev.jython 1.0.6 org.python.pydev.ast 1.2.3 org.eclipse.team.svn.sources 0.7.1.I20080612-1500 org.eclipse.uml2.diagram.usecase 0.8.0.v200806112132 org.eclipse.wst.sse.core 1.1.300.v200805221633 org.eclipse.birt.report.designer.ui 2.3.0.v20080606 org.eclipse.jdt.apt.ui 3.3.100.v20080407-1345 com.instantiations.eclipse.debug 5.3.2.200809042027 org.eclipse.gmf.codegen.ui 1.1.0.v20080512-1200 com.instantiations.designer.databinding 6.7.1.200809050053 org.python.pydev.core 1.0.1 com.windowtester.swt.runtime.gef 3.5.0.200806270034 com.instantiations.common.ui 5.3.2.200809042027 org.python.pydev 1.3.19 org.eclipse.ui.forms 3.3.100.v20080611 org.eclipse.birt.data 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase.ase.ui 1.0.1.v200805310538 org.polarion.eclipse.team.svn.connector 2.0.1.I20080612-1500 org.eclipse.emf.common.ui 2.4.0.v200806091234 org.eclipse.datatools.enablement.ibm.informix.dbdefinition 1.0.0.v200805152355 org.eclipse.wst.xsdeditor.doc.user 1.0.400.v200805150028 org.eclipse.emf.mint.doc 0.7.0.v200806172223 org.eclipse.buckminster.generic 1.0.0.r09319 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.1 org.eclipse.emf.validation.examples 1.2.0.v200805280204 org.eclipse.team.svn.core 0.7.1.I20080612-1500 org.python.pydev.ast 1.2.4 org.eclipse.emf.cdo.server.hibernate 1.0.0.v200806180411 org.python.pydev.jython 1.3.8 org.eclipse.gmf.xpand 1.1.0.v20080528-1052 org.eclipse.datatools.sqltools.data.core 1.0.0.v200805152355 org.eclipse.emf.ecoretools 0.8.0.v200806130600 org.python.pydev.core 1.3.18 org.eclipse.gmf.runtime.common.core 1.1.0.v20080425-1959 org.eclipse.emf 2.4.0.v200806091234 org.eclipse.emf.ecoretools.properties 0.8.0.v200806130600 org.python.pydev.core 1.2.7 org.python.pydev.parser 0.9.8 org.eclipse.datatools.enablement.ibm.db2.luw.ui 1.0.0.v200805160737 org.eclipse.mylyn.team.ui 3.0.0.v20080619-1900 org.eclipse.help.base 3.3.100.v20080617 org.eclipse.m2m.atl.doc 2.0.0.v200806101117 org.eclipse.net4j.examples 1.0.0.v200806180305 org.eclipse.birt.data.aggregation 2.3.0.v20080606 org.eclipse.gmf.examples 1.0.100.v20080425-1959 org.eclipse.emf.search.common 0.7.0.v200806130939 org.python.pydev.ast 1.3.17 org.eclipse.ecf.provider.filetransfer.ssl 1.0.0.v20080611-1715 org.python.pydev.core 1.0.3 org.eclipse.team.svn.core.nl1 0.7.1.I20080612-1500 org.eclipse.emf.cdo.server.hibernate.teneo 1.0.0.v200806180411 org.eclipse.wst.validation.ui 1.2.1.v200807292117 org.python.pydev.parser 1.0.3 org.python.pydev.ast 1.3.6 org.eclipse.search 3.4.0.v20080603-2000 org.eclipse.jet 0.9.0.v20080527 org.python.pydev 1.3.2 org.python.pydev.jython 1.2.6 org.python.pydev.parser 1.3.14 org.eclipse.datatools.oda.cshelp 1.0.0.v200805152355 org.eclipse.jdt.junit 3.4.0.v20080603-2000 org.eclipse.datatools.sqltools.debugger.core 1.0.0.v200805152355 org.mortbay.jetty 5.1.14.v200806031611 org.eclipse.equinox.p2.garbagecollector 1.0.0.v20080506-1939 org.eclipse.m2m.atl.adt.debug 2.0.0.v200806101117 org.eclipse.equinox.jmx.client 1.0.0.v20070515 org.python.pydev.core 1.3.5 org.eclipse.mylyn.bugzilla.core 3.0.1.v20080721-2100-e3x org.python.pydev.parser 0.9.8.3 org.python.pydev.parser 0.9.8.2 org.python.pydev.parser 0.9.8.1 org.eclipse.osgi.services 3.1.200.v20071203 org.python.pydev 1.0.4 org.eclipse.hyades.lta.logging.adapter 4.5.0.v200806121215 org.eclipse.datatools.sqltools.sqleditor 1.0.0.v200805152355 org.python.pydev.parser 0.9.8.7 org.python.pydev.parser 0.9.8.6 org.eclipse.gmf.runtime.emf.core 1.1.0.v20080425-1959 org.python.pydev.parser 0.9.8.5 org.eclipse.core.contenttype 3.3.0.v20080604-1400 org.eclipse.ecf.datashare 1.3.0.v20080623-0046 org.python.pydev.parser 0.9.8.4 org.eclipse.tptp.platform.common.ui 4.4.100.v200806110100 org.junit 3.8.2.v20080602-1318 com.instantiations.assist.eclipse.coverage 5.5.0.200806270255 javax.activation 1.1.0.v200806101325 com.instantiations.assist.eclipse.scheduler 5.5.1 javax.management 1.2.0.v200803061811 org.eclipse.emf.edit 2.4.0.v200806091234 org.eclipse.ecf.provider.discovery 2.0.0.v20080623-0046 org.eclipse.birt.chart.device.pdf 2.3.0.v20080417 org.eclipse.equinox.wireadmin 1.0.0.v20080407 org.python.pydev.ast 1.0.8 org.eclipse.net4j.buddies.server 1.0.0.v200806180305 org.eclipse.wst.internet.cache 1.0.301.v200805140020 com.windowtester.runtime 3.5.0.200806270034 org.mx4j.jmx 3.0.3.v200802291451 org.eclipse.pde.ui 3.4.0.v20080530 org.eclipse.ocl 1.2.0.v200806091438 org.eclipse.birt.cshelp 2.3.0.v20080617 org.eclipse.emf.query.doc 1.2.0.v200805130238 org.eclipse.pde.runtime 3.4.0.v20080530-1200 org.apache.axis 1.4.0.v200807230600 org.apache.log4j 1.2.13.v200806030600 org.eclipse.ui.intro 3.2.200.v20080610 com.instantiations.assist.eclipse.pattern 5.5.1 com.xored.swt.composer 1.3.4.200806270212 org.apache.batik.ext.awt 1.6.0.v200805290154 org.eclipse.emf.cdo.ui 1.0.0.v200806180411 org.eclipse.jface 3.4.0.I20080606-1300 com.windowtester.swt.runtime.gef 3.5.1.200809042232 org.eclipse.gmf.runtime.emf.type.ui 1.1.0.v20080425-1959 org.eclipse.uml2.uml 2.2.0.v200805141133 org.objectweb.asm 3.0.0.v200803061811 org.python.pydev.core 1.1.0 org.eclipse.ecf.discovery.ui 2.0.0.v20080623-0046 org.python.pydev 1.3.14 org.eclipse.gmf.runtime.diagram.ui.printing 1.1.0.v20080501-1739 org.eclipse.mylyn.ide.ant 3.0.2.v20080918-1100-e3x org.eclipse.xsd.example.installer 1.0.0.v200806091234 org.eclipse.uml2.diagram.examples.profile 0.8.0.v200806112132 org.eclipse.ui.intro.universal 3.2.200.v20080508 org.python.pydev.ast 0.9.7.99 org.eclipse.emf.codegen 2.4.0.v200806091234 org.eclipse.equinox.p2.metadata 1.0.0.v20080514-1900 org.eclipse.ecf.example.collab 1.3.0.v20080623-0046 org.python.pydev.parser 1.2.4 org.eclipse.birt.report.engine.emitter.html 2.3.0.v20080606 org.python.pydev.jython 1.3.16 org.eclipse.osgi 3.4.0.v20080605-1900 org.eclipse.emf.databinding 1.0.0.v200806091234 org.eclipse.help 3.3.100.v20080610 org.eclipse.net4j.db.hsqldb 1.0.0.v200806180305 org.eclipse.gmf.runtime.diagram.ui.dnd 1.1.0.v20080425-1959 org.eclipse.birt.report.model 2.3.0.v20080605 org.eclipse.datatools.enablement.finfo 1.5.1.v200805152355 org.eclipse.jsch.ui 1.1.100.I20080415 org.python.pydev 1.3.10 org.python.pydev.parser 1.3.6 org.eclipse.emf.mapping.ecore.editor 2.4.0.v200806091234 org.eclipse.datatools.sqltools.common.ui 1.0.0.v200805152355 org.eclipse.birt.report.engine.emitter.pdf 2.3.0.v20080606 org.python.pydev 1.2.8 com.instantiations.packager.help 2.5.1 org.eclipse.equinox.p2.directorywatcher 1.0.0.v20080505-1850 org.eclipse.draw2d 3.4.0.v20080529 org.eclipse.draw2d.source 3.4.0.v20080115-33-7w3119163_ org.eclipse.ecf.ui 2.0.0.v20080623-0046 org.eclipse.birt.report.data.oda.jdbc.dbprofile 2.3.0.v20080606 org.eclipse.equinox.security.win32.x86 1.0.0.v20080529-1600 org.eclipse.wst.xml.ui 1.0.400.v200806051910 org.eclipse.jdt.ui 3.4.0.v20080603-2000 org.eclipse.equinox.p2.ui 1.0.0.v20080530-1237 org.eclipse.hyades.lta.logging.adapter.ui 4.5.0.v200805132041 org.eclipse.mylyn.monitor.ui 3.0.0.v20080619-1900 org.python.pydev 0.9.1 org.eclipse.emf.ecore.sdo.doc 2.4.0.v200806091234 com.instantiations.eclipse.ast.editor 5.5.1 org.eclipse.ant.ui 3.3.0.v20080529 org.python.pydev.core 1.3.13 org.eclipse.gef.doc.isv 3.4.0.v20080606 org.apache.xml.resolver 1.2.0.v200806030312 org.eclipse.datatools.enablement.ibm.db2.iseries.dbdefinition 1.0.0.v200806100223 org.eclipse.birt 2.3.0.v20080304 org.eclipse.equinox.security 1.0.0.v20080512-1800 com.instantiations.tools 5.3.2.200809042027 org.eclipse.jdt.core.manipulation 1.2.0.v20080603-2000 org.eclipse.gmf.runtime.diagram.ui.printing.render 1.1.0.v20080425-1959 org.eclipse.net4j.buddies.ui 1.0.0.v200806180305 org.eclipse.emf.codegen.ui 2.4.0.v200806091234 org.eclipse.team.svn 0.7.1.I20080612-1500 org.eclipse.wst.command.env.infopop 1.0.100.v200805301544 org.eclipse.datatools.enablement.hsqldb.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.runtime.common.ui.services.properties 1.1.0.v20080425-1959 org.eclipse.emf.cheatsheets 2.4.0.v200806091234 org.eclipse.ecf.presence.collab.ui 1.2.0.v20080623-0046 org.eclipse.update.core 3.2.200.v20080515 org.eclipse.wst.command.env.core 1.0.204.v200805140020 org.apache.batik.swing 1.6.0.v200805290154 org.eclipse.birt.report.designer.samplereports 2.3.0.v20080606 org.python.pydev.parser 1.0.8 org.eclipse.xsd 2.4.0.v200806091234 com.instantiations.assist.eclipse.fragment.jdt 5.5.0 org.eclipse.emf.transaction 1.2.0.v200805130238 org.eclipse.mylyn.team.cvs 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.ui 1.0.0.v20080611-1330 org.eclipse.emf.validation.source 1.2.0.v200805130238-35-9oA55S5J8H5ADM org.eclipse.datatools.enablement.hsqldb 1.0.0.v200805152355 org.eclipse.wst.common.uriresolver 1.1.301.v200805140415 org.eclipse.equinox.jsp.jasper 1.0.100.v20080427-0830 org.eclipse.osgi.util 3.1.300.v20080303 org.eclipse.datatools.connectivity.oda.consumer 3.1.2.v200805230718 org.eclipse.emf.compare.source 0.8.0.v200806180301 org.python.pydev.core 1.3.19 org.eclipse.emf.query.examples 1.2.0.v200805130238 org.eclipse.buckminster.runtime 1.1.0.r09338 org.eclipse.datatools.enablement.sybase.asa.dbdefinition 1.0.0.v200805240040 org.eclipse.datatools.sqltools.sql 1.0.0.v200805152355 org.apache.batik.svggen 1.6.0.v200805290154 org.eclipse.buckminster.cvs 1.0.0.r09319 org.python.pydev.core 1.2.6 org.eclipse.equinox.simpleconfigurator 1.0.0.v20080604 org.eclipse.help.ui 3.3.100.v20080521 org.apache.batik.dom 1.6.0.v200805290154 org.python.pydev.parser 1.1.0 org.eclipse.ecf.server.generic 1.2.0.v20080623-0046 com.windowtester.swt.runtime.win32 3.5.0.200806270034 org.eclipse.emf.cdo.examples 1.0.0.v200806180411 org.eclipse.ecf.provider.remoteservice 1.3.0.v20080623-0046 org.eclipse.gmf.runtime.notation.edit 1.1.0.v20080507-1326 org.eclipse.core.filesystem 1.2.0.v20080604-1400 org.eclipse.m2m.qvt.oml.runtime.ui 1.0.0.v20080611-1330 org.eclipse.emf.cdo.server.hibernate.source 1.0.0.v200806180411 org.python.pydev.jython 1.3.7 org.eclipse.gmf.codegen.edit 2.1.0.v20080610-1132 org.eclipse.buckminster.pde 1.1.0.r09351 org.python.pydev.ast 1.2.5 org.python.pydev.core 1.0.2 org.python.pydev.ast 1.3.16 org.apache.batik.parser 1.6.0.v200805290154 org.python.pydev.parser 1.0.2 org.eclipse.wst.common.infopop 1.0.100.v200805301550 org.eclipse.ecf.remoteservice 2.0.0.v20080623-0046 org.python.pydev 1.3.1 org.python.pydev.jython 1.2.5 org.eclipse.emf.mapping 2.4.0.v200806091234 org.eclipse.emf.cdo.server.hibernate.id 1.0.0.v200806180411 com.windowtester.runtime.legacy 3.5.1.200809042232 org.python.pydev.ast 1.3.7 org.eclipse.datatools.enablement.oracle 1.0.0.v200805152355 org.python.pydev.parser 1.3.15 org.eclipse.emf.importer 2.4.0.v200806091234 org.eclipse.birt.example 2.3.0.v20080304 org.eclipse.birt.report.designer.ui.lib 2.3.0.v20080606 org.eclipse.emf.cdo.server.source 1.0.0.v200806180411 org.eclipse.gmf.runtime.common.ui.services 1.1.0.v20080612-1229 org.eclipse.datatools.sqltools.db.generic 1.0.0.v200805152355 org.eclipse.net4j 1.0.0.v200806180305 org.eclipse.jdt 3.4.0.v20080603-2000 org.eclipse.emf.cdo.source 1.0.0.v200806180411 org.eclipse.datatools.connectivity 1.1.0.v200805160228 com.instantiations.assist.eclipse.scheduler 5.5.0 org.eclipse.emf.ecore.sdo.source 2.4.0.v200806091234 org.eclipse.wst.sse.doc.user 1.1.0.v200805211530 org.python.pydev 0.9.7.99 org.eclipse.emf.transaction.source 1.2.0.v200805130238-23-8s733I3C59379I org.w3c.dom.svg 1.1.0.v200806040011 org.python.pydev.core 1.3.4 javax.xml.rpc 1.1.0.v200806030420 org.eclipse.ocl.uml.source 1.2.0.v200805130238-11-7w311916241349 com.instantiations.eclipse.ui 5.3.2.200806270030 org.eclipse.jface.text 3.4.0.v20080603-2000 org.apache.batik.xml 1.6.0.v200805290154 org.python.pydev 1.0.3 org.eclipse.gmf.bridge.ui.dashboard 2.0.0.v20080417-1610 org.apache.lucene 1.9.1.v20080530-1600 org.eclipse.emf.query.ocl 1.2.0.v200805130238 org.eclipse.uml2.uml.resources 2.2.0.v200805131030 org.eclipse.ecf.provider.r_osgi 2.0.0.v20080623-0046 org.eclipse.emf.importer.java 2.4.0.v200806091234 org.python.pydev.debug 1.3.20 org.eclipse.emf.ecore.xmi 2.4.0.v200806091234 org.python.pydev.mylyn 0.3.0 com.instantiations.assist.eclipse.pattern 5.5.0 org.eclipse.emf.source 2.4.0.v200806091234 org.eclipse.ui.browser 3.2.200.v20080507 org.eclipse.tptp.lta.sdb.epi 4.5.0.v200805132041 org.eclipse.net4j.doc 1.0.0.v200806180305 org.eclipse.gmf.bridge 1.1.0.v20080528-1052 com.instantiations.assist.eclipse.admin 5.5.1 org.eclipse.ecf.presence 1.3.0.v20080623-0046 org.eclipse.jet.editor 0.9.0.v20080226 org.eclipse.emf.mint 0.7.0.v200806172223 org.eclipse.ecf.provider 1.3.0.v20080623-0046 com.instantiations.assist.eclipse.core.ant 5.5.0 org.apache.axis 1.4.0.v200806030120 org.eclipse.equinox.p2.metadata.repository 1.0.0.v20080604 com.ibm.icu 3.8.1.v20080530 org.eclipse.gmf.runtime.diagram.ui.properties 1.1.0.v20080603-1553 org.eclipse.team.svn.mylyn.source 0.7.1.I20080612-1500 org.eclipse.ecf.provider.datashare 1.3.0.v20080623-0046 org.eclipse.birt.report.data.oda.sampledb 2.3.0.v20080606 org.eclipse.m2m.atl.drivers.emf4atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.providers.ide 1.1.0.v20080425-1959 org.python.pydev 0.8.0 org.eclipse.datatools.connectivity.sqm.server.ui 1.1.0.v200806050117 com.nordea.cd.dev.plugin.stubbuilder 1.0.2 org.eclipse.emf.mapping.xsd2ecore 2.4.0.v200806091234 org.python.pydev.parser 1.2.5 org.eclipse.xsd.mapping.editor 2.4.0.v200806091234 org.python.pydev.jython 1.3.15 org.eclipse.gmf.xpand.editor 1.0.0.v20080425-1959 org.eclipse.tptp.platform.lta.common 4.5.0.v200806050100 org.eclipse.buckminster.pde.ui 1.0.0.r09319 org.eclipse.emf.validation.ocl 1.2.0.v200805130238 org.eclipse.ui.console 3.3.0.v20080529-1300 org.eclipse.net4j.ui 1.0.0.v200806180305 org.eclipse.emf.workspace 1.2.0.v200805130238 org.python.pydev.ast 0.9.8.6 org.python.pydev.ast 0.9.8.5 org.eclipse.emf.teneo.annotations 1.0.0.v200806111928 org.python.pydev.ast 0.9.8.4 org.eclipse.ui.net 1.0.0.I20080605 org.python.pydev.ast 0.9.8.3 org.eclipse.net4j.db.source 1.0.0.v200806180305 org.eclipse.zest.core 1.0.0.v20080115 org.python.pydev.ast 0.9.8.2 org.eclipse.tptp.lta.log.epi 4.5.0.v200805132041 org.python.pydev.ast 0.9.8.1 org.python.pydev 1.3.13 org.eclipse.equinox.app 1.1.0.v20080421-2006 org.eclipse.equinox.p2.metadata.generator 1.0.0.v20080604 org.python.pydev 1.2.7 org.eclipse.emf.ocl.examples 1.2.0.v200805130238 org.eclipse.mylyn.jira.core 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.commons.net 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql.query 1.0.1.v200805152355 org.eclipse.datatools.sqltools.plan 1.0.0.v200805152355 com.swtdesigner.help 6.7.1.200809050053 org.eclipse.ecf.ssl 1.0.0.v20080611-1715 org.eclipse.team.cvs.core 3.3.100.I20080605 org.python.pydev.ast 0.9.8 com.instantiations.helpeditor.core.toc 1.3.4.200806270212 org.eclipse.core.databinding 1.1.0.I20080527-2000 org.eclipse.tptp.platform.common 4.3.200.v200805300100 org.eclipse.net4j.util.ui 1.0.0.v200806180305 org.eclipse.mylyn.commons.core 3.0.0.v20080619-1900 org.python.pydev 1.3.9 org.eclipse.emf.search.common.ui 0.7.0.v200806130939 org.eclipse.m2m.atl.engine.emfvm 2.0.0.v200806101117 org.eclipse.uml2.diagram.csd 0.8.0.v200806112132 org.python.pydev.parser 1.3.7 org.eclipse.team.svn.ui 0.7.1.I20080612-1500 org.python.pydev.core 1.3.12 org.eclipse.datatools.modelbase.sql.query.edit 1.0.0.v200806070329 com.instantiations.packager.core 2.5.1 com.windowtester.swing.runtime 3.5.0.200806270034 org.eclipse.update.ui 3.2.100.v20080318 org.apache.commons.codec 1.2.0.v20080530-1550 org.eclipse.mylyn.bugzilla.core 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.editor.ui 1.0.0.v20080611-1330 org.eclipse.m2m.qvt.oml.samples 1.0.0.v20080611-1330 org.eclipse.mylyn.context.core 3.0.0.v20080619-1900 org.eclipse.xsd.source 2.4.0.v200806091234 org.eclipse.gmf.runtime.diagram.core 1.1.0.v20080425-1959 org.eclipse.m2m.atl.drivers.uml24atl 2.0.0.v200806101117 com.instantiations.eclipse.util 5.3.2.200809042027 org.eclipse.emf.ecore.sdo 2.4.0.v200806091234 com.instantiations.eclipse.startup 5.3.2.200809042027 org.eclipse.gmf 1.0.0.v20080425-1959 org.python.pydev 0.9.2 org.apache.batik.util.gui 1.6.0.v200805290154 org.python.pydev.ast 0.9.8.7 com.nordea.cd.dev.plugin.wsdl2java 1.0.2 org.eclipse.datatools.enablement.sybase.models 1.0.0.v200805152355 org.python.pydev.ast 1.0.1 org.eclipse.emf.compare.diff 0.8.0.v200806180301 org.eclipse.birt.report.designer 2.3.0.v200806102 org.eclipse.equinox.http.registry 1.0.100.v20080427-0830 ch.ethz.iks.r_osgi.remote 1.0.0.RC2_v20080623-0046 org.eclipse.gmf.graphdef.codegen.ui 1.0.100.v20080425-1959 org.eclipse.m2m.qvt.oml.editor.source 1.0.0.v20080611-1330-1--7w3119172202441 org.sat4j.pb 2.0.0.v20080602 org.eclipse.wst.validation 1.2.1.v200807292117 org.apache.batik.util 1.6.0.v200805290154 org.eclipse.equinox.transforms.hook 1.0.0.v20080610 org.eclipse.emf.teneo.hibernate 1.0.0.v200806111928 org.eclipse.uml2.examples 2.1.0.v200805131030 org.eclipse.mylyn.java.tasks 3.0.2.v20080918-1100-e3x org.eclipse.equinox.preferences 3.2.200.v20080421-2006 com.instantiations.assist.eclipse.fragment.swt 5.5.0 org.eclipse.ocl.doc 1.2.0.v200805130238 org.eclipse.jdt.apt.core 3.3.100.v20080513-1235 org.eclipse.birt.report.engine.fonts 2.3.0.v20080606 org.eclipse.mylyn.monitor.ui 3.0.2.v20080918-1100-e3x org.eclipse.gmf.tooldef.edit 2.0.0.v20080610-1132 org.eclipse.gmf.runtime.draw2d.ui.render 1.1.0.v20080507-2230 com.windowtester.swt.platform.ext 3.5.0.200806270034 org.eclipse.ecf.example.clients 1.3.0.v20080623-0046 org.eclipse.core.net 1.1.0.I20080604 org.eclipse.wst.xsd.core 1.1.301.v200807240448 org.eclipse.datatools.connectivity.oda.flatfile 3.0.6.v200805261930 org.python.pydev.refactoring 1.3.20 org.python.pydev.parser 1.0.1 org.python.pydev.ast 1.3.19 org.eclipse.equinox.registry.jmx 1.0.0.v20080610-1530 com.instantiations.eclipse.model.jsp 5.5.0 org.eclipse.mylyn.context.ui 3.0.2.v20080918-1100-e3x org.python.pydev.core 1.0.5 org.eclipse.hyades.lta.resources.database 4.5.0.v200805271330 org.python.pydev 0.6.1 org.python.pydev.parser 1.3.12 org.eclipse.equinox.p2.console 1.0.0.v20080514-1900 org.eclipse.mylyn.commons.net 3.0.1.v20080721-2100-e3x org.eclipse.net4j.jms.api 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.lexer 1.0.1.v200805152355 org.python.pydev.ast 1.3.4 org.python.pydev 1.3.4 org.python.pydev.jython 1.2.8 org.python.pydev 0.8.5 org.python.pydev 0.5.3 org.eclipse.wst.sse.ui 1.1.1.v200808141919 org.eclipse.emf.query 1.2.0.v200805130238 org.eclipse.core.runtime.compatibility 3.2.0.v20071008 org.eclipse.gmf.runtime.notation 1.1.0.v20080507-1326 org.eclipse.birt.report.data.oda.sampledb.ui 2.3.0.v20080606 org.python.pydev.ast 1.2.6 com.instantiations.eclipse.mail.ui 5.5.1 org.eclipse.zest.layouts 1.0.0.v20080226 org.python.pydev.jython 1.3.6 org.eclipse.net4j.jms.admin 1.0.0.v200806180305 org.eclipse.core.databinding.beans 1.1.0.I20080508-2000a org.python.pydev 1.1.0 org.python.pydev.core 1.3.20 org.eclipse.gmf.runtime.emf.commands.core 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.common.ui.services.dnd.ide 1.1.0.v20080425-1959 org.eclipse.datatools.connectivity.apache.derby 1.0.1.v200805152355 org.python.pydev.core 1.2.9 org.eclipse.mylyn.context.core 3.0.2.v20080918-1100-e3x org.eclipse.equinox.p2.artifact.repository 1.0.0.v20080609-0850 org.eclipse.gef 3.4.0.v20080526 org.eclipse.gmf.runtime.common.ui 1.1.0.v20080512-1200 org.eclipse.emf.ecoretools.tabbedproperties 0.8.0.v200806130600 com.instantiations.assist.eclipse.core.ant 5.5.1 org.eclipse.emf.ecore.change 2.4.0.v200806091234 org.eclipse.jet.doc 0.9.0.v20080522 org.eclipse.emf.transaction.examples 1.2.0.v200806051817 org.eclipse.gmf.runtime.draw2d.ui 1.1.0.v20080610-1132 org.eclipse.equinox.jmx.server.rmi 1.0.0.v20070510 org.eclipse.ecf.examples.remoteservices.common 1.0.100.v20080623-0046 org.eclipse.wst.standard.schemas 1.0.102.v200807220733 org.eclipse.equinox.p2.jarprocessor 1.0.0.v20080514-1900 org.eclipse.birt.report.data.oda.jdbc 2.3.0.v20080610 com.windowtester.runner 3.5.0.200806270034 com.windowtester.swt.codegen 3.5.1.200809042232 org.eclipse.emf.cdo.tests.model2.edit 1.0.0.v200806180411 javax.wsdl 1.5.1.v200806030408 org.eclipse.datatools.enablement.sap.maxdb.ui 1.0.0.v200805152355 org.eclipse.equinox.launcher.win32.win32.x86 1.0.100.v20080509-1800 org.eclipse.birt.core 2.3.0.v20080606 javax.servlet 2.5.0.v200806031605 org.eclipse.uml2.codegen.ecore.ui 1.4.0.v200805131030 com.windowtester.swt.recorder 3.5.0.200806270034 org.eclipse.mylyn 3.0.1.v20080721-2100-e3x org.eclipse.uml2.search.ocl 0.7.0.v200806130939 org.python.pydev.core 1.3.3 org.eclipse.core.jobs 3.4.0.v20080512 org.python.pydev.core 0.9.5 org.eclipse.emf.validation.ui.ide 1.2.0.v200805130238 org.python.pydev 1.0.2 org.eclipse.wst.validation.ui 1.2.0.v200805262011 com.windowtester.swing.recorder 3.5.1.200809042232 com.instantiations.helpeditor.help 1.3.4.200809042225 org.eclipse.gmf.map.edit 2.1.0.v20080610-1132 org.eclipse.emf.ecore.edit 2.4.0.v200806091234 org.eclipse.datatools.enablement.msft.sqlserver.dbdefinition 1.0.0.v200805152355 org.mortbay.jetty.util 6.1.7.v200806031612 org.eclipse.datatools.sqltools.parsers.sql 1.0.1.v200805152355 org.eclipse.xsd.doc 2.4.0.v200806091234 org.eclipse.jdt.doc.isv 3.4.0.v20080612-1340 org.eclipse.jdt.apt.pluggable.core 1.0.100.v20080407-1345 org.eclipse.ecf.provider.bittorrent 0.3.0.v20080623-0046 org.eclipse.mylyn.monitor.ui 3.0.1.v20080721-2100-e3x org.python.pydev.jython 1.0.4 org.eclipse.wst.common.project.facet.ui 1.3.1.v200807301432 javax.xml.bind 2.0.0.v20080604-1500 org.apache.derby.core 10.3.1.4 org.eclipse.birt.report.debug.core 2.3.0.v200806102 org.python.pydev.parser 1.3.4 org.eclipse.jdt.debug.ui 3.3.0.v20080603 org.python.pydev.help 1.3.20 org.python.pydev 1.3.12 org.eclipse.gef.examples.ui.pde 3.4.0.v20080226 org.eclipse.ecf.provider.jmdns 2.0.0.v20080623-0046 org.eclipse.xsd.editor 2.4.0.v200806091234 org.python.pydev 1.2.6 org.eclipse.buckminster.generic.ui 1.0.0.r09319 org.eclipse.emf.ocl 1.1.100.v200805130238 org.eclipse.emf.search.ecore 0.7.0.v200806130939 org.eclipse.wst.common.frameworks.ui 1.1.200.v200805221400 org.eclipse.emf.ecoretools.doc 0.8.0.v200806130600 org.eclipse.wst.sse.ui.infopop 1.0.200.v200805301545 org.eclipse.tptp.platform.common.ui.trace 4.3.200.v200805290100 org.eclipse.net4j.jms.server 1.0.0.v200806180305 org.eclipse.ecf.filetransfer.ui 1.4.0.v20080623-0046 org.eclipse.birt.chart.device.swt 2.3.0.v20080522 org.eclipse.wst.xsd.ui 1.2.101.v200806051910 org.eclipse.emf.cdo.examples.source 1.0.0.v200806180411 org.eclipse.birt.report.designer.ui.lib.explorer 2.3.0.v20080606 org.mozilla.rhino 1.6.7.v20080214 org.python.pydev 1.3.16 org.eclipse.buckminster.ant 1.1.0.r09351 org.eclipse.equinox.metatype 1.0.0.v20070827 org.eclipse.m2m.atl.adt.wizard 2.0.0.v200806101117 org.eclipse.wst.command.env 1.0.305.v200805281530 org.eclipse.swt.jmx 1.0.0.v20070510 org.eclipse.emf.cdo.common 1.0.0.v200806180411 org.eclipse.ecf.examples.remoteservices.client 1.0.100.v20080623-0046 org.python.pydev.jython 1.3.14 org.python.pydev.parser 1.2.6 org.eclipse.emf.ecoretools.diagram.ui.outline 0.8.0.v200806130600 org.eclipse.emf.teneo.eclipse 1.0.0.v200806111928 org.eclipse.emf.cdo.tests.mango 1.0.0.v200806180411 org.eclipse.net4j.buddies.common 1.0.0.v200806180305 org.eclipse.net4j.buddies.chat 1.0.0.v200806180305 org.eclipse.mylyn.bugzilla.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.0 org.eclipse.datatools.enablement.sybase.ase.dbdefinition 1.0.0.v200805240040 org.apache.ant 1.7.0.v200803061910 org.eclipse.datatools.connectivity.oda.design 3.0.6.v200805152355 org.eclipse.emf.ocl.doc 1.1.100.v200805130238 org.eclipse.tptp.lta.gla.ui.epi 4.5.0.v200805160100 org.eclipse.equinox.jmx.server 1.0.0.v20071015 org.eclipse.wst.xml.core 1.1.300.v200806051910 org.eclipse.datatools.connectivity.oda.template.ui 3.0.6.v200805152355 org.python.pydev.ast 1.0.2 org.eclipse.birt.report.data.adapter 2.3.0.v20080606 org.eclipse.birt.chart.runtime 2.3.0.v20080304 org.eclipse.net4j.ui.source 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.query 1.0.1.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.1 org.eclipse.wst.dtd.ui 1.0.300.v200805152207 org.eclipse.mylyn.java.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.connectivity.oda.design.ui 3.0.6.v200805152355 org.eclipse.birt.report.designer.core 2.3.0.v200806102 org.eclipse.buckminster.jdt 1.0.0.r09319 org.eclipse.buckminster.p4 1.0.0.r09319 org.eclipse.ecf.core.source 2.0.0.v20080623-0046 org.eclipse.birt.report.runtime 2.3.0.v20080304 org.python.pydev.ast 1.1.0 com.windowtester.swt.runtime 3.5.1.200809042232 org.eclipse.uml2.doc 2.2.0.v200805201350 org.eclipse.mylyn.context.core 3.0.1.v20080721-2100-e3x org.eclipse.gmf.runtime.notation.providers 1.1.0.v20080425-1959 org.eclipse.tptp.platform.lta.log.doc.user 4.5.0.v200805132041 org.eclipse.team.svn.help 0.7.1.I20080612-1500 org.python.pydev 0.9.3 com.windowtester.swt.runtime.win32 3.5.1.200809042232 org.eclipse.m2m.qvt.oml.ocl.emf.libraries 1.0.0.v20080611-1330 org.eclipse.hyades.lta.analysis.engine 4.5.0.v200805271330 org.python.pydev.core 1.3.11 org.eclipse.datatools.connectivity.sqm.core 1.0.1.v200806041052 org.eclipse.equinox.jmx.server.xmlrpc 1.0.0.v20070608 org.eclipse.platform 3.3.100.v200806172000 org.eclipse.ui 3.4.0.I20080610-1200 org.eclipse.net4j.buddies.chat.ui 1.0.0.v200806180305 org.eclipse.emf.search.ecore.ocl 0.7.0.v200806130939 org.eclipse.gmf.codegen 2.1.0.v20080610-1132 org.eclipse.emf.teneo 1.0.0.v200806111928 org.eclipse.datatools.connectivity.oda.flatfile.ui 3.0.6.v200805261930 org.python.pydev.core 1.0.4 org.eclipse.equinox.p2.extensionlocation 1.0.0.v20080523-0001 org.eclipse.buckminster.remote.cloudsmith 1.0.0.r09319 org.python.pydev.ast 1.3.18 org.eclipse.birt.report.engine.dataextraction.csv 2.3.0.v200806102 org.eclipse.equinox.log 1.1.0.v20080414 org.python.pydev.parser 1.3.13 org.python.pydev 1.3.3 com.windowtester.eclipse.help 3.5.0.200806270034 org.python.pydev.jython 1.2.7 org.eclipse.m2m.qvt.oml.emf.util.ui 1.0.0.v20080611-1330 org.eclipse.gmf.runtime.common.ui.printing 1.1.0.v20080425-1959 org.python.pydev.ast 1.3.5 org.eclipse.uml2.uml.ecore.exporter 2.2.0.v200805131030 org.eclipse.equinox.event 1.1.0.v20080225 org.eclipse.epp.usagedata.gathering 1.0.0.R200806162215 com.instantiations.assist.eclipse.fragment.swt 5.5.1 org.eclipse.emf.cdo.server 1.0.0.v200806180411 org.eclipse.core.filesystem.win32.x86 1.1.0.v20080604-1400 org.eclipse.datatools.enablement.ibm.db2.zseries 1.0.0.v200805152355 com.windowtester.swt.platform.ext 3.5.1.200809042232 org.eclipse.birt.chart.examples 2.3.0.v20080612 org.eclipse.gmf.bridge.ui 1.1.100.v20080417-1610 org.eclipse.emf.doc 2.4.0.v200806091234 org.eclipse.emf.ecoretools.diagram 0.8.0.v200806130600 org.eclipse.ecf.provider.filetransfer.efs 1.5.0.v20080623-0046 org.eclipse.mylyn.commons.net 3.0.0.v20080619-1900 org.python.pydev.core 1.2.8 org.eclipse.datatools.modelbase.dbdefinition 1.0.0.v200805152355 javax.management.remote 1.0.0.v200803061811 org.eclipse.net4j.util 1.0.0.v200806180305 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.0 org.eclipse.ui.navigator.resources 3.3.100.I20080606-1300 org.apache.lucene.analysis 1.9.1.v20080530-1600 org.python.pydev.jython 1.3.5 org.eclipse.m2m.atl.adt.builder 2.0.0.v200806101117 org.eclipse.mylyn.monitor.core 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.2.7 com.instantiations.eclipse.mail.ui 5.5.0 org.eclipse.tptp.platform.models.lta 4.5.0.v200805132041 org.eclipse.mylyn.commons.core 3.0.1.v20080721-2100-e3x org.eclipse.team.svn.nl1 0.7.1.I20080612-1500 org.eclipse.birt.report.data.oda.jdbc.dbprofile.ui 2.3.0.v20080606 org.eclipse.pde 3.4.0.v20080603 org.eclipse.net4j.jms.server.jdbc 1.0.0.v200806180305 org.eclipse.pde.doc.user 3.3.0.v20080611-1530 org.eclipse.core.runtime.compatibility.auth 3.2.100.v20070502 org.eclipse.tptp.platform.iac.administrator 4.4.100.v200806120100 org.eclipse.emf.importer.ecore 2.4.0.v200806091234 org.eclipse.equinox.jmx.client.xmlrpc 1.0.0.v20070515 org.eclipse.equinox.jmx.common 1.0.0.v20070510 org.eclipse.datatools.enablement.ibm.informix.ui 1.0.0.v200805160737 com.instantiations.installer 2.5.1 org.eclipse.hyades.lta.logging.parsers 4.5.0.v200805271330 org.eclipse.uml2.diagram.profile 0.8.0.v200806112132 org.eclipse.datatools.enablement.jdt.classpath 1.0.1.v200805152355 org.eclipse.emf.validation.ocl.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.net4j.buddies 1.0.0.v200806180305 net.sourceforge.lpg.lpgjavaruntime 1.1.0.v200803061910 org.eclipse.emf.ecore.editor 2.4.0.v200806091234 org.apache.commons.lang 2.3.0.v200803061910 org.eclipse.ocl.uml 1.2.0.v200805130238 org.eclipse.emf.mapping.ecore2ecore 2.4.0.v200806091234 com.swtdesigner.fragment.jdt.core 6.7.0.200806270151 org.eclipse.ecf.provider.xmpp 2.0.0.v20080623-0046 org.eclipse.wst.common.modulecore 1.1.201.v200808071700 org.eclipse.mylyn.jira.ui 3.0.2.v20080918-1100-e3x org.eclipse.draw2d.doc.isv 3.4.0.v20080606 org.python.pydev.core 1.3.2 org.eclipse.mylyn.compatibility 3.0.0.v20080619-1900 org.eclipse.buckminster.maven 1.1.0.r09319 org.eclipse.buckminster.cmdline 1.0.0.r09319 org.apache.batik.css 1.6.0.v200805290154 org.eclipse.ecf.telephony.call.ui 1.2.0.v20080623-0046 org.eclipse.wst.common.emfworkbench.integration 1.1.200.v200805140020 org.python.pydev 1.0.1 org.eclipse.datatools.enablement.ibm.db2.luw.dbdefinition 1.0.0.v200805152355 org.eclipse.team.svn.resource.ignore.rules.jdt.source 0.7.1.I20080612-1500 org.eclipse.ecf.server 1.3.0.v20080623-0046 org.python.pydev 1.2.5 org.python.pydev.core 1.2.1 org.eclipse.datatools.sqltools.sqlscrapbook 1.0.0.v200806021003 org.eclipse.birt.chart.reportitem 2.3.0.v20080610 org.eclipse.uml2.diagram.codegen 0.8.0.v200806112132 org.eclipse.xsd.edit 2.4.0.v200806091234 org.eclipse.buckminster.opml 1.0.0.r09319 org.python.pydev.parser 1.3.5 org.eclipse.gmf.runtime.diagram.ui 1.1.0.v20080610-1132 org.eclipse.ocl.source 1.2.0.v200805130238-34-9oA55S5I6M7JBK com.windowtester.eclipse.ui 3.5.0.200806270034 org.eclipse.tptp.platform.agentcontroller 4.2.200.v200806162043 org.python.pydev 1.3.11 org.eclipse.datatools.connectivity.apache.derby.ui 1.0.0.v200805160737 org.eclipse.datatools.sqltools.routineeditor 1.0.0.v200805261703 org.eclipse.wst.xsd.ui 1.2.102.v200808141745 org.eclipse.equinox.http 1.0.200.v20080421-2006 org.jivesoftware.smack 2.2.1 org.eclipse.mylyn.compatibility 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.java.ui 3.0.0.v20080619-1900 org.eclipse.core.variables 3.2.100.v20080529-1300 org.python.pydev.jython 1.3.13 org.python.pydev.parser 1.3.20 org.eclipse.tptp.platform.models.hierarchy 4.5.0.v200806120100 org.eclipse.ecf.examples.updatesite.client 1.0.100.v20080623-0046 org.eclipse.datatools.enablement.msft.sqlserver.ui 1.0.0.v200805160737 org.eclipse.datatools.enablement.mysql 1.0.0.v200805152355 org.eclipse.jdt.debug 3.4.0.v20080604 org.antlr.runtime 3.0.0.v200803061811 org.python.pydev.parser 1.2.7 org.eclipse.hyades.execution 4.4.200.v200806120100 org.eclipse.ecf.provider.ui 1.3.0.v20080623-0046 org.eclipse.birt.chart.cshelp 2.3.0.v20080616 org.eclipse.buckminster.p4.ui 1.0.0.r09319 org.python.pydev 1.3.15 org.eclipse.datatools.enablement.ibm.ui 1.0.0.v200805152355 org.eclipse.buckminster.sax 1.0.0.r09175 org.eclipse.equinox.supplement 1.1.0.v20080421-2006 org.eclipse.wst.common.frameworks 1.1.200.v200805140020 org.eclipse.mylyn 3.0.2.v20080918-1100-e3x org.eclipse.gmf.map 2.1.0.v20080521 org.eclipse.wst.standard.schemas 1.0.101.v200806010600 org.python.pydev.ast 1.0.3 org.eclipse.m2m.qvt.oml.runtime 1.0.0.v20080611-1330 org.eclipse.mylyn.ide.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.sqltools.sqlbuilder 1.0.0.v200806070500 org.eclipse.datatools.modelbase.derby 1.0.0.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.0 org.eclipse.emf.compare.ui 0.8.0.v200806180301 org.eclipse.ecf.provider.filetransfer.scp 2.0.0.v20080623-0046 org.eclipse.uml2.search.ocl.ui 0.7.0.v200806130939 org.eclipse.mylyn.context.ui 3.0.1.v20080721-2100-e3x org.python.pydev.templates 1.3.20 org.eclipse.gmf.runtime.diagram.ui.resources.editor 1.1.0.v20080425-1959 org.eclipse.gmf.examples.ui.pde 1.0.200.v20080425-1959 org.eclipse.buckminster.installer 1.0.0.r09319 org.eclipse.m2m.atl.examples 2.0.0.v200806101117 org.eclipse.datatools.modelbase.sql.xml.query 1.0.0.v200805152355 org.eclipse.emf.search.doc 0.7.0.v200806130939 org.eclipse.datatools.enablement.oracle.dbdefinition 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.0 javax.xml.bind 2.0.0.v200803061811 org.apache.xmlrpc 3.0.0.v20080530-1550 org.eclipse.ui.views.log 1.0.0.v20080522-2200 org.python.pydev.core 1.3.10 org.eclipse.ecf.examples.updatesite.server 1.0.100.v20080623-0046 org.eclipse.birt.core.ui 2.3.0.v20080515 org.eclipse.core.filebuffers 3.4.0.v20080603-2000 org.eclipse.mylyn.team.ui 3.0.1.v20080721-2100-e3x org.eclipse.wst.command.env 1.0.306.v200807231700 org.eclipse.team.cvs.ssh2 3.2.200.I20080604 org.eclipse.emf.search.ecore.ocl.ui 0.7.0.v200806130939 org.eclipse.ecf.example.collab.editor 1.0.200.v20080623-0046 org.eclipse.ecf.provider.jslp 2.0.0.v20080623-0046 org.eclipse.datatools.sqltools.result 1.0.0.v200805301309 org.eclipse.emf.teneo.jpox 1.0.0.v200806111928 org.eclipse.gmf.runtime.emf.clipboard.core 1.1.0.v20080425-1959 com.instantiations.eclipse.ast.editor 5.5.0 org.eclipse.mylyn.tasks.bugs 3.0.2.v20080918-1100-e3x org.eclipse.jsch.core 1.1.100.I20080604 org.eclipse.pde.core 3.4.0.v20080604-2000 org.python.pydev 0.9.4 org.python.pydev.jython 1.3.0
+* tooling.osgi.bundle.default 1.0.0 requires either org.python.pydev.core 0.9.7 org.eclipse.m2m.qvt.oml.trace.edit 1.0.0.v20080611-1330 org.eclipse.emf.codegen.ecore 2.4.0.v200806091234 org.eclipse.uml2.common.edit 1.4.0.v200805131030 org.eclipse.core.runtime 3.4.0.v20080512 org.python.pydev.core 1.3.9 javax.xml.soap 1.2.0.v200806030421 org.eclipse.gmf.runtime.common.ui.action.ide 1.1.0.v20080425-1959 org.eclipse.emf.cdo.edit 1.0.0.v200806180411 org.eclipse.ecf.provider.msn 1.2.0.v20080623-0046 org.eclipse.equinox.frameworkadmin.equinox 1.0.0.v20080529-1225 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.1 org.eclipse.equinox.http.servletbridge 1.0.0.v20080427-0830 org.python.pydev 0.9.5 org.python.pydev.parser 1.2.3 org.eclipse.emf.example.installer 1.0.0.v200806091234 com.instantiations.assist.eclipse 5.5.0 org.eclipse.wst.common.environment 1.0.201.v200805140020 org.eclipse.zest.source 1.0.0.v20080115-53-8xB4CE899O274A org.eclipse.emf.ant 2.4.0.v200806091234 com.instantiations.eclipse.mail 5.5.1 org.python.pydev.parser 1.3.1 org.eclipse.birt.chart.engine 2.3.0.v20080606 org.eclipse.core.resources 3.4.0.v20080604-1400 org.eclipse.birt.report.engine.emitter.postscript 2.3.0.v20080610 org.python.pydev.jython 1.1.0 org.eclipse.ui.workbench.compatibility 3.2.0.I20080509-2000 com.nordea.cd.dev.plugin.builderruntime 1.0.0 org.eclipse.m2m.atl.adt.editor 2.0.0.v200806101117 org.eclipse.equinox.p2.director.app 1.0.0.v20080604 org.eclipse.mylyn.tasks.core 3.0.0.v20080619-1900 org.python.pydev.ast 1.0.4 org.eclipse.m2m.atl.compilers.atl2006 2.0.0.v200806101117 org.eclipse.datatools.enablement.sybase.asa.ui 1.0.1.v200805310538 org.eclipse.emf.mapping.ecore2xml.ui 2.4.0.v200806091234 org.eclipse.wst.dtd.ui 1.0.301.v200808072012 org.eclipse.birt.chart.engine.extension 2.3.0.v20080611 org.eclipse.jface.databinding 1.2.0.I20080515-2000a org.eclipse.birt.chart.reportitem.ui 2.3.0.v20080610 org.eclipse.datatools.enablement.hsqldb.ui 1.0.0.v200805152355 org.eclipse.mylyn.ide.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.security.ui 1.0.0.v20080603-1810 org.eclipse.wst.common.emfworkbench.integration 1.1.201.v200808071700 org.eclipse.gmf.validate 1.1.0.v20080603-1553 org.eclipse.emf.mapping.ecore2ecore.editor 2.4.0.v200806091234 org.eclipse.ecf.provider.irc 1.3.0.v20080623-0046 org.eclipse.emf.validation.doc 1.2.0.v200805130238 org.python.pydev.ast 1.2.8 org.eclipse.emf.teneo.doc 1.0.0.v200806111928 org.python.pydev.jython 1.3.12 org.eclipse.emf.ecoretools.source 0.8.0.v200806130600 org.eclipse.equinox.p2.updatesite 1.0.0.v20080529-1800 org.eclipse.ecf.presence.bot 1.2.0.v20080623-0046 com.swtdesigner.properties.java5 1.0.0 org.eclipse.platform.doc.isv 3.4.0.v20080613-1330 org.python.pydev.core 1.2.3 org.eclipse.datatools.connectivity.db.generic 1.0.0.v200805152355 org.eclipse.uml2.diagram.clazz 0.8.0.v200806112132 org.eclipse.birt.report.designer.ui.views 2.3.0.v20080606 org.eclipse.mylyn.monitor.core 3.0.2.v20080918-1100-e3x com.instantiations.eclipse.debug 5.3.2.200806270030 org.eclipse.gmf.runtime.common.ui.action 1.1.0.v20080425-1959 org.eclipse.equinox.useradmin 1.1.0.v20080508-1815 org.eclipse.mylyn.commons.ui 3.0.2.v20080918-1100-e3x org.eclipse.equinox.cm 1.0.0.v20080509-1800 org.eclipse.uml2.diagram.component 0.8.0.v200806112132 org.eclipse.swt.layout.grouplayout 1.1.0 org.python.pydev 1.2.4 javax.servlet 2.4.0.v200806031604 org.eclipse.uml2.examples.uml.ui 2.2.0.v200805131030 org.python.pydev.ast 1.3.10 org.eclipse.birt.report.designer.ui.ide 2.3.0.v20080606 org.python.pydev.parser 1.3.18 com.swtdesigner.layout.group 6.7.0.200806270151 org.eclipse.m2m.qvt.oml.runtime.source 1.0.0.v20080611-1330-5--AgI99m9cDD4DNN9 org.eclipse.mylyn.tasks.ui 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.3.13 org.eclipse.emf.teneo.jpox.eclipse 1.0.0.v200806111928 org.eclipse.equinox.transforms.xslt 1.0.0.v20080610 org.python.pydev.core 1.0.7 org.eclipse.datatools.enablement.ibm.db2.zseries.ui 1.0.0.v200805160737 org.eclipse.mylyn.resources.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.enablement.oda.ws 1.1.0.v200805261930 org.eclipse.equinox.frameworkadmin 1.0.0.v20080430-1750 org.eclipse.birt.chart.device.extension 2.3.0.v20080424 org.eclipse.net4j.jvm 1.0.0.v200806180305 org.eclipse.emf.cdo.migrator 1.0.0.v200806180411 org.python.pydev.jython 1.3.1 org.eclipse.m2m.qvt.oml.cst.parser 1.0.0.v20080611-1330 com.xored.composer.ui 1.3.4.200809042225 org.eclipse.datatools.enablement.sybase.ui 1.0.0.v200806041138 org.eclipse.ecf.remoteservice.ui 2.0.0.v20080623-0046 org.eclipse.net4j.db.mysql 1.0.0.v200806180305 org.eclipse.update.scheduler 3.2.100.v20080404 org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide 1.1.0.v20080425-1959 org.eclipse.wst.dtdeditor.doc.user 1.0.400.v200805150028 org.eclipse.wst.xmleditor.doc.user 1.0.401.v200808071323 org.eclipse.gmf.runtime.common.ui.services.dnd 1.1.0.v20080425-1959 org.eclipse.uml2.common 1.4.0.v200805131030 org.apache.jasper 5.5.17.v200806031609 org.python.pydev 1.0.8 org.eclipse.datatools.doc.user 1.6.0.20080606124249 org.objectweb.asm 3.1.0.v200803061910 org.eclipse.emf.cdo.doc 1.0.0.v200806180411 org.python.pydev.core 1.3.17 org.eclipse.core.resources.compatibility 3.4.0.v20080604-1400 com.instantiations.eclipse.startup 5.3.2.200806270030 org.eclipse.datatools.connectivity.apache.derby.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.graphdef.codegen 2.0.100.v20080528-1052 org.eclipse.emf.common 2.4.0.v200806091234 org.eclipse.wst.xml.ui.infopop 1.0.300.v200805140200 org.python.pydev.core 1.3.0 org.eclipse.equinox.p2.touchpoint.natives 1.0.0.v20080505-1850 org.eclipse.ant.core 3.2.0.v20080529 org.eclipse.ui.workbench 3.4.0.I20080606-1300 org.eclipse.ecf.provider.xmpp.ui 2.0.0.v20080623-0046 org.w3c.sac 1.3.0.v20070710 org.python.pydev.jython 1.2.3 org.eclipse.mylyn.context.ui 3.0.0.v20080619-1900 org.eclipse.ecf.doc 1.3.0.v20080623-0046 org.eclipse.ecf.provider.bittorrent.ui 0.2.0.v20080623-0046 com.xored.swt.composer 1.3.4.200809042225 org.python.pydev.parser 1.0.4 org.eclipse.help.webapp 3.3.100.v20080528 org.eclipse.uml2.diagram.deploy 0.8.0.v200806112132 org.eclipse.ecf.provider.irc.ui 1.3.0.v20080623-0046 org.python.pydev 1.3.18 org.eclipse.m2m.atl.source 2.0.0.v200806101117 org.eclipse.mylyn.tasks.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.identity 2.0.0.v20080611-1715 org.eclipse.ocl.ecore 1.2.0.v200805130238 org.eclipse.core.expressions 3.4.0.v20080603-2000 org.eclipse.core.runtime.compatibility.registry 3.2.200.v20080610 org.eclipse.tptp.platform.la.core 4.3.200.v200805231116 org.eclipse.m2m.atl.service.core 2.0.0.v200806101117 org.apache.commons.logging 1.0.4.v20080605-1930 org.eclipse.platform.doc.user 3.4.0.v20080612-1340 com.windowtester.runtime.junit4 3.5.0.200806270034 org.python.pydev.parser 1.2.8 org.eclipse.uml2.examples.source 2.2.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.providers 1.1.0.v20080503-1740 org.python.pydev.jython 1.3.20 org.python.pydev.jython 1.0.7 org.eclipse.m2m.qvt.oml.common 1.0.0.v20080611-1330 org.eclipse.wst.sse.ui 1.1.0.v200806041847 org.eclipse.core.resources.win32.x86 3.4.0.v20071204 org.eclipse.swt.widgets.baseline 1.1.0 com.xored.swt.composer.win32.win32.x86 1.3.4.200809042225 org.eclipse.datatools.enablement.mysql.ui 1.0.0.v200805152355 org.eclipse.m2m.atl.ocl.core 2.0.0.v200806101117 org.eclipse.emf.codegen.ecore.ui 2.4.0.v200806091234 org.eclipse.equinox.http.servlet 1.0.100.v20080427-0830 org.python.pydev.ast 1.3.2 org.python.pydev 1.3.6 org.eclipse.birt.report.viewer 2.3.0.v20080606 org.apache.batik.extension 1.6.0.v200805290154 org.eclipse.uml2.diagram.statemachine 0.8.0.v200806112132 org.python.pydev.parser 1.3.10 org.eclipse.equinox.p2.ui.admin.rcp 1.0.0.v20080604 org.eclipse.emf.compare.match 0.8.0.v200806180301 org.eclipse.datatools.enablement.oracle.ui 1.0.0.v200805240040 org.python.pydev 0.7.1 com.lowagie.itext 1.5.4.v20080228 org.eclipse.birt.report.designer.ui.preview.web 2.3.0.v200806102 org.eclipse.birt.report.designer.ui.samples.ide 2.3.0.v20080606 org.eclipse.xsd.ecore.converter 2.4.0.v200806091234 org.eclipse.jdt.compiler.tool 1.0.100.v_874 org.eclipse.equinox.registry 3.4.0.v20080516-0950 org.eclipse.wst.dtd.ui.infopop 1.0.300.v200805140200 org.python.pydev.ast 0.9.5 org.eclipse.ui.workbench.texteditor 3.4.0.v20080603-2000 org.eclipse.cvs 1.0.100.v20080603 org.eclipse.uml2.search.ui 0.7.0.v200806130939 org.eclipse.gmf.common 1.1.1.v20080610-1132 org.eclipse.uml2.uml.editor 2.2.0.v200805131030 org.eclipse.m2m.atl.engine 2.0.0.v200806101117 org.eclipse.net4j.http.common 1.0.0.v200806180305 org.eclipse.ecf.presence.ui 1.2.0.v20080623-0046 org.python.pydev.parser 1.2.2 org.eclipse.emf.cdo.tests.model3.edit 1.0.0.v200806180411 org.eclipse.emf.cdo.tests.model1 1.0.0.v200806180411 org.eclipse.m2m.atl.engine.vm 2.0.0.v200806101117 com.instantiations.eclipse.mail 5.5.0 org.eclipse.emf.ocl.source 1.1.100.v200805130238-108Y7w311916241349 com.windowtester.swt.runtime.legacy 3.5.1.200809042232 org.eclipse.uml2tools 0.8.0.v200806112132 org.eclipse.emf.search.genmodel.ui 0.7.0.v200806130939 org.eclipse.mylyn.jira.core 3.0.2.v20080918-1100-e3x org.eclipse.uml2.uml.ecore.importer 2.2.0.v200805131030 org.eclipse.emf.transaction.doc 1.2.0.v200805130238 org.eclipse.tptp.platform.logging.events 4.3.200.v200805310100 org.python.pydev.core 1.3.8 org.eclipse.xsd.ecore.importer 2.4.0.v200806091234 org.eclipse.emf.teneo.source 1.0.0.v200806111928-78--DUUEFDEz0MMNLVD org.eclipse.uml2 2.1.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.render 1.1.0.v20080603-1553 com.windowtester.swt.runtime.os.win32 3.5.0.200806270034 org.eclipse.rcp 3.4.0.v20080507 org.eclipse.xsd.mapping 2.4.0.v200806091234 org.eclipse.emf.workspace.doc 1.2.0.v200805130238 org.eclipse.pde.api.tools 1.0.0.v20080529-1150 org.eclipse.emf.mapping.ecore2xml 2.4.0.v200806091234 org.eclipse.swt.win32.win32.x86 3.4.0.v3448f org.apache.derby 10.1.2.1_v200803061811 org.eclipse.m2m.qvt.oml.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.python.pydev.parser 1.3.0 org.eclipse.ecf.protocol.msn 1.2.0.v20080623-0046 com.instantiations.eclipse.ui 5.3.2.200809042027 org.eclipse.jet.core 1.1.0.v20080415 org.eclipse.datatools.enablement.sybase.ase.models 1.0.1.v200805152355 com.nordea.cd.dev.plugin.builderruntime 1.0.1 com.instantiations.assist.eclipse.core 5.5.0 org.python.pydev.ast 1.0.5 org.eclipse.ecf.filetransfer 2.0.0.v20080611-1715 org.python.pydev.parser 0.9.5 org.python.pydev.core 1.2.2 org.eclipse.emf.transaction.ui 1.2.0.v200805130238 org.eclipse.gmf.runtime.gef.ui 1.1.0.v20080503-1740 org.eclipse.wst.xml.core 1.1.301.v200808072008 org.eclipse.uml2.diagram.clazz.search 0.7.0.v200806130939 org.sat4j.core 2.0.0.v20080602 org.eclipse.datatools.connectivity.ui 1.1.0.v200806040132 org.eclipse.birt.report.designer.ui.editors 2.3.0.v20080610a org.eclipse.equinox.p2.reconciler.dropins 1.0.0.v20080611 org.eclipse.wst.common.project.facet.core 1.3.1.v200807031821 org.python.pydev.jython 1.3.11 org.eclipse.datatools.enablement.postgresql 1.0.1.v200805152355 org.eclipse.ltk.ui.refactoring 3.4.0.v20080605-1800 org.eclipse.datatools.enablement.sybase.ase 1.0.1.v200806040735 org.python.pydev.ast 1.2.9 org.eclipse.datatools.connectivity.oda 3.1.2.v200805152355 org.eclipse.wst.common.emf 1.1.201.v200808071700 org.apache.batik.dom.svg 1.6.0.v200805290154 org.eclipse.birt.chart 2.3.0.v20080304 org.python.pydev.jython 1.2.9 org.python.pydev.ast 1.3.11 org.eclipse.datatools.enablement.mysql.dbdefinition 1.0.1.v200805170742 org.python.pydev.parser 1.3.19 org.python.pydev.core 1.0.6 org.eclipse.uml2.diagram 0.8.0.v200806112132 org.eclipse.jdt.junit4.runtime 1.0.200.v20080603-2000 org.python.pydev.ast 1.3.12 org.eclipse.swt 3.4.0.v3448f org.eclipse.emf.ecoretools.diagram.search 0.7.0.v200806130939 org.eclipse.pde.ui.templates 3.4.0.v20080514-1500 com.instantiations.packager.ui 2.5.1 org.eclipse.emf.cdo.server.db 1.0.0.v200806180411 org.eclipse.datatools.enablement.sybase.asa 1.0.1.v200805310538 org.eclipse.emf.compare 0.8.0.v200806180301 org.eclipse.datatools.enablement.oda.ws.ui 1.1.0.v200805261930 org.eclipse.jdt.launching 3.4.0.v20080529-1300 org.eclipse.mylyn.tasks.ui 3.0.0.v20080619-1900 org.apache.ws.jaxme 0.5.1.v20080530-1550 org.eclipse.mylyn.bugzilla.ui 3.0.0.v20080619-1900 org.apache.commons.el 1.0.0.v200806031608 org.python.pydev 1.2.3 org.w3c.dom.smil 1.0.0.v200806040011 org.eclipse.wst.validation.infopop 1.0.300.v200806041506 org.python.pydev 1.0.7 org.eclipse.net4j.source 1.0.0.v200806180305 org.eclipse.m2m.qvt.oml.ocl 1.0.0.v20080611-1330 org.eclipse.uml2.uml.edit 2.2.0.v200805131030 org.eclipse.emf.search.ui 0.7.0.v200806130939 org.python.pydev.core 1.3.16 org.eclipse.emf.validation.ui 1.2.0.v200805130238 org.eclipse.datatools.enablement.oda.xml 1.1.0.v200805270900 org.eclipse.ltk.core.refactoring 3.4.0.v20080603-2000 org.python.pydev.jython 1.3.2 com.windowtester.swt.codegen 3.5.0.200806270034 org.eclipse.datatools.sqltools.ddlgen.ui 1.0.0.v200805152355 org.apache.xerces 2.9.0.v200805270400 org.eclipse.birt.report.engine.dataextraction 2.3.0.v20080611 org.eclipse.equinox.jmx.vm 1.0.0.v20070515 org.eclipse.birt.report.data.oda.jdbc.ui 2.3.0.v20080606 org.eclipse.equinox.ds 1.0.0.v20080427-0830 org.eclipse.mylyn.bugzilla.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.http.jetty 2.0.0.v20080425 org.eclipse.mylyn.team.ui 3.0.2.v20080918-1100-e3x org.python.pydev.jython 1.2.4 org.eclipse.birt.chart.device.svg 2.3.0.v20080526 org.python.pydev.parser 1.0.5 org.eclipse.ui.presentations.r21 3.2.100.I20080512-2000 org.eclipse.mylyn 3.0.0.v20080619-1900 org.eclipse.m2m.qvt.oml.doc 1.0.0.v20080611-1330 org.eclipse.team.svn.nl1.sources 0.7.1.I20080612-1500 org.eclipse.mylyn.resources.ui 3.0.0.v20080619-1900 org.eclipse.datatools.enablement.ibm.db2.luw 1.0.0.v200805152355 org.python.pydev.core 1.3.1 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.1 org.eclipse.ecf.provider.filetransfer 2.0.0.v20080611-1715 org.eclipse.emf.cdo.tests.mango.edit 1.0.0.v200806180411 org.python.pydev.parser 1.2.9 org.eclipse.m2m.qvt.oml.emf.util 1.0.0.v20080611-1330 org.eclipse.team.cvs.ssh 3.2.100.I20080604 org.python.pydev.jython 1.3.19 org.python.pydev.jython 1.0.8 org.python.pydev.ast 1.2.1 org.eclipse.m2m.qvt.oml.project 1.0.0.v20080611-1330 com.instantiations.assist.eclipse.core.ui 5.5.1 org.eclipse.datatools.enablement.ibm.db2.zseries.dbdefinition 1.0.0.v200805152355 org.eclipse.datatools.enablement.ibm.db2.iseries 1.0.0.v200805152355 com.swtdesigner.fragment.jdt.core 6.7.1.200809050053 org.eclipse.equinox.device 1.0.1.v20080303 org.eclipse.equinox.http.jetty 1.1.0.v20080425 org.eclipse.emf.cdo.tests.model3 1.0.0.v200806180411 org.eclipse.emf.teneo.hibernate.mapper 1.0.0.v200806111928 org.eclipse.compare 3.4.0.I20080604 org.polarion.eclipse.team.svn.connector.javahl 2.0.1.I20080612-1500 org.eclipse.gmf.runtime.diagram.ui.geoshapes 1.1.0.v20080503-1740 org.eclipse.emf.mint.ui 0.7.0.v200806172223 org.eclipse.ui.win32 3.2.100.v20080408-0800 org.eclipse.jet.source 0.9.0.v20080516 org.python.pydev 1.3.17 com.windowtester.runtime.junit4 3.5.1.200809042232 org.eclipse.ecf.examples.remoteservices.server 1.0.100.v20080623-0046 org.eclipse.text 3.4.0.v20080605-1800 org.eclipse.uml2.diagram.common 0.8.0.v200806112132 org.eclipse.datatools.connectivity.sqm.core.ui 1.1.0.v200806070326 org.python.pydev.core 0.9.7.99 org.eclipse.net4j.jms 1.0.0.v200806180305 org.junit4 4.3.1 org.eclipse.epp.usagedata.recording 1.0.0.R200806162215 org.eclipse.buckminster.remote 1.0.0.r09326 org.eclipse.gmf.tooling 2.1.0.v20080425-1959 org.eclipse.emf.cdo.tests.model2 1.0.0.v200806180411 org.eclipse.emf.ecore.sdo.editor 2.4.0.v200806091234 com.instantiations.swt.graph 5.5.0 org.eclipse.uml2.search 0.7.0.v200806130939 org.python.pydev 1.3.5 org.python.pydev.ast 1.3.3 org.eclipse.datatools.enablement.msft.sqlserver 1.0.1.v200805152355 org.python.pydev.parser 1.3.11 org.eclipse.datatools.enablement.sap.maxdb.dbdefinition 1.0.0.v200805152355 com.windowtester.swing.recorder 3.5.0.200806270034 org.eclipse.gmf.runtime.common.ui.printing.win32 1.1.0.v20080612-1355 org.python.pydev.ast 1.3.20 org.eclipse.wst.common.snippets 1.1.200.v200805140415 org.eclipse.mylyn.commons.core 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.tasks.core 3.0.2.v20080918-1100-e3x org.eclipse.jdt.doc.user 3.4.0.v20080612-1340 org.eclipse.birt.chart.ui 2.3.0.v20080522 org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb 2.3.0.v20080606 org.eclipse.uml2.diagram.examples.clazz 0.8.0.v200806112132 org.eclipse.ecf.provider.msn.ui 1.3.0.v20080623-0046 org.python.pydev.parser 1.3.3 org.eclipse.ui.ide.application 1.0.0.I20080603-2000 org.python.pydev.ast 1.0.6 org.eclipse.equinox.jsp.jasper.registry 1.0.0.v20080427-0830 org.eclipse.equinox.p2.engine 1.0.0.v20080522-1735 com.nordea.cd.dev.plugin.builderruntime 1.0.2 com.instantiations.assist.eclipse.core 5.5.1 org.eclipse.m2m.qvt.oml 1.0.0.v20080611-1330 org.eclipse.mylyn.commons.ui 3.0.1.v20080721-2100-e3x org.eclipse.update.core.win32 3.2.100.v20080107 org.eclipse.datatools.sqltools.db.derby 1.0.0.v200805152355 com.instantiations.assist.eclipse.admin 5.5.0 org.eclipse.ecf.telephony.call 1.2.0.v20080623-0046 org.eclipse.mylyn.monitor.core 3.0.0.v20080619-1900 org.eclipse.epp.usagedata.ui 1.0.0.R200806162215 org.eclipse.ui.ide 3.4.0.I20080606-1300 org.eclipse.hyades.lta.sdb 4.5.0.v200806051823 org.eclipse.birt.report.model.adapter.oda 2.3.0.v20080523 org.eclipse.emf.compare.doc 0.8.0.v200806180301 org.eclipse.equinox.servletbridge 1.0.100.v20080427-0830 com.instantiations.common.help 5.3.2.200809042027 org.eclipse.jdt.core 3.4.0.v_874 org.eclipse.equinox.p2.director 1.0.0.v20080604 org.eclipse.gmf.runtime.emf.ui.properties 1.1.0.v20080425-1959 org.eclipse.emf.exporter 2.4.0.v200806091234 org.python.pydev.core 1.3.7 org.eclipse.uml2.diagram.def 0.8.0.v200806112132 org.python.pydev.parser 1.2.1 org.eclipse.wst.command.env.ui 1.1.0.v200805140415 org.eclipse.wst.common.modulecore 1.1.200.v200806091800 org.python.pydev 0.9.7 org.eclipse.gmf.graphdef.edit 2.0.100.v20080610-1132 org.eclipse.birt.report.designer.ui.cubebuilder 2.3.0.v20080606 org.eclipse.m2m.atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.actions 1.1.0.v20080603-1553 com.instantiations.common.core 5.3.2.200806270030 org.eclipse.datatools.enablement.ibm.informix 1.0.0.v200805152355 org.eclipse.net4j.tcp 1.0.0.v200806180305 org.eclipse.wst.common.environment 1.0.202.v200807161459 com.instantiations.common.core 5.3.2.200809042027 org.eclipse.birt.report.data.oda.xml 2.3.0.v20080606 org.eclipse.pde.api.tools.ui 1.0.0.v20080603 org.eclipse.debug.ui 3.4.0.v20080529-1300 org.python.pydev 1.2.2 org.eclipse.team.svn.ui.nl1 0.7.1.I20080612-1500 org.apache.batik.transcoder 1.6.0.v200805290154 org.eclipse.emf.ecore.sdo.edit 2.4.0.v200806091234 org.python.pydev.parser 1.3.16 org.eclipse.wst.command.env.ui 1.1.1.v200807162242 org.eclipse.uml2.diagram.codegen.edit 0.8.0.v200806112132 org.eclipse.datatools.connectivity.db.generic.ui 1.0.1.v200805152355 org.eclipse.mylyn.resources.ui 3.0.2.v20080918-1100-e3x org.python.pydev.ast 1.3.8 org.python.pydev 1.3.0 org.eclipse.net4j.db 1.0.0.v200806180305 org.python.pydev.ast 1.3.15 org.eclipse.uml2.codegen.ecore 1.4.0.v200805201126 org.eclipse.gmf.sdk 1.0.0.v20080425-1959 org.eclipse.equinox.p2.core 1.0.0.v20080530-1237 org.python.pydev.jython 1.3.10 org.eclipse.emf.cdo 1.0.0.v200806180411 org.eclipse.emf.search.genmodel 0.7.0.v200806130939 org.eclipse.ui.navigator 3.3.100.I20080606-1300 org.eclipse.team.svn.mylyn 0.7.1.I20080612-1500 org.python.pydev.core 1.2.5 org.eclipse.tptp.platform.lta.la.core 4.5.0.v200805132041 org.eclipse.wst.sse.core 1.1.301.v200808072008 org.eclipse.tptp.platform.lta.log.views 4.5.0.v200806051823 org.eclipse.mylyn.java.ui 3.0.2.v20080918-1100-e3x org.eclipse.emf.search.codegen 0.7.0.v200806130939 com.instantiations.common.ui 5.3.2.200806270030 org.eclipse.ecf 2.0.0.v20080611-1715 org.eclipse.equinox.p2.ui.sdk 1.0.0.v20080605-1731 org.apache.commons.discovery 0.2.0.v200806030120 org.eclipse.datatools.help 1.5.0.v200805152355 org.python.pydev.parser 0.9.7.99 org.w3c.css.sac 1.3.0.v200805290154 org.eclipse.jet.examples 0.9.0.v20080211 org.eclipse.mylyn.bugzilla.ide 3.0.2.v20080918-1100-e3x org.eclipse.pde.junit.runtime 3.4.0.v20080529-1800 org.eclipse.emf.commonj.sdo 2.4.0.v200806091234 org.python.pydev.jython 1.2.1 com.instantiations.tools 5.3.2.200806270030 com.windowtester.runtime 3.5.1.200809042232 org.eclipse.wst.validation 1.2.0.v200806051402 org.eclipse.ecf.docshare 2.0.0.v20080623-0046 com.instantiations.eclipse.model.jsp 5.5.1 org.eclipse.emf.teneo.hibernate.eclipse 1.0.0.v200806111928 com.jcraft.jsch 0.1.37.v200803061811 org.python.pydev.parser 1.0.6 org.eclipse.emf.converter 2.4.0.v200806091234 org.eclipse.equinox.common 3.4.0.v20080421-2006 org.eclipse.buckminster.ui 1.0.0.r09319 org.eclipse.datatools.sqltools.tablewizard 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.0 org.eclipse.uml2.source 2.2.0.v200805201126 org.eclipse.team.cvs.ui 3.3.100.I20080604 org.python.pydev.jython 1.3.3 org.eclipse.emf.search.ocl 0.7.0.v200806130939 org.eclipse.datatools.enablement.sybase.asa.models 1.0.0.v200805152355 org.eclipse.sdk 3.4.0.v200806172000 org.eclipse.xsd.ecore.exporter 2.4.0.v200806091234 org.apache.commons.codec 1.3.0.v20080530-1600 org.eclipse.equinox.p2.exemplarysetup 1.0.0.v20080427-2136 org.eclipse.equinox.io 1.0.0.v20080218 org.eclipse.wst.common.project.facet.core 1.3.0.v200805140020 org.eclipse.wst.common.ui 1.1.301.v200805140415 org.eclipse.emf.databinding.edit 1.0.0.v200806091234 org.mortbay.jetty.server 6.1.7.v200806031612 org.eclipse.wst.dtd.core 1.1.200.v200805140200 org.python.pydev 1.0.6 org.eclipse.uml2.diagram.activity 0.8.0.v200806112132 org.eclipse.emf.importer.rose 2.4.0.v200806091234 org.eclipse.core.net.win32.x86 1.0.0.I20080521 javax.activation 1.1.0.v200804101140 org.python.pydev.core 1.3.15 org.python.pydev.parser 1.3.8 com.instantiations.assist.eclipse.coverage.ui 5.5.1.200809042337 org.eclipse.emf.ecoretools.filters 0.8.0.v200806130600 org.python.pydev.ast 1.3.0 org.eclipse.birt.report.data.oda.xml.ui 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase 1.0.1.v200805310538 org.python.pydev 1.3.8 org.eclipse.equinox.ip 1.0.0.v20080218 org.eclipse.datatools.connectivity.console.profile 1.0.0.v200805231345 org.eclipse.ecf.sharedobject 1.3.0.v20080623-0046 org.eclipse.debug.core 3.4.0.v20080612 org.eclipse.wst.xmleditor.doc.user 1.0.400.v200805211530 org.eclipse.datatools.enablement.sap.maxdb 1.0.0.v200805152355 org.python.pydev.ast 0.9.7 com.windowtester.swt.runtime.legacy 3.5.0.200806270034 org.eclipse.equinox.simpleconfigurator.manipulator 1.0.0.v20080427-2136 org.eclipse.equinox.p2.touchpoint.eclipse 1.0.0.v20080529-1225 com.instantiations.swt.graph 5.5.1 org.eclipse.gmf.doc 1.2.0.v20080516-1143 org.python.pydev 1.3.20 com.windowtester.swing.runtime 3.5.1.200809042232 org.eclipse.datatools.enablement.ibm.db2.iseries.ui 1.0.0.v200805160737 org.eclipse.datatools.connectivity.oda.profile 3.0.6.v200805152355 org.eclipse.mylyn.pde.ui 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.commons.ui 3.0.0.v20080619-1900 org.eclipse.emf.workspace.source 1.2.0.v200805130238-23-8s733I3C59379I org.eclipse.core.boot 3.1.100.v20080218 org.python.pydev.ast 1.2.2 org.eclipse.birt.doc 2.3.0.v20080617a com.instantiations.assist.eclipse.core.ui 5.5.0 org.python.pydev.jython 1.3.18 org.python.pydev.jython 1.0.5 org.eclipse.emf.validation 1.2.0.v200805170232 org.eclipse.equinox.jmx.client.rmi 1.0.0 org.eclipse.emf.mapping.ecore 2.4.0.v200806091234 com.instantiations.assist.eclipse.coverage 5.5.1.200809042337 com.instantiations.helpeditor.ui 1.3.4.200806270212 org.eclipse.emf.edit.ui 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editor.script 2.3.0.v200806102 org.eclipse.gmf.ecore.editor 2.0.100.v20080610-1132 com.windowtester.swt.recorder 3.5.1.200809042232 org.eclipse.uml2.diagram.source 0.8.0.v200806112132 org.eclipse.equinox.util 1.0.0.v20080414 org.eclipse.ecf.examples.source 2.0.0.v20080623-0046 org.eclipse.emf.mapping.xsd2ecore.editor 2.4.0.v200806091234 org.eclipse.pde.p2.ui 1.0.0.v20080604-2000 org.eclipse.birt.resources 2.3.0.v20080313 org.eclipse.emf.query.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.emf.ecore.change.edit 2.4.0.v200806091234 org.eclipse.datatools.sqltools.editor.core 1.0.0.v200805152355 org.polarion.eclipse.team.svn.connector.svnkit 2.0.1.I20080612-1500 org.eclipse.buckminster.download 1.1.0.r09319 com.swtdesigner 6.7.0.200806270151 org.python.pydev.parser 1.3.2 org.eclipse.jdt.compiler.apt 1.0.100.v20080513-1235 org.python.pydev.ast 1.0.7 com.windowtester.swt.gef.codegen 3.5.0.200806270034 org.eclipse.emf.ecore 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editors.schematic 2.3.0.v200806102 org.eclipse.pde.build 3.4.0.v20080604 com.instantiations.assist.eclipse 5.5.1 org.eclipse.birt.report.designer.ui.editor.xml.wtp 2.3.0.v200806102 org.eclipse.emf.cdo.tests.model1.edit 1.0.0.v200806180411 org.python.pydev 0.9.8 javax.xml 1.3.4.v200806030440 org.python.pydev 0.4.2 org.polarion.eclipse.team.svn.connector.javahl.win32 2.0.1.I20080612-1500 org.apache.ws.commons.util 1.0.0.v20080530-1550 org.apache.batik.bridge 1.6.0.v200805290154 org.eclipse.emf.search 0.7.0.v200806130939 org.eclipse.datatools.sqltools.parsers.sql.xml.query 1.0.0.v200805152355 org.eclipse.team.core 3.4.0.I20080605 org.eclipse.tptp.platform.execution 4.4.100.v200806050100 org.eclipse.uml2.diagram.parser 0.8.0.v200806112132 org.eclipse.birt.report.item.crosstab.core 2.3.0.v20080606 org.python.pydev.core 0.9.8 org.eclipse.uml2.search.common.ui 0.7.0.v200806130939 org.eclipse.mylyn.ide.ui 3.0.0.v20080619-1900 org.eclipse.xsd.cheatsheets 2.3.0.v200806091234 org.eclipse.wst.xsd.core 1.1.300.v200805282012 org.eclipse.net4j.http 1.0.0.v200806180305 org.python.pydev.core 1.3.6 org.eclipse.ui.externaltools 3.2.0.v20080514-1542 org.eclipse.birt.report.engine.emitter.prototype.excel 2.3.0.v20080606 org.python.pydev.parser 1.3.17 com.instantiations.eclipse.util 5.3.2.200806270030 org.eclipse.ui.editors 3.4.0.v20080603-2000 org.eclipse.buckminster.slf4j 1.0.0 org.python.pydev.ast 1.3.9 org.eclipse.gef.source 3.4.0.v20080115-677-8082A5696H274A org.python.pydev.core 1.0.8 org.python.pydev.ast 1.3.14 org.eclipse.team.ui 3.4.0.I20080604 org.eclipse.emf.query.ocl.source 1.2.0.v200805130238-11-7w311916241349 com.windowtester.swt.runtime 3.5.0.200806270034 org.eclipse.osgi.jmx 1.0.0.v20080610-1530 org.eclipse.net4j.examples.source 1.0.0.v200806180305 org.eclipse.tptp.monitoring.lta.symptom.doc.user 4.5.0.v200805132041 org.eclipse.equinox.p2.updatechecker 1.0.0.v20080427-2136 org.eclipse.ui.views 3.3.0.I20080509-2000 org.eclipse.emf.search.ocl.ui 0.7.0.v200806130939 javax.mail 1.4.0.v200804091730 ch.ethz.iks.slp 1.0.0.RC4_v200806091030 org.eclipse.core.resources.jmx 1.0.0.v20070510 javax.wsdl 1.4.0.v200806030407 org.eclipse.wst.xml.ui 1.0.401.v200807240448 org.python.pydev 1.2.1 org.eclipse.birt.chart.ui.extension 2.3.0.v20080610 org.python.pydev.core 0.9.8.3 org.python.pydev.parser 0.9.7 org.eclipse.jem.util 2.0.100.v200805140020 org.eclipse.tptp.monitoring.lta.la.core 4.5.0.v200805270100 org.python.pydev.core 0.9.8.2 org.eclipse.jdt.junit.runtime 3.3.0.v20080603-2000 org.python.pydev.core 1.2.4 org.python.pydev.core 0.9.8.1 org.eclipse.ecf.discovery 2.0.0.v20080623-0046 org.apache.xml.serializer 2.7.1.v200806030322 org.python.pydev.core 0.9.8.7 org.python.pydev.core 0.9.8.6 org.eclipse.gmf.runtime.draw2d.ui.render.awt 1.1.0.v20080603-1553 com.windowtester.eclipse.help 3.5.1.200809042232 org.python.pydev.core 0.9.8.5 org.python.pydev.core 0.9.8.4 org.python.pydev 0.9.8.7 org.eclipse.birt.report.engine.emitter.ppt 2.3.0.v20080606 org.apache.commons.httpclient 3.1.0.v20080605-1935 com.windowtester.runtime.legacy 3.5.0.200806270034 org.eclipse.datatools.enablement.oda.xml.ui 1.1.0.v200805270900 org.python.pydev 0.9.8.3 org.eclipse.mylyn.compatibility 3.0.2.v20080918-1100-e3x org.python.pydev 0.9.8.4 org.python.pydev 0.9.8.5 org.eclipse.wst.common.project.facet.ui 1.3.0.v200805281731 org.eclipse.gmf.tooldef 2.0.0.v20080417-1610 org.python.pydev 0.9.8.6 org.eclipse.core.commands 3.4.0.I20080509-2000 org.python.pydev.jython 1.3.9 org.eclipse.datatools.modelbase.sql.edit 1.0.0.v200805152355 org.python.pydev 0.9.8.2 org.python.pydev 0.9.8.1 org.eclipse.emf.cdo.server.hibernate.libraries 1.0.0.v200806180411 org.eclipse.equinox.p2.ui.admin 1.0.0.v20080522-1735 org.eclipse.wst.common.core 1.1.201.v200806010600 org.eclipse.emf.compare.diff.edit 0.8.0.v200806180301 com.swtdesigner.layout.group.designer 6.7.0.200806270151 org.eclipse.ui.views.properties.tabbed 3.4.0.I20080527-2000 org.python.pydev.jython 1.2.2 org.eclipse.wst.common.emf 1.1.200.v200805140020 com.instantiations.packager.refactoring 2.5.1 com.instantiations.assist.eclipse.fragment.jdt 5.5.1 org.eclipse.datatools.connectivity.dbdefinition.genericJDBC 1.0.0.v200805152355 org.python.pydev.parser 1.0.7 org.eclipse.datatools.sqltools.data.ui 1.1.0.v200805310400 org.eclipse.buckminster.core 1.1.0.r09336 org.eclipse.mylyn.tasks.core 3.0.1.v20080721-2100-e3x org.eclipse.birt.report.designer.ui.samplesview 2.3.0.v20080606 org.eclipse.equinox.launcher 1.0.100.v20080509-1800 org.eclipse.birt.report.item.crosstab.ui 2.3.0.v20080606 org.eclipse.m2m.atl.adt.perspective 2.0.0.v200806101117 javax.servlet.jsp 2.0.0.v200806031607 com.swtdesigner 6.7.1.200809050053 org.eclipse.jet.ui 0.9.0.v20080527 org.eclipse.m2m.qvt.oml.common.ui 1.0.0.v20080611-1330 com.swtdesigner.layout.group 6.7.1.200809050053 org.eclipse.gmf.runtime.common.ui.services.action 1.1.0.v20080507-2230 org.eclipse.emf.search.ecore.ui 0.7.0.v200806130939 org.python.pydev 1.0.5 org.eclipse.emf.workspace.ui 1.2.0.v200805130238 com.instantiations.helpeditor.core.toc 1.3.4.200809042225 org.slf4j.extendable 1.4.3 org.python.pydev.core 1.3.14 org.eclipse.hyades.logging.core 4.3.200.v200804110100 org.eclipse.datatools.enablement.postgresql.ui 1.0.0.v200806060334 org.eclipse.gmf.graphdef 2.0.100.v20080528-1052 org.eclipse.mylyn.help.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.protocol.bittorrent 0.3.0 org.eclipse.birt.report.engine 2.3.0.v20080616 org.eclipse.datatools.connectivity.ui.dse 1.1.0.v200805152355 org.eclipse.mylyn.bugzilla.core 3.0.0.v20080619-1900 org.python.pydev.jython 1.3.4 org.python.pydev 0.9.0 org.eclipse.equinox.preferences.jmx 1.0.0.v20070510 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.1 org.eclipse.datatools.enablement.postgresql.dbdefinition 1.0.0.v200805152355 org.eclipse.m2m.qvt.oml.common.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.eclipse.tptp.monitoring.lta.logui 4.5.0.v200805141427 org.eclipse.birt.report.debug.ui 2.3.0.v200806102 org.eclipse.gmf.runtime.emf.ui 1.1.0.v20080516-1748 org.eclipse.ui.cheatsheets 3.3.100.v20080508 org.python.pydev 1.2.9 org.eclipse.birt.report.engine.emitter.wpml 2.3.0.v20080606 org.eclipse.help.appserver 3.1.300.v20080507 org.python.pydev.parser 1.3.9 com.xored.composer.ui 1.3.4.200806270212 org.eclipse.datatools.sqltools.tabledataeditor 1.0.0.v200805240400 org.eclipse.gmf.runtime.emf.type.core 1.1.0.v20080425-1959 org.python.pydev 1.3.7 com.ibm.icu.base 3.8.1.v20080530 org.python.pydev.ast 1.3.1 org.apache.batik.pdf 1.6.0.v200806031500 org.eclipse.emf.mapping.ui 2.4.0.v200806091234 org.eclipse.net4j.db.derby 1.0.0.v200806180305 org.eclipse.net4j.http.server 1.0.0.v200806180305 org.python.pydev.jython 1.3.17 org.python.pydev.jython 1.0.6 org.python.pydev.ast 1.2.3 org.eclipse.team.svn.sources 0.7.1.I20080612-1500 org.eclipse.uml2.diagram.usecase 0.8.0.v200806112132 org.eclipse.wst.sse.core 1.1.300.v200805221633 org.eclipse.birt.report.designer.ui 2.3.0.v20080606 org.eclipse.jdt.apt.ui 3.3.100.v20080407-1345 com.instantiations.eclipse.debug 5.3.2.200809042027 org.eclipse.gmf.codegen.ui 1.1.0.v20080512-1200 com.instantiations.designer.databinding 6.7.1.200809050053 org.python.pydev.core 1.0.1 com.windowtester.swt.runtime.gef 3.5.0.200806270034 com.instantiations.common.ui 5.3.2.200809042027 org.python.pydev 1.3.19 org.eclipse.ui.forms 3.3.100.v20080611 org.eclipse.birt.data 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase.ase.ui 1.0.1.v200805310538 org.polarion.eclipse.team.svn.connector 2.0.1.I20080612-1500 org.eclipse.emf.common.ui 2.4.0.v200806091234 org.eclipse.datatools.enablement.ibm.informix.dbdefinition 1.0.0.v200805152355 org.eclipse.wst.xsdeditor.doc.user 1.0.400.v200805150028 org.eclipse.emf.mint.doc 0.7.0.v200806172223 org.eclipse.buckminster.generic 1.0.0.r09319 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.1 org.eclipse.emf.validation.examples 1.2.0.v200805280204 org.eclipse.team.svn.core 0.7.1.I20080612-1500 org.python.pydev.ast 1.2.4 org.eclipse.emf.cdo.server.hibernate 1.0.0.v200806180411 org.python.pydev.jython 1.3.8 org.eclipse.gmf.xpand 1.1.0.v20080528-1052 org.eclipse.datatools.sqltools.data.core 1.0.0.v200805152355 org.eclipse.emf.ecoretools 0.8.0.v200806130600 org.python.pydev.core 1.3.18 org.eclipse.gmf.runtime.common.core 1.1.0.v20080425-1959 org.eclipse.emf 2.4.0.v200806091234 org.eclipse.emf.ecoretools.properties 0.8.0.v200806130600 org.python.pydev.core 1.2.7 org.python.pydev.parser 0.9.8 org.eclipse.datatools.enablement.ibm.db2.luw.ui 1.0.0.v200805160737 org.eclipse.mylyn.team.ui 3.0.0.v20080619-1900 org.eclipse.help.base 3.3.100.v20080617 org.eclipse.m2m.atl.doc 2.0.0.v200806101117 org.eclipse.net4j.examples 1.0.0.v200806180305 org.eclipse.birt.data.aggregation 2.3.0.v20080606 org.eclipse.gmf.examples 1.0.100.v20080425-1959 org.eclipse.emf.search.common 0.7.0.v200806130939 org.python.pydev.ast 1.3.17 org.eclipse.ecf.provider.filetransfer.ssl 1.0.0.v20080611-1715 org.python.pydev.core 1.0.3 org.eclipse.team.svn.core.nl1 0.7.1.I20080612-1500 org.eclipse.emf.cdo.server.hibernate.teneo 1.0.0.v200806180411 org.eclipse.wst.validation.ui 1.2.1.v200807292117 org.python.pydev.parser 1.0.3 org.python.pydev.ast 1.3.6 org.eclipse.search 3.4.0.v20080603-2000 org.eclipse.jet 0.9.0.v20080527 org.python.pydev 1.3.2 org.python.pydev.jython 1.2.6 org.python.pydev.parser 1.3.14 org.eclipse.datatools.oda.cshelp 1.0.0.v200805152355 org.eclipse.jdt.junit 3.4.0.v20080603-2000 org.eclipse.datatools.sqltools.debugger.core 1.0.0.v200805152355 org.mortbay.jetty 5.1.14.v200806031611 org.eclipse.equinox.p2.garbagecollector 1.0.0.v20080506-1939 org.eclipse.m2m.atl.adt.debug 2.0.0.v200806101117 org.eclipse.equinox.jmx.client 1.0.0.v20070515 org.python.pydev.core 1.3.5 org.eclipse.mylyn.bugzilla.core 3.0.1.v20080721-2100-e3x org.python.pydev.parser 0.9.8.3 org.python.pydev.parser 0.9.8.2 org.python.pydev.parser 0.9.8.1 org.eclipse.osgi.services 3.1.200.v20071203 org.python.pydev 1.0.4 org.eclipse.hyades.lta.logging.adapter 4.5.0.v200806121215 org.eclipse.datatools.sqltools.sqleditor 1.0.0.v200805152355 org.python.pydev.parser 0.9.8.7 org.python.pydev.parser 0.9.8.6 org.eclipse.gmf.runtime.emf.core 1.1.0.v20080425-1959 org.python.pydev.parser 0.9.8.5 org.eclipse.core.contenttype 3.3.0.v20080604-1400 org.eclipse.ecf.datashare 1.3.0.v20080623-0046 org.python.pydev.parser 0.9.8.4 org.eclipse.tptp.platform.common.ui 4.4.100.v200806110100 org.junit 3.8.2.v20080602-1318 com.instantiations.assist.eclipse.coverage 5.5.0.200806270255 javax.activation 1.1.0.v200806101325 com.instantiations.assist.eclipse.scheduler 5.5.1 javax.management 1.2.0.v200803061811 org.eclipse.emf.edit 2.4.0.v200806091234 org.eclipse.ecf.provider.discovery 2.0.0.v20080623-0046 org.eclipse.birt.chart.device.pdf 2.3.0.v20080417 org.eclipse.equinox.wireadmin 1.0.0.v20080407 org.python.pydev.ast 1.0.8 org.eclipse.net4j.buddies.server 1.0.0.v200806180305 org.eclipse.wst.internet.cache 1.0.301.v200805140020 com.windowtester.runtime 3.5.0.200806270034 org.mx4j.jmx 3.0.3.v200802291451 org.eclipse.pde.ui 3.4.0.v20080530 org.eclipse.ocl 1.2.0.v200806091438 org.eclipse.birt.cshelp 2.3.0.v20080617 org.eclipse.emf.query.doc 1.2.0.v200805130238 org.eclipse.pde.runtime 3.4.0.v20080530-1200 org.apache.axis 1.4.0.v200807230600 org.apache.log4j 1.2.13.v200806030600 org.eclipse.ui.intro 3.2.200.v20080610 com.instantiations.assist.eclipse.pattern 5.5.1 com.xored.swt.composer 1.3.4.200806270212 org.apache.batik.ext.awt 1.6.0.v200805290154 org.eclipse.emf.cdo.ui 1.0.0.v200806180411 org.eclipse.jface 3.4.0.I20080606-1300 com.windowtester.swt.runtime.gef 3.5.1.200809042232 org.eclipse.gmf.runtime.emf.type.ui 1.1.0.v20080425-1959 org.eclipse.uml2.uml 2.2.0.v200805141133 org.objectweb.asm 3.0.0.v200803061811 org.python.pydev.core 1.1.0 org.eclipse.ecf.discovery.ui 2.0.0.v20080623-0046 org.python.pydev 1.3.14 org.eclipse.gmf.runtime.diagram.ui.printing 1.1.0.v20080501-1739 org.eclipse.mylyn.ide.ant 3.0.2.v20080918-1100-e3x org.eclipse.xsd.example.installer 1.0.0.v200806091234 org.eclipse.uml2.diagram.examples.profile 0.8.0.v200806112132 org.eclipse.ui.intro.universal 3.2.200.v20080508 org.python.pydev.ast 0.9.7.99 org.eclipse.emf.codegen 2.4.0.v200806091234 org.eclipse.equinox.p2.metadata 1.0.0.v20080514-1900 org.eclipse.ecf.example.collab 1.3.0.v20080623-0046 org.python.pydev.parser 1.2.4 org.eclipse.birt.report.engine.emitter.html 2.3.0.v20080606 org.python.pydev.jython 1.3.16 org.eclipse.osgi 3.4.0.v20080605-1900 org.eclipse.emf.databinding 1.0.0.v200806091234 org.eclipse.help 3.3.100.v20080610 org.eclipse.net4j.db.hsqldb 1.0.0.v200806180305 org.eclipse.gmf.runtime.diagram.ui.dnd 1.1.0.v20080425-1959 org.eclipse.birt.report.model 2.3.0.v20080605 org.eclipse.datatools.enablement.finfo 1.5.1.v200805152355 org.eclipse.jsch.ui 1.1.100.I20080415 org.python.pydev 1.3.10 org.python.pydev.parser 1.3.6 org.eclipse.emf.mapping.ecore.editor 2.4.0.v200806091234 org.eclipse.datatools.sqltools.common.ui 1.0.0.v200805152355 org.eclipse.birt.report.engine.emitter.pdf 2.3.0.v20080606 org.python.pydev 1.2.8 com.instantiations.packager.help 2.5.1 org.eclipse.equinox.p2.directorywatcher 1.0.0.v20080505-1850 org.eclipse.draw2d 3.4.0.v20080529 org.eclipse.draw2d.source 3.4.0.v20080115-33-7w3119163_ org.eclipse.ecf.ui 2.0.0.v20080623-0046 org.eclipse.birt.report.data.oda.jdbc.dbprofile 2.3.0.v20080606 org.eclipse.equinox.security.win32.x86 1.0.0.v20080529-1600 org.eclipse.wst.xml.ui 1.0.400.v200806051910 org.eclipse.jdt.ui 3.4.0.v20080603-2000 org.eclipse.equinox.p2.ui 1.0.0.v20080530-1237 org.eclipse.hyades.lta.logging.adapter.ui 4.5.0.v200805132041 org.eclipse.mylyn.monitor.ui 3.0.0.v20080619-1900 org.python.pydev 0.9.1 org.eclipse.emf.ecore.sdo.doc 2.4.0.v200806091234 com.instantiations.eclipse.ast.editor 5.5.1 org.eclipse.ant.ui 3.3.0.v20080529 org.python.pydev.core 1.3.13 org.eclipse.gef.doc.isv 3.4.0.v20080606 org.apache.xml.resolver 1.2.0.v200806030312 org.eclipse.datatools.enablement.ibm.db2.iseries.dbdefinition 1.0.0.v200806100223 org.eclipse.birt 2.3.0.v20080304 org.eclipse.equinox.security 1.0.0.v20080512-1800 com.instantiations.tools 5.3.2.200809042027 org.eclipse.jdt.core.manipulation 1.2.0.v20080603-2000 org.eclipse.gmf.runtime.diagram.ui.printing.render 1.1.0.v20080425-1959 org.eclipse.net4j.buddies.ui 1.0.0.v200806180305 org.eclipse.emf.codegen.ui 2.4.0.v200806091234 org.eclipse.team.svn 0.7.1.I20080612-1500 org.eclipse.wst.command.env.infopop 1.0.100.v200805301544 org.eclipse.datatools.enablement.hsqldb.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.runtime.common.ui.services.properties 1.1.0.v20080425-1959 org.eclipse.emf.cheatsheets 2.4.0.v200806091234 org.eclipse.ecf.presence.collab.ui 1.2.0.v20080623-0046 org.eclipse.update.core 3.2.200.v20080515 org.eclipse.wst.command.env.core 1.0.204.v200805140020 org.apache.batik.swing 1.6.0.v200805290154 org.eclipse.birt.report.designer.samplereports 2.3.0.v20080606 org.python.pydev.parser 1.0.8 org.eclipse.xsd 2.4.0.v200806091234 com.instantiations.assist.eclipse.fragment.jdt 5.5.0 org.eclipse.emf.transaction 1.2.0.v200805130238 org.eclipse.mylyn.team.cvs 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.ui 1.0.0.v20080611-1330 org.eclipse.emf.validation.source 1.2.0.v200805130238-35-9oA55S5J8H5ADM org.eclipse.datatools.enablement.hsqldb 1.0.0.v200805152355 org.eclipse.wst.common.uriresolver 1.1.301.v200805140415 org.eclipse.equinox.jsp.jasper 1.0.100.v20080427-0830 org.eclipse.osgi.util 3.1.300.v20080303 org.eclipse.datatools.connectivity.oda.consumer 3.1.2.v200805230718 org.eclipse.emf.compare.source 0.8.0.v200806180301 org.python.pydev.core 1.3.19 org.eclipse.emf.query.examples 1.2.0.v200805130238 org.eclipse.buckminster.runtime 1.1.0.r09338 org.eclipse.datatools.enablement.sybase.asa.dbdefinition 1.0.0.v200805240040 org.eclipse.datatools.sqltools.sql 1.0.0.v200805152355 org.apache.batik.svggen 1.6.0.v200805290154 org.eclipse.buckminster.cvs 1.0.0.r09319 org.python.pydev.core 1.2.6 org.eclipse.equinox.simpleconfigurator 1.0.0.v20080604 org.eclipse.help.ui 3.3.100.v20080521 org.apache.batik.dom 1.6.0.v200805290154 org.python.pydev.parser 1.1.0 org.eclipse.ecf.server.generic 1.2.0.v20080623-0046 com.windowtester.swt.runtime.win32 3.5.0.200806270034 org.eclipse.emf.cdo.examples 1.0.0.v200806180411 org.eclipse.ecf.provider.remoteservice 1.3.0.v20080623-0046 org.eclipse.gmf.runtime.notation.edit 1.1.0.v20080507-1326 org.eclipse.core.filesystem 1.2.0.v20080604-1400 org.eclipse.m2m.qvt.oml.runtime.ui 1.0.0.v20080611-1330 org.eclipse.emf.cdo.server.hibernate.source 1.0.0.v200806180411 org.python.pydev.jython 1.3.7 org.eclipse.gmf.codegen.edit 2.1.0.v20080610-1132 org.eclipse.buckminster.pde 1.1.0.r09351 org.python.pydev.ast 1.2.5 org.python.pydev.core 1.0.2 org.python.pydev.ast 1.3.16 org.apache.batik.parser 1.6.0.v200805290154 org.python.pydev.parser 1.0.2 org.eclipse.wst.common.infopop 1.0.100.v200805301550 org.eclipse.ecf.remoteservice 2.0.0.v20080623-0046 org.python.pydev 1.3.1 org.python.pydev.jython 1.2.5 org.eclipse.emf.mapping 2.4.0.v200806091234 org.eclipse.emf.cdo.server.hibernate.id 1.0.0.v200806180411 com.windowtester.runtime.legacy 3.5.1.200809042232 org.python.pydev.ast 1.3.7 org.eclipse.datatools.enablement.oracle 1.0.0.v200805152355 org.python.pydev.parser 1.3.15 org.eclipse.emf.importer 2.4.0.v200806091234 org.eclipse.birt.example 2.3.0.v20080304 org.eclipse.birt.report.designer.ui.lib 2.3.0.v20080606 org.eclipse.emf.cdo.server.source 1.0.0.v200806180411 org.eclipse.gmf.runtime.common.ui.services 1.1.0.v20080612-1229 org.eclipse.datatools.sqltools.db.generic 1.0.0.v200805152355 org.eclipse.net4j 1.0.0.v200806180305 org.eclipse.jdt 3.4.0.v20080603-2000 org.eclipse.emf.cdo.source 1.0.0.v200806180411 org.eclipse.datatools.connectivity 1.1.0.v200805160228 com.instantiations.assist.eclipse.scheduler 5.5.0 org.eclipse.emf.ecore.sdo.source 2.4.0.v200806091234 org.eclipse.wst.sse.doc.user 1.1.0.v200805211530 org.python.pydev 0.9.7.99 org.eclipse.emf.transaction.source 1.2.0.v200805130238-23-8s733I3C59379I org.w3c.dom.svg 1.1.0.v200806040011 org.python.pydev.core 1.3.4 javax.xml.rpc 1.1.0.v200806030420 org.eclipse.ocl.uml.source 1.2.0.v200805130238-11-7w311916241349 com.instantiations.eclipse.ui 5.3.2.200806270030 org.eclipse.jface.text 3.4.0.v20080603-2000 org.apache.batik.xml 1.6.0.v200805290154 org.python.pydev 1.0.3 org.eclipse.gmf.bridge.ui.dashboard 2.0.0.v20080417-1610 org.apache.lucene 1.9.1.v20080530-1600 org.eclipse.emf.query.ocl 1.2.0.v200805130238 org.eclipse.uml2.uml.resources 2.2.0.v200805131030 org.eclipse.ecf.provider.r_osgi 2.0.0.v20080623-0046 org.eclipse.emf.importer.java 2.4.0.v200806091234 org.python.pydev.debug 1.3.20 org.eclipse.emf.ecore.xmi 2.4.0.v200806091234 org.python.pydev.mylyn 0.3.0 com.instantiations.assist.eclipse.pattern 5.5.0 org.eclipse.emf.source 2.4.0.v200806091234 org.eclipse.ui.browser 3.2.200.v20080507 org.eclipse.tptp.lta.sdb.epi 4.5.0.v200805132041 org.eclipse.net4j.doc 1.0.0.v200806180305 org.eclipse.gmf.bridge 1.1.0.v20080528-1052 com.instantiations.assist.eclipse.admin 5.5.1 org.eclipse.ecf.presence 1.3.0.v20080623-0046 org.eclipse.jet.editor 0.9.0.v20080226 org.eclipse.emf.mint 0.7.0.v200806172223 org.eclipse.ecf.provider 1.3.0.v20080623-0046 com.instantiations.assist.eclipse.core.ant 5.5.0 org.apache.axis 1.4.0.v200806030120 org.eclipse.equinox.p2.metadata.repository 1.0.0.v20080604 com.ibm.icu 3.8.1.v20080530 org.eclipse.gmf.runtime.diagram.ui.properties 1.1.0.v20080603-1553 org.eclipse.team.svn.mylyn.source 0.7.1.I20080612-1500 org.eclipse.ecf.provider.datashare 1.3.0.v20080623-0046 org.eclipse.birt.report.data.oda.sampledb 2.3.0.v20080606 org.eclipse.m2m.atl.drivers.emf4atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.providers.ide 1.1.0.v20080425-1959 org.python.pydev 0.8.0 org.eclipse.datatools.connectivity.sqm.server.ui 1.1.0.v200806050117 com.nordea.cd.dev.plugin.stubbuilder 1.0.2 org.eclipse.emf.mapping.xsd2ecore 2.4.0.v200806091234 org.python.pydev.parser 1.2.5 org.eclipse.xsd.mapping.editor 2.4.0.v200806091234 org.python.pydev.jython 1.3.15 org.eclipse.gmf.xpand.editor 1.0.0.v20080425-1959 org.eclipse.tptp.platform.lta.common 4.5.0.v200806050100 org.eclipse.buckminster.pde.ui 1.0.0.r09319 org.eclipse.emf.validation.ocl 1.2.0.v200805130238 org.eclipse.ui.console 3.3.0.v20080529-1300 org.eclipse.net4j.ui 1.0.0.v200806180305 org.eclipse.emf.workspace 1.2.0.v200805130238 org.python.pydev.ast 0.9.8.6 org.python.pydev.ast 0.9.8.5 org.eclipse.emf.teneo.annotations 1.0.0.v200806111928 org.python.pydev.ast 0.9.8.4 org.eclipse.ui.net 1.0.0.I20080605 org.python.pydev.ast 0.9.8.3 org.eclipse.net4j.db.source 1.0.0.v200806180305 org.eclipse.zest.core 1.0.0.v20080115 org.python.pydev.ast 0.9.8.2 org.eclipse.tptp.lta.log.epi 4.5.0.v200805132041 org.python.pydev.ast 0.9.8.1 org.python.pydev 1.3.13 org.eclipse.equinox.app 1.1.0.v20080421-2006 org.eclipse.equinox.p2.metadata.generator 1.0.0.v20080604 org.python.pydev 1.2.7 org.eclipse.emf.ocl.examples 1.2.0.v200805130238 org.eclipse.mylyn.jira.core 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.commons.net 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql.query 1.0.1.v200805152355 org.eclipse.datatools.sqltools.plan 1.0.0.v200805152355 com.swtdesigner.help 6.7.1.200809050053 org.eclipse.ecf.ssl 1.0.0.v20080611-1715 org.eclipse.team.cvs.core 3.3.100.I20080605 org.python.pydev.ast 0.9.8 com.instantiations.helpeditor.core.toc 1.3.4.200806270212 org.eclipse.core.databinding 1.1.0.I20080527-2000 org.eclipse.tptp.platform.common 4.3.200.v200805300100 org.eclipse.net4j.util.ui 1.0.0.v200806180305 org.eclipse.mylyn.commons.core 3.0.0.v20080619-1900 org.python.pydev 1.3.9 org.eclipse.emf.search.common.ui 0.7.0.v200806130939 org.eclipse.m2m.atl.engine.emfvm 2.0.0.v200806101117 org.eclipse.uml2.diagram.csd 0.8.0.v200806112132 org.python.pydev.parser 1.3.7 org.eclipse.team.svn.ui 0.7.1.I20080612-1500 org.python.pydev.core 1.3.12 org.eclipse.datatools.modelbase.sql.query.edit 1.0.0.v200806070329 com.instantiations.packager.core 2.5.1 com.windowtester.swing.runtime 3.5.0.200806270034 org.eclipse.update.ui 3.2.100.v20080318 org.apache.commons.codec 1.2.0.v20080530-1550 org.eclipse.mylyn.bugzilla.core 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.editor.ui 1.0.0.v20080611-1330 org.eclipse.m2m.qvt.oml.samples 1.0.0.v20080611-1330 org.eclipse.mylyn.context.core 3.0.0.v20080619-1900 org.eclipse.xsd.source 2.4.0.v200806091234 org.eclipse.gmf.runtime.diagram.core 1.1.0.v20080425-1959 org.eclipse.m2m.atl.drivers.uml24atl 2.0.0.v200806101117 com.instantiations.eclipse.util 5.3.2.200809042027 org.eclipse.emf.ecore.sdo 2.4.0.v200806091234 com.instantiations.eclipse.startup 5.3.2.200809042027 org.eclipse.gmf 1.0.0.v20080425-1959 org.python.pydev 0.9.2 org.apache.batik.util.gui 1.6.0.v200805290154 org.python.pydev.ast 0.9.8.7 com.nordea.cd.dev.plugin.wsdl2java 1.0.2 org.eclipse.datatools.enablement.sybase.models 1.0.0.v200805152355 org.python.pydev.ast 1.0.1 org.eclipse.emf.compare.diff 0.8.0.v200806180301 org.eclipse.birt.report.designer 2.3.0.v200806102 org.eclipse.equinox.http.registry 1.0.100.v20080427-0830 ch.ethz.iks.r_osgi.remote 1.0.0.RC2_v20080623-0046 org.eclipse.gmf.graphdef.codegen.ui 1.0.100.v20080425-1959 org.eclipse.m2m.qvt.oml.editor.source 1.0.0.v20080611-1330-1--7w3119172202441 org.sat4j.pb 2.0.0.v20080602 org.eclipse.wst.validation 1.2.1.v200807292117 org.apache.batik.util 1.6.0.v200805290154 org.eclipse.equinox.transforms.hook 1.0.0.v20080610 org.eclipse.emf.teneo.hibernate 1.0.0.v200806111928 org.eclipse.uml2.examples 2.1.0.v200805131030 org.eclipse.mylyn.java.tasks 3.0.2.v20080918-1100-e3x org.eclipse.equinox.preferences 3.2.200.v20080421-2006 com.instantiations.assist.eclipse.fragment.swt 5.5.0 org.eclipse.ocl.doc 1.2.0.v200805130238 org.eclipse.jdt.apt.core 3.3.100.v20080513-1235 org.eclipse.birt.report.engine.fonts 2.3.0.v20080606 org.eclipse.mylyn.monitor.ui 3.0.2.v20080918-1100-e3x org.eclipse.gmf.tooldef.edit 2.0.0.v20080610-1132 org.eclipse.gmf.runtime.draw2d.ui.render 1.1.0.v20080507-2230 com.windowtester.swt.platform.ext 3.5.0.200806270034 org.eclipse.ecf.example.clients 1.3.0.v20080623-0046 org.eclipse.core.net 1.1.0.I20080604 org.eclipse.wst.xsd.core 1.1.301.v200807240448 org.eclipse.datatools.connectivity.oda.flatfile 3.0.6.v200805261930 org.python.pydev.refactoring 1.3.20 org.python.pydev.parser 1.0.1 org.python.pydev.ast 1.3.19 org.eclipse.equinox.registry.jmx 1.0.0.v20080610-1530 com.instantiations.eclipse.model.jsp 5.5.0 org.eclipse.mylyn.context.ui 3.0.2.v20080918-1100-e3x org.python.pydev.core 1.0.5 org.eclipse.hyades.lta.resources.database 4.5.0.v200805271330 org.python.pydev 0.6.1 org.python.pydev.parser 1.3.12 org.eclipse.equinox.p2.console 1.0.0.v20080514-1900 org.eclipse.mylyn.commons.net 3.0.1.v20080721-2100-e3x org.eclipse.net4j.jms.api 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.lexer 1.0.1.v200805152355 org.python.pydev.ast 1.3.4 org.python.pydev 1.3.4 org.python.pydev.jython 1.2.8 org.python.pydev 0.8.5 org.python.pydev 0.5.3 org.eclipse.wst.sse.ui 1.1.1.v200808141919 org.eclipse.emf.query 1.2.0.v200805130238 org.eclipse.core.runtime.compatibility 3.2.0.v20071008 org.eclipse.gmf.runtime.notation 1.1.0.v20080507-1326 org.eclipse.birt.report.data.oda.sampledb.ui 2.3.0.v20080606 org.python.pydev.ast 1.2.6 com.instantiations.eclipse.mail.ui 5.5.1 org.eclipse.zest.layouts 1.0.0.v20080226 org.python.pydev.jython 1.3.6 org.eclipse.net4j.jms.admin 1.0.0.v200806180305 org.eclipse.core.databinding.beans 1.1.0.I20080508-2000a org.python.pydev 1.1.0 org.python.pydev.core 1.3.20 org.eclipse.gmf.runtime.emf.commands.core 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.common.ui.services.dnd.ide 1.1.0.v20080425-1959 org.eclipse.datatools.connectivity.apache.derby 1.0.1.v200805152355 org.python.pydev.core 1.2.9 org.eclipse.mylyn.context.core 3.0.2.v20080918-1100-e3x org.eclipse.equinox.p2.artifact.repository 1.0.0.v20080609-0850 org.eclipse.gef 3.4.0.v20080526 org.eclipse.gmf.runtime.common.ui 1.1.0.v20080512-1200 org.eclipse.emf.ecoretools.tabbedproperties 0.8.0.v200806130600 com.instantiations.assist.eclipse.core.ant 5.5.1 org.eclipse.emf.ecore.change 2.4.0.v200806091234 org.eclipse.jet.doc 0.9.0.v20080522 org.eclipse.emf.transaction.examples 1.2.0.v200806051817 org.eclipse.gmf.runtime.draw2d.ui 1.1.0.v20080610-1132 org.eclipse.equinox.jmx.server.rmi 1.0.0.v20070510 org.eclipse.ecf.examples.remoteservices.common 1.0.100.v20080623-0046 org.eclipse.wst.standard.schemas 1.0.102.v200807220733 org.eclipse.equinox.p2.jarprocessor 1.0.0.v20080514-1900 org.eclipse.birt.report.data.oda.jdbc 2.3.0.v20080610 com.windowtester.runner 3.5.0.200806270034 com.windowtester.swt.codegen 3.5.1.200809042232 org.eclipse.emf.cdo.tests.model2.edit 1.0.0.v200806180411 javax.wsdl 1.5.1.v200806030408 org.eclipse.datatools.enablement.sap.maxdb.ui 1.0.0.v200805152355 org.eclipse.equinox.launcher.win32.win32.x86 1.0.100.v20080509-1800 org.eclipse.birt.core 2.3.0.v20080606 javax.servlet 2.5.0.v200806031605 org.eclipse.uml2.codegen.ecore.ui 1.4.0.v200805131030 com.windowtester.swt.recorder 3.5.0.200806270034 org.eclipse.mylyn 3.0.1.v20080721-2100-e3x org.eclipse.uml2.search.ocl 0.7.0.v200806130939 org.python.pydev.core 1.3.3 org.eclipse.core.jobs 3.4.0.v20080512 org.python.pydev.core 0.9.5 org.eclipse.emf.validation.ui.ide 1.2.0.v200805130238 org.python.pydev 1.0.2 org.eclipse.wst.validation.ui 1.2.0.v200805262011 com.windowtester.swing.recorder 3.5.1.200809042232 com.instantiations.helpeditor.help 1.3.4.200809042225 org.eclipse.gmf.map.edit 2.1.0.v20080610-1132 org.eclipse.emf.ecore.edit 2.4.0.v200806091234 org.eclipse.datatools.enablement.msft.sqlserver.dbdefinition 1.0.0.v200805152355 org.mortbay.jetty.util 6.1.7.v200806031612 org.eclipse.datatools.sqltools.parsers.sql 1.0.1.v200805152355 org.eclipse.xsd.doc 2.4.0.v200806091234 org.eclipse.jdt.doc.isv 3.4.0.v20080612-1340 org.eclipse.jdt.apt.pluggable.core 1.0.100.v20080407-1345 org.eclipse.ecf.provider.bittorrent 0.3.0.v20080623-0046 org.eclipse.mylyn.monitor.ui 3.0.1.v20080721-2100-e3x org.python.pydev.jython 1.0.4 org.eclipse.wst.common.project.facet.ui 1.3.1.v200807301432 javax.xml.bind 2.0.0.v20080604-1500 org.apache.derby.core 10.3.1.4 org.eclipse.birt.report.debug.core 2.3.0.v200806102 org.python.pydev.parser 1.3.4 org.eclipse.jdt.debug.ui 3.3.0.v20080603 org.python.pydev.help 1.3.20 org.python.pydev 1.3.12 org.eclipse.gef.examples.ui.pde 3.4.0.v20080226 org.eclipse.ecf.provider.jmdns 2.0.0.v20080623-0046 org.eclipse.xsd.editor 2.4.0.v200806091234 org.python.pydev 1.2.6 org.eclipse.buckminster.generic.ui 1.0.0.r09319 org.eclipse.emf.ocl 1.1.100.v200805130238 org.eclipse.emf.search.ecore 0.7.0.v200806130939 org.eclipse.wst.common.frameworks.ui 1.1.200.v200805221400 org.eclipse.emf.ecoretools.doc 0.8.0.v200806130600 org.eclipse.wst.sse.ui.infopop 1.0.200.v200805301545 org.eclipse.tptp.platform.common.ui.trace 4.3.200.v200805290100 org.eclipse.net4j.jms.server 1.0.0.v200806180305 org.eclipse.ecf.filetransfer.ui 1.4.0.v20080623-0046 org.eclipse.birt.chart.device.swt 2.3.0.v20080522 org.eclipse.wst.xsd.ui 1.2.101.v200806051910 org.eclipse.emf.cdo.examples.source 1.0.0.v200806180411 org.eclipse.birt.report.designer.ui.lib.explorer 2.3.0.v20080606 org.mozilla.rhino 1.6.7.v20080214 org.python.pydev 1.3.16 org.eclipse.buckminster.ant 1.1.0.r09351 org.eclipse.equinox.metatype 1.0.0.v20070827 org.eclipse.m2m.atl.adt.wizard 2.0.0.v200806101117 org.eclipse.wst.command.env 1.0.305.v200805281530 org.eclipse.swt.jmx 1.0.0.v20070510 org.eclipse.emf.cdo.common 1.0.0.v200806180411 org.eclipse.ecf.examples.remoteservices.client 1.0.100.v20080623-0046 org.python.pydev.jython 1.3.14 org.python.pydev.parser 1.2.6 org.eclipse.emf.ecoretools.diagram.ui.outline 0.8.0.v200806130600 org.eclipse.emf.teneo.eclipse 1.0.0.v200806111928 org.eclipse.emf.cdo.tests.mango 1.0.0.v200806180411 org.eclipse.net4j.buddies.common 1.0.0.v200806180305 org.eclipse.net4j.buddies.chat 1.0.0.v200806180305 org.eclipse.mylyn.bugzilla.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.0 org.eclipse.datatools.enablement.sybase.ase.dbdefinition 1.0.0.v200805240040 org.apache.ant 1.7.0.v200803061910 org.eclipse.datatools.connectivity.oda.design 3.0.6.v200805152355 org.eclipse.emf.ocl.doc 1.1.100.v200805130238 org.eclipse.tptp.lta.gla.ui.epi 4.5.0.v200805160100 org.eclipse.equinox.jmx.server 1.0.0.v20071015 org.eclipse.wst.xml.core 1.1.300.v200806051910 org.eclipse.datatools.connectivity.oda.template.ui 3.0.6.v200805152355 org.python.pydev.ast 1.0.2 org.eclipse.birt.report.data.adapter 2.3.0.v20080606 org.eclipse.birt.chart.runtime 2.3.0.v20080304 org.eclipse.net4j.ui.source 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.query 1.0.1.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.1 org.eclipse.wst.dtd.ui 1.0.300.v200805152207 org.eclipse.mylyn.java.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.connectivity.oda.design.ui 3.0.6.v200805152355 org.eclipse.birt.report.designer.core 2.3.0.v200806102 org.eclipse.buckminster.jdt 1.0.0.r09319 org.eclipse.buckminster.p4 1.0.0.r09319 org.eclipse.ecf.core.source 2.0.0.v20080623-0046 org.eclipse.birt.report.runtime 2.3.0.v20080304 org.python.pydev.ast 1.1.0 com.windowtester.swt.runtime 3.5.1.200809042232 org.eclipse.uml2.doc 2.2.0.v200805201350 org.eclipse.mylyn.context.core 3.0.1.v20080721-2100-e3x org.eclipse.gmf.runtime.notation.providers 1.1.0.v20080425-1959 org.eclipse.tptp.platform.lta.log.doc.user 4.5.0.v200805132041 org.eclipse.team.svn.help 0.7.1.I20080612-1500 org.python.pydev 0.9.3 com.windowtester.swt.runtime.win32 3.5.1.200809042232 org.eclipse.m2m.qvt.oml.ocl.emf.libraries 1.0.0.v20080611-1330 org.eclipse.hyades.lta.analysis.engine 4.5.0.v200805271330 org.python.pydev.core 1.3.11 org.eclipse.datatools.connectivity.sqm.core 1.0.1.v200806041052 org.eclipse.equinox.jmx.server.xmlrpc 1.0.0.v20070608 org.eclipse.platform 3.3.100.v200806172000 org.eclipse.ui 3.4.0.I20080610-1200 org.eclipse.net4j.buddies.chat.ui 1.0.0.v200806180305 org.eclipse.emf.search.ecore.ocl 0.7.0.v200806130939 org.eclipse.gmf.codegen 2.1.0.v20080610-1132 org.eclipse.emf.teneo 1.0.0.v200806111928 org.eclipse.datatools.connectivity.oda.flatfile.ui 3.0.6.v200805261930 org.python.pydev.core 1.0.4 org.eclipse.equinox.p2.extensionlocation 1.0.0.v20080523-0001 org.eclipse.buckminster.remote.cloudsmith 1.0.0.r09319 org.python.pydev.ast 1.3.18 org.eclipse.birt.report.engine.dataextraction.csv 2.3.0.v200806102 org.eclipse.equinox.log 1.1.0.v20080414 org.python.pydev.parser 1.3.13 org.python.pydev 1.3.3 com.windowtester.eclipse.help 3.5.0.200806270034 org.python.pydev.jython 1.2.7 org.eclipse.m2m.qvt.oml.emf.util.ui 1.0.0.v20080611-1330 org.eclipse.gmf.runtime.common.ui.printing 1.1.0.v20080425-1959 org.python.pydev.ast 1.3.5 org.eclipse.uml2.uml.ecore.exporter 2.2.0.v200805131030 org.eclipse.equinox.event 1.1.0.v20080225 org.eclipse.epp.usagedata.gathering 1.0.0.R200806162215 com.instantiations.assist.eclipse.fragment.swt 5.5.1 org.eclipse.emf.cdo.server 1.0.0.v200806180411 org.eclipse.core.filesystem.win32.x86 1.1.0.v20080604-1400 org.eclipse.datatools.enablement.ibm.db2.zseries 1.0.0.v200805152355 com.windowtester.swt.platform.ext 3.5.1.200809042232 org.eclipse.birt.chart.examples 2.3.0.v20080612 org.eclipse.gmf.bridge.ui 1.1.100.v20080417-1610 org.eclipse.emf.doc 2.4.0.v200806091234 org.eclipse.emf.ecoretools.diagram 0.8.0.v200806130600 org.eclipse.ecf.provider.filetransfer.efs 1.5.0.v20080623-0046 org.eclipse.mylyn.commons.net 3.0.0.v20080619-1900 org.python.pydev.core 1.2.8 org.eclipse.datatools.modelbase.dbdefinition 1.0.0.v200805152355 javax.management.remote 1.0.0.v200803061811 org.eclipse.net4j.util 1.0.0.v200806180305 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.0 org.eclipse.ui.navigator.resources 3.3.100.I20080606-1300 org.apache.lucene.analysis 1.9.1.v20080530-1600 org.python.pydev.jython 1.3.5 org.eclipse.m2m.atl.adt.builder 2.0.0.v200806101117 org.eclipse.mylyn.monitor.core 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.2.7 com.instantiations.eclipse.mail.ui 5.5.0 org.eclipse.tptp.platform.models.lta 4.5.0.v200805132041 org.eclipse.mylyn.commons.core 3.0.1.v20080721-2100-e3x org.eclipse.team.svn.nl1 0.7.1.I20080612-1500 org.eclipse.birt.report.data.oda.jdbc.dbprofile.ui 2.3.0.v20080606 org.eclipse.pde 3.4.0.v20080603 org.eclipse.net4j.jms.server.jdbc 1.0.0.v200806180305 org.eclipse.pde.doc.user 3.3.0.v20080611-1530 org.eclipse.core.runtime.compatibility.auth 3.2.100.v20070502 org.eclipse.tptp.platform.iac.administrator 4.4.100.v200806120100 org.eclipse.emf.importer.ecore 2.4.0.v200806091234 org.eclipse.equinox.jmx.client.xmlrpc 1.0.0.v20070515 org.eclipse.equinox.jmx.common 1.0.0.v20070510 org.eclipse.datatools.enablement.ibm.informix.ui 1.0.0.v200805160737 com.instantiations.installer 2.5.1 org.eclipse.hyades.lta.logging.parsers 4.5.0.v200805271330 org.eclipse.uml2.diagram.profile 0.8.0.v200806112132 org.eclipse.datatools.enablement.jdt.classpath 1.0.1.v200805152355 org.eclipse.emf.validation.ocl.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.net4j.buddies 1.0.0.v200806180305 net.sourceforge.lpg.lpgjavaruntime 1.1.0.v200803061910 org.eclipse.emf.ecore.editor 2.4.0.v200806091234 org.apache.commons.lang 2.3.0.v200803061910 org.eclipse.ocl.uml 1.2.0.v200805130238 org.eclipse.emf.mapping.ecore2ecore 2.4.0.v200806091234 com.swtdesigner.fragment.jdt.core 6.7.0.200806270151 org.eclipse.ecf.provider.xmpp 2.0.0.v20080623-0046 org.eclipse.wst.common.modulecore 1.1.201.v200808071700 org.eclipse.mylyn.jira.ui 3.0.2.v20080918-1100-e3x org.eclipse.draw2d.doc.isv 3.4.0.v20080606 org.python.pydev.core 1.3.2 org.eclipse.mylyn.compatibility 3.0.0.v20080619-1900 org.eclipse.buckminster.maven 1.1.0.r09319 org.eclipse.buckminster.cmdline 1.0.0.r09319 org.apache.batik.css 1.6.0.v200805290154 org.eclipse.ecf.telephony.call.ui 1.2.0.v20080623-0046 org.eclipse.wst.common.emfworkbench.integration 1.1.200.v200805140020 org.python.pydev 1.0.1 org.eclipse.datatools.enablement.ibm.db2.luw.dbdefinition 1.0.0.v200805152355 org.eclipse.team.svn.resource.ignore.rules.jdt.source 0.7.1.I20080612-1500 org.eclipse.ecf.server 1.3.0.v20080623-0046 org.python.pydev 1.2.5 org.python.pydev.core 1.2.1 org.eclipse.datatools.sqltools.sqlscrapbook 1.0.0.v200806021003 org.eclipse.birt.chart.reportitem 2.3.0.v20080610 org.eclipse.uml2.diagram.codegen 0.8.0.v200806112132 org.eclipse.xsd.edit 2.4.0.v200806091234 org.eclipse.buckminster.opml 1.0.0.r09319 org.python.pydev.parser 1.3.5 org.eclipse.gmf.runtime.diagram.ui 1.1.0.v20080610-1132 org.eclipse.ocl.source 1.2.0.v200805130238-34-9oA55S5I6M7JBK com.windowtester.eclipse.ui 3.5.0.200806270034 org.eclipse.tptp.platform.agentcontroller 4.2.200.v200806162043 org.python.pydev 1.3.11 org.eclipse.datatools.connectivity.apache.derby.ui 1.0.0.v200805160737 org.eclipse.datatools.sqltools.routineeditor 1.0.0.v200805261703 org.eclipse.wst.xsd.ui 1.2.102.v200808141745 org.eclipse.equinox.http 1.0.200.v20080421-2006 org.jivesoftware.smack 2.2.1 org.eclipse.mylyn.compatibility 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.java.ui 3.0.0.v20080619-1900 org.eclipse.core.variables 3.2.100.v20080529-1300 org.python.pydev.jython 1.3.13 org.python.pydev.parser 1.3.20 org.eclipse.tptp.platform.models.hierarchy 4.5.0.v200806120100 org.eclipse.ecf.examples.updatesite.client 1.0.100.v20080623-0046 org.eclipse.datatools.enablement.msft.sqlserver.ui 1.0.0.v200805160737 org.eclipse.datatools.enablement.mysql 1.0.0.v200805152355 org.eclipse.jdt.debug 3.4.0.v20080604 org.antlr.runtime 3.0.0.v200803061811 org.python.pydev.parser 1.2.7 org.eclipse.hyades.execution 4.4.200.v200806120100 org.eclipse.ecf.provider.ui 1.3.0.v20080623-0046 org.eclipse.birt.chart.cshelp 2.3.0.v20080616 org.eclipse.buckminster.p4.ui 1.0.0.r09319 org.python.pydev 1.3.15 org.eclipse.datatools.enablement.ibm.ui 1.0.0.v200805152355 org.eclipse.buckminster.sax 1.0.0.r09175 org.eclipse.equinox.supplement 1.1.0.v20080421-2006 org.eclipse.wst.common.frameworks 1.1.200.v200805140020 org.eclipse.mylyn 3.0.2.v20080918-1100-e3x org.eclipse.gmf.map 2.1.0.v20080521 org.eclipse.wst.standard.schemas 1.0.101.v200806010600 org.python.pydev.ast 1.0.3 org.eclipse.m2m.qvt.oml.runtime 1.0.0.v20080611-1330 org.eclipse.mylyn.ide.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.sqltools.sqlbuilder 1.0.0.v200806070500 org.eclipse.datatools.modelbase.derby 1.0.0.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.0 org.eclipse.emf.compare.ui 0.8.0.v200806180301 org.eclipse.ecf.provider.filetransfer.scp 2.0.0.v20080623-0046 org.eclipse.uml2.search.ocl.ui 0.7.0.v200806130939 org.eclipse.mylyn.context.ui 3.0.1.v20080721-2100-e3x org.python.pydev.templates 1.3.20 org.eclipse.gmf.runtime.diagram.ui.resources.editor 1.1.0.v20080425-1959 org.eclipse.gmf.examples.ui.pde 1.0.200.v20080425-1959 org.eclipse.buckminster.installer 1.0.0.r09319 org.eclipse.m2m.atl.examples 2.0.0.v200806101117 org.eclipse.datatools.modelbase.sql.xml.query 1.0.0.v200805152355 org.eclipse.emf.search.doc 0.7.0.v200806130939 org.eclipse.datatools.enablement.oracle.dbdefinition 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.0 javax.xml.bind 2.0.0.v200803061811 org.apache.xmlrpc 3.0.0.v20080530-1550 org.eclipse.ui.views.log 1.0.0.v20080522-2200 org.python.pydev.core 1.3.10 org.eclipse.ecf.examples.updatesite.server 1.0.100.v20080623-0046 org.eclipse.birt.core.ui 2.3.0.v20080515 org.eclipse.core.filebuffers 3.4.0.v20080603-2000 org.eclipse.mylyn.team.ui 3.0.1.v20080721-2100-e3x org.eclipse.wst.command.env 1.0.306.v200807231700 org.eclipse.team.cvs.ssh2 3.2.200.I20080604 org.eclipse.emf.search.ecore.ocl.ui 0.7.0.v200806130939 org.eclipse.ecf.example.collab.editor 1.0.200.v20080623-0046 org.eclipse.ecf.provider.jslp 2.0.0.v20080623-0046 org.eclipse.datatools.sqltools.result 1.0.0.v200805301309 org.eclipse.emf.teneo.jpox 1.0.0.v200806111928 org.eclipse.gmf.runtime.emf.clipboard.core 1.1.0.v20080425-1959 com.instantiations.eclipse.ast.editor 5.5.0 org.eclipse.mylyn.tasks.bugs 3.0.2.v20080918-1100-e3x org.eclipse.jsch.core 1.1.100.I20080604 org.eclipse.pde.core 3.4.0.v20080604-2000 org.python.pydev 0.9.4 org.python.pydev.jython 1.3.0
-1 x2965 +1 x16 +1 x528 +1 x118 +1 x17 +1 x21 +1 x34 +1 x599 +1 x658 +1 x659 +1 x35 +1 x660 +1 x40 +1 x44 +1 x661 +1 x50 +1 x662 +1 x51 +1 x101 +1 x103 +1 x112 +1 x663 +1 x125 +1 x191 +1 x53 +1 x664 +1 x665 +1 x666 +1 x162 +1 x167 +1 x667 +1 x326 +1 x188 +1 x187 +1 x173 +1 x203 +1 x192 +1 x190 +1 x668 +1 x578 +1 x669 +1 x670 +1 x208 +1 x213 +1 x671 +1 x223 +1 x672 +1 x229 +1 x230 +1 x231 +1 x673 +1 x674 +1 x675 +1 x676 +1 x248 +1 x251 +1 x252 +1 x677 +1 x678 +1 x253 +1 x260 +1 x87 +1 x264 +1 x267 +1 x272 +1 x291 +1 x679 +1 x680 +1 x681 +1 x46 +1 x682 +1 x297 +1 x298 +1 x313 +1 x683 +1 x684 +1 x314 +1 x685 +1 x686 +1 x333 +1 x498 +1 x334 +1 x687 +1 x339 +1 x688 +1 x348 +1 x350 +1 x689 +1 x355 +1 x357 +1 x690 +1 x185 +1 x691 +1 x360 +1 x692 +1 x693 +1 x694 +1 x366 +1 x695 +1 x18 +1 x367 +1 x382 +1 x696 +1 x392 +1 x697 +1 x461 +1 x698 +1 x95 +1 x617 +1 x699 +1 x114 +1 x413 +1 x464 +1 x700 +1 x80 +1 x65 +1 x701 +1 x702 +1 x422 +1 x703 +1 x423 +1 x704 +1 x427 +1 x705 +1 x429 +1 x706 +1 x707 +1 x708 +1 x432 +1 x433 +1 x709 +1 x710 +1 x159 +1 x711 +1 x712 +1 x434 +1 x331 +1 x713 +1 x714 +1 x715 +1 x436 +1 x444 +1 x451 +1 x501 +1 x519 +1 x197 +1 x513 +1 x512 +1 x716 +1 x514 +1 x717 +1 x516 +1 x47 +1 x718 +1 x719 +1 x534 +1 x720 +1 x721 +1 x722 +1 x530 +1 x723 +1 x724 +1 x532 +1 x531 +1 x533 +1 x725 +1 x726 +1 x402 +1 x26 +1 x727 +1 x552 +1 x41 +1 x728 +1 x729 +1 x560 +1 x730 +1 x168 +1 x731 +1 x582 +1 x592 +1 x586 +1 x593 +1 x595 +1 x732 +1 x733 +1 x596 +1 x734 +1 x735 +1 x597 +1 x602 +1 x610 +1 x129 +1 x460 +1 x736 +1 x623 +1 x737 +1 x738 +1 x739 +1 x634 +1 x740 +1 x635 +1 x636 +1 x204 +1 x645 +1 x741 +1 x647 +1 x648 +1 x38 +1 x649 +1 x652 +1 x742 +1 x380 +1 x88 +1 x653 +1 x655 +1 x743 +1 x477 +1 x744 +1 x745 +1 x198 +1 x746 +1 x747 +1 x175 +1 x303 +1 x748 +1 x220 +1 x749 +1 x750 +1 x751 +1 x752 +1 x753 +1 x340 +1 x217 +1 x754 +1 x755 +1 x756 +1 x757 +1 x758 +1 x759 +1 x492 +1 x760 +1 x408 +1 x761 +1 x72 +1 x762 +1 x763 +1 x764 +1 x765 +1 x184 +1 x766 +1 x510 +1 x73 +1 x767 +1 x768 +1 x769 +1 x374 +1 x770 +1 x771 +1 x14 +1 x772 +1 x773 +1 x774 +1 x775 +1 x776 +1 x454 +1 x777 +1 x344 +1 x178 +1 x778 +1 x779 +1 x186 +1 x347 +1 x780 +1 x781 +1 x782 +1 x783 +1 x784 +1 x785 +1 x786 +1 x787 +1 x788 +1 x789 +1 x790 +1 x791 +1 x792 +1 x625 +1 x793 +1 x794 +1 x472 +1 x795 +1 x796 +1 x797 +1 x798 +1 x521 +1 x799 +1 x800 +1 x801 +1 x802 +1 x525 +1 x91 +1 x803 +1 x804 +1 x805 +1 x806 +1 x807 +1 x587 +1 x808 +1 x315 +1 x809 +1 x810 +1 x811 +1 x812 +1 x813 +1 x814 +1 x815 +1 x816 +1 x68 +1 x817 +1 x179 +1 x486 +1 x818 +1 x410 +1 x819 +1 x820 +1 x821 +1 x822 +1 x823 +1 x824 +1 x825 +1 x826 +1 x827 +1 x638 +1 x828 +1 x829 +1 x830 +1 x372 +1 x831 +1 x832 +1 x9 +1 x263 +1 x324 +1 x411 +1 x833 +1 x834 +1 x835 +1 x836 +1 x837 +1 x838 +1 x839 +1 x430 +1 x840 +1 x381 +1 x89 +1 x518 +1 x328 +1 x841 +1 x621 +1 x842 +1 x843 +1 x330 +1 x844 +1 x57 +1 x153 +1 x845 +1 x846 +1 x48 +1 x847 +1 x70 +1 x848 +1 x849 +1 x850 +1 x467 +1 x851 +1 x852 +1 x853 +1 x854 +1 x855 +1 x856 +1 x857 +1 x858 +1 x447 +1 x83 +1 x859 +1 x860 +1 x861 +1 x82 +1 x862 +1 x863 +1 x74 +1 x864 +1 x632 +1 x865 +1 x866 +1 x867 +1 x5 +1 x868 +1 x869 +1 x870 +1 x871 +1 x872 +1 x361 +1 x873 +1 x604 +1 x874 +1 x875 +1 x876 +1 x594 +1 x877 +1 x183 +1 x289 +1 x495 +1 x138 +1 x194 +1 x143 +1 x878 +1 x879 +1 x85 +1 x36 +1 x880 +1 x881 +1 x177 +1 x882 +1 x883 +1 x884 +1 x885 +1 x886 +1 x887 +1 x888 +1 x889 +1 x370 +1 x219 +1 x890 +1 x891 +1 x892 +1 x893 +1 x894 +1 x895 +1 x24 +1 x896 +1 x897 +1 x898 +1 x899 +1 x900 +1 x901 +1 x902 +1 x180 +1 x903 +1 x904 +1 x349 +1 x905 +1 x906 +1 x221 +1 x10 +1 x907 +1 x908 +1 x193 +1 x909 +1 x910 +1 x911 +1 x912 +1 x913 +1 x474 +1 x914 +1 x915 +1 x244 +1 x916 +1 x917 +1 x176 +1 x918 +1 x919 +1 x920 +1 x921 +1 x75 +1 x922 +1 x923 +1 x924 +1 x925 +1 x926 +1 x927 +1 x928 +1 x929 +1 x930 +1 x931 +1 x932 +1 x343 +1 x933 +1 x327 +1 x934 +1 x935 +1 x936 +1 x937 +1 x90 +1 x938 +1 x939 +1 x940 +1 x941 +1 x643 +1 x942 +1 x943 +1 x147 +1 x944 +1 x945 +1 x946 +1 x947 +1 x948 +1 x949 +1 x950 +1 x165 +1 x951 +1 x952 +1 x953 +1 x954 +1 x955 +1 x956 +1 x249 +1 x957 +1 x401 +1 x958 +1 x959 +1 x132 +1 x304 +1 x960 +1 x961 +1 x962 +1 x963 +1 x964 +1 x371 +1 x965 +1 x966 +1 x967 +1 x968 +1 x969 +1 x970 +1 x971 +1 x972 +1 x973 +1 x974 +1 x470 +1 x975 +1 x976 +1 x590 +1 x977 +1 x978 +1 x473 +1 x523 +1 x579 +1 x979 +1 x97 +1 x61 +1 x980 +1 x981 +1 x982 +1 x478 +1 x983 +1 x984 +1 x985 +1 x986 +1 x987 +1 x988 +1 x155 +1 x989 +1 x59 +1 x990 +1 x991 +1 x992 +1 x993 +1 x345 +1 x201 +1 x994 +1 x995 +1 x481 +1 x996 +1 x215 +1 x151 +1 x482 +1 x407 +1 x484 +1 x483 +1 x997 +1 x998 +1 x485 +1 x488 +1 x999 +1 x1000 +1 x489 +1 x490 +1 x1001 +1 x1002 +1 x1003 +1 x1004 +1 x511 +1 x1005 +1 x1006 +1 x1007 +1 x1008 +1 x1009 +1 x1010 +1 x1011 +1 x1012 +1 x1013 +1 x1014 +1 x1015 +1 x1016 +1 x1017 +1 x1018 +1 x1019 +1 x1020 +1 x1021 +1 x136 +1 x1022 +1 x216 +1 x1023 +1 x1024 +1 x1025 +1 x1026 +1 x1027 +1 x384 +1 x325 +1 x1028 +1 x657 +1 x1029 +1 x1030 +1 x368 +1 x250 +1 x1031 +1 x520 +1 x1032 +1 x266 +1 x1033 +1 x1034 +1 x1035 +1 x1036 +1 x1037 +1 x466 +1 x149 +1 x1038 +1 x1039 +1 x1040 +1 x1041 +1 x258 +1 x1042 +1 x1043 +1 x1044 +1 x1045 +1 x1046 +1 x1047 +1 x1048 +1 x1049 +1 x152 +1 x1050 +1 x1051 +1 x305 +1 x1052 +1 x1053 +1 x1054 +1 x1055 +1 x1056 +1 x1057 +1 x1058 +1 x1059 +1 x553 +1 x1060 +1 x1061 +1 x224 +1 x1062 +1 x1063 +1 x1064 +1 x1065 +1 x1066 +1 x1067 +1 x1068 +1 x195 +1 x259 +1 x399 +1 x86 +1 x1069 +1 x1070 +1 x494 +1 x1071 +1 x84 +1 x1072 +1 x140 +1 x256 +1 x1073 +1 x1074 +1 x146 +1 x1075 +1 x1076 +1 x1077 +1 x1078 +1 x1079 +1 x1080 +1 x628 +1 x1081 +1 x1082 +1 x1083 +1 x562 +1 x1084 +1 x239 +1 x458 +1 x1085 +1 x1086 +1 x241 +1 x462 +1 x1087 +1 x1088 +1 x1089 +1 x78 +1 x1090 +1 x1091 +1 x1092 +1 x1093 +1 x1094 +1 x1095 +1 x1096 +1 x469 +1 x631 +1 x1097 +1 x12 +1 x1098 +1 x1099 +1 x81 +1 x1100 +1 x1101 +1 x1102 +1 x1103 +1 x1104 +1 x406 +1 x1105 +1 x1106 +1 x1107 +1 x169 +1 x1108 +1 x476 +1 x1109 +1 x1110 +1 x1111 +1 x1112 +1 x49 +1 x1113 +1 x150 +1 x1114 +1 x1115 +1 x1116 +1 x1117 +1 x1118 +1 x28 +1 x1119 +1 x1120 +1 x137 +1 x409 +1 x1121 +1 x1122 +1 x99 +1 x1123 +1 x145 +1 x1124 +1 x1125 +1 x1126 +1 x1127 +1 x1128 +1 x11 +1 x373 +1 x1129 +1 x308 +1 x358 +1 x1130 +1 x1131 +1 x1132 +1 x600 +1 x1133 +1 x424 +1 x1134 +1 x1135 +1 x1136 +1 x1137 +1 x561 +1 x1138 +1 x1139 +1 x603 +1 x1140 +1 x456 +1 x1141 +1 x1142 +1 x1143 +1 x1144 +1 x1145 +1 x1146 +1 x425 +1 x1147 +1 x115 +1 x1148 +1 x1149 +1 x1150 +1 x1151 +1 x1152 +1 x23 +1 x1153 +1 x76 +1 x1154 +1 x1155 +1 x300 +1 x1156 +1 x1157 +1 x1158 +1 x1159 +1 x1160 +1 x1161 +1 x1162 +1 x1163 +1 x1164 +1 x1165 +1 x575 +1 x1166 +1 x583 +1 x1167 +1 x1168 +1 x200 +1 x71 +1 x1169 +1 x1170 +1 x322 +1 x1171 +1 x1172 +1 x1173 +1 x397 +1 x480 +1 x1174 +1 x1175 +1 x1176 +1 x576 +1 x209 +1 x1177 +1 x403 +1 x1178 +1 x1179 +1 x416 +1 x1180 +1 x13 +1 x1181 +1 x1182 +1 x1183 +1 x1184 +1 x1185 +1 x1186 +1 x1187 +1 x1188 +1 x1189 +1 x310 +1 x1190 +1 x1191 +1 x1192 +1 x524 +1 x1193 +1 x1194 +1 x202 +1 x1195 +1 x102 +1 x1196 +1 x1197 +1 x452 +1 x1198 +1 x386 +1 x1199 +1 x1200 +1 x1201 +1 x1202 +1 x457 +1 x1203 +1 x79 +1 x1204 +1 x1205 +1 x1206 +1 x1207 +1 x1208 +1 x1209 +1 x1210 +1 x160 +1 x527 +1 x1211 +1 x1212 +1 x1213 +1 x1214 +1 x1215 +1 x463 +1 x1216 +1 x1217 +1 x1218 +1 x7 +1 x1219 +1 x1220 +1 x1221 +1 x642 +1 x1222 +1 x1223 +1 x1224 +1 x1225 +1 x1226 +1 x605 +1 x1227 +1 x301 +1 x1228 +1 x449 +1 x1229 +1 x353 +1 x396 +1 x1230 +1 x174 +1 x98 +1 x1231 +1 x1232 +1 x1233 +1 x1234 +1 x1235 +1 x479 +1 x598 +1 x1236 +1 x1237 +1 x63 +1 x1238 +1 x1239 +1 x1240 +1 x1241 +1 x1242 +1 x1243 +1 x1244 +1 x1245 +1 x1246 +1 x170 +1 x1247 +1 x1248 +1 x1249 +1 x317 +1 x226 +1 x1250 +1 x1251 +1 x1252 +1 x37 +1 x1253 +1 x1254 +1 x1255 +1 x1256 +1 x601 +1 x1257 +1 x142 +1 x446 +1 x1258 +1 x1259 +1 x1260 +1 x1261 +1 x1262 +1 x1263 +1 x182 +1 x1264 +1 x1265 +1 x1266 +1 x1267 +1 x1268 +1 x1269 +1 x139 +1 x1270 +1 x1271 +1 x133 +1 x1272 +1 x1273 +1 x1274 +1 x1275 +1 x1276 +1 x1277 +1 x1278 +1 x1279 +1 x1280 +1 x1281 +1 x1282 +1 x1283 +1 x1284 +1 x1285 +1 x32 +1 x1286 +1 x1287 +1 x1288 +1 x1289 +1 x275 +1 x1290 +1 x1291 +1 x1292 +1 x1293 +1 x1294 +1 x1295 +1 x1296 +1 x1297 +1 x131 +1 x1298 +1 x262 +1 x1299 +1 x1300 +1 x503 +1 x1301 +1 x1302 +1 x629 +1 x475 +1 x1303 +1 x1304 +1 x1305 +1 x1306 +1 x1307 +1 x1308 +1 x1309 +1 x1310 +1 x319 +1 x1311 +1 x1312 +1 x1313 +1 x96 +1 x1314 +1 x94 +1 x1315 +1 x1316 +1 x1317 +1 x1318 +1 x1319 +1 x1320 +1 x1321 +1 x1322 +1 x1323 +1 x431 +1 x1324 +1 x1325 +1 x1326 +1 x1327 +1 x218 +1 x1328 +1 x1329 +1 x1330 +1 x1331 +1 x1332 +1 x27 +1 x1333 +1 x1334 +1 x398 +1 x1335 +1 x321 +1 x1336 +1 x1337 +1 x1338 +1 x1339 +1 x316 +1 x1340 +1 x1341 +1 x1342 +1 x1343 +1 x1344 +1 x1345 +1 x1346 +1 x1347 +1 x459 +1 x135 +1 x1348 +1 x1349 +1 x1350 +1 x277 +1 x1351 +1 x1352 +1 x1353 +1 x1354 +1 x1355 +1 x1356 +1 x1357 +1 x196 +1 x1358 +1 x52 +1 x1359 +1 x1360 +1 x1361 +1 x92 +1 x1362 +1 x1363 +1 x1364 +1 x1365 +1 x1366 +1 x468 +1 x448 +1 x1367 +1 x619 +1 x471 +1 x318 +1 x1368 +1 x254 +1 x265 +1 x242 +1 x1369 +1 x20 +1 x1370 +1 x1371 +1 x1372 +1 x1373 +1 x1374 +1 x1375 +1 x1376 +1 x1377 +1 x1378 +1 x1379 +1 x1380 +1 x1381 +1 x1382 +1 x1383 +1 x299 +1 x45 +1 x1384 +1 x1385 +1 x1386 +1 x1387 +1 x491 +1 x25 +1 x493 +1 x1388 +1 x1389 +1 x1390 +1 x369 +1 x1391 +1 x1392 +1 x19 +1 x1393 +1 x1394 +1 x1395 +1 x589 +1 x1396 +1 x400 +1 x1397 +1 x323 +1 x1398 +1 x8 +1 x1399 +1 x1400 +1 x1401 +1 x1402 +1 x404 +1 x1403 +1 x1404 +1 x1405 +1 x1406 +1 x1407 +1 x1408 +1 x1409 +1 x1410 +1 x1411 +1 x6 +1 x1412 +1 x1413 +1 x144 +1 x1414 +1 x1415 +1 x1416 +1 x1417 +1 x1418 +1 x302 +1 x1419 +1 x1420 +1 x1421 +1 x1422 +1 x1423 +1 x1424 +1 x1425 +1 x1426 +1 x1427 +1 x1428 +1 x1429 +1 x243 +1 x1430 +1 x1431 +1 x1432 +1 x1433 +1 x1434 +1 x1435 +1 x1436 +1 x1437 +1 x113 +1 x1438 +1 x1439 +1 x1440 +1 x1441 +1 x199 +1 x1442 +1 x1443 +1 x1444 +1 x1445 +1 x1446 +1 x1447 +1 x1448 +1 x1449 +1 x1450 +1 x257 +1 x255 +1 x1451 +1 x1452 +1 x1453 +1 x1454 +1 x1455 +1 x1456 +1 x1457 +1 x320 +1 x1458 +1 x154 +1 x1459 +1 x1460 +1 x1461 +1 x1462 +1 x134 +1 x497 +1 x181 +1 x1463 +1 x148 +1 x54 +1 x1464 +1 x1465 +1 x1466 +1 x1467 +1 x1468 +1 x453 +1 x1469 +1 x1470 +1 x1471 +1 x1472 +1 x1473 +1 x1474 +1 x1475 +1 x1476 +1 x1477 +1 x522 +1 x1478 +1 x1479 +1 x1480 +1 x1481 +1 x1482 +1 x1483 +1 x1484 +1 x1485 +1 x335 +1 x1486 +1 x1487 +1 x1488 +1 x1489 +1 x240 +1 x1490 +1 x276 +1 x465 +1 x1491 +1 x1492 +1 x1493 +1 x1494 +1 x1495 +1 x1496 +1 x1497 +1 x1498 +1 x329 +1 x1499 +1 x93 +1 x130 +1 x261 +1 x630 +1 x1500 +1 x1501 +1 x1502 +1 x1503 +1 x31 +1 x1504 +1 x1505 +1 x1506 +1 x1507 +1 x1508 +1 x1509 +1 x141 +1 x1510 +1 x1511 +1 x1512 +1 x1513 +1 x1514 +1 x225 +1 x1515 +1 x1516 +1 x205 +1 x1517 +1 x1518 +1 x1519 +1 x1520 +1 x1521 +1 x496 +1 x1522 +1 x387 +1 x1523 +1 x1524 +1 x1525 +1 x1526 +1 x1527 +1 x1528 +1 x1529 +1 x1530 +1 x1531 +1 x455 +1 x1532 +1 x577 +1 x1533 +1 x1534 +1 x1535 +1 x1536 +1 x445 +1 x1537 +1 x1538 +1 x1539 +1 x1540 +1 x618 +1 x1541 +1 x1542 +1 x1543 +1 x1544 +1 x1545 +1 x1546 +1 x414 +1 x1547 +1 x1548 +1 x1549 +1 x1550 +1 x1551 +1 x515 +1 x405 +1 x1552 +1 x1553 +1 x1554 +1 x1555 +1 x1556 +1 x1557 +1 x1558 +1 x336 +1 x385 +1 x39 +1 x214 +1 x1559 +1 x1560 +1 x1561 +1 x1562 +1 x526 +1 x1563 +1 x1564 +1 x620 +1 x1565 +1 x1566 +1 x1567 +1 x1568 +1 x1569 +1 x1570 +1 x1571 +1 x1572 +1 x1573 +1 x504 +1 x1574 +1 x1575 +1 x1576 +1 x1577 +1 x1578 +1 x1579 +1 x1580 +1 x487 +1 x1581 +1 x1582 +1 x639 +1 x1583 +1 x1584 +1 x1585 +1 x1586 +1 x1587 +1 x1588 +1 x1589 +1 x1590 +1 x1591 +1 x1592 +1 x1593 +1 x1594 +1 x637 +1 x1595 +1 x1596 >= 0;
* org.eclipse.rcp.source.feature.group 3.4.0.v20080324a-989JERhEk-jWnd5IY8K5tjxB requires either com.ibm.icu.source 3.8.1.v20080530
-1 x2612 +1 x1830 >= 0;
@@ -20032,8 +19980,6 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
-1 x2612 +1 x338 >= 0;
* org.eclipse.rcp.source.feature.group 3.4.0.v20080324a-989JERhEk-jWnd5IY8K5tjxB requires either org.eclipse.ui.workbench.source 3.4.0.I20080606-1300
-1 x2612 +1 x1690 >= 0;
-* org.eclipse.rcp.source.feature.group 3.4.0.v20080324a-989JERhEk-jWnd5IY8K5tjxB requires either org.eclipse.update.configurator.source 3.2.200.v20080417
--1 x2612 +1 x1755 >= 0;
* org.eclipse.rcp.source.feature.group 3.4.0.v20080324a-989JERhEk-jWnd5IY8K5tjxB requires either org.eclipse.equinox.simpleconfigurator.source 1.0.0.v20080604
-1 x2612 +1 x1815 >= 0;
* org.eclipse.rcp.source.feature.group 3.4.0.v20080324a-989JERhEk-jWnd5IY8K5tjxB requires either org.eclipse.swt.win32.win32.x86.source 3.4.0.v3448f
@@ -22637,7 +22583,7 @@ explain: x1 x16 x17 x22 x21 x34 x35 x40 x42 x43 x44 x50 x51 x100 x101 x103 x104
-1 x276 +1 x316 >= 0;
* toolingwin32.win32.x86org.eclipse.equinox.common 3.4.0.v20080421-2006 requires either org.eclipse.equinox.common 3.4.0.v20080421-2006
-1 x2962 +1 x24 >= 0;
-* toolingwin32.win32.x86org.eclipse.equinox.common 3.4.0.v20080421-2006 requires either org.python.pydev.core 0.9.7 org.eclipse.m2m.qvt.oml.trace.edit 1.0.0.v20080611-1330 org.eclipse.emf.codegen.ecore 2.4.0.v200806091234 org.eclipse.uml2.common.edit 1.4.0.v200805131030 org.eclipse.core.runtime 3.4.0.v20080512 org.python.pydev.core 1.3.9 javax.xml.soap 1.2.0.v200806030421 org.eclipse.gmf.runtime.common.ui.action.ide 1.1.0.v20080425-1959 org.eclipse.emf.cdo.edit 1.0.0.v200806180411 org.eclipse.ecf.provider.msn 1.2.0.v20080623-0046 org.eclipse.equinox.frameworkadmin.equinox 1.0.0.v20080529-1225 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.1 org.eclipse.equinox.http.servletbridge 1.0.0.v20080427-0830 org.python.pydev 0.9.5 org.python.pydev.parser 1.2.3 org.eclipse.emf.example.installer 1.0.0.v200806091234 com.instantiations.assist.eclipse 5.5.0 org.eclipse.wst.common.environment 1.0.201.v200805140020 org.eclipse.zest.source 1.0.0.v20080115-53-8xB4CE899O274A org.eclipse.emf.ant 2.4.0.v200806091234 com.instantiations.eclipse.mail 5.5.1 org.python.pydev.parser 1.3.1 org.eclipse.birt.chart.engine 2.3.0.v20080606 org.eclipse.core.resources 3.4.0.v20080604-1400 org.eclipse.birt.report.engine.emitter.postscript 2.3.0.v20080610 org.python.pydev.jython 1.1.0 org.eclipse.ui.workbench.compatibility 3.2.0.I20080509-2000 com.nordea.cd.dev.plugin.builderruntime 1.0.0 org.eclipse.m2m.atl.adt.editor 2.0.0.v200806101117 org.eclipse.equinox.p2.director.app 1.0.0.v20080604 org.eclipse.mylyn.tasks.core 3.0.0.v20080619-1900 org.python.pydev.ast 1.0.4 org.eclipse.m2m.atl.compilers.atl2006 2.0.0.v200806101117 org.eclipse.datatools.enablement.sybase.asa.ui 1.0.1.v200805310538 org.eclipse.emf.mapping.ecore2xml.ui 2.4.0.v200806091234 org.eclipse.wst.dtd.ui 1.0.301.v200808072012 org.eclipse.birt.chart.engine.extension 2.3.0.v20080611 org.eclipse.jface.databinding 1.2.0.I20080515-2000a org.eclipse.birt.chart.reportitem.ui 2.3.0.v20080610 org.eclipse.datatools.enablement.hsqldb.ui 1.0.0.v200805152355 org.eclipse.mylyn.ide.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.security.ui 1.0.0.v20080603-1810 org.eclipse.wst.common.emfworkbench.integration 1.1.201.v200808071700 org.eclipse.gmf.validate 1.1.0.v20080603-1553 org.eclipse.emf.mapping.ecore2ecore.editor 2.4.0.v200806091234 org.eclipse.ecf.provider.irc 1.3.0.v20080623-0046 org.eclipse.emf.validation.doc 1.2.0.v200805130238 org.python.pydev.ast 1.2.8 org.eclipse.emf.teneo.doc 1.0.0.v200806111928 org.python.pydev.jython 1.3.12 org.eclipse.emf.ecoretools.source 0.8.0.v200806130600 org.eclipse.equinox.p2.updatesite 1.0.0.v20080529-1800 org.eclipse.ecf.presence.bot 1.2.0.v20080623-0046 com.swtdesigner.properties.java5 1.0.0 org.eclipse.platform.doc.isv 3.4.0.v20080613-1330 org.python.pydev.core 1.2.3 org.eclipse.datatools.connectivity.db.generic 1.0.0.v200805152355 org.eclipse.uml2.diagram.clazz 0.8.0.v200806112132 org.eclipse.birt.report.designer.ui.views 2.3.0.v20080606 org.eclipse.mylyn.monitor.core 3.0.2.v20080918-1100-e3x com.instantiations.eclipse.debug 5.3.2.200806270030 org.eclipse.gmf.runtime.common.ui.action 1.1.0.v20080425-1959 org.eclipse.equinox.useradmin 1.1.0.v20080508-1815 org.eclipse.mylyn.commons.ui 3.0.2.v20080918-1100-e3x org.eclipse.equinox.cm 1.0.0.v20080509-1800 org.eclipse.uml2.diagram.component 0.8.0.v200806112132 org.eclipse.swt.layout.grouplayout 1.1.0 org.python.pydev 1.2.4 javax.servlet 2.4.0.v200806031604 org.eclipse.uml2.examples.uml.ui 2.2.0.v200805131030 org.python.pydev.ast 1.3.10 org.eclipse.birt.report.designer.ui.ide 2.3.0.v20080606 org.python.pydev.parser 1.3.18 com.swtdesigner.layout.group 6.7.0.200806270151 org.eclipse.m2m.qvt.oml.runtime.source 1.0.0.v20080611-1330-5--AgI99m9cDD4DNN9 org.eclipse.mylyn.tasks.ui 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.3.13 org.eclipse.emf.teneo.jpox.eclipse 1.0.0.v200806111928 org.eclipse.equinox.transforms.xslt 1.0.0.v20080610 org.python.pydev.core 1.0.7 org.eclipse.datatools.enablement.ibm.db2.zseries.ui 1.0.0.v200805160737 org.eclipse.mylyn.resources.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.enablement.oda.ws 1.1.0.v200805261930 org.eclipse.equinox.frameworkadmin 1.0.0.v20080430-1750 org.eclipse.birt.chart.device.extension 2.3.0.v20080424 org.eclipse.net4j.jvm 1.0.0.v200806180305 org.eclipse.emf.cdo.migrator 1.0.0.v200806180411 org.python.pydev.jython 1.3.1 org.eclipse.m2m.qvt.oml.cst.parser 1.0.0.v20080611-1330 com.xored.composer.ui 1.3.4.200809042225 org.eclipse.datatools.enablement.sybase.ui 1.0.0.v200806041138 org.eclipse.ecf.remoteservice.ui 2.0.0.v20080623-0046 org.eclipse.net4j.db.mysql 1.0.0.v200806180305 org.eclipse.update.scheduler 3.2.100.v20080404 org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide 1.1.0.v20080425-1959 org.eclipse.wst.dtdeditor.doc.user 1.0.400.v200805150028 org.eclipse.wst.xmleditor.doc.user 1.0.401.v200808071323 org.eclipse.gmf.runtime.common.ui.services.dnd 1.1.0.v20080425-1959 org.eclipse.uml2.common 1.4.0.v200805131030 org.apache.jasper 5.5.17.v200806031609 org.python.pydev 1.0.8 org.eclipse.datatools.doc.user 1.6.0.20080606124249 org.objectweb.asm 3.1.0.v200803061910 org.eclipse.emf.cdo.doc 1.0.0.v200806180411 org.python.pydev.core 1.3.17 org.eclipse.core.resources.compatibility 3.4.0.v20080604-1400 com.instantiations.eclipse.startup 5.3.2.200806270030 org.eclipse.datatools.connectivity.apache.derby.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.graphdef.codegen 2.0.100.v20080528-1052 org.eclipse.emf.common 2.4.0.v200806091234 org.eclipse.wst.xml.ui.infopop 1.0.300.v200805140200 org.python.pydev.core 1.3.0 org.eclipse.equinox.p2.touchpoint.natives 1.0.0.v20080505-1850 org.eclipse.ant.core 3.2.0.v20080529 org.eclipse.ui.workbench 3.4.0.I20080606-1300 org.eclipse.ecf.provider.xmpp.ui 2.0.0.v20080623-0046 org.w3c.sac 1.3.0.v20070710 org.python.pydev.jython 1.2.3 org.eclipse.mylyn.context.ui 3.0.0.v20080619-1900 org.eclipse.ecf.doc 1.3.0.v20080623-0046 org.eclipse.ecf.provider.bittorrent.ui 0.2.0.v20080623-0046 com.xored.swt.composer 1.3.4.200809042225 org.python.pydev.parser 1.0.4 org.eclipse.help.webapp 3.3.100.v20080528 org.eclipse.uml2.diagram.deploy 0.8.0.v200806112132 org.eclipse.ecf.provider.irc.ui 1.3.0.v20080623-0046 org.python.pydev 1.3.18 org.eclipse.m2m.atl.source 2.0.0.v200806101117 org.eclipse.mylyn.tasks.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.identity 2.0.0.v20080611-1715 org.eclipse.ocl.ecore 1.2.0.v200805130238 org.eclipse.core.expressions 3.4.0.v20080603-2000 org.eclipse.core.runtime.compatibility.registry 3.2.200.v20080610 org.eclipse.tptp.platform.la.core 4.3.200.v200805231116 org.eclipse.m2m.atl.service.core 2.0.0.v200806101117 org.apache.commons.logging 1.0.4.v20080605-1930 org.eclipse.platform.doc.user 3.4.0.v20080612-1340 com.windowtester.runtime.junit4 3.5.0.200806270034 org.python.pydev.parser 1.2.8 org.eclipse.uml2.examples.source 2.2.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.providers 1.1.0.v20080503-1740 org.python.pydev.jython 1.3.20 org.python.pydev.jython 1.0.7 org.eclipse.m2m.qvt.oml.common 1.0.0.v20080611-1330 org.eclipse.wst.sse.ui 1.1.0.v200806041847 org.eclipse.core.resources.win32.x86 3.4.0.v20071204 org.eclipse.swt.widgets.baseline 1.1.0 com.xored.swt.composer.win32.win32.x86 1.3.4.200809042225 org.eclipse.datatools.enablement.mysql.ui 1.0.0.v200805152355 org.eclipse.m2m.atl.ocl.core 2.0.0.v200806101117 org.eclipse.emf.codegen.ecore.ui 2.4.0.v200806091234 org.eclipse.equinox.http.servlet 1.0.100.v20080427-0830 org.python.pydev.ast 1.3.2 org.python.pydev 1.3.6 org.eclipse.birt.report.viewer 2.3.0.v20080606 org.apache.batik.extension 1.6.0.v200805290154 org.eclipse.uml2.diagram.statemachine 0.8.0.v200806112132 org.python.pydev.parser 1.3.10 org.eclipse.equinox.p2.ui.admin.rcp 1.0.0.v20080604 org.eclipse.emf.compare.match 0.8.0.v200806180301 org.eclipse.datatools.enablement.oracle.ui 1.0.0.v200805240040 org.python.pydev 0.7.1 com.lowagie.itext 1.5.4.v20080228 org.eclipse.birt.report.designer.ui.preview.web 2.3.0.v200806102 org.eclipse.birt.report.designer.ui.samples.ide 2.3.0.v20080606 org.eclipse.xsd.ecore.converter 2.4.0.v200806091234 org.eclipse.jdt.compiler.tool 1.0.100.v_874 org.eclipse.equinox.registry 3.4.0.v20080516-0950 org.eclipse.wst.dtd.ui.infopop 1.0.300.v200805140200 org.python.pydev.ast 0.9.5 org.eclipse.ui.workbench.texteditor 3.4.0.v20080603-2000 org.eclipse.cvs 1.0.100.v20080603 org.eclipse.uml2.search.ui 0.7.0.v200806130939 org.eclipse.gmf.common 1.1.1.v20080610-1132 org.eclipse.uml2.uml.editor 2.2.0.v200805131030 org.eclipse.m2m.atl.engine 2.0.0.v200806101117 org.eclipse.net4j.http.common 1.0.0.v200806180305 org.eclipse.ecf.presence.ui 1.2.0.v20080623-0046 org.python.pydev.parser 1.2.2 org.eclipse.emf.cdo.tests.model3.edit 1.0.0.v200806180411 org.eclipse.emf.cdo.tests.model1 1.0.0.v200806180411 org.eclipse.m2m.atl.engine.vm 2.0.0.v200806101117 com.instantiations.eclipse.mail 5.5.0 org.eclipse.emf.ocl.source 1.1.100.v200805130238-108Y7w311916241349 com.windowtester.swt.runtime.legacy 3.5.1.200809042232 org.eclipse.uml2tools 0.8.0.v200806112132 org.eclipse.emf.search.genmodel.ui 0.7.0.v200806130939 org.eclipse.mylyn.jira.core 3.0.2.v20080918-1100-e3x org.eclipse.uml2.uml.ecore.importer 2.2.0.v200805131030 org.eclipse.emf.transaction.doc 1.2.0.v200805130238 org.eclipse.tptp.platform.logging.events 4.3.200.v200805310100 org.python.pydev.core 1.3.8 org.eclipse.xsd.ecore.importer 2.4.0.v200806091234 org.eclipse.emf.teneo.source 1.0.0.v200806111928-78--DUUEFDEz0MMNLVD org.eclipse.uml2 2.1.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.render 1.1.0.v20080603-1553 com.windowtester.swt.runtime.os.win32 3.5.0.200806270034 org.eclipse.rcp 3.4.0.v20080507 org.eclipse.xsd.mapping 2.4.0.v200806091234 org.eclipse.emf.workspace.doc 1.2.0.v200805130238 org.eclipse.pde.api.tools 1.0.0.v20080529-1150 org.eclipse.emf.mapping.ecore2xml 2.4.0.v200806091234 org.eclipse.swt.win32.win32.x86 3.4.0.v3448f org.apache.derby 10.1.2.1_v200803061811 org.eclipse.m2m.qvt.oml.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.python.pydev.parser 1.3.0 org.eclipse.ecf.protocol.msn 1.2.0.v20080623-0046 com.instantiations.eclipse.ui 5.3.2.200809042027 org.eclipse.jet.core 1.1.0.v20080415 org.eclipse.datatools.enablement.sybase.ase.models 1.0.1.v200805152355 com.nordea.cd.dev.plugin.builderruntime 1.0.1 com.instantiations.assist.eclipse.core 5.5.0 org.python.pydev.ast 1.0.5 org.eclipse.ecf.filetransfer 2.0.0.v20080611-1715 org.python.pydev.parser 0.9.5 org.python.pydev.core 1.2.2 org.eclipse.emf.transaction.ui 1.2.0.v200805130238 org.eclipse.gmf.runtime.gef.ui 1.1.0.v20080503-1740 org.eclipse.wst.xml.core 1.1.301.v200808072008 org.eclipse.uml2.diagram.clazz.search 0.7.0.v200806130939 org.sat4j.core 2.0.0.v20080602 org.eclipse.datatools.connectivity.ui 1.1.0.v200806040132 org.eclipse.birt.report.designer.ui.editors 2.3.0.v20080610a org.eclipse.equinox.p2.reconciler.dropins 1.0.0.v20080611 org.eclipse.wst.common.project.facet.core 1.3.1.v200807031821 org.python.pydev.jython 1.3.11 org.eclipse.datatools.enablement.postgresql 1.0.1.v200805152355 org.eclipse.ltk.ui.refactoring 3.4.0.v20080605-1800 org.eclipse.datatools.enablement.sybase.ase 1.0.1.v200806040735 org.python.pydev.ast 1.2.9 org.eclipse.datatools.connectivity.oda 3.1.2.v200805152355 org.eclipse.wst.common.emf 1.1.201.v200808071700 org.apache.batik.dom.svg 1.6.0.v200805290154 org.eclipse.birt.chart 2.3.0.v20080304 org.python.pydev.jython 1.2.9 org.python.pydev.ast 1.3.11 org.eclipse.datatools.enablement.mysql.dbdefinition 1.0.1.v200805170742 org.python.pydev.parser 1.3.19 org.python.pydev.core 1.0.6 org.eclipse.uml2.diagram 0.8.0.v200806112132 org.eclipse.jdt.junit4.runtime 1.0.200.v20080603-2000 org.python.pydev.ast 1.3.12 org.eclipse.swt 3.4.0.v3448f org.eclipse.emf.ecoretools.diagram.search 0.7.0.v200806130939 org.eclipse.pde.ui.templates 3.4.0.v20080514-1500 com.instantiations.packager.ui 2.5.1 org.eclipse.emf.cdo.server.db 1.0.0.v200806180411 org.eclipse.datatools.enablement.sybase.asa 1.0.1.v200805310538 org.eclipse.emf.compare 0.8.0.v200806180301 org.eclipse.datatools.enablement.oda.ws.ui 1.1.0.v200805261930 org.eclipse.jdt.launching 3.4.0.v20080529-1300 org.eclipse.mylyn.tasks.ui 3.0.0.v20080619-1900 org.apache.ws.jaxme 0.5.1.v20080530-1550 org.eclipse.mylyn.bugzilla.ui 3.0.0.v20080619-1900 org.apache.commons.el 1.0.0.v200806031608 org.python.pydev 1.2.3 org.w3c.dom.smil 1.0.0.v200806040011 org.eclipse.wst.validation.infopop 1.0.300.v200806041506 org.python.pydev 1.0.7 org.eclipse.net4j.source 1.0.0.v200806180305 org.eclipse.m2m.qvt.oml.ocl 1.0.0.v20080611-1330 org.eclipse.uml2.uml.edit 2.2.0.v200805131030 org.eclipse.emf.search.ui 0.7.0.v200806130939 org.python.pydev.core 1.3.16 org.eclipse.emf.validation.ui 1.2.0.v200805130238 org.eclipse.datatools.enablement.oda.xml 1.1.0.v200805270900 org.eclipse.ltk.core.refactoring 3.4.0.v20080603-2000 org.python.pydev.jython 1.3.2 com.windowtester.swt.codegen 3.5.0.200806270034 org.eclipse.datatools.sqltools.ddlgen.ui 1.0.0.v200805152355 org.apache.xerces 2.9.0.v200805270400 org.eclipse.birt.report.engine.dataextraction 2.3.0.v20080611 org.eclipse.equinox.jmx.vm 1.0.0.v20070515 org.eclipse.birt.report.data.oda.jdbc.ui 2.3.0.v20080606 org.eclipse.equinox.ds 1.0.0.v20080427-0830 org.eclipse.mylyn.bugzilla.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.http.jetty 2.0.0.v20080425 org.eclipse.mylyn.team.ui 3.0.2.v20080918-1100-e3x org.python.pydev.jython 1.2.4 org.eclipse.birt.chart.device.svg 2.3.0.v20080526 org.python.pydev.parser 1.0.5 org.eclipse.ui.presentations.r21 3.2.100.I20080512-2000 org.eclipse.mylyn 3.0.0.v20080619-1900 org.eclipse.m2m.qvt.oml.doc 1.0.0.v20080611-1330 org.eclipse.team.svn.nl1.sources 0.7.1.I20080612-1500 org.eclipse.mylyn.resources.ui 3.0.0.v20080619-1900 org.eclipse.datatools.enablement.ibm.db2.luw 1.0.0.v200805152355 org.python.pydev.core 1.3.1 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.1 org.eclipse.ecf.provider.filetransfer 2.0.0.v20080611-1715 org.eclipse.emf.cdo.tests.mango.edit 1.0.0.v200806180411 org.python.pydev.parser 1.2.9 org.eclipse.m2m.qvt.oml.emf.util 1.0.0.v20080611-1330 org.eclipse.team.cvs.ssh 3.2.100.I20080604 org.python.pydev.jython 1.3.19 org.python.pydev.jython 1.0.8 org.python.pydev.ast 1.2.1 org.eclipse.m2m.qvt.oml.project 1.0.0.v20080611-1330 com.instantiations.assist.eclipse.core.ui 5.5.1 org.eclipse.datatools.enablement.ibm.db2.zseries.dbdefinition 1.0.0.v200805152355 org.eclipse.datatools.enablement.ibm.db2.iseries 1.0.0.v200805152355 com.swtdesigner.fragment.jdt.core 6.7.1.200809050053 org.eclipse.equinox.device 1.0.1.v20080303 org.eclipse.equinox.http.jetty 1.1.0.v20080425 org.eclipse.emf.cdo.tests.model3 1.0.0.v200806180411 org.eclipse.emf.teneo.hibernate.mapper 1.0.0.v200806111928 org.eclipse.compare 3.4.0.I20080604 org.polarion.eclipse.team.svn.connector.javahl 2.0.1.I20080612-1500 org.eclipse.gmf.runtime.diagram.ui.geoshapes 1.1.0.v20080503-1740 org.eclipse.emf.mint.ui 0.7.0.v200806172223 org.eclipse.ui.win32 3.2.100.v20080408-0800 org.eclipse.jet.source 0.9.0.v20080516 org.python.pydev 1.3.17 com.windowtester.runtime.junit4 3.5.1.200809042232 org.eclipse.ecf.examples.remoteservices.server 1.0.100.v20080623-0046 org.eclipse.text 3.4.0.v20080605-1800 org.eclipse.uml2.diagram.common 0.8.0.v200806112132 org.eclipse.datatools.connectivity.sqm.core.ui 1.1.0.v200806070326 org.python.pydev.core 0.9.7.99 org.eclipse.net4j.jms 1.0.0.v200806180305 org.junit4 4.3.1 org.eclipse.epp.usagedata.recording 1.0.0.R200806162215 org.eclipse.buckminster.remote 1.0.0.r09326 org.eclipse.gmf.tooling 2.1.0.v20080425-1959 org.eclipse.emf.cdo.tests.model2 1.0.0.v200806180411 org.eclipse.emf.ecore.sdo.editor 2.4.0.v200806091234 com.instantiations.swt.graph 5.5.0 org.eclipse.uml2.search 0.7.0.v200806130939 org.python.pydev 1.3.5 org.python.pydev.ast 1.3.3 org.eclipse.update.configurator 3.2.200.v20080417 org.eclipse.datatools.enablement.msft.sqlserver 1.0.1.v200805152355 org.python.pydev.parser 1.3.11 org.eclipse.datatools.enablement.sap.maxdb.dbdefinition 1.0.0.v200805152355 com.windowtester.swing.recorder 3.5.0.200806270034 org.eclipse.gmf.runtime.common.ui.printing.win32 1.1.0.v20080612-1355 org.python.pydev.ast 1.3.20 org.eclipse.wst.common.snippets 1.1.200.v200805140415 org.eclipse.mylyn.commons.core 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.tasks.core 3.0.2.v20080918-1100-e3x org.eclipse.jdt.doc.user 3.4.0.v20080612-1340 org.eclipse.birt.chart.ui 2.3.0.v20080522 org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb 2.3.0.v20080606 org.eclipse.uml2.diagram.examples.clazz 0.8.0.v200806112132 org.eclipse.ecf.provider.msn.ui 1.3.0.v20080623-0046 org.python.pydev.parser 1.3.3 org.eclipse.ui.ide.application 1.0.0.I20080603-2000 org.python.pydev.ast 1.0.6 org.eclipse.equinox.jsp.jasper.registry 1.0.0.v20080427-0830 org.eclipse.equinox.p2.engine 1.0.0.v20080522-1735 com.nordea.cd.dev.plugin.builderruntime 1.0.2 com.instantiations.assist.eclipse.core 5.5.1 org.eclipse.m2m.qvt.oml 1.0.0.v20080611-1330 org.eclipse.mylyn.commons.ui 3.0.1.v20080721-2100-e3x org.eclipse.update.core.win32 3.2.100.v20080107 org.eclipse.datatools.sqltools.db.derby 1.0.0.v200805152355 com.instantiations.assist.eclipse.admin 5.5.0 org.eclipse.ecf.telephony.call 1.2.0.v20080623-0046 org.eclipse.mylyn.monitor.core 3.0.0.v20080619-1900 org.eclipse.epp.usagedata.ui 1.0.0.R200806162215 org.eclipse.ui.ide 3.4.0.I20080606-1300 org.eclipse.hyades.lta.sdb 4.5.0.v200806051823 org.eclipse.birt.report.model.adapter.oda 2.3.0.v20080523 org.eclipse.emf.compare.doc 0.8.0.v200806180301 org.eclipse.equinox.servletbridge 1.0.100.v20080427-0830 com.instantiations.common.help 5.3.2.200809042027 org.eclipse.jdt.core 3.4.0.v_874 org.eclipse.equinox.p2.director 1.0.0.v20080604 org.eclipse.gmf.runtime.emf.ui.properties 1.1.0.v20080425-1959 org.eclipse.emf.exporter 2.4.0.v200806091234 org.python.pydev.core 1.3.7 org.eclipse.uml2.diagram.def 0.8.0.v200806112132 org.python.pydev.parser 1.2.1 org.eclipse.wst.command.env.ui 1.1.0.v200805140415 org.eclipse.wst.common.modulecore 1.1.200.v200806091800 org.python.pydev 0.9.7 org.eclipse.gmf.graphdef.edit 2.0.100.v20080610-1132 org.eclipse.birt.report.designer.ui.cubebuilder 2.3.0.v20080606 org.eclipse.m2m.atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.actions 1.1.0.v20080603-1553 com.instantiations.common.core 5.3.2.200806270030 org.eclipse.datatools.enablement.ibm.informix 1.0.0.v200805152355 org.eclipse.net4j.tcp 1.0.0.v200806180305 org.eclipse.wst.common.environment 1.0.202.v200807161459 com.instantiations.common.core 5.3.2.200809042027 org.eclipse.birt.report.data.oda.xml 2.3.0.v20080606 org.eclipse.pde.api.tools.ui 1.0.0.v20080603 org.eclipse.debug.ui 3.4.0.v20080529-1300 org.python.pydev 1.2.2 org.eclipse.team.svn.ui.nl1 0.7.1.I20080612-1500 org.apache.batik.transcoder 1.6.0.v200805290154 org.eclipse.emf.ecore.sdo.edit 2.4.0.v200806091234 org.python.pydev.parser 1.3.16 org.eclipse.wst.command.env.ui 1.1.1.v200807162242 org.eclipse.uml2.diagram.codegen.edit 0.8.0.v200806112132 org.eclipse.datatools.connectivity.db.generic.ui 1.0.1.v200805152355 org.eclipse.mylyn.resources.ui 3.0.2.v20080918-1100-e3x org.python.pydev.ast 1.3.8 org.python.pydev 1.3.0 org.eclipse.net4j.db 1.0.0.v200806180305 org.python.pydev.ast 1.3.15 org.eclipse.uml2.codegen.ecore 1.4.0.v200805201126 org.eclipse.gmf.sdk 1.0.0.v20080425-1959 org.eclipse.equinox.p2.core 1.0.0.v20080530-1237 org.python.pydev.jython 1.3.10 org.eclipse.emf.cdo 1.0.0.v200806180411 org.eclipse.emf.search.genmodel 0.7.0.v200806130939 org.eclipse.ui.navigator 3.3.100.I20080606-1300 org.eclipse.team.svn.mylyn 0.7.1.I20080612-1500 org.python.pydev.core 1.2.5 org.eclipse.tptp.platform.lta.la.core 4.5.0.v200805132041 org.eclipse.wst.sse.core 1.1.301.v200808072008 org.eclipse.tptp.platform.lta.log.views 4.5.0.v200806051823 org.eclipse.mylyn.java.ui 3.0.2.v20080918-1100-e3x org.eclipse.emf.search.codegen 0.7.0.v200806130939 com.instantiations.common.ui 5.3.2.200806270030 org.eclipse.ecf 2.0.0.v20080611-1715 org.eclipse.equinox.p2.ui.sdk 1.0.0.v20080605-1731 org.apache.commons.discovery 0.2.0.v200806030120 org.eclipse.datatools.help 1.5.0.v200805152355 org.python.pydev.parser 0.9.7.99 org.w3c.css.sac 1.3.0.v200805290154 org.eclipse.jet.examples 0.9.0.v20080211 org.eclipse.mylyn.bugzilla.ide 3.0.2.v20080918-1100-e3x org.eclipse.pde.junit.runtime 3.4.0.v20080529-1800 org.eclipse.emf.commonj.sdo 2.4.0.v200806091234 org.python.pydev.jython 1.2.1 com.instantiations.tools 5.3.2.200806270030 com.windowtester.runtime 3.5.1.200809042232 org.eclipse.wst.validation 1.2.0.v200806051402 org.eclipse.ecf.docshare 2.0.0.v20080623-0046 com.instantiations.eclipse.model.jsp 5.5.1 org.eclipse.emf.teneo.hibernate.eclipse 1.0.0.v200806111928 com.jcraft.jsch 0.1.37.v200803061811 org.python.pydev.parser 1.0.6 org.eclipse.emf.converter 2.4.0.v200806091234 org.eclipse.equinox.common 3.4.0.v20080421-2006 org.eclipse.buckminster.ui 1.0.0.r09319 org.eclipse.datatools.sqltools.tablewizard 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.0 org.eclipse.uml2.source 2.2.0.v200805201126 org.eclipse.team.cvs.ui 3.3.100.I20080604 org.python.pydev.jython 1.3.3 org.eclipse.emf.search.ocl 0.7.0.v200806130939 org.eclipse.datatools.enablement.sybase.asa.models 1.0.0.v200805152355 org.eclipse.sdk 3.4.0.v200806172000 org.eclipse.xsd.ecore.exporter 2.4.0.v200806091234 org.apache.commons.codec 1.3.0.v20080530-1600 org.eclipse.equinox.p2.exemplarysetup 1.0.0.v20080427-2136 org.eclipse.equinox.io 1.0.0.v20080218 org.eclipse.wst.common.project.facet.core 1.3.0.v200805140020 org.eclipse.wst.common.ui 1.1.301.v200805140415 org.eclipse.emf.databinding.edit 1.0.0.v200806091234 org.mortbay.jetty.server 6.1.7.v200806031612 org.eclipse.wst.dtd.core 1.1.200.v200805140200 org.python.pydev 1.0.6 org.eclipse.uml2.diagram.activity 0.8.0.v200806112132 org.eclipse.emf.importer.rose 2.4.0.v200806091234 org.eclipse.core.net.win32.x86 1.0.0.I20080521 javax.activation 1.1.0.v200804101140 org.python.pydev.core 1.3.15 org.python.pydev.parser 1.3.8 com.instantiations.assist.eclipse.coverage.ui 5.5.1.200809042337 org.eclipse.emf.ecoretools.filters 0.8.0.v200806130600 org.python.pydev.ast 1.3.0 org.eclipse.birt.report.data.oda.xml.ui 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase 1.0.1.v200805310538 org.python.pydev 1.3.8 org.eclipse.equinox.ip 1.0.0.v20080218 org.eclipse.datatools.connectivity.console.profile 1.0.0.v200805231345 org.eclipse.ecf.sharedobject 1.3.0.v20080623-0046 org.eclipse.debug.core 3.4.0.v20080612 org.eclipse.wst.xmleditor.doc.user 1.0.400.v200805211530 org.eclipse.datatools.enablement.sap.maxdb 1.0.0.v200805152355 org.python.pydev.ast 0.9.7 com.windowtester.swt.runtime.legacy 3.5.0.200806270034 org.eclipse.equinox.simpleconfigurator.manipulator 1.0.0.v20080427-2136 org.eclipse.equinox.p2.touchpoint.eclipse 1.0.0.v20080529-1225 com.instantiations.swt.graph 5.5.1 org.eclipse.gmf.doc 1.2.0.v20080516-1143 org.python.pydev 1.3.20 com.windowtester.swing.runtime 3.5.1.200809042232 org.eclipse.datatools.enablement.ibm.db2.iseries.ui 1.0.0.v200805160737 org.eclipse.datatools.connectivity.oda.profile 3.0.6.v200805152355 org.eclipse.mylyn.pde.ui 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.commons.ui 3.0.0.v20080619-1900 org.eclipse.emf.workspace.source 1.2.0.v200805130238-23-8s733I3C59379I org.eclipse.core.boot 3.1.100.v20080218 org.python.pydev.ast 1.2.2 org.eclipse.birt.doc 2.3.0.v20080617a com.instantiations.assist.eclipse.core.ui 5.5.0 org.python.pydev.jython 1.3.18 org.python.pydev.jython 1.0.5 org.eclipse.emf.validation 1.2.0.v200805170232 org.eclipse.equinox.jmx.client.rmi 1.0.0 org.eclipse.emf.mapping.ecore 2.4.0.v200806091234 com.instantiations.assist.eclipse.coverage 5.5.1.200809042337 com.instantiations.helpeditor.ui 1.3.4.200806270212 org.eclipse.emf.edit.ui 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editor.script 2.3.0.v200806102 org.eclipse.gmf.ecore.editor 2.0.100.v20080610-1132 com.windowtester.swt.recorder 3.5.1.200809042232 org.eclipse.uml2.diagram.source 0.8.0.v200806112132 org.eclipse.equinox.util 1.0.0.v20080414 org.eclipse.ecf.examples.source 2.0.0.v20080623-0046 org.eclipse.emf.mapping.xsd2ecore.editor 2.4.0.v200806091234 org.eclipse.pde.p2.ui 1.0.0.v20080604-2000 org.eclipse.birt.resources 2.3.0.v20080313 org.eclipse.emf.query.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.emf.ecore.change.edit 2.4.0.v200806091234 org.eclipse.datatools.sqltools.editor.core 1.0.0.v200805152355 org.polarion.eclipse.team.svn.connector.svnkit 2.0.1.I20080612-1500 org.eclipse.buckminster.download 1.1.0.r09319 com.swtdesigner 6.7.0.200806270151 org.python.pydev.parser 1.3.2 org.eclipse.jdt.compiler.apt 1.0.100.v20080513-1235 org.python.pydev.ast 1.0.7 com.windowtester.swt.gef.codegen 3.5.0.200806270034 org.eclipse.emf.ecore 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editors.schematic 2.3.0.v200806102 org.eclipse.pde.build 3.4.0.v20080604 com.instantiations.assist.eclipse 5.5.1 org.eclipse.birt.report.designer.ui.editor.xml.wtp 2.3.0.v200806102 org.eclipse.emf.cdo.tests.model1.edit 1.0.0.v200806180411 org.python.pydev 0.9.8 javax.xml 1.3.4.v200806030440 org.python.pydev 0.4.2 org.polarion.eclipse.team.svn.connector.javahl.win32 2.0.1.I20080612-1500 org.apache.ws.commons.util 1.0.0.v20080530-1550 org.apache.batik.bridge 1.6.0.v200805290154 org.eclipse.emf.search 0.7.0.v200806130939 org.eclipse.datatools.sqltools.parsers.sql.xml.query 1.0.0.v200805152355 org.eclipse.team.core 3.4.0.I20080605 org.eclipse.tptp.platform.execution 4.4.100.v200806050100 org.eclipse.uml2.diagram.parser 0.8.0.v200806112132 org.eclipse.birt.report.item.crosstab.core 2.3.0.v20080606 org.python.pydev.core 0.9.8 org.eclipse.uml2.search.common.ui 0.7.0.v200806130939 org.eclipse.mylyn.ide.ui 3.0.0.v20080619-1900 org.eclipse.xsd.cheatsheets 2.3.0.v200806091234 org.eclipse.wst.xsd.core 1.1.300.v200805282012 org.eclipse.net4j.http 1.0.0.v200806180305 org.python.pydev.core 1.3.6 org.eclipse.ui.externaltools 3.2.0.v20080514-1542 org.eclipse.birt.report.engine.emitter.prototype.excel 2.3.0.v20080606 org.python.pydev.parser 1.3.17 com.instantiations.eclipse.util 5.3.2.200806270030 org.eclipse.ui.editors 3.4.0.v20080603-2000 org.eclipse.buckminster.slf4j 1.0.0 org.python.pydev.ast 1.3.9 org.eclipse.gef.source 3.4.0.v20080115-677-8082A5696H274A org.python.pydev.core 1.0.8 org.python.pydev.ast 1.3.14 org.eclipse.team.ui 3.4.0.I20080604 org.eclipse.emf.query.ocl.source 1.2.0.v200805130238-11-7w311916241349 com.windowtester.swt.runtime 3.5.0.200806270034 org.eclipse.osgi.jmx 1.0.0.v20080610-1530 org.eclipse.net4j.examples.source 1.0.0.v200806180305 org.eclipse.tptp.monitoring.lta.symptom.doc.user 4.5.0.v200805132041 org.eclipse.equinox.p2.updatechecker 1.0.0.v20080427-2136 org.eclipse.ui.views 3.3.0.I20080509-2000 org.eclipse.emf.search.ocl.ui 0.7.0.v200806130939 javax.mail 1.4.0.v200804091730 ch.ethz.iks.slp 1.0.0.RC4_v200806091030 org.eclipse.core.resources.jmx 1.0.0.v20070510 javax.wsdl 1.4.0.v200806030407 org.eclipse.wst.xml.ui 1.0.401.v200807240448 org.python.pydev 1.2.1 org.eclipse.birt.chart.ui.extension 2.3.0.v20080610 org.python.pydev.core 0.9.8.3 org.python.pydev.parser 0.9.7 org.eclipse.jem.util 2.0.100.v200805140020 org.eclipse.tptp.monitoring.lta.la.core 4.5.0.v200805270100 org.python.pydev.core 0.9.8.2 org.eclipse.jdt.junit.runtime 3.3.0.v20080603-2000 org.python.pydev.core 1.2.4 org.python.pydev.core 0.9.8.1 org.eclipse.ecf.discovery 2.0.0.v20080623-0046 org.apache.xml.serializer 2.7.1.v200806030322 org.python.pydev.core 0.9.8.7 org.python.pydev.core 0.9.8.6 org.eclipse.gmf.runtime.draw2d.ui.render.awt 1.1.0.v20080603-1553 com.windowtester.eclipse.help 3.5.1.200809042232 org.python.pydev.core 0.9.8.5 org.python.pydev.core 0.9.8.4 org.python.pydev 0.9.8.7 org.eclipse.birt.report.engine.emitter.ppt 2.3.0.v20080606 org.apache.commons.httpclient 3.1.0.v20080605-1935 com.windowtester.runtime.legacy 3.5.0.200806270034 org.eclipse.datatools.enablement.oda.xml.ui 1.1.0.v200805270900 org.python.pydev 0.9.8.3 org.eclipse.mylyn.compatibility 3.0.2.v20080918-1100-e3x org.python.pydev 0.9.8.4 org.python.pydev 0.9.8.5 org.eclipse.wst.common.project.facet.ui 1.3.0.v200805281731 org.eclipse.gmf.tooldef 2.0.0.v20080417-1610 org.python.pydev 0.9.8.6 org.eclipse.core.commands 3.4.0.I20080509-2000 org.python.pydev.jython 1.3.9 org.eclipse.datatools.modelbase.sql.edit 1.0.0.v200805152355 org.python.pydev 0.9.8.2 org.python.pydev 0.9.8.1 org.eclipse.emf.cdo.server.hibernate.libraries 1.0.0.v200806180411 org.eclipse.equinox.p2.ui.admin 1.0.0.v20080522-1735 org.eclipse.wst.common.core 1.1.201.v200806010600 org.eclipse.emf.compare.diff.edit 0.8.0.v200806180301 com.swtdesigner.layout.group.designer 6.7.0.200806270151 org.eclipse.ui.views.properties.tabbed 3.4.0.I20080527-2000 org.python.pydev.jython 1.2.2 org.eclipse.wst.common.emf 1.1.200.v200805140020 com.instantiations.packager.refactoring 2.5.1 com.instantiations.assist.eclipse.fragment.jdt 5.5.1 org.eclipse.datatools.connectivity.dbdefinition.genericJDBC 1.0.0.v200805152355 org.python.pydev.parser 1.0.7 org.eclipse.datatools.sqltools.data.ui 1.1.0.v200805310400 org.eclipse.buckminster.core 1.1.0.r09336 org.eclipse.mylyn.tasks.core 3.0.1.v20080721-2100-e3x org.eclipse.birt.report.designer.ui.samplesview 2.3.0.v20080606 org.eclipse.equinox.launcher 1.0.100.v20080509-1800 org.eclipse.birt.report.item.crosstab.ui 2.3.0.v20080606 org.eclipse.m2m.atl.adt.perspective 2.0.0.v200806101117 javax.servlet.jsp 2.0.0.v200806031607 com.swtdesigner 6.7.1.200809050053 org.eclipse.jet.ui 0.9.0.v20080527 org.eclipse.m2m.qvt.oml.common.ui 1.0.0.v20080611-1330 com.swtdesigner.layout.group 6.7.1.200809050053 org.eclipse.gmf.runtime.common.ui.services.action 1.1.0.v20080507-2230 org.eclipse.emf.search.ecore.ui 0.7.0.v200806130939 org.python.pydev 1.0.5 org.eclipse.emf.workspace.ui 1.2.0.v200805130238 com.instantiations.helpeditor.core.toc 1.3.4.200809042225 org.slf4j.extendable 1.4.3 org.python.pydev.core 1.3.14 org.eclipse.hyades.logging.core 4.3.200.v200804110100 org.eclipse.datatools.enablement.postgresql.ui 1.0.0.v200806060334 org.eclipse.gmf.graphdef 2.0.100.v20080528-1052 org.eclipse.mylyn.help.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.protocol.bittorrent 0.3.0 org.eclipse.birt.report.engine 2.3.0.v20080616 org.eclipse.datatools.connectivity.ui.dse 1.1.0.v200805152355 org.eclipse.mylyn.bugzilla.core 3.0.0.v20080619-1900 org.python.pydev.jython 1.3.4 org.python.pydev 0.9.0 org.eclipse.equinox.preferences.jmx 1.0.0.v20070510 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.1 org.eclipse.datatools.enablement.postgresql.dbdefinition 1.0.0.v200805152355 org.eclipse.m2m.qvt.oml.common.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.eclipse.tptp.monitoring.lta.logui 4.5.0.v200805141427 org.eclipse.birt.report.debug.ui 2.3.0.v200806102 org.eclipse.gmf.runtime.emf.ui 1.1.0.v20080516-1748 org.eclipse.ui.cheatsheets 3.3.100.v20080508 org.python.pydev 1.2.9 org.eclipse.birt.report.engine.emitter.wpml 2.3.0.v20080606 org.eclipse.help.appserver 3.1.300.v20080507 org.python.pydev.parser 1.3.9 com.xored.composer.ui 1.3.4.200806270212 org.eclipse.datatools.sqltools.tabledataeditor 1.0.0.v200805240400 org.eclipse.gmf.runtime.emf.type.core 1.1.0.v20080425-1959 org.python.pydev 1.3.7 com.ibm.icu.base 3.8.1.v20080530 org.python.pydev.ast 1.3.1 org.apache.batik.pdf 1.6.0.v200806031500 org.eclipse.emf.mapping.ui 2.4.0.v200806091234 org.eclipse.net4j.db.derby 1.0.0.v200806180305 org.eclipse.net4j.http.server 1.0.0.v200806180305 org.python.pydev.jython 1.3.17 org.python.pydev.jython 1.0.6 org.python.pydev.ast 1.2.3 org.eclipse.team.svn.sources 0.7.1.I20080612-1500 org.eclipse.uml2.diagram.usecase 0.8.0.v200806112132 org.eclipse.wst.sse.core 1.1.300.v200805221633 org.eclipse.birt.report.designer.ui 2.3.0.v20080606 org.eclipse.jdt.apt.ui 3.3.100.v20080407-1345 com.instantiations.eclipse.debug 5.3.2.200809042027 org.eclipse.gmf.codegen.ui 1.1.0.v20080512-1200 com.instantiations.designer.databinding 6.7.1.200809050053 org.python.pydev.core 1.0.1 com.windowtester.swt.runtime.gef 3.5.0.200806270034 com.instantiations.common.ui 5.3.2.200809042027 org.python.pydev 1.3.19 org.eclipse.ui.forms 3.3.100.v20080611 org.eclipse.birt.data 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase.ase.ui 1.0.1.v200805310538 org.polarion.eclipse.team.svn.connector 2.0.1.I20080612-1500 org.eclipse.emf.common.ui 2.4.0.v200806091234 org.eclipse.datatools.enablement.ibm.informix.dbdefinition 1.0.0.v200805152355 org.eclipse.wst.xsdeditor.doc.user 1.0.400.v200805150028 org.eclipse.emf.mint.doc 0.7.0.v200806172223 org.eclipse.buckminster.generic 1.0.0.r09319 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.1 org.eclipse.emf.validation.examples 1.2.0.v200805280204 org.eclipse.team.svn.core 0.7.1.I20080612-1500 org.python.pydev.ast 1.2.4 org.eclipse.emf.cdo.server.hibernate 1.0.0.v200806180411 org.python.pydev.jython 1.3.8 org.eclipse.gmf.xpand 1.1.0.v20080528-1052 org.eclipse.datatools.sqltools.data.core 1.0.0.v200805152355 org.eclipse.emf.ecoretools 0.8.0.v200806130600 org.python.pydev.core 1.3.18 org.eclipse.gmf.runtime.common.core 1.1.0.v20080425-1959 org.eclipse.emf 2.4.0.v200806091234 org.eclipse.emf.ecoretools.properties 0.8.0.v200806130600 org.python.pydev.core 1.2.7 org.python.pydev.parser 0.9.8 org.eclipse.datatools.enablement.ibm.db2.luw.ui 1.0.0.v200805160737 org.eclipse.mylyn.team.ui 3.0.0.v20080619-1900 org.eclipse.help.base 3.3.100.v20080617 org.eclipse.m2m.atl.doc 2.0.0.v200806101117 org.eclipse.net4j.examples 1.0.0.v200806180305 org.eclipse.birt.data.aggregation 2.3.0.v20080606 org.eclipse.gmf.examples 1.0.100.v20080425-1959 org.eclipse.emf.search.common 0.7.0.v200806130939 org.python.pydev.ast 1.3.17 org.eclipse.ecf.provider.filetransfer.ssl 1.0.0.v20080611-1715 org.python.pydev.core 1.0.3 org.eclipse.team.svn.core.nl1 0.7.1.I20080612-1500 org.eclipse.emf.cdo.server.hibernate.teneo 1.0.0.v200806180411 org.eclipse.wst.validation.ui 1.2.1.v200807292117 org.python.pydev.parser 1.0.3 org.python.pydev.ast 1.3.6 org.eclipse.search 3.4.0.v20080603-2000 org.eclipse.jet 0.9.0.v20080527 org.python.pydev 1.3.2 org.python.pydev.jython 1.2.6 org.python.pydev.parser 1.3.14 org.eclipse.datatools.oda.cshelp 1.0.0.v200805152355 org.eclipse.jdt.junit 3.4.0.v20080603-2000 org.eclipse.datatools.sqltools.debugger.core 1.0.0.v200805152355 org.mortbay.jetty 5.1.14.v200806031611 org.eclipse.equinox.p2.garbagecollector 1.0.0.v20080506-1939 org.eclipse.m2m.atl.adt.debug 2.0.0.v200806101117 org.eclipse.equinox.jmx.client 1.0.0.v20070515 org.python.pydev.core 1.3.5 org.eclipse.mylyn.bugzilla.core 3.0.1.v20080721-2100-e3x org.python.pydev.parser 0.9.8.3 org.python.pydev.parser 0.9.8.2 org.python.pydev.parser 0.9.8.1 org.eclipse.osgi.services 3.1.200.v20071203 org.python.pydev 1.0.4 org.eclipse.hyades.lta.logging.adapter 4.5.0.v200806121215 org.eclipse.datatools.sqltools.sqleditor 1.0.0.v200805152355 org.python.pydev.parser 0.9.8.7 org.python.pydev.parser 0.9.8.6 org.eclipse.gmf.runtime.emf.core 1.1.0.v20080425-1959 org.python.pydev.parser 0.9.8.5 org.eclipse.core.contenttype 3.3.0.v20080604-1400 org.eclipse.ecf.datashare 1.3.0.v20080623-0046 org.python.pydev.parser 0.9.8.4 org.eclipse.tptp.platform.common.ui 4.4.100.v200806110100 org.junit 3.8.2.v20080602-1318 com.instantiations.assist.eclipse.coverage 5.5.0.200806270255 javax.activation 1.1.0.v200806101325 com.instantiations.assist.eclipse.scheduler 5.5.1 javax.management 1.2.0.v200803061811 org.eclipse.emf.edit 2.4.0.v200806091234 org.eclipse.ecf.provider.discovery 2.0.0.v20080623-0046 org.eclipse.birt.chart.device.pdf 2.3.0.v20080417 org.eclipse.equinox.wireadmin 1.0.0.v20080407 org.python.pydev.ast 1.0.8 org.eclipse.net4j.buddies.server 1.0.0.v200806180305 org.eclipse.wst.internet.cache 1.0.301.v200805140020 com.windowtester.runtime 3.5.0.200806270034 org.mx4j.jmx 3.0.3.v200802291451 org.eclipse.pde.ui 3.4.0.v20080530 org.eclipse.ocl 1.2.0.v200806091438 org.eclipse.birt.cshelp 2.3.0.v20080617 org.eclipse.emf.query.doc 1.2.0.v200805130238 org.eclipse.pde.runtime 3.4.0.v20080530-1200 org.apache.axis 1.4.0.v200807230600 org.apache.log4j 1.2.13.v200806030600 org.eclipse.ui.intro 3.2.200.v20080610 com.instantiations.assist.eclipse.pattern 5.5.1 com.xored.swt.composer 1.3.4.200806270212 org.apache.batik.ext.awt 1.6.0.v200805290154 org.eclipse.emf.cdo.ui 1.0.0.v200806180411 org.eclipse.jface 3.4.0.I20080606-1300 com.windowtester.swt.runtime.gef 3.5.1.200809042232 org.eclipse.gmf.runtime.emf.type.ui 1.1.0.v20080425-1959 org.eclipse.uml2.uml 2.2.0.v200805141133 org.objectweb.asm 3.0.0.v200803061811 org.python.pydev.core 1.1.0 org.eclipse.ecf.discovery.ui 2.0.0.v20080623-0046 org.python.pydev 1.3.14 org.eclipse.gmf.runtime.diagram.ui.printing 1.1.0.v20080501-1739 org.eclipse.mylyn.ide.ant 3.0.2.v20080918-1100-e3x org.eclipse.xsd.example.installer 1.0.0.v200806091234 org.eclipse.uml2.diagram.examples.profile 0.8.0.v200806112132 org.eclipse.ui.intro.universal 3.2.200.v20080508 org.python.pydev.ast 0.9.7.99 org.eclipse.emf.codegen 2.4.0.v200806091234 org.eclipse.equinox.p2.metadata 1.0.0.v20080514-1900 org.eclipse.ecf.example.collab 1.3.0.v20080623-0046 org.python.pydev.parser 1.2.4 org.eclipse.birt.report.engine.emitter.html 2.3.0.v20080606 org.python.pydev.jython 1.3.16 org.eclipse.osgi 3.4.0.v20080605-1900 org.eclipse.emf.databinding 1.0.0.v200806091234 org.eclipse.help 3.3.100.v20080610 org.eclipse.net4j.db.hsqldb 1.0.0.v200806180305 org.eclipse.gmf.runtime.diagram.ui.dnd 1.1.0.v20080425-1959 org.eclipse.birt.report.model 2.3.0.v20080605 org.eclipse.datatools.enablement.finfo 1.5.1.v200805152355 org.eclipse.jsch.ui 1.1.100.I20080415 org.python.pydev 1.3.10 org.python.pydev.parser 1.3.6 org.eclipse.emf.mapping.ecore.editor 2.4.0.v200806091234 org.eclipse.datatools.sqltools.common.ui 1.0.0.v200805152355 org.eclipse.birt.report.engine.emitter.pdf 2.3.0.v20080606 org.python.pydev 1.2.8 com.instantiations.packager.help 2.5.1 org.eclipse.equinox.p2.directorywatcher 1.0.0.v20080505-1850 org.eclipse.draw2d 3.4.0.v20080529 org.eclipse.draw2d.source 3.4.0.v20080115-33-7w3119163_ org.eclipse.ecf.ui 2.0.0.v20080623-0046 org.eclipse.birt.report.data.oda.jdbc.dbprofile 2.3.0.v20080606 org.eclipse.equinox.security.win32.x86 1.0.0.v20080529-1600 org.eclipse.wst.xml.ui 1.0.400.v200806051910 org.eclipse.jdt.ui 3.4.0.v20080603-2000 org.eclipse.equinox.p2.ui 1.0.0.v20080530-1237 org.eclipse.hyades.lta.logging.adapter.ui 4.5.0.v200805132041 org.eclipse.mylyn.monitor.ui 3.0.0.v20080619-1900 org.python.pydev 0.9.1 org.eclipse.emf.ecore.sdo.doc 2.4.0.v200806091234 com.instantiations.eclipse.ast.editor 5.5.1 org.eclipse.ant.ui 3.3.0.v20080529 org.python.pydev.core 1.3.13 org.eclipse.gef.doc.isv 3.4.0.v20080606 org.apache.xml.resolver 1.2.0.v200806030312 org.eclipse.datatools.enablement.ibm.db2.iseries.dbdefinition 1.0.0.v200806100223 org.eclipse.birt 2.3.0.v20080304 org.eclipse.equinox.security 1.0.0.v20080512-1800 com.instantiations.tools 5.3.2.200809042027 org.eclipse.jdt.core.manipulation 1.2.0.v20080603-2000 org.eclipse.gmf.runtime.diagram.ui.printing.render 1.1.0.v20080425-1959 org.eclipse.net4j.buddies.ui 1.0.0.v200806180305 org.eclipse.emf.codegen.ui 2.4.0.v200806091234 org.eclipse.team.svn 0.7.1.I20080612-1500 org.eclipse.wst.command.env.infopop 1.0.100.v200805301544 org.eclipse.datatools.enablement.hsqldb.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.runtime.common.ui.services.properties 1.1.0.v20080425-1959 org.eclipse.emf.cheatsheets 2.4.0.v200806091234 org.eclipse.ecf.presence.collab.ui 1.2.0.v20080623-0046 org.eclipse.update.core 3.2.200.v20080515 org.eclipse.wst.command.env.core 1.0.204.v200805140020 org.apache.batik.swing 1.6.0.v200805290154 org.eclipse.birt.report.designer.samplereports 2.3.0.v20080606 org.python.pydev.parser 1.0.8 org.eclipse.xsd 2.4.0.v200806091234 com.instantiations.assist.eclipse.fragment.jdt 5.5.0 org.eclipse.emf.transaction 1.2.0.v200805130238 org.eclipse.mylyn.team.cvs 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.ui 1.0.0.v20080611-1330 org.eclipse.emf.validation.source 1.2.0.v200805130238-35-9oA55S5J8H5ADM org.eclipse.datatools.enablement.hsqldb 1.0.0.v200805152355 org.eclipse.wst.common.uriresolver 1.1.301.v200805140415 org.eclipse.equinox.jsp.jasper 1.0.100.v20080427-0830 org.eclipse.osgi.util 3.1.300.v20080303 org.eclipse.datatools.connectivity.oda.consumer 3.1.2.v200805230718 org.eclipse.emf.compare.source 0.8.0.v200806180301 org.python.pydev.core 1.3.19 org.eclipse.emf.query.examples 1.2.0.v200805130238 org.eclipse.buckminster.runtime 1.1.0.r09338 org.eclipse.datatools.enablement.sybase.asa.dbdefinition 1.0.0.v200805240040 org.eclipse.datatools.sqltools.sql 1.0.0.v200805152355 org.apache.batik.svggen 1.6.0.v200805290154 org.eclipse.buckminster.cvs 1.0.0.r09319 org.python.pydev.core 1.2.6 org.eclipse.equinox.simpleconfigurator 1.0.0.v20080604 org.eclipse.help.ui 3.3.100.v20080521 org.apache.batik.dom 1.6.0.v200805290154 org.python.pydev.parser 1.1.0 org.eclipse.ecf.server.generic 1.2.0.v20080623-0046 com.windowtester.swt.runtime.win32 3.5.0.200806270034 org.eclipse.emf.cdo.examples 1.0.0.v200806180411 org.eclipse.ecf.provider.remoteservice 1.3.0.v20080623-0046 org.eclipse.gmf.runtime.notation.edit 1.1.0.v20080507-1326 org.eclipse.core.filesystem 1.2.0.v20080604-1400 org.eclipse.m2m.qvt.oml.runtime.ui 1.0.0.v20080611-1330 org.eclipse.emf.cdo.server.hibernate.source 1.0.0.v200806180411 org.python.pydev.jython 1.3.7 org.eclipse.gmf.codegen.edit 2.1.0.v20080610-1132 org.eclipse.buckminster.pde 1.1.0.r09351 org.python.pydev.ast 1.2.5 org.python.pydev.core 1.0.2 org.python.pydev.ast 1.3.16 org.apache.batik.parser 1.6.0.v200805290154 org.python.pydev.parser 1.0.2 org.eclipse.wst.common.infopop 1.0.100.v200805301550 org.eclipse.ecf.remoteservice 2.0.0.v20080623-0046 org.python.pydev 1.3.1 org.python.pydev.jython 1.2.5 org.eclipse.emf.mapping 2.4.0.v200806091234 org.eclipse.emf.cdo.server.hibernate.id 1.0.0.v200806180411 com.windowtester.runtime.legacy 3.5.1.200809042232 org.python.pydev.ast 1.3.7 org.eclipse.datatools.enablement.oracle 1.0.0.v200805152355 org.python.pydev.parser 1.3.15 org.eclipse.emf.importer 2.4.0.v200806091234 org.eclipse.birt.example 2.3.0.v20080304 org.eclipse.birt.report.designer.ui.lib 2.3.0.v20080606 org.eclipse.emf.cdo.server.source 1.0.0.v200806180411 org.eclipse.gmf.runtime.common.ui.services 1.1.0.v20080612-1229 org.eclipse.datatools.sqltools.db.generic 1.0.0.v200805152355 org.eclipse.net4j 1.0.0.v200806180305 org.eclipse.jdt 3.4.0.v20080603-2000 org.eclipse.emf.cdo.source 1.0.0.v200806180411 org.eclipse.datatools.connectivity 1.1.0.v200805160228 com.instantiations.assist.eclipse.scheduler 5.5.0 org.eclipse.emf.ecore.sdo.source 2.4.0.v200806091234 org.eclipse.wst.sse.doc.user 1.1.0.v200805211530 org.python.pydev 0.9.7.99 org.eclipse.emf.transaction.source 1.2.0.v200805130238-23-8s733I3C59379I org.w3c.dom.svg 1.1.0.v200806040011 org.python.pydev.core 1.3.4 javax.xml.rpc 1.1.0.v200806030420 org.eclipse.ocl.uml.source 1.2.0.v200805130238-11-7w311916241349 com.instantiations.eclipse.ui 5.3.2.200806270030 org.eclipse.jface.text 3.4.0.v20080603-2000 org.apache.batik.xml 1.6.0.v200805290154 org.python.pydev 1.0.3 org.eclipse.gmf.bridge.ui.dashboard 2.0.0.v20080417-1610 org.apache.lucene 1.9.1.v20080530-1600 org.eclipse.emf.query.ocl 1.2.0.v200805130238 org.eclipse.uml2.uml.resources 2.2.0.v200805131030 org.eclipse.ecf.provider.r_osgi 2.0.0.v20080623-0046 org.eclipse.emf.importer.java 2.4.0.v200806091234 org.python.pydev.debug 1.3.20 org.eclipse.emf.ecore.xmi 2.4.0.v200806091234 org.python.pydev.mylyn 0.3.0 com.instantiations.assist.eclipse.pattern 5.5.0 org.eclipse.emf.source 2.4.0.v200806091234 org.eclipse.ui.browser 3.2.200.v20080507 org.eclipse.tptp.lta.sdb.epi 4.5.0.v200805132041 org.eclipse.net4j.doc 1.0.0.v200806180305 org.eclipse.gmf.bridge 1.1.0.v20080528-1052 com.instantiations.assist.eclipse.admin 5.5.1 org.eclipse.ecf.presence 1.3.0.v20080623-0046 org.eclipse.jet.editor 0.9.0.v20080226 org.eclipse.emf.mint 0.7.0.v200806172223 org.eclipse.ecf.provider 1.3.0.v20080623-0046 com.instantiations.assist.eclipse.core.ant 5.5.0 org.apache.axis 1.4.0.v200806030120 org.eclipse.equinox.p2.metadata.repository 1.0.0.v20080604 com.ibm.icu 3.8.1.v20080530 org.eclipse.gmf.runtime.diagram.ui.properties 1.1.0.v20080603-1553 org.eclipse.team.svn.mylyn.source 0.7.1.I20080612-1500 org.eclipse.ecf.provider.datashare 1.3.0.v20080623-0046 org.eclipse.birt.report.data.oda.sampledb 2.3.0.v20080606 org.eclipse.m2m.atl.drivers.emf4atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.providers.ide 1.1.0.v20080425-1959 org.python.pydev 0.8.0 org.eclipse.datatools.connectivity.sqm.server.ui 1.1.0.v200806050117 com.nordea.cd.dev.plugin.stubbuilder 1.0.2 org.eclipse.emf.mapping.xsd2ecore 2.4.0.v200806091234 org.python.pydev.parser 1.2.5 org.eclipse.xsd.mapping.editor 2.4.0.v200806091234 org.python.pydev.jython 1.3.15 org.eclipse.gmf.xpand.editor 1.0.0.v20080425-1959 org.eclipse.tptp.platform.lta.common 4.5.0.v200806050100 org.eclipse.buckminster.pde.ui 1.0.0.r09319 org.eclipse.emf.validation.ocl 1.2.0.v200805130238 org.eclipse.ui.console 3.3.0.v20080529-1300 org.eclipse.net4j.ui 1.0.0.v200806180305 org.eclipse.emf.workspace 1.2.0.v200805130238 org.python.pydev.ast 0.9.8.6 org.python.pydev.ast 0.9.8.5 org.eclipse.emf.teneo.annotations 1.0.0.v200806111928 org.python.pydev.ast 0.9.8.4 org.eclipse.ui.net 1.0.0.I20080605 org.python.pydev.ast 0.9.8.3 org.eclipse.net4j.db.source 1.0.0.v200806180305 org.eclipse.zest.core 1.0.0.v20080115 org.python.pydev.ast 0.9.8.2 org.eclipse.tptp.lta.log.epi 4.5.0.v200805132041 org.python.pydev.ast 0.9.8.1 org.python.pydev 1.3.13 org.eclipse.equinox.app 1.1.0.v20080421-2006 org.eclipse.equinox.p2.metadata.generator 1.0.0.v20080604 org.python.pydev 1.2.7 org.eclipse.emf.ocl.examples 1.2.0.v200805130238 org.eclipse.mylyn.jira.core 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.commons.net 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql.query 1.0.1.v200805152355 org.eclipse.datatools.sqltools.plan 1.0.0.v200805152355 com.swtdesigner.help 6.7.1.200809050053 org.eclipse.ecf.ssl 1.0.0.v20080611-1715 org.eclipse.team.cvs.core 3.3.100.I20080605 org.python.pydev.ast 0.9.8 com.instantiations.helpeditor.core.toc 1.3.4.200806270212 org.eclipse.core.databinding 1.1.0.I20080527-2000 org.eclipse.tptp.platform.common 4.3.200.v200805300100 org.eclipse.net4j.util.ui 1.0.0.v200806180305 org.eclipse.mylyn.commons.core 3.0.0.v20080619-1900 org.python.pydev 1.3.9 org.eclipse.emf.search.common.ui 0.7.0.v200806130939 org.eclipse.m2m.atl.engine.emfvm 2.0.0.v200806101117 org.eclipse.uml2.diagram.csd 0.8.0.v200806112132 org.python.pydev.parser 1.3.7 org.eclipse.team.svn.ui 0.7.1.I20080612-1500 org.python.pydev.core 1.3.12 org.eclipse.datatools.modelbase.sql.query.edit 1.0.0.v200806070329 com.instantiations.packager.core 2.5.1 com.windowtester.swing.runtime 3.5.0.200806270034 org.eclipse.update.ui 3.2.100.v20080318 org.apache.commons.codec 1.2.0.v20080530-1550 org.eclipse.mylyn.bugzilla.core 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.editor.ui 1.0.0.v20080611-1330 org.eclipse.m2m.qvt.oml.samples 1.0.0.v20080611-1330 org.eclipse.mylyn.context.core 3.0.0.v20080619-1900 org.eclipse.xsd.source 2.4.0.v200806091234 org.eclipse.gmf.runtime.diagram.core 1.1.0.v20080425-1959 org.eclipse.m2m.atl.drivers.uml24atl 2.0.0.v200806101117 com.instantiations.eclipse.util 5.3.2.200809042027 org.eclipse.emf.ecore.sdo 2.4.0.v200806091234 com.instantiations.eclipse.startup 5.3.2.200809042027 org.eclipse.gmf 1.0.0.v20080425-1959 org.python.pydev 0.9.2 org.apache.batik.util.gui 1.6.0.v200805290154 org.python.pydev.ast 0.9.8.7 com.nordea.cd.dev.plugin.wsdl2java 1.0.2 org.eclipse.datatools.enablement.sybase.models 1.0.0.v200805152355 org.python.pydev.ast 1.0.1 org.eclipse.emf.compare.diff 0.8.0.v200806180301 org.eclipse.birt.report.designer 2.3.0.v200806102 org.eclipse.equinox.http.registry 1.0.100.v20080427-0830 ch.ethz.iks.r_osgi.remote 1.0.0.RC2_v20080623-0046 org.eclipse.gmf.graphdef.codegen.ui 1.0.100.v20080425-1959 org.eclipse.m2m.qvt.oml.editor.source 1.0.0.v20080611-1330-1--7w3119172202441 org.sat4j.pb 2.0.0.v20080602 org.eclipse.wst.validation 1.2.1.v200807292117 org.apache.batik.util 1.6.0.v200805290154 org.eclipse.equinox.transforms.hook 1.0.0.v20080610 org.eclipse.emf.teneo.hibernate 1.0.0.v200806111928 org.eclipse.uml2.examples 2.1.0.v200805131030 org.eclipse.mylyn.java.tasks 3.0.2.v20080918-1100-e3x org.eclipse.equinox.preferences 3.2.200.v20080421-2006 com.instantiations.assist.eclipse.fragment.swt 5.5.0 org.eclipse.ocl.doc 1.2.0.v200805130238 org.eclipse.jdt.apt.core 3.3.100.v20080513-1235 org.eclipse.birt.report.engine.fonts 2.3.0.v20080606 org.eclipse.mylyn.monitor.ui 3.0.2.v20080918-1100-e3x org.eclipse.gmf.tooldef.edit 2.0.0.v20080610-1132 org.eclipse.gmf.runtime.draw2d.ui.render 1.1.0.v20080507-2230 com.windowtester.swt.platform.ext 3.5.0.200806270034 org.eclipse.ecf.example.clients 1.3.0.v20080623-0046 org.eclipse.core.net 1.1.0.I20080604 org.eclipse.wst.xsd.core 1.1.301.v200807240448 org.eclipse.datatools.connectivity.oda.flatfile 3.0.6.v200805261930 org.python.pydev.refactoring 1.3.20 org.python.pydev.parser 1.0.1 org.python.pydev.ast 1.3.19 org.eclipse.equinox.registry.jmx 1.0.0.v20080610-1530 com.instantiations.eclipse.model.jsp 5.5.0 org.eclipse.mylyn.context.ui 3.0.2.v20080918-1100-e3x org.python.pydev.core 1.0.5 org.eclipse.hyades.lta.resources.database 4.5.0.v200805271330 org.python.pydev 0.6.1 org.python.pydev.parser 1.3.12 org.eclipse.equinox.p2.console 1.0.0.v20080514-1900 org.eclipse.mylyn.commons.net 3.0.1.v20080721-2100-e3x org.eclipse.net4j.jms.api 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.lexer 1.0.1.v200805152355 org.python.pydev.ast 1.3.4 org.python.pydev 1.3.4 org.python.pydev.jython 1.2.8 org.python.pydev 0.8.5 org.python.pydev 0.5.3 org.eclipse.wst.sse.ui 1.1.1.v200808141919 org.eclipse.emf.query 1.2.0.v200805130238 org.eclipse.core.runtime.compatibility 3.2.0.v20071008 org.eclipse.gmf.runtime.notation 1.1.0.v20080507-1326 org.eclipse.birt.report.data.oda.sampledb.ui 2.3.0.v20080606 org.python.pydev.ast 1.2.6 com.instantiations.eclipse.mail.ui 5.5.1 org.eclipse.zest.layouts 1.0.0.v20080226 org.python.pydev.jython 1.3.6 org.eclipse.net4j.jms.admin 1.0.0.v200806180305 org.eclipse.core.databinding.beans 1.1.0.I20080508-2000a org.python.pydev 1.1.0 org.python.pydev.core 1.3.20 org.eclipse.gmf.runtime.emf.commands.core 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.common.ui.services.dnd.ide 1.1.0.v20080425-1959 org.eclipse.datatools.connectivity.apache.derby 1.0.1.v200805152355 org.python.pydev.core 1.2.9 org.eclipse.mylyn.context.core 3.0.2.v20080918-1100-e3x org.eclipse.equinox.p2.artifact.repository 1.0.0.v20080609-0850 org.eclipse.gef 3.4.0.v20080526 org.eclipse.gmf.runtime.common.ui 1.1.0.v20080512-1200 org.eclipse.emf.ecoretools.tabbedproperties 0.8.0.v200806130600 com.instantiations.assist.eclipse.core.ant 5.5.1 org.eclipse.emf.ecore.change 2.4.0.v200806091234 org.eclipse.jet.doc 0.9.0.v20080522 org.eclipse.emf.transaction.examples 1.2.0.v200806051817 org.eclipse.gmf.runtime.draw2d.ui 1.1.0.v20080610-1132 org.eclipse.equinox.jmx.server.rmi 1.0.0.v20070510 org.eclipse.ecf.examples.remoteservices.common 1.0.100.v20080623-0046 org.eclipse.wst.standard.schemas 1.0.102.v200807220733 org.eclipse.equinox.p2.jarprocessor 1.0.0.v20080514-1900 org.eclipse.birt.report.data.oda.jdbc 2.3.0.v20080610 com.windowtester.runner 3.5.0.200806270034 com.windowtester.swt.codegen 3.5.1.200809042232 org.eclipse.emf.cdo.tests.model2.edit 1.0.0.v200806180411 javax.wsdl 1.5.1.v200806030408 org.eclipse.datatools.enablement.sap.maxdb.ui 1.0.0.v200805152355 org.eclipse.equinox.launcher.win32.win32.x86 1.0.100.v20080509-1800 org.eclipse.birt.core 2.3.0.v20080606 javax.servlet 2.5.0.v200806031605 org.eclipse.uml2.codegen.ecore.ui 1.4.0.v200805131030 com.windowtester.swt.recorder 3.5.0.200806270034 org.eclipse.mylyn 3.0.1.v20080721-2100-e3x org.eclipse.uml2.search.ocl 0.7.0.v200806130939 org.python.pydev.core 1.3.3 org.eclipse.core.jobs 3.4.0.v20080512 org.python.pydev.core 0.9.5 org.eclipse.emf.validation.ui.ide 1.2.0.v200805130238 org.python.pydev 1.0.2 org.eclipse.wst.validation.ui 1.2.0.v200805262011 com.windowtester.swing.recorder 3.5.1.200809042232 com.instantiations.helpeditor.help 1.3.4.200809042225 org.eclipse.gmf.map.edit 2.1.0.v20080610-1132 org.eclipse.emf.ecore.edit 2.4.0.v200806091234 org.eclipse.datatools.enablement.msft.sqlserver.dbdefinition 1.0.0.v200805152355 org.mortbay.jetty.util 6.1.7.v200806031612 org.eclipse.datatools.sqltools.parsers.sql 1.0.1.v200805152355 org.eclipse.xsd.doc 2.4.0.v200806091234 org.eclipse.jdt.doc.isv 3.4.0.v20080612-1340 org.eclipse.jdt.apt.pluggable.core 1.0.100.v20080407-1345 org.eclipse.ecf.provider.bittorrent 0.3.0.v20080623-0046 org.eclipse.mylyn.monitor.ui 3.0.1.v20080721-2100-e3x org.python.pydev.jython 1.0.4 org.eclipse.wst.common.project.facet.ui 1.3.1.v200807301432 javax.xml.bind 2.0.0.v20080604-1500 org.apache.derby.core 10.3.1.4 org.eclipse.birt.report.debug.core 2.3.0.v200806102 org.python.pydev.parser 1.3.4 org.eclipse.jdt.debug.ui 3.3.0.v20080603 org.python.pydev.help 1.3.20 org.python.pydev 1.3.12 org.eclipse.gef.examples.ui.pde 3.4.0.v20080226 org.eclipse.ecf.provider.jmdns 2.0.0.v20080623-0046 org.eclipse.xsd.editor 2.4.0.v200806091234 org.python.pydev 1.2.6 org.eclipse.buckminster.generic.ui 1.0.0.r09319 org.eclipse.emf.ocl 1.1.100.v200805130238 org.eclipse.emf.search.ecore 0.7.0.v200806130939 org.eclipse.wst.common.frameworks.ui 1.1.200.v200805221400 org.eclipse.emf.ecoretools.doc 0.8.0.v200806130600 org.eclipse.wst.sse.ui.infopop 1.0.200.v200805301545 org.eclipse.tptp.platform.common.ui.trace 4.3.200.v200805290100 org.eclipse.net4j.jms.server 1.0.0.v200806180305 org.eclipse.ecf.filetransfer.ui 1.4.0.v20080623-0046 org.eclipse.birt.chart.device.swt 2.3.0.v20080522 org.eclipse.wst.xsd.ui 1.2.101.v200806051910 org.eclipse.emf.cdo.examples.source 1.0.0.v200806180411 org.eclipse.birt.report.designer.ui.lib.explorer 2.3.0.v20080606 org.mozilla.rhino 1.6.7.v20080214 org.python.pydev 1.3.16 org.eclipse.buckminster.ant 1.1.0.r09351 org.eclipse.equinox.metatype 1.0.0.v20070827 org.eclipse.m2m.atl.adt.wizard 2.0.0.v200806101117 org.eclipse.wst.command.env 1.0.305.v200805281530 org.eclipse.swt.jmx 1.0.0.v20070510 org.eclipse.emf.cdo.common 1.0.0.v200806180411 org.eclipse.ecf.examples.remoteservices.client 1.0.100.v20080623-0046 org.python.pydev.jython 1.3.14 org.python.pydev.parser 1.2.6 org.eclipse.emf.ecoretools.diagram.ui.outline 0.8.0.v200806130600 org.eclipse.emf.teneo.eclipse 1.0.0.v200806111928 org.eclipse.emf.cdo.tests.mango 1.0.0.v200806180411 org.eclipse.net4j.buddies.common 1.0.0.v200806180305 org.eclipse.net4j.buddies.chat 1.0.0.v200806180305 org.eclipse.mylyn.bugzilla.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.0 org.eclipse.datatools.enablement.sybase.ase.dbdefinition 1.0.0.v200805240040 org.apache.ant 1.7.0.v200803061910 org.eclipse.datatools.connectivity.oda.design 3.0.6.v200805152355 org.eclipse.emf.ocl.doc 1.1.100.v200805130238 org.eclipse.tptp.lta.gla.ui.epi 4.5.0.v200805160100 org.eclipse.equinox.jmx.server 1.0.0.v20071015 org.eclipse.wst.xml.core 1.1.300.v200806051910 org.eclipse.datatools.connectivity.oda.template.ui 3.0.6.v200805152355 org.python.pydev.ast 1.0.2 org.eclipse.birt.report.data.adapter 2.3.0.v20080606 org.eclipse.birt.chart.runtime 2.3.0.v20080304 org.eclipse.net4j.ui.source 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.query 1.0.1.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.1 org.eclipse.wst.dtd.ui 1.0.300.v200805152207 org.eclipse.mylyn.java.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.connectivity.oda.design.ui 3.0.6.v200805152355 org.eclipse.birt.report.designer.core 2.3.0.v200806102 org.eclipse.buckminster.jdt 1.0.0.r09319 org.eclipse.buckminster.p4 1.0.0.r09319 org.eclipse.ecf.core.source 2.0.0.v20080623-0046 org.eclipse.birt.report.runtime 2.3.0.v20080304 org.python.pydev.ast 1.1.0 com.windowtester.swt.runtime 3.5.1.200809042232 org.eclipse.uml2.doc 2.2.0.v200805201350 org.eclipse.mylyn.context.core 3.0.1.v20080721-2100-e3x org.eclipse.gmf.runtime.notation.providers 1.1.0.v20080425-1959 org.eclipse.tptp.platform.lta.log.doc.user 4.5.0.v200805132041 org.eclipse.team.svn.help 0.7.1.I20080612-1500 org.python.pydev 0.9.3 com.windowtester.swt.runtime.win32 3.5.1.200809042232 org.eclipse.m2m.qvt.oml.ocl.emf.libraries 1.0.0.v20080611-1330 org.eclipse.hyades.lta.analysis.engine 4.5.0.v200805271330 org.python.pydev.core 1.3.11 org.eclipse.datatools.connectivity.sqm.core 1.0.1.v200806041052 org.eclipse.equinox.jmx.server.xmlrpc 1.0.0.v20070608 org.eclipse.platform 3.3.100.v200806172000 org.eclipse.ui 3.4.0.I20080610-1200 org.eclipse.net4j.buddies.chat.ui 1.0.0.v200806180305 org.eclipse.emf.search.ecore.ocl 0.7.0.v200806130939 org.eclipse.gmf.codegen 2.1.0.v20080610-1132 org.eclipse.emf.teneo 1.0.0.v200806111928 org.eclipse.datatools.connectivity.oda.flatfile.ui 3.0.6.v200805261930 org.python.pydev.core 1.0.4 org.eclipse.equinox.p2.extensionlocation 1.0.0.v20080523-0001 org.eclipse.buckminster.remote.cloudsmith 1.0.0.r09319 org.python.pydev.ast 1.3.18 org.eclipse.birt.report.engine.dataextraction.csv 2.3.0.v200806102 org.eclipse.equinox.log 1.1.0.v20080414 org.python.pydev.parser 1.3.13 org.python.pydev 1.3.3 com.windowtester.eclipse.help 3.5.0.200806270034 org.python.pydev.jython 1.2.7 org.eclipse.m2m.qvt.oml.emf.util.ui 1.0.0.v20080611-1330 org.eclipse.gmf.runtime.common.ui.printing 1.1.0.v20080425-1959 org.python.pydev.ast 1.3.5 org.eclipse.uml2.uml.ecore.exporter 2.2.0.v200805131030 org.eclipse.equinox.event 1.1.0.v20080225 org.eclipse.epp.usagedata.gathering 1.0.0.R200806162215 com.instantiations.assist.eclipse.fragment.swt 5.5.1 org.eclipse.emf.cdo.server 1.0.0.v200806180411 org.eclipse.core.filesystem.win32.x86 1.1.0.v20080604-1400 org.eclipse.datatools.enablement.ibm.db2.zseries 1.0.0.v200805152355 com.windowtester.swt.platform.ext 3.5.1.200809042232 org.eclipse.birt.chart.examples 2.3.0.v20080612 org.eclipse.gmf.bridge.ui 1.1.100.v20080417-1610 org.eclipse.emf.doc 2.4.0.v200806091234 org.eclipse.emf.ecoretools.diagram 0.8.0.v200806130600 org.eclipse.ecf.provider.filetransfer.efs 1.5.0.v20080623-0046 org.eclipse.mylyn.commons.net 3.0.0.v20080619-1900 org.python.pydev.core 1.2.8 org.eclipse.datatools.modelbase.dbdefinition 1.0.0.v200805152355 javax.management.remote 1.0.0.v200803061811 org.eclipse.net4j.util 1.0.0.v200806180305 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.0 org.eclipse.ui.navigator.resources 3.3.100.I20080606-1300 org.apache.lucene.analysis 1.9.1.v20080530-1600 org.python.pydev.jython 1.3.5 org.eclipse.m2m.atl.adt.builder 2.0.0.v200806101117 org.eclipse.mylyn.monitor.core 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.2.7 com.instantiations.eclipse.mail.ui 5.5.0 org.eclipse.tptp.platform.models.lta 4.5.0.v200805132041 org.eclipse.mylyn.commons.core 3.0.1.v20080721-2100-e3x org.eclipse.team.svn.nl1 0.7.1.I20080612-1500 org.eclipse.birt.report.data.oda.jdbc.dbprofile.ui 2.3.0.v20080606 org.eclipse.pde 3.4.0.v20080603 org.eclipse.net4j.jms.server.jdbc 1.0.0.v200806180305 org.eclipse.pde.doc.user 3.3.0.v20080611-1530 org.eclipse.core.runtime.compatibility.auth 3.2.100.v20070502 org.eclipse.tptp.platform.iac.administrator 4.4.100.v200806120100 org.eclipse.emf.importer.ecore 2.4.0.v200806091234 org.eclipse.equinox.jmx.client.xmlrpc 1.0.0.v20070515 org.eclipse.equinox.jmx.common 1.0.0.v20070510 org.eclipse.datatools.enablement.ibm.informix.ui 1.0.0.v200805160737 com.instantiations.installer 2.5.1 org.eclipse.hyades.lta.logging.parsers 4.5.0.v200805271330 org.eclipse.uml2.diagram.profile 0.8.0.v200806112132 org.eclipse.datatools.enablement.jdt.classpath 1.0.1.v200805152355 org.eclipse.emf.validation.ocl.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.net4j.buddies 1.0.0.v200806180305 net.sourceforge.lpg.lpgjavaruntime 1.1.0.v200803061910 org.eclipse.emf.ecore.editor 2.4.0.v200806091234 org.apache.commons.lang 2.3.0.v200803061910 org.eclipse.ocl.uml 1.2.0.v200805130238 org.eclipse.emf.mapping.ecore2ecore 2.4.0.v200806091234 com.swtdesigner.fragment.jdt.core 6.7.0.200806270151 org.eclipse.ecf.provider.xmpp 2.0.0.v20080623-0046 org.eclipse.wst.common.modulecore 1.1.201.v200808071700 org.eclipse.mylyn.jira.ui 3.0.2.v20080918-1100-e3x org.eclipse.draw2d.doc.isv 3.4.0.v20080606 org.python.pydev.core 1.3.2 org.eclipse.mylyn.compatibility 3.0.0.v20080619-1900 org.eclipse.buckminster.maven 1.1.0.r09319 org.eclipse.buckminster.cmdline 1.0.0.r09319 org.apache.batik.css 1.6.0.v200805290154 org.eclipse.ecf.telephony.call.ui 1.2.0.v20080623-0046 org.eclipse.wst.common.emfworkbench.integration 1.1.200.v200805140020 org.python.pydev 1.0.1 org.eclipse.datatools.enablement.ibm.db2.luw.dbdefinition 1.0.0.v200805152355 org.eclipse.team.svn.resource.ignore.rules.jdt.source 0.7.1.I20080612-1500 org.eclipse.ecf.server 1.3.0.v20080623-0046 org.python.pydev 1.2.5 org.python.pydev.core 1.2.1 org.eclipse.datatools.sqltools.sqlscrapbook 1.0.0.v200806021003 org.eclipse.birt.chart.reportitem 2.3.0.v20080610 org.eclipse.uml2.diagram.codegen 0.8.0.v200806112132 org.eclipse.xsd.edit 2.4.0.v200806091234 org.eclipse.buckminster.opml 1.0.0.r09319 org.python.pydev.parser 1.3.5 org.eclipse.gmf.runtime.diagram.ui 1.1.0.v20080610-1132 org.eclipse.ocl.source 1.2.0.v200805130238-34-9oA55S5I6M7JBK com.windowtester.eclipse.ui 3.5.0.200806270034 org.eclipse.tptp.platform.agentcontroller 4.2.200.v200806162043 org.python.pydev 1.3.11 org.eclipse.datatools.connectivity.apache.derby.ui 1.0.0.v200805160737 org.eclipse.datatools.sqltools.routineeditor 1.0.0.v200805261703 org.eclipse.wst.xsd.ui 1.2.102.v200808141745 org.eclipse.equinox.http 1.0.200.v20080421-2006 org.jivesoftware.smack 2.2.1 org.eclipse.mylyn.compatibility 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.java.ui 3.0.0.v20080619-1900 org.eclipse.core.variables 3.2.100.v20080529-1300 org.python.pydev.jython 1.3.13 org.python.pydev.parser 1.3.20 org.eclipse.tptp.platform.models.hierarchy 4.5.0.v200806120100 org.eclipse.ecf.examples.updatesite.client 1.0.100.v20080623-0046 org.eclipse.datatools.enablement.msft.sqlserver.ui 1.0.0.v200805160737 org.eclipse.datatools.enablement.mysql 1.0.0.v200805152355 org.eclipse.jdt.debug 3.4.0.v20080604 org.antlr.runtime 3.0.0.v200803061811 org.python.pydev.parser 1.2.7 org.eclipse.hyades.execution 4.4.200.v200806120100 org.eclipse.ecf.provider.ui 1.3.0.v20080623-0046 org.eclipse.birt.chart.cshelp 2.3.0.v20080616 org.eclipse.buckminster.p4.ui 1.0.0.r09319 org.python.pydev 1.3.15 org.eclipse.datatools.enablement.ibm.ui 1.0.0.v200805152355 org.eclipse.buckminster.sax 1.0.0.r09175 org.eclipse.equinox.supplement 1.1.0.v20080421-2006 org.eclipse.wst.common.frameworks 1.1.200.v200805140020 org.eclipse.mylyn 3.0.2.v20080918-1100-e3x org.eclipse.gmf.map 2.1.0.v20080521 org.eclipse.wst.standard.schemas 1.0.101.v200806010600 org.python.pydev.ast 1.0.3 org.eclipse.m2m.qvt.oml.runtime 1.0.0.v20080611-1330 org.eclipse.mylyn.ide.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.sqltools.sqlbuilder 1.0.0.v200806070500 org.eclipse.datatools.modelbase.derby 1.0.0.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.0 org.eclipse.emf.compare.ui 0.8.0.v200806180301 org.eclipse.ecf.provider.filetransfer.scp 2.0.0.v20080623-0046 org.eclipse.uml2.search.ocl.ui 0.7.0.v200806130939 org.eclipse.mylyn.context.ui 3.0.1.v20080721-2100-e3x org.python.pydev.templates 1.3.20 org.eclipse.gmf.runtime.diagram.ui.resources.editor 1.1.0.v20080425-1959 org.eclipse.gmf.examples.ui.pde 1.0.200.v20080425-1959 org.eclipse.buckminster.installer 1.0.0.r09319 org.eclipse.m2m.atl.examples 2.0.0.v200806101117 org.eclipse.datatools.modelbase.sql.xml.query 1.0.0.v200805152355 org.eclipse.emf.search.doc 0.7.0.v200806130939 org.eclipse.datatools.enablement.oracle.dbdefinition 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.0 javax.xml.bind 2.0.0.v200803061811 org.apache.xmlrpc 3.0.0.v20080530-1550 org.eclipse.ui.views.log 1.0.0.v20080522-2200 org.python.pydev.core 1.3.10 org.eclipse.ecf.examples.updatesite.server 1.0.100.v20080623-0046 org.eclipse.birt.core.ui 2.3.0.v20080515 org.eclipse.core.filebuffers 3.4.0.v20080603-2000 org.eclipse.mylyn.team.ui 3.0.1.v20080721-2100-e3x org.eclipse.wst.command.env 1.0.306.v200807231700 org.eclipse.team.cvs.ssh2 3.2.200.I20080604 org.eclipse.emf.search.ecore.ocl.ui 0.7.0.v200806130939 org.eclipse.ecf.example.collab.editor 1.0.200.v20080623-0046 org.eclipse.ecf.provider.jslp 2.0.0.v20080623-0046 org.eclipse.datatools.sqltools.result 1.0.0.v200805301309 org.eclipse.emf.teneo.jpox 1.0.0.v200806111928 org.eclipse.gmf.runtime.emf.clipboard.core 1.1.0.v20080425-1959 com.instantiations.eclipse.ast.editor 5.5.0 org.eclipse.mylyn.tasks.bugs 3.0.2.v20080918-1100-e3x org.eclipse.jsch.core 1.1.100.I20080604 org.eclipse.pde.core 3.4.0.v20080604-2000 org.python.pydev 0.9.4 org.python.pydev.jython 1.3.0
+* toolingwin32.win32.x86org.eclipse.equinox.common 3.4.0.v20080421-2006 requires either org.python.pydev.core 0.9.7 org.eclipse.m2m.qvt.oml.trace.edit 1.0.0.v20080611-1330 org.eclipse.emf.codegen.ecore 2.4.0.v200806091234 org.eclipse.uml2.common.edit 1.4.0.v200805131030 org.eclipse.core.runtime 3.4.0.v20080512 org.python.pydev.core 1.3.9 javax.xml.soap 1.2.0.v200806030421 org.eclipse.gmf.runtime.common.ui.action.ide 1.1.0.v20080425-1959 org.eclipse.emf.cdo.edit 1.0.0.v200806180411 org.eclipse.ecf.provider.msn 1.2.0.v20080623-0046 org.eclipse.equinox.frameworkadmin.equinox 1.0.0.v20080529-1225 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.1 org.eclipse.equinox.http.servletbridge 1.0.0.v20080427-0830 org.python.pydev 0.9.5 org.python.pydev.parser 1.2.3 org.eclipse.emf.example.installer 1.0.0.v200806091234 com.instantiations.assist.eclipse 5.5.0 org.eclipse.wst.common.environment 1.0.201.v200805140020 org.eclipse.zest.source 1.0.0.v20080115-53-8xB4CE899O274A org.eclipse.emf.ant 2.4.0.v200806091234 com.instantiations.eclipse.mail 5.5.1 org.python.pydev.parser 1.3.1 org.eclipse.birt.chart.engine 2.3.0.v20080606 org.eclipse.core.resources 3.4.0.v20080604-1400 org.eclipse.birt.report.engine.emitter.postscript 2.3.0.v20080610 org.python.pydev.jython 1.1.0 org.eclipse.ui.workbench.compatibility 3.2.0.I20080509-2000 com.nordea.cd.dev.plugin.builderruntime 1.0.0 org.eclipse.m2m.atl.adt.editor 2.0.0.v200806101117 org.eclipse.equinox.p2.director.app 1.0.0.v20080604 org.eclipse.mylyn.tasks.core 3.0.0.v20080619-1900 org.python.pydev.ast 1.0.4 org.eclipse.m2m.atl.compilers.atl2006 2.0.0.v200806101117 org.eclipse.datatools.enablement.sybase.asa.ui 1.0.1.v200805310538 org.eclipse.emf.mapping.ecore2xml.ui 2.4.0.v200806091234 org.eclipse.wst.dtd.ui 1.0.301.v200808072012 org.eclipse.birt.chart.engine.extension 2.3.0.v20080611 org.eclipse.jface.databinding 1.2.0.I20080515-2000a org.eclipse.birt.chart.reportitem.ui 2.3.0.v20080610 org.eclipse.datatools.enablement.hsqldb.ui 1.0.0.v200805152355 org.eclipse.mylyn.ide.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.security.ui 1.0.0.v20080603-1810 org.eclipse.wst.common.emfworkbench.integration 1.1.201.v200808071700 org.eclipse.gmf.validate 1.1.0.v20080603-1553 org.eclipse.emf.mapping.ecore2ecore.editor 2.4.0.v200806091234 org.eclipse.ecf.provider.irc 1.3.0.v20080623-0046 org.eclipse.emf.validation.doc 1.2.0.v200805130238 org.python.pydev.ast 1.2.8 org.eclipse.emf.teneo.doc 1.0.0.v200806111928 org.python.pydev.jython 1.3.12 org.eclipse.emf.ecoretools.source 0.8.0.v200806130600 org.eclipse.equinox.p2.updatesite 1.0.0.v20080529-1800 org.eclipse.ecf.presence.bot 1.2.0.v20080623-0046 com.swtdesigner.properties.java5 1.0.0 org.eclipse.platform.doc.isv 3.4.0.v20080613-1330 org.python.pydev.core 1.2.3 org.eclipse.datatools.connectivity.db.generic 1.0.0.v200805152355 org.eclipse.uml2.diagram.clazz 0.8.0.v200806112132 org.eclipse.birt.report.designer.ui.views 2.3.0.v20080606 org.eclipse.mylyn.monitor.core 3.0.2.v20080918-1100-e3x com.instantiations.eclipse.debug 5.3.2.200806270030 org.eclipse.gmf.runtime.common.ui.action 1.1.0.v20080425-1959 org.eclipse.equinox.useradmin 1.1.0.v20080508-1815 org.eclipse.mylyn.commons.ui 3.0.2.v20080918-1100-e3x org.eclipse.equinox.cm 1.0.0.v20080509-1800 org.eclipse.uml2.diagram.component 0.8.0.v200806112132 org.eclipse.swt.layout.grouplayout 1.1.0 org.python.pydev 1.2.4 javax.servlet 2.4.0.v200806031604 org.eclipse.uml2.examples.uml.ui 2.2.0.v200805131030 org.python.pydev.ast 1.3.10 org.eclipse.birt.report.designer.ui.ide 2.3.0.v20080606 org.python.pydev.parser 1.3.18 com.swtdesigner.layout.group 6.7.0.200806270151 org.eclipse.m2m.qvt.oml.runtime.source 1.0.0.v20080611-1330-5--AgI99m9cDD4DNN9 org.eclipse.mylyn.tasks.ui 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.3.13 org.eclipse.emf.teneo.jpox.eclipse 1.0.0.v200806111928 org.eclipse.equinox.transforms.xslt 1.0.0.v20080610 org.python.pydev.core 1.0.7 org.eclipse.datatools.enablement.ibm.db2.zseries.ui 1.0.0.v200805160737 org.eclipse.mylyn.resources.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.enablement.oda.ws 1.1.0.v200805261930 org.eclipse.equinox.frameworkadmin 1.0.0.v20080430-1750 org.eclipse.birt.chart.device.extension 2.3.0.v20080424 org.eclipse.net4j.jvm 1.0.0.v200806180305 org.eclipse.emf.cdo.migrator 1.0.0.v200806180411 org.python.pydev.jython 1.3.1 org.eclipse.m2m.qvt.oml.cst.parser 1.0.0.v20080611-1330 com.xored.composer.ui 1.3.4.200809042225 org.eclipse.datatools.enablement.sybase.ui 1.0.0.v200806041138 org.eclipse.ecf.remoteservice.ui 2.0.0.v20080623-0046 org.eclipse.net4j.db.mysql 1.0.0.v200806180305 org.eclipse.update.scheduler 3.2.100.v20080404 org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide 1.1.0.v20080425-1959 org.eclipse.wst.dtdeditor.doc.user 1.0.400.v200805150028 org.eclipse.wst.xmleditor.doc.user 1.0.401.v200808071323 org.eclipse.gmf.runtime.common.ui.services.dnd 1.1.0.v20080425-1959 org.eclipse.uml2.common 1.4.0.v200805131030 org.apache.jasper 5.5.17.v200806031609 org.python.pydev 1.0.8 org.eclipse.datatools.doc.user 1.6.0.20080606124249 org.objectweb.asm 3.1.0.v200803061910 org.eclipse.emf.cdo.doc 1.0.0.v200806180411 org.python.pydev.core 1.3.17 org.eclipse.core.resources.compatibility 3.4.0.v20080604-1400 com.instantiations.eclipse.startup 5.3.2.200806270030 org.eclipse.datatools.connectivity.apache.derby.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.graphdef.codegen 2.0.100.v20080528-1052 org.eclipse.emf.common 2.4.0.v200806091234 org.eclipse.wst.xml.ui.infopop 1.0.300.v200805140200 org.python.pydev.core 1.3.0 org.eclipse.equinox.p2.touchpoint.natives 1.0.0.v20080505-1850 org.eclipse.ant.core 3.2.0.v20080529 org.eclipse.ui.workbench 3.4.0.I20080606-1300 org.eclipse.ecf.provider.xmpp.ui 2.0.0.v20080623-0046 org.w3c.sac 1.3.0.v20070710 org.python.pydev.jython 1.2.3 org.eclipse.mylyn.context.ui 3.0.0.v20080619-1900 org.eclipse.ecf.doc 1.3.0.v20080623-0046 org.eclipse.ecf.provider.bittorrent.ui 0.2.0.v20080623-0046 com.xored.swt.composer 1.3.4.200809042225 org.python.pydev.parser 1.0.4 org.eclipse.help.webapp 3.3.100.v20080528 org.eclipse.uml2.diagram.deploy 0.8.0.v200806112132 org.eclipse.ecf.provider.irc.ui 1.3.0.v20080623-0046 org.python.pydev 1.3.18 org.eclipse.m2m.atl.source 2.0.0.v200806101117 org.eclipse.mylyn.tasks.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.identity 2.0.0.v20080611-1715 org.eclipse.ocl.ecore 1.2.0.v200805130238 org.eclipse.core.expressions 3.4.0.v20080603-2000 org.eclipse.core.runtime.compatibility.registry 3.2.200.v20080610 org.eclipse.tptp.platform.la.core 4.3.200.v200805231116 org.eclipse.m2m.atl.service.core 2.0.0.v200806101117 org.apache.commons.logging 1.0.4.v20080605-1930 org.eclipse.platform.doc.user 3.4.0.v20080612-1340 com.windowtester.runtime.junit4 3.5.0.200806270034 org.python.pydev.parser 1.2.8 org.eclipse.uml2.examples.source 2.2.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.providers 1.1.0.v20080503-1740 org.python.pydev.jython 1.3.20 org.python.pydev.jython 1.0.7 org.eclipse.m2m.qvt.oml.common 1.0.0.v20080611-1330 org.eclipse.wst.sse.ui 1.1.0.v200806041847 org.eclipse.core.resources.win32.x86 3.4.0.v20071204 org.eclipse.swt.widgets.baseline 1.1.0 com.xored.swt.composer.win32.win32.x86 1.3.4.200809042225 org.eclipse.datatools.enablement.mysql.ui 1.0.0.v200805152355 org.eclipse.m2m.atl.ocl.core 2.0.0.v200806101117 org.eclipse.emf.codegen.ecore.ui 2.4.0.v200806091234 org.eclipse.equinox.http.servlet 1.0.100.v20080427-0830 org.python.pydev.ast 1.3.2 org.python.pydev 1.3.6 org.eclipse.birt.report.viewer 2.3.0.v20080606 org.apache.batik.extension 1.6.0.v200805290154 org.eclipse.uml2.diagram.statemachine 0.8.0.v200806112132 org.python.pydev.parser 1.3.10 org.eclipse.equinox.p2.ui.admin.rcp 1.0.0.v20080604 org.eclipse.emf.compare.match 0.8.0.v200806180301 org.eclipse.datatools.enablement.oracle.ui 1.0.0.v200805240040 org.python.pydev 0.7.1 com.lowagie.itext 1.5.4.v20080228 org.eclipse.birt.report.designer.ui.preview.web 2.3.0.v200806102 org.eclipse.birt.report.designer.ui.samples.ide 2.3.0.v20080606 org.eclipse.xsd.ecore.converter 2.4.0.v200806091234 org.eclipse.jdt.compiler.tool 1.0.100.v_874 org.eclipse.equinox.registry 3.4.0.v20080516-0950 org.eclipse.wst.dtd.ui.infopop 1.0.300.v200805140200 org.python.pydev.ast 0.9.5 org.eclipse.ui.workbench.texteditor 3.4.0.v20080603-2000 org.eclipse.cvs 1.0.100.v20080603 org.eclipse.uml2.search.ui 0.7.0.v200806130939 org.eclipse.gmf.common 1.1.1.v20080610-1132 org.eclipse.uml2.uml.editor 2.2.0.v200805131030 org.eclipse.m2m.atl.engine 2.0.0.v200806101117 org.eclipse.net4j.http.common 1.0.0.v200806180305 org.eclipse.ecf.presence.ui 1.2.0.v20080623-0046 org.python.pydev.parser 1.2.2 org.eclipse.emf.cdo.tests.model3.edit 1.0.0.v200806180411 org.eclipse.emf.cdo.tests.model1 1.0.0.v200806180411 org.eclipse.m2m.atl.engine.vm 2.0.0.v200806101117 com.instantiations.eclipse.mail 5.5.0 org.eclipse.emf.ocl.source 1.1.100.v200805130238-108Y7w311916241349 com.windowtester.swt.runtime.legacy 3.5.1.200809042232 org.eclipse.uml2tools 0.8.0.v200806112132 org.eclipse.emf.search.genmodel.ui 0.7.0.v200806130939 org.eclipse.mylyn.jira.core 3.0.2.v20080918-1100-e3x org.eclipse.uml2.uml.ecore.importer 2.2.0.v200805131030 org.eclipse.emf.transaction.doc 1.2.0.v200805130238 org.eclipse.tptp.platform.logging.events 4.3.200.v200805310100 org.python.pydev.core 1.3.8 org.eclipse.xsd.ecore.importer 2.4.0.v200806091234 org.eclipse.emf.teneo.source 1.0.0.v200806111928-78--DUUEFDEz0MMNLVD org.eclipse.uml2 2.1.0.v200805131030 org.eclipse.gmf.runtime.diagram.ui.render 1.1.0.v20080603-1553 com.windowtester.swt.runtime.os.win32 3.5.0.200806270034 org.eclipse.rcp 3.4.0.v20080507 org.eclipse.xsd.mapping 2.4.0.v200806091234 org.eclipse.emf.workspace.doc 1.2.0.v200805130238 org.eclipse.pde.api.tools 1.0.0.v20080529-1150 org.eclipse.emf.mapping.ecore2xml 2.4.0.v200806091234 org.eclipse.swt.win32.win32.x86 3.4.0.v3448f org.apache.derby 10.1.2.1_v200803061811 org.eclipse.m2m.qvt.oml.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.python.pydev.parser 1.3.0 org.eclipse.ecf.protocol.msn 1.2.0.v20080623-0046 com.instantiations.eclipse.ui 5.3.2.200809042027 org.eclipse.jet.core 1.1.0.v20080415 org.eclipse.datatools.enablement.sybase.ase.models 1.0.1.v200805152355 com.nordea.cd.dev.plugin.builderruntime 1.0.1 com.instantiations.assist.eclipse.core 5.5.0 org.python.pydev.ast 1.0.5 org.eclipse.ecf.filetransfer 2.0.0.v20080611-1715 org.python.pydev.parser 0.9.5 org.python.pydev.core 1.2.2 org.eclipse.emf.transaction.ui 1.2.0.v200805130238 org.eclipse.gmf.runtime.gef.ui 1.1.0.v20080503-1740 org.eclipse.wst.xml.core 1.1.301.v200808072008 org.eclipse.uml2.diagram.clazz.search 0.7.0.v200806130939 org.sat4j.core 2.0.0.v20080602 org.eclipse.datatools.connectivity.ui 1.1.0.v200806040132 org.eclipse.birt.report.designer.ui.editors 2.3.0.v20080610a org.eclipse.equinox.p2.reconciler.dropins 1.0.0.v20080611 org.eclipse.wst.common.project.facet.core 1.3.1.v200807031821 org.python.pydev.jython 1.3.11 org.eclipse.datatools.enablement.postgresql 1.0.1.v200805152355 org.eclipse.ltk.ui.refactoring 3.4.0.v20080605-1800 org.eclipse.datatools.enablement.sybase.ase 1.0.1.v200806040735 org.python.pydev.ast 1.2.9 org.eclipse.datatools.connectivity.oda 3.1.2.v200805152355 org.eclipse.wst.common.emf 1.1.201.v200808071700 org.apache.batik.dom.svg 1.6.0.v200805290154 org.eclipse.birt.chart 2.3.0.v20080304 org.python.pydev.jython 1.2.9 org.python.pydev.ast 1.3.11 org.eclipse.datatools.enablement.mysql.dbdefinition 1.0.1.v200805170742 org.python.pydev.parser 1.3.19 org.python.pydev.core 1.0.6 org.eclipse.uml2.diagram 0.8.0.v200806112132 org.eclipse.jdt.junit4.runtime 1.0.200.v20080603-2000 org.python.pydev.ast 1.3.12 org.eclipse.swt 3.4.0.v3448f org.eclipse.emf.ecoretools.diagram.search 0.7.0.v200806130939 org.eclipse.pde.ui.templates 3.4.0.v20080514-1500 com.instantiations.packager.ui 2.5.1 org.eclipse.emf.cdo.server.db 1.0.0.v200806180411 org.eclipse.datatools.enablement.sybase.asa 1.0.1.v200805310538 org.eclipse.emf.compare 0.8.0.v200806180301 org.eclipse.datatools.enablement.oda.ws.ui 1.1.0.v200805261930 org.eclipse.jdt.launching 3.4.0.v20080529-1300 org.eclipse.mylyn.tasks.ui 3.0.0.v20080619-1900 org.apache.ws.jaxme 0.5.1.v20080530-1550 org.eclipse.mylyn.bugzilla.ui 3.0.0.v20080619-1900 org.apache.commons.el 1.0.0.v200806031608 org.python.pydev 1.2.3 org.w3c.dom.smil 1.0.0.v200806040011 org.eclipse.wst.validation.infopop 1.0.300.v200806041506 org.python.pydev 1.0.7 org.eclipse.net4j.source 1.0.0.v200806180305 org.eclipse.m2m.qvt.oml.ocl 1.0.0.v20080611-1330 org.eclipse.uml2.uml.edit 2.2.0.v200805131030 org.eclipse.emf.search.ui 0.7.0.v200806130939 org.python.pydev.core 1.3.16 org.eclipse.emf.validation.ui 1.2.0.v200805130238 org.eclipse.datatools.enablement.oda.xml 1.1.0.v200805270900 org.eclipse.ltk.core.refactoring 3.4.0.v20080603-2000 org.python.pydev.jython 1.3.2 com.windowtester.swt.codegen 3.5.0.200806270034 org.eclipse.datatools.sqltools.ddlgen.ui 1.0.0.v200805152355 org.apache.xerces 2.9.0.v200805270400 org.eclipse.birt.report.engine.dataextraction 2.3.0.v20080611 org.eclipse.equinox.jmx.vm 1.0.0.v20070515 org.eclipse.birt.report.data.oda.jdbc.ui 2.3.0.v20080606 org.eclipse.equinox.ds 1.0.0.v20080427-0830 org.eclipse.mylyn.bugzilla.ui 3.0.1.v20080721-2100-e3x org.eclipse.equinox.http.jetty 2.0.0.v20080425 org.eclipse.mylyn.team.ui 3.0.2.v20080918-1100-e3x org.python.pydev.jython 1.2.4 org.eclipse.birt.chart.device.svg 2.3.0.v20080526 org.python.pydev.parser 1.0.5 org.eclipse.ui.presentations.r21 3.2.100.I20080512-2000 org.eclipse.mylyn 3.0.0.v20080619-1900 org.eclipse.m2m.qvt.oml.doc 1.0.0.v20080611-1330 org.eclipse.team.svn.nl1.sources 0.7.1.I20080612-1500 org.eclipse.mylyn.resources.ui 3.0.0.v20080619-1900 org.eclipse.datatools.enablement.ibm.db2.luw 1.0.0.v200805152355 org.python.pydev.core 1.3.1 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.1 org.eclipse.ecf.provider.filetransfer 2.0.0.v20080611-1715 org.eclipse.emf.cdo.tests.mango.edit 1.0.0.v200806180411 org.python.pydev.parser 1.2.9 org.eclipse.m2m.qvt.oml.emf.util 1.0.0.v20080611-1330 org.eclipse.team.cvs.ssh 3.2.100.I20080604 org.python.pydev.jython 1.3.19 org.python.pydev.jython 1.0.8 org.python.pydev.ast 1.2.1 org.eclipse.m2m.qvt.oml.project 1.0.0.v20080611-1330 com.instantiations.assist.eclipse.core.ui 5.5.1 org.eclipse.datatools.enablement.ibm.db2.zseries.dbdefinition 1.0.0.v200805152355 org.eclipse.datatools.enablement.ibm.db2.iseries 1.0.0.v200805152355 com.swtdesigner.fragment.jdt.core 6.7.1.200809050053 org.eclipse.equinox.device 1.0.1.v20080303 org.eclipse.equinox.http.jetty 1.1.0.v20080425 org.eclipse.emf.cdo.tests.model3 1.0.0.v200806180411 org.eclipse.emf.teneo.hibernate.mapper 1.0.0.v200806111928 org.eclipse.compare 3.4.0.I20080604 org.polarion.eclipse.team.svn.connector.javahl 2.0.1.I20080612-1500 org.eclipse.gmf.runtime.diagram.ui.geoshapes 1.1.0.v20080503-1740 org.eclipse.emf.mint.ui 0.7.0.v200806172223 org.eclipse.ui.win32 3.2.100.v20080408-0800 org.eclipse.jet.source 0.9.0.v20080516 org.python.pydev 1.3.17 com.windowtester.runtime.junit4 3.5.1.200809042232 org.eclipse.ecf.examples.remoteservices.server 1.0.100.v20080623-0046 org.eclipse.text 3.4.0.v20080605-1800 org.eclipse.uml2.diagram.common 0.8.0.v200806112132 org.eclipse.datatools.connectivity.sqm.core.ui 1.1.0.v200806070326 org.python.pydev.core 0.9.7.99 org.eclipse.net4j.jms 1.0.0.v200806180305 org.junit4 4.3.1 org.eclipse.epp.usagedata.recording 1.0.0.R200806162215 org.eclipse.buckminster.remote 1.0.0.r09326 org.eclipse.gmf.tooling 2.1.0.v20080425-1959 org.eclipse.emf.cdo.tests.model2 1.0.0.v200806180411 org.eclipse.emf.ecore.sdo.editor 2.4.0.v200806091234 com.instantiations.swt.graph 5.5.0 org.eclipse.uml2.search 0.7.0.v200806130939 org.python.pydev 1.3.5 org.python.pydev.ast 1.3.3 org.eclipse.datatools.enablement.msft.sqlserver 1.0.1.v200805152355 org.python.pydev.parser 1.3.11 org.eclipse.datatools.enablement.sap.maxdb.dbdefinition 1.0.0.v200805152355 com.windowtester.swing.recorder 3.5.0.200806270034 org.eclipse.gmf.runtime.common.ui.printing.win32 1.1.0.v20080612-1355 org.python.pydev.ast 1.3.20 org.eclipse.wst.common.snippets 1.1.200.v200805140415 org.eclipse.mylyn.commons.core 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.tasks.core 3.0.2.v20080918-1100-e3x org.eclipse.jdt.doc.user 3.4.0.v20080612-1340 org.eclipse.birt.chart.ui 2.3.0.v20080522 org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb 2.3.0.v20080606 org.eclipse.uml2.diagram.examples.clazz 0.8.0.v200806112132 org.eclipse.ecf.provider.msn.ui 1.3.0.v20080623-0046 org.python.pydev.parser 1.3.3 org.eclipse.ui.ide.application 1.0.0.I20080603-2000 org.python.pydev.ast 1.0.6 org.eclipse.equinox.jsp.jasper.registry 1.0.0.v20080427-0830 org.eclipse.equinox.p2.engine 1.0.0.v20080522-1735 com.nordea.cd.dev.plugin.builderruntime 1.0.2 com.instantiations.assist.eclipse.core 5.5.1 org.eclipse.m2m.qvt.oml 1.0.0.v20080611-1330 org.eclipse.mylyn.commons.ui 3.0.1.v20080721-2100-e3x org.eclipse.update.core.win32 3.2.100.v20080107 org.eclipse.datatools.sqltools.db.derby 1.0.0.v200805152355 com.instantiations.assist.eclipse.admin 5.5.0 org.eclipse.ecf.telephony.call 1.2.0.v20080623-0046 org.eclipse.mylyn.monitor.core 3.0.0.v20080619-1900 org.eclipse.epp.usagedata.ui 1.0.0.R200806162215 org.eclipse.ui.ide 3.4.0.I20080606-1300 org.eclipse.hyades.lta.sdb 4.5.0.v200806051823 org.eclipse.birt.report.model.adapter.oda 2.3.0.v20080523 org.eclipse.emf.compare.doc 0.8.0.v200806180301 org.eclipse.equinox.servletbridge 1.0.100.v20080427-0830 com.instantiations.common.help 5.3.2.200809042027 org.eclipse.jdt.core 3.4.0.v_874 org.eclipse.equinox.p2.director 1.0.0.v20080604 org.eclipse.gmf.runtime.emf.ui.properties 1.1.0.v20080425-1959 org.eclipse.emf.exporter 2.4.0.v200806091234 org.python.pydev.core 1.3.7 org.eclipse.uml2.diagram.def 0.8.0.v200806112132 org.python.pydev.parser 1.2.1 org.eclipse.wst.command.env.ui 1.1.0.v200805140415 org.eclipse.wst.common.modulecore 1.1.200.v200806091800 org.python.pydev 0.9.7 org.eclipse.gmf.graphdef.edit 2.0.100.v20080610-1132 org.eclipse.birt.report.designer.ui.cubebuilder 2.3.0.v20080606 org.eclipse.m2m.atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.actions 1.1.0.v20080603-1553 com.instantiations.common.core 5.3.2.200806270030 org.eclipse.datatools.enablement.ibm.informix 1.0.0.v200805152355 org.eclipse.net4j.tcp 1.0.0.v200806180305 org.eclipse.wst.common.environment 1.0.202.v200807161459 com.instantiations.common.core 5.3.2.200809042027 org.eclipse.birt.report.data.oda.xml 2.3.0.v20080606 org.eclipse.pde.api.tools.ui 1.0.0.v20080603 org.eclipse.debug.ui 3.4.0.v20080529-1300 org.python.pydev 1.2.2 org.eclipse.team.svn.ui.nl1 0.7.1.I20080612-1500 org.apache.batik.transcoder 1.6.0.v200805290154 org.eclipse.emf.ecore.sdo.edit 2.4.0.v200806091234 org.python.pydev.parser 1.3.16 org.eclipse.wst.command.env.ui 1.1.1.v200807162242 org.eclipse.uml2.diagram.codegen.edit 0.8.0.v200806112132 org.eclipse.datatools.connectivity.db.generic.ui 1.0.1.v200805152355 org.eclipse.mylyn.resources.ui 3.0.2.v20080918-1100-e3x org.python.pydev.ast 1.3.8 org.python.pydev 1.3.0 org.eclipse.net4j.db 1.0.0.v200806180305 org.python.pydev.ast 1.3.15 org.eclipse.uml2.codegen.ecore 1.4.0.v200805201126 org.eclipse.gmf.sdk 1.0.0.v20080425-1959 org.eclipse.equinox.p2.core 1.0.0.v20080530-1237 org.python.pydev.jython 1.3.10 org.eclipse.emf.cdo 1.0.0.v200806180411 org.eclipse.emf.search.genmodel 0.7.0.v200806130939 org.eclipse.ui.navigator 3.3.100.I20080606-1300 org.eclipse.team.svn.mylyn 0.7.1.I20080612-1500 org.python.pydev.core 1.2.5 org.eclipse.tptp.platform.lta.la.core 4.5.0.v200805132041 org.eclipse.wst.sse.core 1.1.301.v200808072008 org.eclipse.tptp.platform.lta.log.views 4.5.0.v200806051823 org.eclipse.mylyn.java.ui 3.0.2.v20080918-1100-e3x org.eclipse.emf.search.codegen 0.7.0.v200806130939 com.instantiations.common.ui 5.3.2.200806270030 org.eclipse.ecf 2.0.0.v20080611-1715 org.eclipse.equinox.p2.ui.sdk 1.0.0.v20080605-1731 org.apache.commons.discovery 0.2.0.v200806030120 org.eclipse.datatools.help 1.5.0.v200805152355 org.python.pydev.parser 0.9.7.99 org.w3c.css.sac 1.3.0.v200805290154 org.eclipse.jet.examples 0.9.0.v20080211 org.eclipse.mylyn.bugzilla.ide 3.0.2.v20080918-1100-e3x org.eclipse.pde.junit.runtime 3.4.0.v20080529-1800 org.eclipse.emf.commonj.sdo 2.4.0.v200806091234 org.python.pydev.jython 1.2.1 com.instantiations.tools 5.3.2.200806270030 com.windowtester.runtime 3.5.1.200809042232 org.eclipse.wst.validation 1.2.0.v200806051402 org.eclipse.ecf.docshare 2.0.0.v20080623-0046 com.instantiations.eclipse.model.jsp 5.5.1 org.eclipse.emf.teneo.hibernate.eclipse 1.0.0.v200806111928 com.jcraft.jsch 0.1.37.v200803061811 org.python.pydev.parser 1.0.6 org.eclipse.emf.converter 2.4.0.v200806091234 org.eclipse.equinox.common 3.4.0.v20080421-2006 org.eclipse.buckminster.ui 1.0.0.r09319 org.eclipse.datatools.sqltools.tablewizard 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.0 org.eclipse.uml2.source 2.2.0.v200805201126 org.eclipse.team.cvs.ui 3.3.100.I20080604 org.python.pydev.jython 1.3.3 org.eclipse.emf.search.ocl 0.7.0.v200806130939 org.eclipse.datatools.enablement.sybase.asa.models 1.0.0.v200805152355 org.eclipse.sdk 3.4.0.v200806172000 org.eclipse.xsd.ecore.exporter 2.4.0.v200806091234 org.apache.commons.codec 1.3.0.v20080530-1600 org.eclipse.equinox.p2.exemplarysetup 1.0.0.v20080427-2136 org.eclipse.equinox.io 1.0.0.v20080218 org.eclipse.wst.common.project.facet.core 1.3.0.v200805140020 org.eclipse.wst.common.ui 1.1.301.v200805140415 org.eclipse.emf.databinding.edit 1.0.0.v200806091234 org.mortbay.jetty.server 6.1.7.v200806031612 org.eclipse.wst.dtd.core 1.1.200.v200805140200 org.python.pydev 1.0.6 org.eclipse.uml2.diagram.activity 0.8.0.v200806112132 org.eclipse.emf.importer.rose 2.4.0.v200806091234 org.eclipse.core.net.win32.x86 1.0.0.I20080521 javax.activation 1.1.0.v200804101140 org.python.pydev.core 1.3.15 org.python.pydev.parser 1.3.8 com.instantiations.assist.eclipse.coverage.ui 5.5.1.200809042337 org.eclipse.emf.ecoretools.filters 0.8.0.v200806130600 org.python.pydev.ast 1.3.0 org.eclipse.birt.report.data.oda.xml.ui 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase 1.0.1.v200805310538 org.python.pydev 1.3.8 org.eclipse.equinox.ip 1.0.0.v20080218 org.eclipse.datatools.connectivity.console.profile 1.0.0.v200805231345 org.eclipse.ecf.sharedobject 1.3.0.v20080623-0046 org.eclipse.debug.core 3.4.0.v20080612 org.eclipse.wst.xmleditor.doc.user 1.0.400.v200805211530 org.eclipse.datatools.enablement.sap.maxdb 1.0.0.v200805152355 org.python.pydev.ast 0.9.7 com.windowtester.swt.runtime.legacy 3.5.0.200806270034 org.eclipse.equinox.simpleconfigurator.manipulator 1.0.0.v20080427-2136 org.eclipse.equinox.p2.touchpoint.eclipse 1.0.0.v20080529-1225 com.instantiations.swt.graph 5.5.1 org.eclipse.gmf.doc 1.2.0.v20080516-1143 org.python.pydev 1.3.20 com.windowtester.swing.runtime 3.5.1.200809042232 org.eclipse.datatools.enablement.ibm.db2.iseries.ui 1.0.0.v200805160737 org.eclipse.datatools.connectivity.oda.profile 3.0.6.v200805152355 org.eclipse.mylyn.pde.ui 3.0.2.v20080918-1100-e3x org.eclipse.mylyn.commons.ui 3.0.0.v20080619-1900 org.eclipse.emf.workspace.source 1.2.0.v200805130238-23-8s733I3C59379I org.eclipse.core.boot 3.1.100.v20080218 org.python.pydev.ast 1.2.2 org.eclipse.birt.doc 2.3.0.v20080617a com.instantiations.assist.eclipse.core.ui 5.5.0 org.python.pydev.jython 1.3.18 org.python.pydev.jython 1.0.5 org.eclipse.emf.validation 1.2.0.v200805170232 org.eclipse.equinox.jmx.client.rmi 1.0.0 org.eclipse.emf.mapping.ecore 2.4.0.v200806091234 com.instantiations.assist.eclipse.coverage 5.5.1.200809042337 com.instantiations.helpeditor.ui 1.3.4.200806270212 org.eclipse.emf.edit.ui 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editor.script 2.3.0.v200806102 org.eclipse.gmf.ecore.editor 2.0.100.v20080610-1132 com.windowtester.swt.recorder 3.5.1.200809042232 org.eclipse.uml2.diagram.source 0.8.0.v200806112132 org.eclipse.equinox.util 1.0.0.v20080414 org.eclipse.ecf.examples.source 2.0.0.v20080623-0046 org.eclipse.emf.mapping.xsd2ecore.editor 2.4.0.v200806091234 org.eclipse.pde.p2.ui 1.0.0.v20080604-2000 org.eclipse.birt.resources 2.3.0.v20080313 org.eclipse.emf.query.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.emf.ecore.change.edit 2.4.0.v200806091234 org.eclipse.datatools.sqltools.editor.core 1.0.0.v200805152355 org.polarion.eclipse.team.svn.connector.svnkit 2.0.1.I20080612-1500 org.eclipse.buckminster.download 1.1.0.r09319 com.swtdesigner 6.7.0.200806270151 org.python.pydev.parser 1.3.2 org.eclipse.jdt.compiler.apt 1.0.100.v20080513-1235 org.python.pydev.ast 1.0.7 com.windowtester.swt.gef.codegen 3.5.0.200806270034 org.eclipse.emf.ecore 2.4.0.v200806091234 org.eclipse.birt.report.designer.ui.editors.schematic 2.3.0.v200806102 org.eclipse.pde.build 3.4.0.v20080604 com.instantiations.assist.eclipse 5.5.1 org.eclipse.birt.report.designer.ui.editor.xml.wtp 2.3.0.v200806102 org.eclipse.emf.cdo.tests.model1.edit 1.0.0.v200806180411 org.python.pydev 0.9.8 javax.xml 1.3.4.v200806030440 org.python.pydev 0.4.2 org.polarion.eclipse.team.svn.connector.javahl.win32 2.0.1.I20080612-1500 org.apache.ws.commons.util 1.0.0.v20080530-1550 org.apache.batik.bridge 1.6.0.v200805290154 org.eclipse.emf.search 0.7.0.v200806130939 org.eclipse.datatools.sqltools.parsers.sql.xml.query 1.0.0.v200805152355 org.eclipse.team.core 3.4.0.I20080605 org.eclipse.tptp.platform.execution 4.4.100.v200806050100 org.eclipse.uml2.diagram.parser 0.8.0.v200806112132 org.eclipse.birt.report.item.crosstab.core 2.3.0.v20080606 org.python.pydev.core 0.9.8 org.eclipse.uml2.search.common.ui 0.7.0.v200806130939 org.eclipse.mylyn.ide.ui 3.0.0.v20080619-1900 org.eclipse.xsd.cheatsheets 2.3.0.v200806091234 org.eclipse.wst.xsd.core 1.1.300.v200805282012 org.eclipse.net4j.http 1.0.0.v200806180305 org.python.pydev.core 1.3.6 org.eclipse.ui.externaltools 3.2.0.v20080514-1542 org.eclipse.birt.report.engine.emitter.prototype.excel 2.3.0.v20080606 org.python.pydev.parser 1.3.17 com.instantiations.eclipse.util 5.3.2.200806270030 org.eclipse.ui.editors 3.4.0.v20080603-2000 org.eclipse.buckminster.slf4j 1.0.0 org.python.pydev.ast 1.3.9 org.eclipse.gef.source 3.4.0.v20080115-677-8082A5696H274A org.python.pydev.core 1.0.8 org.python.pydev.ast 1.3.14 org.eclipse.team.ui 3.4.0.I20080604 org.eclipse.emf.query.ocl.source 1.2.0.v200805130238-11-7w311916241349 com.windowtester.swt.runtime 3.5.0.200806270034 org.eclipse.osgi.jmx 1.0.0.v20080610-1530 org.eclipse.net4j.examples.source 1.0.0.v200806180305 org.eclipse.tptp.monitoring.lta.symptom.doc.user 4.5.0.v200805132041 org.eclipse.equinox.p2.updatechecker 1.0.0.v20080427-2136 org.eclipse.ui.views 3.3.0.I20080509-2000 org.eclipse.emf.search.ocl.ui 0.7.0.v200806130939 javax.mail 1.4.0.v200804091730 ch.ethz.iks.slp 1.0.0.RC4_v200806091030 org.eclipse.core.resources.jmx 1.0.0.v20070510 javax.wsdl 1.4.0.v200806030407 org.eclipse.wst.xml.ui 1.0.401.v200807240448 org.python.pydev 1.2.1 org.eclipse.birt.chart.ui.extension 2.3.0.v20080610 org.python.pydev.core 0.9.8.3 org.python.pydev.parser 0.9.7 org.eclipse.jem.util 2.0.100.v200805140020 org.eclipse.tptp.monitoring.lta.la.core 4.5.0.v200805270100 org.python.pydev.core 0.9.8.2 org.eclipse.jdt.junit.runtime 3.3.0.v20080603-2000 org.python.pydev.core 1.2.4 org.python.pydev.core 0.9.8.1 org.eclipse.ecf.discovery 2.0.0.v20080623-0046 org.apache.xml.serializer 2.7.1.v200806030322 org.python.pydev.core 0.9.8.7 org.python.pydev.core 0.9.8.6 org.eclipse.gmf.runtime.draw2d.ui.render.awt 1.1.0.v20080603-1553 com.windowtester.eclipse.help 3.5.1.200809042232 org.python.pydev.core 0.9.8.5 org.python.pydev.core 0.9.8.4 org.python.pydev 0.9.8.7 org.eclipse.birt.report.engine.emitter.ppt 2.3.0.v20080606 org.apache.commons.httpclient 3.1.0.v20080605-1935 com.windowtester.runtime.legacy 3.5.0.200806270034 org.eclipse.datatools.enablement.oda.xml.ui 1.1.0.v200805270900 org.python.pydev 0.9.8.3 org.eclipse.mylyn.compatibility 3.0.2.v20080918-1100-e3x org.python.pydev 0.9.8.4 org.python.pydev 0.9.8.5 org.eclipse.wst.common.project.facet.ui 1.3.0.v200805281731 org.eclipse.gmf.tooldef 2.0.0.v20080417-1610 org.python.pydev 0.9.8.6 org.eclipse.core.commands 3.4.0.I20080509-2000 org.python.pydev.jython 1.3.9 org.eclipse.datatools.modelbase.sql.edit 1.0.0.v200805152355 org.python.pydev 0.9.8.2 org.python.pydev 0.9.8.1 org.eclipse.emf.cdo.server.hibernate.libraries 1.0.0.v200806180411 org.eclipse.equinox.p2.ui.admin 1.0.0.v20080522-1735 org.eclipse.wst.common.core 1.1.201.v200806010600 org.eclipse.emf.compare.diff.edit 0.8.0.v200806180301 com.swtdesigner.layout.group.designer 6.7.0.200806270151 org.eclipse.ui.views.properties.tabbed 3.4.0.I20080527-2000 org.python.pydev.jython 1.2.2 org.eclipse.wst.common.emf 1.1.200.v200805140020 com.instantiations.packager.refactoring 2.5.1 com.instantiations.assist.eclipse.fragment.jdt 5.5.1 org.eclipse.datatools.connectivity.dbdefinition.genericJDBC 1.0.0.v200805152355 org.python.pydev.parser 1.0.7 org.eclipse.datatools.sqltools.data.ui 1.1.0.v200805310400 org.eclipse.buckminster.core 1.1.0.r09336 org.eclipse.mylyn.tasks.core 3.0.1.v20080721-2100-e3x org.eclipse.birt.report.designer.ui.samplesview 2.3.0.v20080606 org.eclipse.equinox.launcher 1.0.100.v20080509-1800 org.eclipse.birt.report.item.crosstab.ui 2.3.0.v20080606 org.eclipse.m2m.atl.adt.perspective 2.0.0.v200806101117 javax.servlet.jsp 2.0.0.v200806031607 com.swtdesigner 6.7.1.200809050053 org.eclipse.jet.ui 0.9.0.v20080527 org.eclipse.m2m.qvt.oml.common.ui 1.0.0.v20080611-1330 com.swtdesigner.layout.group 6.7.1.200809050053 org.eclipse.gmf.runtime.common.ui.services.action 1.1.0.v20080507-2230 org.eclipse.emf.search.ecore.ui 0.7.0.v200806130939 org.python.pydev 1.0.5 org.eclipse.emf.workspace.ui 1.2.0.v200805130238 com.instantiations.helpeditor.core.toc 1.3.4.200809042225 org.slf4j.extendable 1.4.3 org.python.pydev.core 1.3.14 org.eclipse.hyades.logging.core 4.3.200.v200804110100 org.eclipse.datatools.enablement.postgresql.ui 1.0.0.v200806060334 org.eclipse.gmf.graphdef 2.0.100.v20080528-1052 org.eclipse.mylyn.help.ui 3.0.2.v20080918-1100-e3x org.eclipse.ecf.protocol.bittorrent 0.3.0 org.eclipse.birt.report.engine 2.3.0.v20080616 org.eclipse.datatools.connectivity.ui.dse 1.1.0.v200805152355 org.eclipse.mylyn.bugzilla.core 3.0.0.v20080619-1900 org.python.pydev.jython 1.3.4 org.python.pydev 0.9.0 org.eclipse.equinox.preferences.jmx 1.0.0.v20070510 com.instantiations.assist.eclipse.fragment.jdt.core 5.5.1 org.eclipse.datatools.enablement.postgresql.dbdefinition 1.0.0.v200805152355 org.eclipse.m2m.qvt.oml.common.source 1.0.0.v20080611-1330-4--_kE77c7UAA3AII7 org.eclipse.tptp.monitoring.lta.logui 4.5.0.v200805141427 org.eclipse.birt.report.debug.ui 2.3.0.v200806102 org.eclipse.gmf.runtime.emf.ui 1.1.0.v20080516-1748 org.eclipse.ui.cheatsheets 3.3.100.v20080508 org.python.pydev 1.2.9 org.eclipse.birt.report.engine.emitter.wpml 2.3.0.v20080606 org.eclipse.help.appserver 3.1.300.v20080507 org.python.pydev.parser 1.3.9 com.xored.composer.ui 1.3.4.200806270212 org.eclipse.datatools.sqltools.tabledataeditor 1.0.0.v200805240400 org.eclipse.gmf.runtime.emf.type.core 1.1.0.v20080425-1959 org.python.pydev 1.3.7 com.ibm.icu.base 3.8.1.v20080530 org.python.pydev.ast 1.3.1 org.apache.batik.pdf 1.6.0.v200806031500 org.eclipse.emf.mapping.ui 2.4.0.v200806091234 org.eclipse.net4j.db.derby 1.0.0.v200806180305 org.eclipse.net4j.http.server 1.0.0.v200806180305 org.python.pydev.jython 1.3.17 org.python.pydev.jython 1.0.6 org.python.pydev.ast 1.2.3 org.eclipse.team.svn.sources 0.7.1.I20080612-1500 org.eclipse.uml2.diagram.usecase 0.8.0.v200806112132 org.eclipse.wst.sse.core 1.1.300.v200805221633 org.eclipse.birt.report.designer.ui 2.3.0.v20080606 org.eclipse.jdt.apt.ui 3.3.100.v20080407-1345 com.instantiations.eclipse.debug 5.3.2.200809042027 org.eclipse.gmf.codegen.ui 1.1.0.v20080512-1200 com.instantiations.designer.databinding 6.7.1.200809050053 org.python.pydev.core 1.0.1 com.windowtester.swt.runtime.gef 3.5.0.200806270034 com.instantiations.common.ui 5.3.2.200809042027 org.python.pydev 1.3.19 org.eclipse.ui.forms 3.3.100.v20080611 org.eclipse.birt.data 2.3.0.v20080606 org.eclipse.datatools.enablement.sybase.ase.ui 1.0.1.v200805310538 org.polarion.eclipse.team.svn.connector 2.0.1.I20080612-1500 org.eclipse.emf.common.ui 2.4.0.v200806091234 org.eclipse.datatools.enablement.ibm.informix.dbdefinition 1.0.0.v200805152355 org.eclipse.wst.xsdeditor.doc.user 1.0.400.v200805150028 org.eclipse.emf.mint.doc 0.7.0.v200806172223 org.eclipse.buckminster.generic 1.0.0.r09319 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.1 org.eclipse.emf.validation.examples 1.2.0.v200805280204 org.eclipse.team.svn.core 0.7.1.I20080612-1500 org.python.pydev.ast 1.2.4 org.eclipse.emf.cdo.server.hibernate 1.0.0.v200806180411 org.python.pydev.jython 1.3.8 org.eclipse.gmf.xpand 1.1.0.v20080528-1052 org.eclipse.datatools.sqltools.data.core 1.0.0.v200805152355 org.eclipse.emf.ecoretools 0.8.0.v200806130600 org.python.pydev.core 1.3.18 org.eclipse.gmf.runtime.common.core 1.1.0.v20080425-1959 org.eclipse.emf 2.4.0.v200806091234 org.eclipse.emf.ecoretools.properties 0.8.0.v200806130600 org.python.pydev.core 1.2.7 org.python.pydev.parser 0.9.8 org.eclipse.datatools.enablement.ibm.db2.luw.ui 1.0.0.v200805160737 org.eclipse.mylyn.team.ui 3.0.0.v20080619-1900 org.eclipse.help.base 3.3.100.v20080617 org.eclipse.m2m.atl.doc 2.0.0.v200806101117 org.eclipse.net4j.examples 1.0.0.v200806180305 org.eclipse.birt.data.aggregation 2.3.0.v20080606 org.eclipse.gmf.examples 1.0.100.v20080425-1959 org.eclipse.emf.search.common 0.7.0.v200806130939 org.python.pydev.ast 1.3.17 org.eclipse.ecf.provider.filetransfer.ssl 1.0.0.v20080611-1715 org.python.pydev.core 1.0.3 org.eclipse.team.svn.core.nl1 0.7.1.I20080612-1500 org.eclipse.emf.cdo.server.hibernate.teneo 1.0.0.v200806180411 org.eclipse.wst.validation.ui 1.2.1.v200807292117 org.python.pydev.parser 1.0.3 org.python.pydev.ast 1.3.6 org.eclipse.search 3.4.0.v20080603-2000 org.eclipse.jet 0.9.0.v20080527 org.python.pydev 1.3.2 org.python.pydev.jython 1.2.6 org.python.pydev.parser 1.3.14 org.eclipse.datatools.oda.cshelp 1.0.0.v200805152355 org.eclipse.jdt.junit 3.4.0.v20080603-2000 org.eclipse.datatools.sqltools.debugger.core 1.0.0.v200805152355 org.mortbay.jetty 5.1.14.v200806031611 org.eclipse.equinox.p2.garbagecollector 1.0.0.v20080506-1939 org.eclipse.m2m.atl.adt.debug 2.0.0.v200806101117 org.eclipse.equinox.jmx.client 1.0.0.v20070515 org.python.pydev.core 1.3.5 org.eclipse.mylyn.bugzilla.core 3.0.1.v20080721-2100-e3x org.python.pydev.parser 0.9.8.3 org.python.pydev.parser 0.9.8.2 org.python.pydev.parser 0.9.8.1 org.eclipse.osgi.services 3.1.200.v20071203 org.python.pydev 1.0.4 org.eclipse.hyades.lta.logging.adapter 4.5.0.v200806121215 org.eclipse.datatools.sqltools.sqleditor 1.0.0.v200805152355 org.python.pydev.parser 0.9.8.7 org.python.pydev.parser 0.9.8.6 org.eclipse.gmf.runtime.emf.core 1.1.0.v20080425-1959 org.python.pydev.parser 0.9.8.5 org.eclipse.core.contenttype 3.3.0.v20080604-1400 org.eclipse.ecf.datashare 1.3.0.v20080623-0046 org.python.pydev.parser 0.9.8.4 org.eclipse.tptp.platform.common.ui 4.4.100.v200806110100 org.junit 3.8.2.v20080602-1318 com.instantiations.assist.eclipse.coverage 5.5.0.200806270255 javax.activation 1.1.0.v200806101325 com.instantiations.assist.eclipse.scheduler 5.5.1 javax.management 1.2.0.v200803061811 org.eclipse.emf.edit 2.4.0.v200806091234 org.eclipse.ecf.provider.discovery 2.0.0.v20080623-0046 org.eclipse.birt.chart.device.pdf 2.3.0.v20080417 org.eclipse.equinox.wireadmin 1.0.0.v20080407 org.python.pydev.ast 1.0.8 org.eclipse.net4j.buddies.server 1.0.0.v200806180305 org.eclipse.wst.internet.cache 1.0.301.v200805140020 com.windowtester.runtime 3.5.0.200806270034 org.mx4j.jmx 3.0.3.v200802291451 org.eclipse.pde.ui 3.4.0.v20080530 org.eclipse.ocl 1.2.0.v200806091438 org.eclipse.birt.cshelp 2.3.0.v20080617 org.eclipse.emf.query.doc 1.2.0.v200805130238 org.eclipse.pde.runtime 3.4.0.v20080530-1200 org.apache.axis 1.4.0.v200807230600 org.apache.log4j 1.2.13.v200806030600 org.eclipse.ui.intro 3.2.200.v20080610 com.instantiations.assist.eclipse.pattern 5.5.1 com.xored.swt.composer 1.3.4.200806270212 org.apache.batik.ext.awt 1.6.0.v200805290154 org.eclipse.emf.cdo.ui 1.0.0.v200806180411 org.eclipse.jface 3.4.0.I20080606-1300 com.windowtester.swt.runtime.gef 3.5.1.200809042232 org.eclipse.gmf.runtime.emf.type.ui 1.1.0.v20080425-1959 org.eclipse.uml2.uml 2.2.0.v200805141133 org.objectweb.asm 3.0.0.v200803061811 org.python.pydev.core 1.1.0 org.eclipse.ecf.discovery.ui 2.0.0.v20080623-0046 org.python.pydev 1.3.14 org.eclipse.gmf.runtime.diagram.ui.printing 1.1.0.v20080501-1739 org.eclipse.mylyn.ide.ant 3.0.2.v20080918-1100-e3x org.eclipse.xsd.example.installer 1.0.0.v200806091234 org.eclipse.uml2.diagram.examples.profile 0.8.0.v200806112132 org.eclipse.ui.intro.universal 3.2.200.v20080508 org.python.pydev.ast 0.9.7.99 org.eclipse.emf.codegen 2.4.0.v200806091234 org.eclipse.equinox.p2.metadata 1.0.0.v20080514-1900 org.eclipse.ecf.example.collab 1.3.0.v20080623-0046 org.python.pydev.parser 1.2.4 org.eclipse.birt.report.engine.emitter.html 2.3.0.v20080606 org.python.pydev.jython 1.3.16 org.eclipse.osgi 3.4.0.v20080605-1900 org.eclipse.emf.databinding 1.0.0.v200806091234 org.eclipse.help 3.3.100.v20080610 org.eclipse.net4j.db.hsqldb 1.0.0.v200806180305 org.eclipse.gmf.runtime.diagram.ui.dnd 1.1.0.v20080425-1959 org.eclipse.birt.report.model 2.3.0.v20080605 org.eclipse.datatools.enablement.finfo 1.5.1.v200805152355 org.eclipse.jsch.ui 1.1.100.I20080415 org.python.pydev 1.3.10 org.python.pydev.parser 1.3.6 org.eclipse.emf.mapping.ecore.editor 2.4.0.v200806091234 org.eclipse.datatools.sqltools.common.ui 1.0.0.v200805152355 org.eclipse.birt.report.engine.emitter.pdf 2.3.0.v20080606 org.python.pydev 1.2.8 com.instantiations.packager.help 2.5.1 org.eclipse.equinox.p2.directorywatcher 1.0.0.v20080505-1850 org.eclipse.draw2d 3.4.0.v20080529 org.eclipse.draw2d.source 3.4.0.v20080115-33-7w3119163_ org.eclipse.ecf.ui 2.0.0.v20080623-0046 org.eclipse.birt.report.data.oda.jdbc.dbprofile 2.3.0.v20080606 org.eclipse.equinox.security.win32.x86 1.0.0.v20080529-1600 org.eclipse.wst.xml.ui 1.0.400.v200806051910 org.eclipse.jdt.ui 3.4.0.v20080603-2000 org.eclipse.equinox.p2.ui 1.0.0.v20080530-1237 org.eclipse.hyades.lta.logging.adapter.ui 4.5.0.v200805132041 org.eclipse.mylyn.monitor.ui 3.0.0.v20080619-1900 org.python.pydev 0.9.1 org.eclipse.emf.ecore.sdo.doc 2.4.0.v200806091234 com.instantiations.eclipse.ast.editor 5.5.1 org.eclipse.ant.ui 3.3.0.v20080529 org.python.pydev.core 1.3.13 org.eclipse.gef.doc.isv 3.4.0.v20080606 org.apache.xml.resolver 1.2.0.v200806030312 org.eclipse.datatools.enablement.ibm.db2.iseries.dbdefinition 1.0.0.v200806100223 org.eclipse.birt 2.3.0.v20080304 org.eclipse.equinox.security 1.0.0.v20080512-1800 com.instantiations.tools 5.3.2.200809042027 org.eclipse.jdt.core.manipulation 1.2.0.v20080603-2000 org.eclipse.gmf.runtime.diagram.ui.printing.render 1.1.0.v20080425-1959 org.eclipse.net4j.buddies.ui 1.0.0.v200806180305 org.eclipse.emf.codegen.ui 2.4.0.v200806091234 org.eclipse.team.svn 0.7.1.I20080612-1500 org.eclipse.wst.command.env.infopop 1.0.100.v200805301544 org.eclipse.datatools.enablement.hsqldb.dbdefinition 1.0.0.v200805152355 org.eclipse.gmf.runtime.common.ui.services.properties 1.1.0.v20080425-1959 org.eclipse.emf.cheatsheets 2.4.0.v200806091234 org.eclipse.ecf.presence.collab.ui 1.2.0.v20080623-0046 org.eclipse.update.core 3.2.200.v20080515 org.eclipse.wst.command.env.core 1.0.204.v200805140020 org.apache.batik.swing 1.6.0.v200805290154 org.eclipse.birt.report.designer.samplereports 2.3.0.v20080606 org.python.pydev.parser 1.0.8 org.eclipse.xsd 2.4.0.v200806091234 com.instantiations.assist.eclipse.fragment.jdt 5.5.0 org.eclipse.emf.transaction 1.2.0.v200805130238 org.eclipse.mylyn.team.cvs 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.ui 1.0.0.v20080611-1330 org.eclipse.emf.validation.source 1.2.0.v200805130238-35-9oA55S5J8H5ADM org.eclipse.datatools.enablement.hsqldb 1.0.0.v200805152355 org.eclipse.wst.common.uriresolver 1.1.301.v200805140415 org.eclipse.equinox.jsp.jasper 1.0.100.v20080427-0830 org.eclipse.osgi.util 3.1.300.v20080303 org.eclipse.datatools.connectivity.oda.consumer 3.1.2.v200805230718 org.eclipse.emf.compare.source 0.8.0.v200806180301 org.python.pydev.core 1.3.19 org.eclipse.emf.query.examples 1.2.0.v200805130238 org.eclipse.buckminster.runtime 1.1.0.r09338 org.eclipse.datatools.enablement.sybase.asa.dbdefinition 1.0.0.v200805240040 org.eclipse.datatools.sqltools.sql 1.0.0.v200805152355 org.apache.batik.svggen 1.6.0.v200805290154 org.eclipse.buckminster.cvs 1.0.0.r09319 org.python.pydev.core 1.2.6 org.eclipse.equinox.simpleconfigurator 1.0.0.v20080604 org.eclipse.help.ui 3.3.100.v20080521 org.apache.batik.dom 1.6.0.v200805290154 org.python.pydev.parser 1.1.0 org.eclipse.ecf.server.generic 1.2.0.v20080623-0046 com.windowtester.swt.runtime.win32 3.5.0.200806270034 org.eclipse.emf.cdo.examples 1.0.0.v200806180411 org.eclipse.ecf.provider.remoteservice 1.3.0.v20080623-0046 org.eclipse.gmf.runtime.notation.edit 1.1.0.v20080507-1326 org.eclipse.core.filesystem 1.2.0.v20080604-1400 org.eclipse.m2m.qvt.oml.runtime.ui 1.0.0.v20080611-1330 org.eclipse.emf.cdo.server.hibernate.source 1.0.0.v200806180411 org.python.pydev.jython 1.3.7 org.eclipse.gmf.codegen.edit 2.1.0.v20080610-1132 org.eclipse.buckminster.pde 1.1.0.r09351 org.python.pydev.ast 1.2.5 org.python.pydev.core 1.0.2 org.python.pydev.ast 1.3.16 org.apache.batik.parser 1.6.0.v200805290154 org.python.pydev.parser 1.0.2 org.eclipse.wst.common.infopop 1.0.100.v200805301550 org.eclipse.ecf.remoteservice 2.0.0.v20080623-0046 org.python.pydev 1.3.1 org.python.pydev.jython 1.2.5 org.eclipse.emf.mapping 2.4.0.v200806091234 org.eclipse.emf.cdo.server.hibernate.id 1.0.0.v200806180411 com.windowtester.runtime.legacy 3.5.1.200809042232 org.python.pydev.ast 1.3.7 org.eclipse.datatools.enablement.oracle 1.0.0.v200805152355 org.python.pydev.parser 1.3.15 org.eclipse.emf.importer 2.4.0.v200806091234 org.eclipse.birt.example 2.3.0.v20080304 org.eclipse.birt.report.designer.ui.lib 2.3.0.v20080606 org.eclipse.emf.cdo.server.source 1.0.0.v200806180411 org.eclipse.gmf.runtime.common.ui.services 1.1.0.v20080612-1229 org.eclipse.datatools.sqltools.db.generic 1.0.0.v200805152355 org.eclipse.net4j 1.0.0.v200806180305 org.eclipse.jdt 3.4.0.v20080603-2000 org.eclipse.emf.cdo.source 1.0.0.v200806180411 org.eclipse.datatools.connectivity 1.1.0.v200805160228 com.instantiations.assist.eclipse.scheduler 5.5.0 org.eclipse.emf.ecore.sdo.source 2.4.0.v200806091234 org.eclipse.wst.sse.doc.user 1.1.0.v200805211530 org.python.pydev 0.9.7.99 org.eclipse.emf.transaction.source 1.2.0.v200805130238-23-8s733I3C59379I org.w3c.dom.svg 1.1.0.v200806040011 org.python.pydev.core 1.3.4 javax.xml.rpc 1.1.0.v200806030420 org.eclipse.ocl.uml.source 1.2.0.v200805130238-11-7w311916241349 com.instantiations.eclipse.ui 5.3.2.200806270030 org.eclipse.jface.text 3.4.0.v20080603-2000 org.apache.batik.xml 1.6.0.v200805290154 org.python.pydev 1.0.3 org.eclipse.gmf.bridge.ui.dashboard 2.0.0.v20080417-1610 org.apache.lucene 1.9.1.v20080530-1600 org.eclipse.emf.query.ocl 1.2.0.v200805130238 org.eclipse.uml2.uml.resources 2.2.0.v200805131030 org.eclipse.ecf.provider.r_osgi 2.0.0.v20080623-0046 org.eclipse.emf.importer.java 2.4.0.v200806091234 org.python.pydev.debug 1.3.20 org.eclipse.emf.ecore.xmi 2.4.0.v200806091234 org.python.pydev.mylyn 0.3.0 com.instantiations.assist.eclipse.pattern 5.5.0 org.eclipse.emf.source 2.4.0.v200806091234 org.eclipse.ui.browser 3.2.200.v20080507 org.eclipse.tptp.lta.sdb.epi 4.5.0.v200805132041 org.eclipse.net4j.doc 1.0.0.v200806180305 org.eclipse.gmf.bridge 1.1.0.v20080528-1052 com.instantiations.assist.eclipse.admin 5.5.1 org.eclipse.ecf.presence 1.3.0.v20080623-0046 org.eclipse.jet.editor 0.9.0.v20080226 org.eclipse.emf.mint 0.7.0.v200806172223 org.eclipse.ecf.provider 1.3.0.v20080623-0046 com.instantiations.assist.eclipse.core.ant 5.5.0 org.apache.axis 1.4.0.v200806030120 org.eclipse.equinox.p2.metadata.repository 1.0.0.v20080604 com.ibm.icu 3.8.1.v20080530 org.eclipse.gmf.runtime.diagram.ui.properties 1.1.0.v20080603-1553 org.eclipse.team.svn.mylyn.source 0.7.1.I20080612-1500 org.eclipse.ecf.provider.datashare 1.3.0.v20080623-0046 org.eclipse.birt.report.data.oda.sampledb 2.3.0.v20080606 org.eclipse.m2m.atl.drivers.emf4atl 2.0.0.v200806101117 org.eclipse.gmf.runtime.diagram.ui.providers.ide 1.1.0.v20080425-1959 org.python.pydev 0.8.0 org.eclipse.datatools.connectivity.sqm.server.ui 1.1.0.v200806050117 com.nordea.cd.dev.plugin.stubbuilder 1.0.2 org.eclipse.emf.mapping.xsd2ecore 2.4.0.v200806091234 org.python.pydev.parser 1.2.5 org.eclipse.xsd.mapping.editor 2.4.0.v200806091234 org.python.pydev.jython 1.3.15 org.eclipse.gmf.xpand.editor 1.0.0.v20080425-1959 org.eclipse.tptp.platform.lta.common 4.5.0.v200806050100 org.eclipse.buckminster.pde.ui 1.0.0.r09319 org.eclipse.emf.validation.ocl 1.2.0.v200805130238 org.eclipse.ui.console 3.3.0.v20080529-1300 org.eclipse.net4j.ui 1.0.0.v200806180305 org.eclipse.emf.workspace 1.2.0.v200805130238 org.python.pydev.ast 0.9.8.6 org.python.pydev.ast 0.9.8.5 org.eclipse.emf.teneo.annotations 1.0.0.v200806111928 org.python.pydev.ast 0.9.8.4 org.eclipse.ui.net 1.0.0.I20080605 org.python.pydev.ast 0.9.8.3 org.eclipse.net4j.db.source 1.0.0.v200806180305 org.eclipse.zest.core 1.0.0.v20080115 org.python.pydev.ast 0.9.8.2 org.eclipse.tptp.lta.log.epi 4.5.0.v200805132041 org.python.pydev.ast 0.9.8.1 org.python.pydev 1.3.13 org.eclipse.equinox.app 1.1.0.v20080421-2006 org.eclipse.equinox.p2.metadata.generator 1.0.0.v20080604 org.python.pydev 1.2.7 org.eclipse.emf.ocl.examples 1.2.0.v200805130238 org.eclipse.mylyn.jira.core 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.commons.net 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql.query 1.0.1.v200805152355 org.eclipse.datatools.sqltools.plan 1.0.0.v200805152355 com.swtdesigner.help 6.7.1.200809050053 org.eclipse.ecf.ssl 1.0.0.v20080611-1715 org.eclipse.team.cvs.core 3.3.100.I20080605 org.python.pydev.ast 0.9.8 com.instantiations.helpeditor.core.toc 1.3.4.200806270212 org.eclipse.core.databinding 1.1.0.I20080527-2000 org.eclipse.tptp.platform.common 4.3.200.v200805300100 org.eclipse.net4j.util.ui 1.0.0.v200806180305 org.eclipse.mylyn.commons.core 3.0.0.v20080619-1900 org.python.pydev 1.3.9 org.eclipse.emf.search.common.ui 0.7.0.v200806130939 org.eclipse.m2m.atl.engine.emfvm 2.0.0.v200806101117 org.eclipse.uml2.diagram.csd 0.8.0.v200806112132 org.python.pydev.parser 1.3.7 org.eclipse.team.svn.ui 0.7.1.I20080612-1500 org.python.pydev.core 1.3.12 org.eclipse.datatools.modelbase.sql.query.edit 1.0.0.v200806070329 com.instantiations.packager.core 2.5.1 com.windowtester.swing.runtime 3.5.0.200806270034 org.eclipse.update.ui 3.2.100.v20080318 org.apache.commons.codec 1.2.0.v20080530-1550 org.eclipse.mylyn.bugzilla.core 3.0.2.v20080918-1100-e3x org.eclipse.m2m.qvt.oml.editor.ui 1.0.0.v20080611-1330 org.eclipse.m2m.qvt.oml.samples 1.0.0.v20080611-1330 org.eclipse.mylyn.context.core 3.0.0.v20080619-1900 org.eclipse.xsd.source 2.4.0.v200806091234 org.eclipse.gmf.runtime.diagram.core 1.1.0.v20080425-1959 org.eclipse.m2m.atl.drivers.uml24atl 2.0.0.v200806101117 com.instantiations.eclipse.util 5.3.2.200809042027 org.eclipse.emf.ecore.sdo 2.4.0.v200806091234 com.instantiations.eclipse.startup 5.3.2.200809042027 org.eclipse.gmf 1.0.0.v20080425-1959 org.python.pydev 0.9.2 org.apache.batik.util.gui 1.6.0.v200805290154 org.python.pydev.ast 0.9.8.7 com.nordea.cd.dev.plugin.wsdl2java 1.0.2 org.eclipse.datatools.enablement.sybase.models 1.0.0.v200805152355 org.python.pydev.ast 1.0.1 org.eclipse.emf.compare.diff 0.8.0.v200806180301 org.eclipse.birt.report.designer 2.3.0.v200806102 org.eclipse.equinox.http.registry 1.0.100.v20080427-0830 ch.ethz.iks.r_osgi.remote 1.0.0.RC2_v20080623-0046 org.eclipse.gmf.graphdef.codegen.ui 1.0.100.v20080425-1959 org.eclipse.m2m.qvt.oml.editor.source 1.0.0.v20080611-1330-1--7w3119172202441 org.sat4j.pb 2.0.0.v20080602 org.eclipse.wst.validation 1.2.1.v200807292117 org.apache.batik.util 1.6.0.v200805290154 org.eclipse.equinox.transforms.hook 1.0.0.v20080610 org.eclipse.emf.teneo.hibernate 1.0.0.v200806111928 org.eclipse.uml2.examples 2.1.0.v200805131030 org.eclipse.mylyn.java.tasks 3.0.2.v20080918-1100-e3x org.eclipse.equinox.preferences 3.2.200.v20080421-2006 com.instantiations.assist.eclipse.fragment.swt 5.5.0 org.eclipse.ocl.doc 1.2.0.v200805130238 org.eclipse.jdt.apt.core 3.3.100.v20080513-1235 org.eclipse.birt.report.engine.fonts 2.3.0.v20080606 org.eclipse.mylyn.monitor.ui 3.0.2.v20080918-1100-e3x org.eclipse.gmf.tooldef.edit 2.0.0.v20080610-1132 org.eclipse.gmf.runtime.draw2d.ui.render 1.1.0.v20080507-2230 com.windowtester.swt.platform.ext 3.5.0.200806270034 org.eclipse.ecf.example.clients 1.3.0.v20080623-0046 org.eclipse.core.net 1.1.0.I20080604 org.eclipse.wst.xsd.core 1.1.301.v200807240448 org.eclipse.datatools.connectivity.oda.flatfile 3.0.6.v200805261930 org.python.pydev.refactoring 1.3.20 org.python.pydev.parser 1.0.1 org.python.pydev.ast 1.3.19 org.eclipse.equinox.registry.jmx 1.0.0.v20080610-1530 com.instantiations.eclipse.model.jsp 5.5.0 org.eclipse.mylyn.context.ui 3.0.2.v20080918-1100-e3x org.python.pydev.core 1.0.5 org.eclipse.hyades.lta.resources.database 4.5.0.v200805271330 org.python.pydev 0.6.1 org.python.pydev.parser 1.3.12 org.eclipse.equinox.p2.console 1.0.0.v20080514-1900 org.eclipse.mylyn.commons.net 3.0.1.v20080721-2100-e3x org.eclipse.net4j.jms.api 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.lexer 1.0.1.v200805152355 org.python.pydev.ast 1.3.4 org.python.pydev 1.3.4 org.python.pydev.jython 1.2.8 org.python.pydev 0.8.5 org.python.pydev 0.5.3 org.eclipse.wst.sse.ui 1.1.1.v200808141919 org.eclipse.emf.query 1.2.0.v200805130238 org.eclipse.core.runtime.compatibility 3.2.0.v20071008 org.eclipse.gmf.runtime.notation 1.1.0.v20080507-1326 org.eclipse.birt.report.data.oda.sampledb.ui 2.3.0.v20080606 org.python.pydev.ast 1.2.6 com.instantiations.eclipse.mail.ui 5.5.1 org.eclipse.zest.layouts 1.0.0.v20080226 org.python.pydev.jython 1.3.6 org.eclipse.net4j.jms.admin 1.0.0.v200806180305 org.eclipse.core.databinding.beans 1.1.0.I20080508-2000a org.python.pydev 1.1.0 org.python.pydev.core 1.3.20 org.eclipse.gmf.runtime.emf.commands.core 1.1.0.v20080425-1959 org.eclipse.gmf.runtime.common.ui.services.dnd.ide 1.1.0.v20080425-1959 org.eclipse.datatools.connectivity.apache.derby 1.0.1.v200805152355 org.python.pydev.core 1.2.9 org.eclipse.mylyn.context.core 3.0.2.v20080918-1100-e3x org.eclipse.equinox.p2.artifact.repository 1.0.0.v20080609-0850 org.eclipse.gef 3.4.0.v20080526 org.eclipse.gmf.runtime.common.ui 1.1.0.v20080512-1200 org.eclipse.emf.ecoretools.tabbedproperties 0.8.0.v200806130600 com.instantiations.assist.eclipse.core.ant 5.5.1 org.eclipse.emf.ecore.change 2.4.0.v200806091234 org.eclipse.jet.doc 0.9.0.v20080522 org.eclipse.emf.transaction.examples 1.2.0.v200806051817 org.eclipse.gmf.runtime.draw2d.ui 1.1.0.v20080610-1132 org.eclipse.equinox.jmx.server.rmi 1.0.0.v20070510 org.eclipse.ecf.examples.remoteservices.common 1.0.100.v20080623-0046 org.eclipse.wst.standard.schemas 1.0.102.v200807220733 org.eclipse.equinox.p2.jarprocessor 1.0.0.v20080514-1900 org.eclipse.birt.report.data.oda.jdbc 2.3.0.v20080610 com.windowtester.runner 3.5.0.200806270034 com.windowtester.swt.codegen 3.5.1.200809042232 org.eclipse.emf.cdo.tests.model2.edit 1.0.0.v200806180411 javax.wsdl 1.5.1.v200806030408 org.eclipse.datatools.enablement.sap.maxdb.ui 1.0.0.v200805152355 org.eclipse.equinox.launcher.win32.win32.x86 1.0.100.v20080509-1800 org.eclipse.birt.core 2.3.0.v20080606 javax.servlet 2.5.0.v200806031605 org.eclipse.uml2.codegen.ecore.ui 1.4.0.v200805131030 com.windowtester.swt.recorder 3.5.0.200806270034 org.eclipse.mylyn 3.0.1.v20080721-2100-e3x org.eclipse.uml2.search.ocl 0.7.0.v200806130939 org.python.pydev.core 1.3.3 org.eclipse.core.jobs 3.4.0.v20080512 org.python.pydev.core 0.9.5 org.eclipse.emf.validation.ui.ide 1.2.0.v200805130238 org.python.pydev 1.0.2 org.eclipse.wst.validation.ui 1.2.0.v200805262011 com.windowtester.swing.recorder 3.5.1.200809042232 com.instantiations.helpeditor.help 1.3.4.200809042225 org.eclipse.gmf.map.edit 2.1.0.v20080610-1132 org.eclipse.emf.ecore.edit 2.4.0.v200806091234 org.eclipse.datatools.enablement.msft.sqlserver.dbdefinition 1.0.0.v200805152355 org.mortbay.jetty.util 6.1.7.v200806031612 org.eclipse.datatools.sqltools.parsers.sql 1.0.1.v200805152355 org.eclipse.xsd.doc 2.4.0.v200806091234 org.eclipse.jdt.doc.isv 3.4.0.v20080612-1340 org.eclipse.jdt.apt.pluggable.core 1.0.100.v20080407-1345 org.eclipse.ecf.provider.bittorrent 0.3.0.v20080623-0046 org.eclipse.mylyn.monitor.ui 3.0.1.v20080721-2100-e3x org.python.pydev.jython 1.0.4 org.eclipse.wst.common.project.facet.ui 1.3.1.v200807301432 javax.xml.bind 2.0.0.v20080604-1500 org.apache.derby.core 10.3.1.4 org.eclipse.birt.report.debug.core 2.3.0.v200806102 org.python.pydev.parser 1.3.4 org.eclipse.jdt.debug.ui 3.3.0.v20080603 org.python.pydev.help 1.3.20 org.python.pydev 1.3.12 org.eclipse.gef.examples.ui.pde 3.4.0.v20080226 org.eclipse.ecf.provider.jmdns 2.0.0.v20080623-0046 org.eclipse.xsd.editor 2.4.0.v200806091234 org.python.pydev 1.2.6 org.eclipse.buckminster.generic.ui 1.0.0.r09319 org.eclipse.emf.ocl 1.1.100.v200805130238 org.eclipse.emf.search.ecore 0.7.0.v200806130939 org.eclipse.wst.common.frameworks.ui 1.1.200.v200805221400 org.eclipse.emf.ecoretools.doc 0.8.0.v200806130600 org.eclipse.wst.sse.ui.infopop 1.0.200.v200805301545 org.eclipse.tptp.platform.common.ui.trace 4.3.200.v200805290100 org.eclipse.net4j.jms.server 1.0.0.v200806180305 org.eclipse.ecf.filetransfer.ui 1.4.0.v20080623-0046 org.eclipse.birt.chart.device.swt 2.3.0.v20080522 org.eclipse.wst.xsd.ui 1.2.101.v200806051910 org.eclipse.emf.cdo.examples.source 1.0.0.v200806180411 org.eclipse.birt.report.designer.ui.lib.explorer 2.3.0.v20080606 org.mozilla.rhino 1.6.7.v20080214 org.python.pydev 1.3.16 org.eclipse.buckminster.ant 1.1.0.r09351 org.eclipse.equinox.metatype 1.0.0.v20070827 org.eclipse.m2m.atl.adt.wizard 2.0.0.v200806101117 org.eclipse.wst.command.env 1.0.305.v200805281530 org.eclipse.swt.jmx 1.0.0.v20070510 org.eclipse.emf.cdo.common 1.0.0.v200806180411 org.eclipse.ecf.examples.remoteservices.client 1.0.100.v20080623-0046 org.python.pydev.jython 1.3.14 org.python.pydev.parser 1.2.6 org.eclipse.emf.ecoretools.diagram.ui.outline 0.8.0.v200806130600 org.eclipse.emf.teneo.eclipse 1.0.0.v200806111928 org.eclipse.emf.cdo.tests.mango 1.0.0.v200806180411 org.eclipse.net4j.buddies.common 1.0.0.v200806180305 org.eclipse.net4j.buddies.chat 1.0.0.v200806180305 org.eclipse.mylyn.bugzilla.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.modelbase.sql 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.ide 5.5.0 org.eclipse.datatools.enablement.sybase.ase.dbdefinition 1.0.0.v200805240040 org.apache.ant 1.7.0.v200803061910 org.eclipse.datatools.connectivity.oda.design 3.0.6.v200805152355 org.eclipse.emf.ocl.doc 1.1.100.v200805130238 org.eclipse.tptp.lta.gla.ui.epi 4.5.0.v200805160100 org.eclipse.equinox.jmx.server 1.0.0.v20071015 org.eclipse.wst.xml.core 1.1.300.v200806051910 org.eclipse.datatools.connectivity.oda.template.ui 3.0.6.v200805152355 org.python.pydev.ast 1.0.2 org.eclipse.birt.report.data.adapter 2.3.0.v20080606 org.eclipse.birt.chart.runtime 2.3.0.v20080304 org.eclipse.net4j.ui.source 1.0.0.v200806180305 org.eclipse.datatools.sqltools.parsers.sql.query 1.0.1.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.1 org.eclipse.wst.dtd.ui 1.0.300.v200805152207 org.eclipse.mylyn.java.ui 3.0.1.v20080721-2100-e3x org.eclipse.datatools.connectivity.oda.design.ui 3.0.6.v200805152355 org.eclipse.birt.report.designer.core 2.3.0.v200806102 org.eclipse.buckminster.jdt 1.0.0.r09319 org.eclipse.buckminster.p4 1.0.0.r09319 org.eclipse.ecf.core.source 2.0.0.v20080623-0046 org.eclipse.birt.report.runtime 2.3.0.v20080304 org.python.pydev.ast 1.1.0 com.windowtester.swt.runtime 3.5.1.200809042232 org.eclipse.uml2.doc 2.2.0.v200805201350 org.eclipse.mylyn.context.core 3.0.1.v20080721-2100-e3x org.eclipse.gmf.runtime.notation.providers 1.1.0.v20080425-1959 org.eclipse.tptp.platform.lta.log.doc.user 4.5.0.v200805132041 org.eclipse.team.svn.help 0.7.1.I20080612-1500 org.python.pydev 0.9.3 com.windowtester.swt.runtime.win32 3.5.1.200809042232 org.eclipse.m2m.qvt.oml.ocl.emf.libraries 1.0.0.v20080611-1330 org.eclipse.hyades.lta.analysis.engine 4.5.0.v200805271330 org.python.pydev.core 1.3.11 org.eclipse.datatools.connectivity.sqm.core 1.0.1.v200806041052 org.eclipse.equinox.jmx.server.xmlrpc 1.0.0.v20070608 org.eclipse.platform 3.3.100.v200806172000 org.eclipse.ui 3.4.0.I20080610-1200 org.eclipse.net4j.buddies.chat.ui 1.0.0.v200806180305 org.eclipse.emf.search.ecore.ocl 0.7.0.v200806130939 org.eclipse.gmf.codegen 2.1.0.v20080610-1132 org.eclipse.emf.teneo 1.0.0.v200806111928 org.eclipse.datatools.connectivity.oda.flatfile.ui 3.0.6.v200805261930 org.python.pydev.core 1.0.4 org.eclipse.equinox.p2.extensionlocation 1.0.0.v20080523-0001 org.eclipse.buckminster.remote.cloudsmith 1.0.0.r09319 org.python.pydev.ast 1.3.18 org.eclipse.birt.report.engine.dataextraction.csv 2.3.0.v200806102 org.eclipse.equinox.log 1.1.0.v20080414 org.python.pydev.parser 1.3.13 org.python.pydev 1.3.3 com.windowtester.eclipse.help 3.5.0.200806270034 org.python.pydev.jython 1.2.7 org.eclipse.m2m.qvt.oml.emf.util.ui 1.0.0.v20080611-1330 org.eclipse.gmf.runtime.common.ui.printing 1.1.0.v20080425-1959 org.python.pydev.ast 1.3.5 org.eclipse.uml2.uml.ecore.exporter 2.2.0.v200805131030 org.eclipse.equinox.event 1.1.0.v20080225 org.eclipse.epp.usagedata.gathering 1.0.0.R200806162215 com.instantiations.assist.eclipse.fragment.swt 5.5.1 org.eclipse.emf.cdo.server 1.0.0.v200806180411 org.eclipse.core.filesystem.win32.x86 1.1.0.v20080604-1400 org.eclipse.datatools.enablement.ibm.db2.zseries 1.0.0.v200805152355 com.windowtester.swt.platform.ext 3.5.1.200809042232 org.eclipse.birt.chart.examples 2.3.0.v20080612 org.eclipse.gmf.bridge.ui 1.1.100.v20080417-1610 org.eclipse.emf.doc 2.4.0.v200806091234 org.eclipse.emf.ecoretools.diagram 0.8.0.v200806130600 org.eclipse.ecf.provider.filetransfer.efs 1.5.0.v20080623-0046 org.eclipse.mylyn.commons.net 3.0.0.v20080619-1900 org.python.pydev.core 1.2.8 org.eclipse.datatools.modelbase.dbdefinition 1.0.0.v200805152355 javax.management.remote 1.0.0.v200803061811 org.eclipse.net4j.util 1.0.0.v200806180305 com.instantiations.assist.eclipse.fragment.ui.workbench 5.5.0 org.eclipse.ui.navigator.resources 3.3.100.I20080606-1300 org.apache.lucene.analysis 1.9.1.v20080530-1600 org.python.pydev.jython 1.3.5 org.eclipse.m2m.atl.adt.builder 2.0.0.v200806101117 org.eclipse.mylyn.monitor.core 3.0.1.v20080721-2100-e3x org.python.pydev.ast 1.2.7 com.instantiations.eclipse.mail.ui 5.5.0 org.eclipse.tptp.platform.models.lta 4.5.0.v200805132041 org.eclipse.mylyn.commons.core 3.0.1.v20080721-2100-e3x org.eclipse.team.svn.nl1 0.7.1.I20080612-1500 org.eclipse.birt.report.data.oda.jdbc.dbprofile.ui 2.3.0.v20080606 org.eclipse.pde 3.4.0.v20080603 org.eclipse.net4j.jms.server.jdbc 1.0.0.v200806180305 org.eclipse.pde.doc.user 3.3.0.v20080611-1530 org.eclipse.core.runtime.compatibility.auth 3.2.100.v20070502 org.eclipse.tptp.platform.iac.administrator 4.4.100.v200806120100 org.eclipse.emf.importer.ecore 2.4.0.v200806091234 org.eclipse.equinox.jmx.client.xmlrpc 1.0.0.v20070515 org.eclipse.equinox.jmx.common 1.0.0.v20070510 org.eclipse.datatools.enablement.ibm.informix.ui 1.0.0.v200805160737 com.instantiations.installer 2.5.1 org.eclipse.hyades.lta.logging.parsers 4.5.0.v200805271330 org.eclipse.uml2.diagram.profile 0.8.0.v200806112132 org.eclipse.datatools.enablement.jdt.classpath 1.0.1.v200805152355 org.eclipse.emf.validation.ocl.source 1.2.0.v200805130238-11-7w311916241349 org.eclipse.net4j.buddies 1.0.0.v200806180305 net.sourceforge.lpg.lpgjavaruntime 1.1.0.v200803061910 org.eclipse.emf.ecore.editor 2.4.0.v200806091234 org.apache.commons.lang 2.3.0.v200803061910 org.eclipse.ocl.uml 1.2.0.v200805130238 org.eclipse.emf.mapping.ecore2ecore 2.4.0.v200806091234 com.swtdesigner.fragment.jdt.core 6.7.0.200806270151 org.eclipse.ecf.provider.xmpp 2.0.0.v20080623-0046 org.eclipse.wst.common.modulecore 1.1.201.v200808071700 org.eclipse.mylyn.jira.ui 3.0.2.v20080918-1100-e3x org.eclipse.draw2d.doc.isv 3.4.0.v20080606 org.python.pydev.core 1.3.2 org.eclipse.mylyn.compatibility 3.0.0.v20080619-1900 org.eclipse.buckminster.maven 1.1.0.r09319 org.eclipse.buckminster.cmdline 1.0.0.r09319 org.apache.batik.css 1.6.0.v200805290154 org.eclipse.ecf.telephony.call.ui 1.2.0.v20080623-0046 org.eclipse.wst.common.emfworkbench.integration 1.1.200.v200805140020 org.python.pydev 1.0.1 org.eclipse.datatools.enablement.ibm.db2.luw.dbdefinition 1.0.0.v200805152355 org.eclipse.team.svn.resource.ignore.rules.jdt.source 0.7.1.I20080612-1500 org.eclipse.ecf.server 1.3.0.v20080623-0046 org.python.pydev 1.2.5 org.python.pydev.core 1.2.1 org.eclipse.datatools.sqltools.sqlscrapbook 1.0.0.v200806021003 org.eclipse.birt.chart.reportitem 2.3.0.v20080610 org.eclipse.uml2.diagram.codegen 0.8.0.v200806112132 org.eclipse.xsd.edit 2.4.0.v200806091234 org.eclipse.buckminster.opml 1.0.0.r09319 org.python.pydev.parser 1.3.5 org.eclipse.gmf.runtime.diagram.ui 1.1.0.v20080610-1132 org.eclipse.ocl.source 1.2.0.v200805130238-34-9oA55S5I6M7JBK com.windowtester.eclipse.ui 3.5.0.200806270034 org.eclipse.tptp.platform.agentcontroller 4.2.200.v200806162043 org.python.pydev 1.3.11 org.eclipse.datatools.connectivity.apache.derby.ui 1.0.0.v200805160737 org.eclipse.datatools.sqltools.routineeditor 1.0.0.v200805261703 org.eclipse.wst.xsd.ui 1.2.102.v200808141745 org.eclipse.equinox.http 1.0.200.v20080421-2006 org.jivesoftware.smack 2.2.1 org.eclipse.mylyn.compatibility 3.0.1.v20080721-2100-e3x org.eclipse.mylyn.java.ui 3.0.0.v20080619-1900 org.eclipse.core.variables 3.2.100.v20080529-1300 org.python.pydev.jython 1.3.13 org.python.pydev.parser 1.3.20 org.eclipse.tptp.platform.models.hierarchy 4.5.0.v200806120100 org.eclipse.ecf.examples.updatesite.client 1.0.100.v20080623-0046 org.eclipse.datatools.enablement.msft.sqlserver.ui 1.0.0.v200805160737 org.eclipse.datatools.enablement.mysql 1.0.0.v200805152355 org.eclipse.jdt.debug 3.4.0.v20080604 org.antlr.runtime 3.0.0.v200803061811 org.python.pydev.parser 1.2.7 org.eclipse.hyades.execution 4.4.200.v200806120100 org.eclipse.ecf.provider.ui 1.3.0.v20080623-0046 org.eclipse.birt.chart.cshelp 2.3.0.v20080616 org.eclipse.buckminster.p4.ui 1.0.0.r09319 org.python.pydev 1.3.15 org.eclipse.datatools.enablement.ibm.ui 1.0.0.v200805152355 org.eclipse.buckminster.sax 1.0.0.r09175 org.eclipse.equinox.supplement 1.1.0.v20080421-2006 org.eclipse.wst.common.frameworks 1.1.200.v200805140020 org.eclipse.mylyn 3.0.2.v20080918-1100-e3x org.eclipse.gmf.map 2.1.0.v20080521 org.eclipse.wst.standard.schemas 1.0.101.v200806010600 org.python.pydev.ast 1.0.3 org.eclipse.m2m.qvt.oml.runtime 1.0.0.v20080611-1330 org.eclipse.mylyn.ide.ui 3.0.2.v20080918-1100-e3x org.eclipse.datatools.sqltools.sqlbuilder 1.0.0.v200806070500 org.eclipse.datatools.modelbase.derby 1.0.0.v200805152355 com.instantiations.eclipse.analysis.expression 5.5.0 org.eclipse.emf.compare.ui 0.8.0.v200806180301 org.eclipse.ecf.provider.filetransfer.scp 2.0.0.v20080623-0046 org.eclipse.uml2.search.ocl.ui 0.7.0.v200806130939 org.eclipse.mylyn.context.ui 3.0.1.v20080721-2100-e3x org.python.pydev.templates 1.3.20 org.eclipse.gmf.runtime.diagram.ui.resources.editor 1.1.0.v20080425-1959 org.eclipse.gmf.examples.ui.pde 1.0.200.v20080425-1959 org.eclipse.buckminster.installer 1.0.0.r09319 org.eclipse.m2m.atl.examples 2.0.0.v200806101117 org.eclipse.datatools.modelbase.sql.xml.query 1.0.0.v200805152355 org.eclipse.emf.search.doc 0.7.0.v200806130939 org.eclipse.datatools.enablement.oracle.dbdefinition 1.0.0.v200805152355 com.instantiations.assist.eclipse.fragment.ui.workbench.texteditor 5.5.0 javax.xml.bind 2.0.0.v200803061811 org.apache.xmlrpc 3.0.0.v20080530-1550 org.eclipse.ui.views.log 1.0.0.v20080522-2200 org.python.pydev.core 1.3.10 org.eclipse.ecf.examples.updatesite.server 1.0.100.v20080623-0046 org.eclipse.birt.core.ui 2.3.0.v20080515 org.eclipse.core.filebuffers 3.4.0.v20080603-2000 org.eclipse.mylyn.team.ui 3.0.1.v20080721-2100-e3x org.eclipse.wst.command.env 1.0.306.v200807231700 org.eclipse.team.cvs.ssh2 3.2.200.I20080604 org.eclipse.emf.search.ecore.ocl.ui 0.7.0.v200806130939 org.eclipse.ecf.example.collab.editor 1.0.200.v20080623-0046 org.eclipse.ecf.provider.jslp 2.0.0.v20080623-0046 org.eclipse.datatools.sqltools.result 1.0.0.v200805301309 org.eclipse.emf.teneo.jpox 1.0.0.v200806111928 org.eclipse.gmf.runtime.emf.clipboard.core 1.1.0.v20080425-1959 com.instantiations.eclipse.ast.editor 5.5.0 org.eclipse.mylyn.tasks.bugs 3.0.2.v20080918-1100-e3x org.eclipse.jsch.core 1.1.100.I20080604 org.eclipse.pde.core 3.4.0.v20080604-2000 org.python.pydev 0.9.4 org.python.pydev.jython 1.3.0
-1 x2962 +1 x16 +1 x528 +1 x118 +1 x17 +1 x21 +1 x34 +1 x599 +1 x658 +1 x659 +1 x35 +1 x660 +1 x40 +1 x44 +1 x661 +1 x50 +1 x662 +1 x51 +1 x101 +1 x103 +1 x112 +1 x663 +1 x125 +1 x191 +1 x53 +1 x664 +1 x665 +1 x666 +1 x162 +1 x167 +1 x667 +1 x326 +1 x188 +1 x187 +1 x173 +1 x203 +1 x192 +1 x190 +1 x668 +1 x578 +1 x669 +1 x670 +1 x208 +1 x213 +1 x671 +1 x223 +1 x672 +1 x229 +1 x230 +1 x231 +1 x673 +1 x674 +1 x675 +1 x676 +1 x248 +1 x251 +1 x252 +1 x677 +1 x678 +1 x253 +1 x260 +1 x87 +1 x264 +1 x267 +1 x272 +1 x291 +1 x679 +1 x680 +1 x681 +1 x46 +1 x682 +1 x297 +1 x298 +1 x313 +1 x683 +1 x684 +1 x314 +1 x685 +1 x686 +1 x333 +1 x498 +1 x334 +1 x687 +1 x339 +1 x688 +1 x348 +1 x350 +1 x689 +1 x355 +1 x357 +1 x690 +1 x185 +1 x691 +1 x360 +1 x692 +1 x693 +1 x694 +1 x366 +1 x695 +1 x18 +1 x367 +1 x382 +1 x696 +1 x392 +1 x697 +1 x461 +1 x698 +1 x95 +1 x617 +1 x699 +1 x114 +1 x413 +1 x464 +1 x700 +1 x80 +1 x65 +1 x701 +1 x702 +1 x422 +1 x703 +1 x423 +1 x704 +1 x427 +1 x705 +1 x429 +1 x706 +1 x707 +1 x708 +1 x432 +1 x433 +1 x709 +1 x710 +1 x159 +1 x711 +1 x712 +1 x434 +1 x331 +1 x713 +1 x714 +1 x715 +1 x436 +1 x444 +1 x451 +1 x501 +1 x519 +1 x197 +1 x513 +1 x512 +1 x716 +1 x514 +1 x717 +1 x516 +1 x47 +1 x718 +1 x719 +1 x534 +1 x720 +1 x721 +1 x722 +1 x530 +1 x723 +1 x724 +1 x532 +1 x531 +1 x533 +1 x725 +1 x726 +1 x402 +1 x26 +1 x727 +1 x552 +1 x41 +1 x728 +1 x729 +1 x560 +1 x730 +1 x168 +1 x731 +1 x582 +1 x592 +1 x586 +1 x593 +1 x595 +1 x732 +1 x733 +1 x596 +1 x734 +1 x735 +1 x597 +1 x602 +1 x610 +1 x129 +1 x460 +1 x736 +1 x623 +1 x737 +1 x738 +1 x739 +1 x634 +1 x740 +1 x635 +1 x636 +1 x204 +1 x645 +1 x741 +1 x647 +1 x648 +1 x38 +1 x649 +1 x652 +1 x742 +1 x380 +1 x88 +1 x653 +1 x655 +1 x743 +1 x477 +1 x744 +1 x745 +1 x198 +1 x746 +1 x747 +1 x175 +1 x303 +1 x748 +1 x220 +1 x749 +1 x750 +1 x751 +1 x752 +1 x753 +1 x340 +1 x217 +1 x754 +1 x755 +1 x756 +1 x757 +1 x758 +1 x759 +1 x492 +1 x760 +1 x408 +1 x761 +1 x72 +1 x762 +1 x763 +1 x764 +1 x765 +1 x184 +1 x766 +1 x510 +1 x73 +1 x767 +1 x768 +1 x769 +1 x374 +1 x770 +1 x771 +1 x14 +1 x772 +1 x773 +1 x774 +1 x775 +1 x776 +1 x454 +1 x777 +1 x344 +1 x178 +1 x778 +1 x779 +1 x186 +1 x347 +1 x780 +1 x781 +1 x782 +1 x783 +1 x784 +1 x785 +1 x786 +1 x787 +1 x788 +1 x789 +1 x790 +1 x791 +1 x792 +1 x625 +1 x793 +1 x794 +1 x472 +1 x795 +1 x796 +1 x797 +1 x798 +1 x521 +1 x799 +1 x800 +1 x801 +1 x802 +1 x525 +1 x91 +1 x803 +1 x804 +1 x805 +1 x806 +1 x807 +1 x587 +1 x808 +1 x315 +1 x809 +1 x810 +1 x811 +1 x812 +1 x813 +1 x814 +1 x815 +1 x816 +1 x68 +1 x817 +1 x179 +1 x486 +1 x818 +1 x410 +1 x819 +1 x820 +1 x821 +1 x822 +1 x823 +1 x824 +1 x825 +1 x826 +1 x827 +1 x638 +1 x828 +1 x829 +1 x830 +1 x372 +1 x831 +1 x832 +1 x9 +1 x263 +1 x324 +1 x411 +1 x833 +1 x834 +1 x835 +1 x836 +1 x837 +1 x838 +1 x839 +1 x430 +1 x840 +1 x381 +1 x89 +1 x518 +1 x328 +1 x841 +1 x621 +1 x842 +1 x843 +1 x330 +1 x844 +1 x57 +1 x153 +1 x845 +1 x846 +1 x48 +1 x847 +1 x70 +1 x848 +1 x849 +1 x850 +1 x467 +1 x851 +1 x852 +1 x853 +1 x854 +1 x855 +1 x856 +1 x857 +1 x858 +1 x447 +1 x83 +1 x859 +1 x860 +1 x861 +1 x82 +1 x862 +1 x863 +1 x74 +1 x864 +1 x632 +1 x865 +1 x866 +1 x867 +1 x5 +1 x868 +1 x869 +1 x870 +1 x871 +1 x872 +1 x361 +1 x873 +1 x604 +1 x874 +1 x875 +1 x876 +1 x594 +1 x877 +1 x183 +1 x289 +1 x495 +1 x138 +1 x194 +1 x143 +1 x878 +1 x879 +1 x85 +1 x36 +1 x880 +1 x881 +1 x177 +1 x882 +1 x883 +1 x884 +1 x885 +1 x886 +1 x887 +1 x888 +1 x889 +1 x370 +1 x219 +1 x890 +1 x891 +1 x892 +1 x893 +1 x894 +1 x895 +1 x24 +1 x896 +1 x897 +1 x898 +1 x899 +1 x900 +1 x901 +1 x902 +1 x180 +1 x903 +1 x904 +1 x349 +1 x905 +1 x906 +1 x221 +1 x10 +1 x907 +1 x908 +1 x193 +1 x909 +1 x910 +1 x911 +1 x912 +1 x913 +1 x474 +1 x914 +1 x915 +1 x244 +1 x916 +1 x917 +1 x176 +1 x918 +1 x919 +1 x920 +1 x921 +1 x75 +1 x922 +1 x923 +1 x924 +1 x925 +1 x926 +1 x927 +1 x928 +1 x929 +1 x930 +1 x931 +1 x932 +1 x343 +1 x933 +1 x327 +1 x934 +1 x935 +1 x936 +1 x937 +1 x90 +1 x938 +1 x939 +1 x940 +1 x941 +1 x643 +1 x942 +1 x943 +1 x147 +1 x944 +1 x945 +1 x946 +1 x947 +1 x948 +1 x949 +1 x950 +1 x165 +1 x951 +1 x952 +1 x953 +1 x954 +1 x955 +1 x956 +1 x249 +1 x957 +1 x401 +1 x958 +1 x959 +1 x132 +1 x304 +1 x960 +1 x961 +1 x962 +1 x963 +1 x964 +1 x371 +1 x965 +1 x966 +1 x967 +1 x968 +1 x969 +1 x970 +1 x971 +1 x972 +1 x973 +1 x974 +1 x470 +1 x975 +1 x976 +1 x590 +1 x977 +1 x978 +1 x473 +1 x523 +1 x579 +1 x979 +1 x97 +1 x61 +1 x980 +1 x981 +1 x982 +1 x478 +1 x983 +1 x984 +1 x985 +1 x986 +1 x987 +1 x988 +1 x155 +1 x989 +1 x59 +1 x990 +1 x991 +1 x992 +1 x993 +1 x345 +1 x201 +1 x994 +1 x995 +1 x481 +1 x996 +1 x215 +1 x151 +1 x482 +1 x407 +1 x484 +1 x483 +1 x997 +1 x998 +1 x485 +1 x488 +1 x999 +1 x1000 +1 x489 +1 x490 +1 x1001 +1 x1002 +1 x1003 +1 x1004 +1 x511 +1 x1005 +1 x1006 +1 x1007 +1 x1008 +1 x1009 +1 x1010 +1 x1011 +1 x1012 +1 x1013 +1 x1014 +1 x1015 +1 x1016 +1 x1017 +1 x1018 +1 x1019 +1 x1020 +1 x1021 +1 x136 +1 x1022 +1 x216 +1 x1023 +1 x1024 +1 x1025 +1 x1026 +1 x1027 +1 x384 +1 x325 +1 x1028 +1 x657 +1 x1029 +1 x1030 +1 x368 +1 x250 +1 x1031 +1 x520 +1 x1032 +1 x266 +1 x1033 +1 x1034 +1 x1035 +1 x1036 +1 x1037 +1 x466 +1 x149 +1 x1038 +1 x1039 +1 x1040 +1 x1041 +1 x258 +1 x1042 +1 x1043 +1 x1044 +1 x1045 +1 x1046 +1 x1047 +1 x1048 +1 x1049 +1 x152 +1 x1050 +1 x1051 +1 x305 +1 x1052 +1 x1053 +1 x1054 +1 x1055 +1 x1056 +1 x1057 +1 x1058 +1 x1059 +1 x553 +1 x1060 +1 x1061 +1 x224 +1 x1062 +1 x1063 +1 x1064 +1 x1065 +1 x1066 +1 x1067 +1 x1068 +1 x195 +1 x259 +1 x399 +1 x86 +1 x1069 +1 x1070 +1 x494 +1 x1071 +1 x84 +1 x1072 +1 x140 +1 x256 +1 x1073 +1 x1074 +1 x146 +1 x1075 +1 x1076 +1 x1077 +1 x1078 +1 x1079 +1 x1080 +1 x628 +1 x1081 +1 x1082 +1 x1083 +1 x562 +1 x1084 +1 x239 +1 x458 +1 x1085 +1 x1086 +1 x241 +1 x462 +1 x1087 +1 x1088 +1 x1089 +1 x78 +1 x1090 +1 x1091 +1 x1092 +1 x1093 +1 x1094 +1 x1095 +1 x1096 +1 x469 +1 x631 +1 x1097 +1 x12 +1 x1098 +1 x1099 +1 x81 +1 x1100 +1 x1101 +1 x1102 +1 x1103 +1 x1104 +1 x406 +1 x1105 +1 x1106 +1 x1107 +1 x169 +1 x1108 +1 x476 +1 x1109 +1 x1110 +1 x1111 +1 x1112 +1 x49 +1 x1113 +1 x150 +1 x1114 +1 x1115 +1 x1116 +1 x1117 +1 x1118 +1 x28 +1 x1119 +1 x1120 +1 x137 +1 x409 +1 x1121 +1 x1122 +1 x99 +1 x1123 +1 x145 +1 x1124 +1 x1125 +1 x1126 +1 x1127 +1 x1128 +1 x11 +1 x373 +1 x1129 +1 x308 +1 x358 +1 x1130 +1 x1131 +1 x1132 +1 x600 +1 x1133 +1 x424 +1 x1134 +1 x1135 +1 x1136 +1 x1137 +1 x561 +1 x1138 +1 x1139 +1 x603 +1 x1140 +1 x456 +1 x1141 +1 x1142 +1 x1143 +1 x1144 +1 x1145 +1 x1146 +1 x425 +1 x1147 +1 x115 +1 x1148 +1 x1149 +1 x1150 +1 x1151 +1 x1152 +1 x23 +1 x1153 +1 x76 +1 x1154 +1 x1155 +1 x300 +1 x1156 +1 x1157 +1 x1158 +1 x1159 +1 x1160 +1 x1161 +1 x1162 +1 x1163 +1 x1164 +1 x1165 +1 x575 +1 x1166 +1 x583 +1 x1167 +1 x1168 +1 x200 +1 x71 +1 x1169 +1 x1170 +1 x322 +1 x1171 +1 x1172 +1 x1173 +1 x397 +1 x480 +1 x1174 +1 x1175 +1 x1176 +1 x576 +1 x209 +1 x1177 +1 x403 +1 x1178 +1 x1179 +1 x416 +1 x1180 +1 x13 +1 x1181 +1 x1182 +1 x1183 +1 x1184 +1 x1185 +1 x1186 +1 x1187 +1 x1188 +1 x1189 +1 x310 +1 x1190 +1 x1191 +1 x1192 +1 x524 +1 x1193 +1 x1194 +1 x202 +1 x1195 +1 x102 +1 x1196 +1 x1197 +1 x452 +1 x1198 +1 x386 +1 x1199 +1 x1200 +1 x1201 +1 x1202 +1 x457 +1 x1203 +1 x79 +1 x1204 +1 x1205 +1 x1206 +1 x1207 +1 x1208 +1 x1209 +1 x1210 +1 x160 +1 x527 +1 x1211 +1 x1212 +1 x1213 +1 x1214 +1 x1215 +1 x463 +1 x1216 +1 x1217 +1 x1218 +1 x7 +1 x1219 +1 x1220 +1 x1221 +1 x642 +1 x1222 +1 x1223 +1 x1224 +1 x1225 +1 x1226 +1 x605 +1 x1227 +1 x301 +1 x1228 +1 x449 +1 x1229 +1 x353 +1 x396 +1 x1230 +1 x174 +1 x98 +1 x1231 +1 x1232 +1 x1233 +1 x1234 +1 x1235 +1 x479 +1 x598 +1 x1236 +1 x1237 +1 x63 +1 x1238 +1 x1239 +1 x1240 +1 x1241 +1 x1242 +1 x1243 +1 x1244 +1 x1245 +1 x1246 +1 x170 +1 x1247 +1 x1248 +1 x1249 +1 x317 +1 x226 +1 x1250 +1 x1251 +1 x1252 +1 x37 +1 x1253 +1 x1254 +1 x1255 +1 x1256 +1 x601 +1 x1257 +1 x142 +1 x446 +1 x1258 +1 x1259 +1 x1260 +1 x1261 +1 x1262 +1 x1263 +1 x182 +1 x1264 +1 x1265 +1 x1266 +1 x1267 +1 x1268 +1 x1269 +1 x139 +1 x1270 +1 x1271 +1 x133 +1 x1272 +1 x1273 +1 x1274 +1 x1275 +1 x1276 +1 x1277 +1 x1278 +1 x1279 +1 x1280 +1 x1281 +1 x1282 +1 x1283 +1 x1284 +1 x1285 +1 x32 +1 x1286 +1 x1287 +1 x1288 +1 x1289 +1 x275 +1 x1290 +1 x1291 +1 x1292 +1 x1293 +1 x1294 +1 x1295 +1 x1296 +1 x1297 +1 x131 +1 x1298 +1 x262 +1 x1299 +1 x1300 +1 x503 +1 x1301 +1 x1302 +1 x629 +1 x475 +1 x1303 +1 x1304 +1 x1305 +1 x1306 +1 x1307 +1 x1308 +1 x1309 +1 x1310 +1 x319 +1 x1311 +1 x1312 +1 x1313 +1 x96 +1 x1314 +1 x94 +1 x1315 +1 x1316 +1 x1317 +1 x1318 +1 x1319 +1 x1320 +1 x1321 +1 x1322 +1 x1323 +1 x431 +1 x1324 +1 x1325 +1 x1326 +1 x1327 +1 x218 +1 x1328 +1 x1329 +1 x1330 +1 x1331 +1 x1332 +1 x27 +1 x1333 +1 x1334 +1 x398 +1 x1335 +1 x321 +1 x1336 +1 x1337 +1 x1338 +1 x1339 +1 x316 +1 x1340 +1 x1341 +1 x1342 +1 x1343 +1 x1344 +1 x1345 +1 x1346 +1 x1347 +1 x459 +1 x135 +1 x1348 +1 x1349 +1 x1350 +1 x277 +1 x1351 +1 x1352 +1 x1353 +1 x1354 +1 x1355 +1 x1356 +1 x1357 +1 x196 +1 x1358 +1 x52 +1 x1359 +1 x1360 +1 x1361 +1 x92 +1 x1362 +1 x1363 +1 x1364 +1 x1365 +1 x1366 +1 x468 +1 x448 +1 x1367 +1 x619 +1 x471 +1 x318 +1 x1368 +1 x254 +1 x265 +1 x242 +1 x1369 +1 x20 +1 x1370 +1 x1371 +1 x1372 +1 x1373 +1 x1374 +1 x1375 +1 x1376 +1 x1377 +1 x1378 +1 x1379 +1 x1380 +1 x1381 +1 x1382 +1 x1383 +1 x299 +1 x45 +1 x1384 +1 x1385 +1 x1386 +1 x1387 +1 x491 +1 x25 +1 x493 +1 x1388 +1 x1389 +1 x1390 +1 x369 +1 x1391 +1 x1392 +1 x19 +1 x1393 +1 x1394 +1 x1395 +1 x589 +1 x1396 +1 x400 +1 x1397 +1 x323 +1 x1398 +1 x8 +1 x1399 +1 x1400 +1 x1401 +1 x1402 +1 x404 +1 x1403 +1 x1404 +1 x1405 +1 x1406 +1 x1407 +1 x1408 +1 x1409 +1 x1410 +1 x1411 +1 x6 +1 x1412 +1 x1413 +1 x144 +1 x1414 +1 x1415 +1 x1416 +1 x1417 +1 x1418 +1 x302 +1 x1419 +1 x1420 +1 x1421 +1 x1422 +1 x1423 +1 x1424 +1 x1425 +1 x1426 +1 x1427 +1 x1428 +1 x1429 +1 x243 +1 x1430 +1 x1431 +1 x1432 +1 x1433 +1 x1434 +1 x1435 +1 x1436 +1 x1437 +1 x113 +1 x1438 +1 x1439 +1 x1440 +1 x1441 +1 x199 +1 x1442 +1 x1443 +1 x1444 +1 x1445 +1 x1446 +1 x1447 +1 x1448 +1 x1449 +1 x1450 +1 x257 +1 x255 +1 x1451 +1 x1452 +1 x1453 +1 x1454 +1 x1455 +1 x1456 +1 x1457 +1 x320 +1 x1458 +1 x154 +1 x1459 +1 x1460 +1 x1461 +1 x1462 +1 x134 +1 x497 +1 x181 +1 x1463 +1 x148 +1 x54 +1 x1464 +1 x1465 +1 x1466 +1 x1467 +1 x1468 +1 x453 +1 x1469 +1 x1470 +1 x1471 +1 x1472 +1 x1473 +1 x1474 +1 x1475 +1 x1476 +1 x1477 +1 x522 +1 x1478 +1 x1479 +1 x1480 +1 x1481 +1 x1482 +1 x1483 +1 x1484 +1 x1485 +1 x335 +1 x1486 +1 x1487 +1 x1488 +1 x1489 +1 x240 +1 x1490 +1 x276 +1 x465 +1 x1491 +1 x1492 +1 x1493 +1 x1494 +1 x1495 +1 x1496 +1 x1497 +1 x1498 +1 x329 +1 x1499 +1 x93 +1 x130 +1 x261 +1 x630 +1 x1500 +1 x1501 +1 x1502 +1 x1503 +1 x31 +1 x1504 +1 x1505 +1 x1506 +1 x1507 +1 x1508 +1 x1509 +1 x141 +1 x1510 +1 x1511 +1 x1512 +1 x1513 +1 x1514 +1 x225 +1 x1515 +1 x1516 +1 x205 +1 x1517 +1 x1518 +1 x1519 +1 x1520 +1 x1521 +1 x496 +1 x1522 +1 x387 +1 x1523 +1 x1524 +1 x1525 +1 x1526 +1 x1527 +1 x1528 +1 x1529 +1 x1530 +1 x1531 +1 x455 +1 x1532 +1 x577 +1 x1533 +1 x1534 +1 x1535 +1 x1536 +1 x445 +1 x1537 +1 x1538 +1 x1539 +1 x1540 +1 x618 +1 x1541 +1 x1542 +1 x1543 +1 x1544 +1 x1545 +1 x1546 +1 x414 +1 x1547 +1 x1548 +1 x1549 +1 x1550 +1 x1551 +1 x515 +1 x405 +1 x1552 +1 x1553 +1 x1554 +1 x1555 +1 x1556 +1 x1557 +1 x1558 +1 x336 +1 x385 +1 x39 +1 x214 +1 x1559 +1 x1560 +1 x1561 +1 x1562 +1 x526 +1 x1563 +1 x1564 +1 x620 +1 x1565 +1 x1566 +1 x1567 +1 x1568 +1 x1569 +1 x1570 +1 x1571 +1 x1572 +1 x1573 +1 x504 +1 x1574 +1 x1575 +1 x1576 +1 x1577 +1 x1578 +1 x1579 +1 x1580 +1 x487 +1 x1581 +1 x1582 +1 x639 +1 x1583 +1 x1584 +1 x1585 +1 x1586 +1 x1587 +1 x1588 +1 x1589 +1 x1590 +1 x1591 +1 x1592 +1 x1593 +1 x1594 +1 x637 +1 x1595 +1 x1596 >= 0;
* org.eclipse.datatools.modelbase.dbdefinition 1.0.0.v200805152355 requires either org.eclipse.emf.ecore 2.4.0.v200806091234
-1 x1491 +1 x132 >= 0;
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/artifacts.jar b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/artifacts.jar
index 711c98b92..1f1683778 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/artifacts.jar
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/artifacts.jar
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/content.jar b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/content.jar
index 36decf23b..fd52c6293 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/content.jar
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/content.jar
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/Verifier_1.0.0.201310141350.jar b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/Verifier_1.0.0.201310141350.jar
deleted file mode 100644
index b55d00b24..000000000
--- a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/Verifier_1.0.0.201310141350.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/Verifier_1.0.0.202002240518.jar b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/Verifier_1.0.0.202002240518.jar
new file mode 100644
index 000000000..62ebe2d6b
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/Verifier_1.0.0.202002240518.jar
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/p2TestFeature1_1.0.0.201310141350.jar b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/p2TestFeature1_1.0.0.201310141350.jar
deleted file mode 100644
index 08f32afd2..000000000
--- a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/p2TestFeature1_1.0.0.201310141350.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/p2TestFeature1_1.0.0.202002240518.jar b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/p2TestFeature1_1.0.0.202002240518.jar
new file mode 100644
index 000000000..bfcd0781b
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/p2TestFeature1_1.0.0.202002240518.jar
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/p2TestFeature2_1.0.0.201310141350.jar b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/p2TestFeature2_1.0.0.201310141350.jar
deleted file mode 100644
index a3adfb67b..000000000
--- a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/p2TestFeature2_1.0.0.201310141350.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/p2TestFeature2_1.0.0.202002240518.jar b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/p2TestFeature2_1.0.0.202002240518.jar
new file mode 100644
index 000000000..9fc64d275
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/features/p2TestFeature2_1.0.0.202002240518.jar
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/org.eclipse.equinox.p2.tests.verifier_1.1.0.201310141350.jar b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/org.eclipse.equinox.p2.tests.verifier_1.1.0.201310141350.jar
deleted file mode 100644
index b1b19eefd..000000000
--- a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/org.eclipse.equinox.p2.tests.verifier_1.1.0.201310141350.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/org.eclipse.equinox.p2.tests.verifier_1.2.500.202002240518.jar b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/org.eclipse.equinox.p2.tests.verifier_1.2.500.202002240518.jar
new file mode 100644
index 000000000..dbaaaec9d
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/org.eclipse.equinox.p2.tests.verifier_1.2.500.202002240518.jar
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/p2TestBundle1_1.0.0.201310141350.jar b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/p2TestBundle1_1.0.0.201310141350.jar
deleted file mode 100644
index a869298fb..000000000
--- a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/p2TestBundle1_1.0.0.201310141350.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/p2TestBundle1_1.0.0.202002240518.jar b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/p2TestBundle1_1.0.0.202002240518.jar
new file mode 100644
index 000000000..51230fe01
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/p2TestBundle1_1.0.0.202002240518.jar
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/p2TestBundle2_1.0.0.201310141350.jar b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/p2TestBundle2_1.0.0.201310141350.jar
deleted file mode 100644
index ae9c676f2..000000000
--- a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/p2TestBundle2_1.0.0.201310141350.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/p2TestBundle2_1.0.0.202002240518.jar b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/p2TestBundle2_1.0.0.202002240518.jar
new file mode 100644
index 000000000..5213a0ad0
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/sharedInstall/repo/plugins/p2TestBundle2_1.0.0.202002240518.jar
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/updatesite/CategoryXMLActionTest/associateSites.xml b/bundles/org.eclipse.equinox.p2.tests/testData/updatesite/CategoryXMLActionTest/associateSites.xml
index 1238ec316..bddf9e047 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/updatesite/CategoryXMLActionTest/associateSites.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/updatesite/CategoryXMLActionTest/associateSites.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<associateSites>
-<associateSite url="http://download.eclipse.org/eclipse/updates/3.5" label="Eclipse Project Update Site"/>
+<associateSite url="https://download.eclipse.org/eclipse/updates/3.5" label="Eclipse Project Update Site"/>
<associateSite url="This is a bogus URI" label="broken"/>
</associateSites> \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/updatesite/SiteXMLActionTest/associateSites.xml b/bundles/org.eclipse.equinox.p2.tests/testData/updatesite/SiteXMLActionTest/associateSites.xml
index 1238ec316..fb00b10b3 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/updatesite/SiteXMLActionTest/associateSites.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/updatesite/SiteXMLActionTest/associateSites.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<associateSites>
-<associateSite url="http://download.eclipse.org/eclipse/updates/3.5" label="Eclipse Project Update Site"/>
+<associateSite url="https://download.eclipse.org/eclipse/updates/4.21" label="Eclipse Project Update Site"/>
<associateSite url="This is a bogus URI" label="broken"/>
</associateSites> \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/updatesite/SiteXMLActionTest/site.xml b/bundles/org.eclipse.equinox.p2.tests/testData/updatesite/SiteXMLActionTest/site.xml
index 3e0b2f175..63668e601 100644
--- a/bundles/org.eclipse.equinox.p2.tests/testData/updatesite/SiteXMLActionTest/site.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/updatesite/SiteXMLActionTest/site.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<site associateSitesURL="associateSites.xml" mirrorsURL="http://www.eclipse.org/downloads/download.php?file=/eclipse/updates/3.4&amp;format=xml">
+<site associateSitesURL="associateSites.xml" mirrorsURL="https://www.eclipse.org/downloads/download.php?file=/eclipse/updates/4.21&amp;format=xml">
<feature url="features/test.feature_1.0.0.jar" id="test.feature" version="1.0.0">
<category name="Test Category"/>
</feature>
diff --git a/bundles/org.eclipse.equinox.p2.testserver/.classpath b/bundles/org.eclipse.equinox.p2.testserver/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.testserver/.classpath
+++ b/bundles/org.eclipse.equinox.p2.testserver/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.testserver/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.testserver/.settings/org.eclipse.jdt.core.prefs
index 97d2ee121..b3d5b56d8 100644
--- a/bundles/org.eclipse.equinox.p2.testserver/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.testserver/.settings/org.eclipse.jdt.core.prefs
@@ -18,9 +18,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -37,6 +37,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -94,6 +95,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -131,10 +133,11 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=warning
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -142,20 +145,23 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -247,11 +253,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -282,6 +289,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -306,13 +315,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -360,6 +373,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -396,9 +411,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -434,10 +452,14 @@ org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.equinox.p2.testserver/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.testserver/META-INF/MANIFEST.MF
index f9c0c2733..46417adf1 100644
--- a/bundles/org.eclipse.equinox.p2.testserver/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.testserver/META-INF/MANIFEST.MF
@@ -2,13 +2,13 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Testserver
Bundle-SymbolicName: org.eclipse.equinox.p2.testserver;singleton:=true
-Bundle-Version: 1.1.100.qualifier
+Bundle-Version: 1.2.0.qualifier
Bundle-Activator: org.eclipse.equinox.p2.testserver.Activator
Bundle-Vendor: Eclipse
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Import-Package: org.osgi.framework;version="1.3.0"
Bundle-ActivationPolicy: lazy
-Require-Bundle: javax.servlet;bundle-version="2.4.0",
+Require-Bundle: jakarta.servlet-api;bundle-version="2.4.0",
org.eclipse.equinox.http.registry,
org.eclipse.equinox.http.servlet;bundle-version="1.0.200",
org.eclipse.osgi.services;bundle-version="3.2.0",
diff --git a/bundles/org.eclipse.equinox.p2.testserver/pom.xml b/bundles/org.eclipse.equinox.p2.testserver/pom.xml
index 4c49b844e..15046df14 100644
--- a/bundles/org.eclipse.equinox.p2.testserver/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.testserver/pom.xml
@@ -4,11 +4,11 @@
<parent>
<artifactId>org.eclipse.equinox.p2.tests-parent</artifactId>
<groupId>org.eclipse</groupId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../../org.eclipse.equinox.p2.releng/org.eclipse.equinox.p2.tests-parent</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.testserver</artifactId>
- <version>1.1.100-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.testserver/src/org/eclipse/equinox/p2/testserver/Activator.java b/bundles/org.eclipse.equinox.p2.testserver/src/org/eclipse/equinox/p2/testserver/Activator.java
index b96c5afd3..31e6cffda 100644
--- a/bundles/org.eclipse.equinox.p2.testserver/src/org/eclipse/equinox/p2/testserver/Activator.java
+++ b/bundles/org.eclipse.equinox.p2.testserver/src/org/eclipse/equinox/p2/testserver/Activator.java
@@ -45,9 +45,9 @@ public class Activator implements BundleActivator, ServiceTrackerCustomizer<Http
private AlwaysFailContext alwaysFail;
private FlipFlopFailContext flipFlop;
- private static final String SITE = "http://download.eclipse.org/eclipse/updates/3.4"; //$NON-NLS-1$
- private static final String SITE2 = "http://www.eclipse.org/equinox/p2/testing/updateSite"; //$NON-NLS-1$
- private static final String SITE3 = "http://download.eclipse.org/eclipse/updates/3.5-I-builds/"; //$NON-NLS-1$
+ private static final String SITE = "https://download.eclipse.org/eclipse/updates/3.4"; //$NON-NLS-1$
+ private static final String SITE2 = "https://www.eclipse.org/equinox/p2/testing/updateSite"; //$NON-NLS-1$
+ private static final String SITE3 = "https://download.eclipse.org/eclipse/updates/3.5-I-builds/"; //$NON-NLS-1$
@Override
public void start(BundleContext aContext) throws Exception {
diff --git a/bundles/org.eclipse.equinox.p2.testserver/webfiles/index.html b/bundles/org.eclipse.equinox.p2.testserver/webfiles/index.html
index c07f8d265..9f1800e6e 100644
--- a/bundles/org.eclipse.equinox.p2.testserver/webfiles/index.html
+++ b/bundles/org.eclipse.equinox.p2.testserver/webfiles/index.html
@@ -8,10 +8,10 @@ log in. The credentials are: user: <b>Aladdin</b>, password: <b>open sesame</b>.
<a href="http://localhost:8080/private/index.html">here</a></p>
<p>The following real content is registered:</p>
<ul>
-<li>/proxy/private/ - goes to http://http://download.eclipse.org/eclipse/updates/3.4, but requires authentication.</li>
-<li>/proxy/public/ - goes to http://http://download.eclipse.org/eclipse/updates/3.4, (useful in redirects).</li>
-<li>/proxy/never/ - goes to http://http://download.eclipse.org/eclipse/updates/3.4, but always fail authentication.</li>
-<li>/proxy/flipFlop/ - goes to http://http://download.eclipse.org/eclipse/updates/3.4, but fails authentication every second attempt.</li>
+<li>/proxy/private/ - goes to https://download.eclipse.org/eclipse/updates/3.4, but requires authentication.</li>
+<li>/proxy/public/ - goes to https://download.eclipse.org/eclipse/updates/3.4, (useful in redirects).</li>
+<li>/proxy/never/ - goes to https://download.eclipse.org/eclipse/updates/3.4, but always fail authentication.</li>
+<li>/proxy/flipFlop/ - goes to https://download.eclipse.org/eclipse/updates/3.4, but fails authentication every second attempt.</li>
<li>/proxy/truncated - goes to updates/3.4, but truncates all files</li>
<li>/proxy/molested - goes to updates/3.4, but generates gibberish for all files</li>
<li>/proxy/decelerate - goes to updates/3.4, but delivers files in very small delayed packets - delay increases.</li>
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/.classpath b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/.classpath
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/.settings/org.eclipse.jdt.core.prefs
index 2575694e1..fc51c69b1 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -36,6 +36,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -89,6 +90,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=warning
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -126,7 +128,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -140,7 +143,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -261,7 +263,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -332,7 +333,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -477,7 +477,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/META-INF/MANIFEST.MF
index 7889fc06f..71901cee2 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.touchpoint.eclipse;singleton:=true
-Bundle-Version: 2.2.500.qualifier
+Bundle-Version: 2.3.100.qualifier
Bundle-Activator: org.eclipse.equinox.internal.p2.touchpoint.eclipse.Activator
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -15,12 +15,14 @@ Export-Package: org.eclipse.equinox.internal.p2.touchpoint.eclipse;version="2.0.
org.eclipse.equinox.internal.p2.update;version="2.0.0";x-friends:="org.eclipse.equinox.p2.reconciler.dropins,org.eclipse.equinox.p2.extensionlocation,org.eclipse.equinox.p2.directorywatcher",
org.eclipse.equinox.p2.touchpoint.eclipse.query;version="2.0.0"
Require-Bundle: org.eclipse.equinox.common;bundle-version="[3.5.0,4.0.0)"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Import-Package: javax.xml.parsers,
org.eclipse.equinox.frameworkadmin;version="[2.0.0,3.0.0)",
+ org.eclipse.equinox.internal.p2.artifact.processors.pgp,
org.eclipse.equinox.internal.p2.core.helpers,
org.eclipse.equinox.internal.p2.engine,
+ org.eclipse.equinox.internal.p2.engine.phases,
org.eclipse.equinox.internal.p2.garbagecollector,
org.eclipse.equinox.internal.p2.metadata,
org.eclipse.equinox.internal.provisional.frameworkadmin,
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/pom.xml b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/pom.xml
index 52db75022..7fff2566e 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.touchpoint.eclipse</artifactId>
- <version>2.2.500-SNAPSHOT</version>
+ <version>2.3.100-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/AgentFromInstall.java b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/AgentFromInstall.java
index ed3090ac8..85f0d8b1c 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/AgentFromInstall.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/AgentFromInstall.java
@@ -139,12 +139,7 @@ public class AgentFromInstall {
private static String findProfile(File profileDirectory) {
final String PROFILE_EXT = ".profile"; //$NON-NLS-1$
- File[] profileDirectories = profileDirectory.listFiles(new FileFilter() {
- @Override
- public boolean accept(File pathname) {
- return pathname.getName().endsWith(PROFILE_EXT) && pathname.isDirectory();
- }
- });
+ File[] profileDirectories = profileDirectory.listFiles((FileFilter) pathname -> pathname.getName().endsWith(PROFILE_EXT) && pathname.isDirectory());
if (profileDirectories.length == 1) {
String directoryName = profileDirectories[0].getName();
return SimpleProfileRegistry.unescape(directoryName.substring(0, directoryName.lastIndexOf(PROFILE_EXT)));
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/ActionConstants.java b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/ActionConstants.java
index ee394cfcf..ec918b53c 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/ActionConstants.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/ActionConstants.java
@@ -17,7 +17,6 @@ public class ActionConstants {
public static final String PARM_AGENT = "agent"; //$NON-NLS-1$
public static final String PARM_AT_ARTIFACT = "@artifact"; //$NON-NLS-1$
- public static final String PARM_ARTIFACT_FILES = "artifactFiles"; //$NON-NLS-1$
public static final String PARM_ARTIFACT_REQUESTS = "artifactRequests"; //$NON-NLS-1$
public static final String PARM_BUNDLE = "bundle"; //$NON-NLS-1$
public static final String PARM_FEATURE = "feature"; //$NON-NLS-1$
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/AddJVMArgumentAction.java b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/AddJVMArgumentAction.java
index 6c11207de..1a5a5658e 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/AddJVMArgumentAction.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/AddJVMArgumentAction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 IBM Corporation and others.
+ * Copyright (c) 2008, 2020 IBM Corporation and others.
*
* This
* program and the accompanying materials are made available under the terms of
@@ -10,6 +10,7 @@
* SPDX-License-Identifier: EPL-2.0
*
* Contributors: IBM Corporation - initial API and implementation
+ * Christoph Läubrich - Bug 569891
******************************************************************************/
package org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions;
@@ -59,11 +60,11 @@ public class AddJVMArgumentAction extends ProvisioningAction {
File storageArea = (File) parameters.get(ActionConstants.PARM_PROFILE_DATA_DIRECTORY);
try {
if (arg.startsWith(XMS))
- addByteArg(arg, XMS, launcherData, storageArea);
+ addByteArg(arg.trim(), XMS, launcherData, storageArea);
else if (arg.startsWith(XMX))
- addByteArg(arg, XMX, launcherData, storageArea);
+ addByteArg(arg.trim(), XMX, launcherData, storageArea);
else if (arg.startsWith(XX_MAX_PERM_SIZE))
- addByteArg(arg, XX_MAX_PERM_SIZE, launcherData, storageArea);
+ addByteArg(arg.trim(), XX_MAX_PERM_SIZE, launcherData, storageArea);
else
// Argument with a non-byte value, no special handling
launcherData.addJvmArg(arg);
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/CheckTrustAction.java b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/CheckTrustAction.java
index 201535517..7c7b51c17 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/CheckTrustAction.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/CheckTrustAction.java
@@ -18,6 +18,7 @@ import java.util.Collection;
import java.util.Map;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
+import org.eclipse.equinox.internal.p2.engine.phases.CheckTrust;
import org.eclipse.equinox.internal.p2.touchpoint.eclipse.EclipseTouchpoint;
import org.eclipse.equinox.internal.p2.touchpoint.eclipse.Util;
import org.eclipse.equinox.p2.core.IProvisioningAgent;
@@ -26,6 +27,8 @@ import org.eclipse.equinox.p2.engine.spi.ProvisioningAction;
import org.eclipse.equinox.p2.metadata.IArtifactKey;
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.p2.query.QueryUtil;
+import org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor;
+import org.eclipse.equinox.p2.repository.artifact.IFileArtifactRepository;
/**
* This action collects the set of bundle files on which the signature trust
@@ -47,14 +50,21 @@ public class CheckTrustAction extends ProvisioningAction {
if (!profile.available(QueryUtil.createIUQuery(iu), null).isEmpty())
return null;
@SuppressWarnings("unchecked")
- Collection<File> bundleFiles = (Collection<File>) parameters.get(ActionConstants.PARM_ARTIFACT_FILES);
+ Map<IArtifactDescriptor, File> bundleFiles = (Map<IArtifactDescriptor, File>) parameters
+ .get(CheckTrust.PARM_ARTIFACTS);
Collection<IArtifactKey> artifacts = iu.getArtifacts();
- if (artifacts == null)
+ if (artifacts == null) {
return null;
+ }
+ IFileArtifactRepository repo = Util.getAggregatedBundleRepository(agent, profile);
for (IArtifactKey key : artifacts) {
- File bundleFile = Util.getArtifactFile(agent, key, profile);
- if (!bundleFiles.contains(bundleFile))
- bundleFiles.add(bundleFile);
+ for (IArtifactDescriptor descriptor : repo.getArtifactDescriptors(key)) {
+ IFileArtifactRepository currentRepo = descriptor.getRepository() instanceof IFileArtifactRepository
+ ? (IFileArtifactRepository) descriptor.getRepository()
+ : repo;
+ File artifactFile = currentRepo.getArtifactFile(descriptor);
+ bundleFiles.put(descriptor, artifactFile);
+ }
}
return null;
}
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/SetJvmAction.java b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/SetJvmAction.java
index 1005ac00c..5a6b3e7cf 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/SetJvmAction.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/SetJvmAction.java
@@ -15,6 +15,7 @@
package org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions;
import java.io.File;
+import java.io.IOException;
import java.util.Map;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
@@ -45,6 +46,9 @@ public class SetJvmAction extends ProvisioningAction {
// make a backup - even if it is null
getMemento().put(ActionConstants.PARM_PREVIOUS_VALUE, previous == null ? null : previous.getPath());
launcherData.setJvm(jvm);
+ if (jvm != null) {
+ adjustWorkbenchSystemProperties(jvm);
+ }
return Status.OK_STATUS;
}
@@ -57,8 +61,46 @@ public class SetJvmAction extends ProvisioningAction {
String previous = (String) getMemento().get(ActionConstants.PARM_PREVIOUS_VALUE);
LauncherData launcherData = ((Manipulator) parameters.get(EclipseTouchpoint.PARM_MANIPULATOR))
.getLauncherData();
- launcherData.setJvm(previous == null ? null : new File(previous));
+ final File jvm = previous == null ? null : new File(previous);
+ launcherData.setJvm(jvm);
+ if (jvm != null) {
+ adjustWorkbenchSystemProperties(jvm);
+ }
return Status.OK_STATUS;
}
+ private static void adjustWorkbenchSystemProperties(File jvm) {
+ try {
+ String eclipseCommands = System.getProperty("eclipse.commands"); //$NON-NLS-1$
+ if (eclipseCommands != null) {
+ // set the eclipse.vm system property so the Workbench restart will use this vm
+ // to restart.
+ final String fullPath = jvm.getCanonicalPath();
+ System.setProperty("eclipse.vm", fullPath); //$NON-NLS-1$
+
+ // also adjust the -vm property in the eclipse.commands system property so that
+ // vm is actually used.
+ int index = eclipseCommands.indexOf("-vm"); //$NON-NLS-1$
+ if (index != -1) {
+ final String vmWithLineFeed = "-vm\n"; //$NON-NLS-1$
+ // find the next line ending after -vm line.
+ int index2 = eclipseCommands.indexOf('\n', index + vmWithLineFeed.length());
+ if (index2 == -1) {
+ eclipseCommands = eclipseCommands.substring(0, index) + vmWithLineFeed + fullPath;
+ } else {
+ String tmp = eclipseCommands.substring(0, index) + vmWithLineFeed + fullPath;
+ eclipseCommands = tmp + eclipseCommands.substring(index2);
+ }
+ System.setProperty("eclipse.commands", eclipseCommands); //$NON-NLS-1$
+ }
+ }
+
+ } catch (IOException e) {
+ // ignore this error, should not really happen for file.getCanonicalPath() which
+ // should be just installed just fine.
+ // if this fails for some reason then only the restart wouldn't be using this,
+ // but it wouldn't block the actual install.
+ }
+ }
+
} \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/update/XMLWriter.java b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/update/XMLWriter.java
index 905bc86c5..66a64c7de 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/update/XMLWriter.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/update/XMLWriter.java
@@ -25,6 +25,8 @@ import java.util.Map;
public class XMLWriter extends PrintWriter {
protected int tab;
+ static final boolean ignoreWhitespace = Boolean.getBoolean("p2.ignoreWhitespace"); //$NON-NLS-1$
+
/* constants */
protected static final String XML_VERSION = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; //$NON-NLS-1$
@@ -69,9 +71,9 @@ public class XMLWriter extends PrintWriter {
sb.append("\""); //$NON-NLS-1$
}
sb.append(">"); //$NON-NLS-1$
- if (shouldTab)
+ if (shouldTab && !ignoreWhitespace)
printTabulation();
- if (newLine)
+ if (newLine && !ignoreWhitespace)
println(sb.toString());
else
print(sb.toString());
@@ -108,16 +110,16 @@ public class XMLWriter extends PrintWriter {
// Encode special XML characters into the equivalent character references.
// These five are defined by default for all XML documents.
switch (c) {
- case '<' :
- return "lt"; //$NON-NLS-1$
- case '>' :
- return "gt"; //$NON-NLS-1$
- case '"' :
- return "quot"; //$NON-NLS-1$
- case '\'' :
- return "apos"; //$NON-NLS-1$
- case '&' :
- return "amp"; //$NON-NLS-1$
+ case '<':
+ return "lt"; //$NON-NLS-1$
+ case '>':
+ return "gt"; //$NON-NLS-1$
+ case '"':
+ return "quot"; //$NON-NLS-1$
+ case '\'':
+ return "apos"; //$NON-NLS-1$
+ case '&':
+ return "amp"; //$NON-NLS-1$
}
return null;
}
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/.classpath b/bundles/org.eclipse.equinox.p2.touchpoint.natives/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/.classpath
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.touchpoint.natives/.settings/org.eclipse.jdt.core.prefs
index 4e79b56c0..26df1a4b1 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/.settings/org.eclipse.jdt.core.prefs
@@ -16,9 +16,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -88,6 +89,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -124,7 +126,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -138,7 +141,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -259,7 +261,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -330,7 +331,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -475,7 +475,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.touchpoint.natives/META-INF/MANIFEST.MF
index e9708585c..3e794a0db 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/META-INF/MANIFEST.MF
@@ -2,17 +2,20 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.touchpoint.natives;singleton:=true
-Bundle-Version: 1.3.400.qualifier
+Bundle-Version: 1.4.300.qualifier
Bundle-Activator: org.eclipse.equinox.internal.p2.touchpoint.natives.Activator
Bundle-Vendor: %providerName
Bundle-Localization: plugin
-Export-Package: org.eclipse.equinox.internal.p2.touchpoint.natives;x-internal:=true,
+Export-Package:
+ org.eclipse.equinox.internal.p2.touchpoint.natives;x-internal:=true,
org.eclipse.equinox.internal.p2.touchpoint.natives.actions;x-internal:=true
-Require-Bundle: org.eclipse.equinox.common,
+Require-Bundle:
+ org.eclipse.equinox.common,
org.eclipse.equinox.app;bundle-version="1.3.0";resolution:=optional
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
-Import-Package: org.eclipse.equinox.internal.p2.core.helpers,
+Import-Package:
+ org.eclipse.equinox.internal.p2.core.helpers,
org.eclipse.equinox.internal.p2.engine,
org.eclipse.equinox.p2.core;version="[2.0.0,3.0.0)",
org.eclipse.equinox.p2.engine;version="[2.0.0,3.0.0)",
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/META-INF/p2.inf b/bundles/org.eclipse.equinox.p2.touchpoint.natives/META-INF/p2.inf
deleted file mode 100644
index f8dcaa676..000000000
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/META-INF/p2.inf
+++ /dev/null
@@ -1,35 +0,0 @@
-provides.0.namespace=org.eclipse.equinox.p2.iu
-provides.0.name=org.eclipse.equinox.p2.touchpoint.natives
-provides.0.version=1.1.100.v20140523-0116
-
-provides.1.namespace=org.eclipse.equinox.p2.iu
-provides.1.name=org.eclipse.equinox.p2.touchpoint.natives
-provides.1.version=1.2.0.$qualifier$
-
-provides.2.namespace=org.eclipse.equinox.p2.iu
-provides.2.name=org.eclipse.equinox.p2.touchpoint.natives
-provides.2.version=1.2.100.$qualifier$
-
-provides.3.namespace=org.eclipse.equinox.p2.iu
-provides.3.name=org.eclipse.equinox.p2.touchpoint.natives
-provides.3.version=1.2.200.$qualifier$
-
-provides.4.namespace=org.eclipse.equinox.p2.iu
-provides.4.name=org.eclipse.equinox.p2.touchpoint.natives
-provides.4.version=1.3.0.$qualifier$
-
-provides.5.namespace=org.eclipse.equinox.p2.iu
-provides.5.name=org.eclipse.equinox.p2.touchpoint.natives
-provides.5.version=1.3.100.$qualifier$
-
-provides.6.namespace=org.eclipse.equinox.p2.iu
-provides.6.name=org.eclipse.equinox.p2.touchpoint.natives
-provides.6.version=1.3.200.$qualifier$
-
-provides.7.namespace=org.eclipse.equinox.p2.iu
-provides.7.name=org.eclipse.equinox.p2.touchpoint.natives
-provides.7.version=1.3.300.$qualifier$
-
-provides.8.namespace=org.eclipse.equinox.p2.iu
-provides.8.name=org.eclipse.equinox.p2.touchpoint.natives
-provides.8.version=1.3.400.$qualifier$
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/pom.xml b/bundles/org.eclipse.equinox.p2.touchpoint.natives/pom.xml
index 43054ba1e..f90831920 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.touchpoint.natives</artifactId>
- <version>1.3.400-SNAPSHOT</version>
+ <version>1.4.300-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/BackupStore.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/BackupStore.java
deleted file mode 100644
index 14cde8ab4..000000000
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/BackupStore.java
+++ /dev/null
@@ -1,828 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2018 Cloudsmith Inc. and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Cloudsmith Inc. - initial API and implementation
- * SAP AG - Ongoing development
- *******************************************************************************/
-
-package org.eclipse.equinox.internal.p2.touchpoint.natives;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-import java.util.Map.Entry;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * Stores files by copying them to a uniquely named temporary directory.
- * The BackupStore remembers filenames and can recreate them in their original location.
- *
- * <h3>Usage</h3>
- * The user of this class should instantiate the BackupStore with some prefix that is
- * meaningful to a human. Uniqueness is obtained without the prefix - the prefix is used to
- * be able to differentiate between different backup directories by a human (in case of crashes etc).
- *
- * If instantiated with a directory this directory will be used to store the backup root directory. If
- * this directory is null, the users home directory is used by default.
- *
- * Once instantiated, use the {@link #backup(File)} and {@link #backupDirectory(File)} methods
- * to move files to backup instead of deleting them. A file that
- * is backed up should not be deleted - it is simply moved out of the way.
- * Use {@link #backupCopy(File)} to
- * move the file out of harms way, but keep a copy of it in the original location.
- * The methods {@link #backupAll(File)} and {@link #backupCopyAll(File)} backs up an entire structure.
- *
- * When backup is finished - the user should either call {@link #restore()} to put all
- * of the files back, or call {@link #discard()} to remove all of the backed up "copies".
- *
- * If {@link #restore()} or {@link #discard()} is not called the backup files will never be deleted.
- *
- * The backup store does not synchronize directories - actions that write new files are
- * responsible for removing them. Overwriting existing files should be done by first backing
- * up the file, and then creating a new file. Modifying a file, should be done by
- * using {@link #backupCopy(File)} or
- * first making a copy, then backing up the original, and then renaming the copy.
- *
- * <h3>Read Only and Permissions</h3>
- * Directories that are read only (to current user) can not be backed up.
- * Backup is performed using {@link File#renameTo(File)} and handling of permissions
- * is operating system dependent. It is expected that a Un*x type system retains the
- * permissions as a file is moved to the backup store and later gets restored.
- * Backup directories are created as they are needed and will (at least on Un*x) inherit the
- * permissions from its parent directory.
- *
- * If a rename can not be performed, the backup store will make a copy and delete the original
- * file. This makes it possible to backup and restore across volume boundaries.
- *
- * When restoring directories they
- * will be created with permissions in a platform specific way (on UN*IX they will inherit the permissions
- * of the parent directory).
- *
- * <h3>Checkpointing</h3>
- * Checkpointing (i.e. to be able to rollback to a particular point) can be implemented by using
- * multiple instances of BackupStore. The client code will need to remember the individual order
- * among the backup stores.
- *
- * <h3>Restartability</h3>
- * Not implemented - it is possible to obtain the name of the backup directories,
- * so manual restore is possible after a crash. An idea is to add persistence to a file, and
- * be able to read it back in again.
- *
- * <h3>A note about exceptions</h3>
- * In general {@link IllegalArgumentException} is thrown when attempting an operation
- * that is considered "wrong use", and an {@link IllegalStateException} or subclass thereof is thrown on an overall
- * wrong use of BackupStore (i.e. attempt to backup when store has been restored). Some cases of
- * "wrong use" can not be differentiated from I/O errors (like a "file not found" as this could
- * be caused by an entire disk disappearing - in these case an {@link IOException} is thrown.
- *
- * <h3>Implementation Note</h3>
- * The backup root directory will contain folders that reflects file system roots. These are encoded using
- * "_" for the UNI*X root directory, "__" for a Windows network mounted directory, and single "drive letter" folders
- * corresponding to Windows drive letters. Typically, on UN*X there will only be a "_" directory in the backup root,
- * and on windows there will typically be a single directory called "C".
- *
- *
- */
-public class BackupStore implements IBackupStore {
-
- private static final String BACKUP_FILE_EXTENSION = ".p2bu"; //$NON-NLS-1$
-
- /**
- * The name to use for a directory that represents leading separator (i.e. "/" or "\").
- */
- private static final String ROOTCHAR = "_"; //$NON-NLS-1$
-
- /**
- * Map of directory File to backup root (File) - the backup root has
- * a directory named {@link #backupName} where the backup is found.
- */
- //private Map backups = new HashMap();
- private final File backupRoot;
-
- /**
- * The name of the backup directory (no path - relative to the backup root).
- */
- private final String backupName;
-
- /**
- * The name of a dummy file used to backup empty directories
- */
- private final String dummyName;
-
- /**
- * A server socket that is used to obtain a port (a shared resource on this machine)
- * and thus create a unique number. Used as part of the unique id of backup directories
- * and probe files.
- */
- private ServerSocket socket = null;
-
- /**
- * Counter of how many files where backed up. Used as a simple check mechanism if
- * everything was restored (a guard against manual/external tampering with the backup directories).
- */
- private long backupCounter;
-
- /**
- * Counter of how many files where restored. See {@link #backupCounter}.
- */
- private long restoreCounter;
-
- /**
- * Flag indicating if this BackupStore has been restored or canceled.
- */
- private boolean closed;
-
- private final Map<String, String> renamedInPlace = new HashMap<>();
-
- /**
- * Generates a BackupStore with a default prefix of ".p2bu" for backup directory and
- * probe file.
- * The full id of the store is on the format "prefix_hextime_hexIPport"
- * - see {@link #genUnique()} for more info.
- */
- public BackupStore() {
- this(null, BACKUP_FILE_EXTENSION);
- }
-
- /**
- * Generates a BackupStore with a specified prefix for backup directories and
- * probe file.
- * The full id of the store is on the format "prefix_hextime_hexipport"
- * - see {@link #genUnique()} for more info.
- *
- * @param buParentDirectory - name of directory where the backup directory should be created - if null, java.io.tmpdir is used
- * @param prefix - prefix used for human identification of backup directories
- */
- public BackupStore(File buParentDirectory, String prefix) {
- if (buParentDirectory == null)
- buParentDirectory = new File(System.getProperty("java.io.tmpdir")); //$NON-NLS-1$
- backupRoot = buParentDirectory;
-
- // generate a name for the backup store and the dummy file used for empty directories
- String unique = genUnique();
- dummyName = prefix + "d_" + unique; //$NON-NLS-1$
- backupName = prefix + "_" + unique; //$NON-NLS-1$
- backupCounter = 0;
- restoreCounter = 0;
- closed = false;
- }
-
- /**
- * Since a socket port is used to create a unique number, the socket
- * must be closed if this instance is garbage collected and the user
- * of the instance has not either restored or discarded.
- */
- @Override
- protected void finalize() throws Throwable {
- try {
- if (socket != null && !socket.isClosed())
- socket.close();
- } finally {
- super.finalize();
- }
- }
-
- /**
- * Returns the unique backup name (this is the name of generated backup directories).
- * @return the backup name.
- */
- @Override
- public String getBackupName() {
- return backupName;
- }
-
- public File getBackupRoot() {
- return backupRoot;
- }
-
- /**
- * Backup the file by moving it to the backup store (for later (optional) restore).
- * Calling this method with a file that represents a directory is equivalent to calling
- * {@link #backupDirectory(File)}.
- *
- * A file (path) can only be backed up once per BackupStore instance.
- * When the file is backed up, it is moved to a directory under this BackupStore instance's directory
- * with a relative path corresponding to the original relative path from the backup root e.g.
- * the file /A/B/C/foo.txt could be moved to /A/.p2bu_ffffff_ffffff/B/C/foo.txt when /A is the
- * backup root.
- *
- * If a directory is first backed up, and later replaced by a regular file, and this file
- * is backed up (or vice versa) - an {@link IllegalArgumentException} is thrown
- *
- * A backup can not be performed on a closed BackupStore.
- *
- * @param file - the file (or directory) to backup
- * @return true if the file was backed up, false if this file (path) has already been backed up (the file is not moved to the store).
- * @throws IOException - if the backup operation fails, or the file does not exist
- * @throws ClosedBackupStoreException - if the BackupStore has been closed
- * @throws IllegalArgumentException - on type mismatch (file vs. directory) of earlier backup, or if file does not exist
- */
- @Override
- public boolean backup(File file) throws IOException {
- if (closed)
- throw new ClosedBackupStoreException("Can not perform backup()"); //$NON-NLS-1$
- if (!file.exists())
- throw new IOException(NLS.bind(Messages.BackupStore_file_not_found, file.getAbsolutePath()));
- if (file.isDirectory())
- return backupDirectory(file);
- file = makeParentCanonical(file);
- File buFile = getBackupFile(file);
- // already backed up, but was a directory = wrong usage
- if (buFile.isDirectory())
- throw new IllegalArgumentException(NLS.bind(Messages.BackupStore_directory_file_mismatch, buFile.getAbsolutePath()));
- // has already been backed up - can only be done once with one BackupStore
- if (buFile.exists()) {
- // although backed up, the file can be still on the file system when, for example,
- // two IUs are unzipping their contents to the same location and share a few common file,
- // which have to be removed twice
- if (file.exists() && !file.delete())
- throw new IOException(NLS.bind(Messages.BackupStore_can_not_remove, file.getAbsolutePath()));
- return false;
- }
-
- moveToBackup(file, buFile);
-
- return true;
- }
-
- /**
- * Move/rename file to a backup file. Callers of the method must have ensured that the source file exists and the
- * backup file has not been created yet.
- *
- * @param file source file to move; should already exist and must not be directory
- * @param buFile destination backup file to move to; should not exist and must be a directory
- * @throws IOException if the backup operation fails
- */
- protected void moveToBackup(File file, File buFile) throws IOException {
- // make sure all of the directories exist / gets created
- buFile.getParentFile().mkdirs();
- if (buFile.getParentFile().exists() && !buFile.getParentFile().isDirectory())
- throw new IllegalArgumentException(NLS.bind(Messages.BackupStore_file_directory_mismatch, buFile.getParentFile().getAbsolutePath()));
- if (moveToBackupStore(file, buFile)) {
- backupCounter++;
- return;
- }
- // could not move - this can happen because source and target are on different volumes, or
- // that source is locked "in use" on a windows machine. The copy will work across volumes,
- // but the locked file will fail on the subsequent delete.
- //
- // Rename in place
- if (isEclipseExe(file))
- renameInPlace(file);
- else {
- Util.copyStream(new FileInputStream(file), true, new FileOutputStream(buFile), true);
- backupCounter++;
- }
-
- // File.exists() is not reliable so always attempt to delete first and check why it may have failed second.
- if (!file.delete() && file.exists())
- throw new IOException(NLS.bind(Messages.BackupStore_can_not_delete_after_copy_0, file));
- }
-
- private boolean isEclipseExe(File file) {
- String launcher = System.getProperty("eclipse.launcher"); //$NON-NLS-1$
- if (launcher != null) {
- String base = new File(launcher).getName();
- if (file.getName().equalsIgnoreCase(base))
- return true;
- }
- return file.getName().equalsIgnoreCase("eclipse.exe") || file.getName().equalsIgnoreCase("eclipsec.exe"); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- protected boolean moveToBackupStore(File file, File buFile) {
- if (file.renameTo(buFile)) {
- // if the original file still exists, we have a problem.
- if (file.exists()) {
- // If the renamed work, but the file still exists, remove the backup
- // and return false
- if (buFile.exists())
- buFile.delete();
- } else {
- return true;
- }
- }
- return false;
- }
-
- protected void renameInPlace(File file) {
- String newName = file.getAbsolutePath() + getTimeStamp() + BACKUP_FILE_EXTENSION;
- renamedInPlace.put(file.getAbsolutePath(), newName);
- file.renameTo(new File(newName));
- }
-
- protected String getTimeStamp() {
- return "-" + new Date().getTime(); //$NON-NLS-1$
- }
-
- private File getBackupFile(File file) {
- File buRoot = backupRoot;
- File buDir = new File(buRoot, backupName);
- // create the relative path from root and use that in buDir
- File buFile = new File(buDir, makeRelativeFromRoot(file).getPath());
- return buFile;
- }
-
- /**
- * Backs up a file, or everything under a directory.
- *
- * @param file - file to backup or directory
- * @throws IOException if backup operation failed
- */
- @Override
- public void backupAll(File file) throws IOException {
- if (!file.exists())
- return;
- file = makeParentCanonical(file);
- if (file.isDirectory()) {
- File[] files = file.listFiles();
- if (files != null)
- for (File f : files) {
- backupAll(f);
- }
- }
- backup(file);
- }
-
- /**
- * Backs up a file, or everything under a directory.
- * A copy of the backup is left in the original place.
- * @param file
- * @throws IOException
- */
- @Override
- public void backupCopyAll(File file) throws IOException {
- if (!file.exists())
- return;
- file = makeParentCanonical(file);
- if (file.isDirectory()) {
- File[] files = file.listFiles();
- if (files != null)
- for (File f : files) {
- backupCopyAll(f);
- }
- // if directory was empty, it needs to be backed up and then recreated
- //
- if (files == null || files.length == 0) {
- backupDirectory(file);
- file.mkdir();
- }
- } else
- backupCopy(file);
- }
-
- /**
- * Backup the file by moving it to the backup store (for later (optional) restore) but leaving
- * a copy of the contents in the original location.
- * Calling this method with a file that represents a directory throws an {@link IllegalArgumentException}.
- *
- * A file (path) can only be backed up once per BackupStore instance.
- * When the file is backed up, it is moved to a directory under this BackupStore instance's directory
- * with a relative path corresponding to the original relative path from the backup root e.g.
- * the file /A/B/C/foo.txt could be moved to /A/.p2bu_ffffff_ffffff/B/C/foo.txt when /A is the
- * backup root.
- *
- * If a directory is first backed up, and later replaced by a regular file, and this file
- * is backed up (or vice versa) - an {@link IllegalArgumentException} is thrown
- *
- * A backup can not be performed on a closed BackupStore.
- *
- * @param file - the file (or directory) to backup
- * @return true if the file was backed up, false if this file (path) has already been backed up (the file is not moved to the store).
- * @throws IOException - if the backup operation fails, or the file does not exist
- * @throws ClosedBackupStoreException - if the BackupStore has been closed
- * @throws IllegalArgumentException - on type mismatch (file vs. directory) of earlier backup, or if file is a Directory
- */
- @Override
- public boolean backupCopy(File file) throws IOException {
- if (closed)
- throw new ClosedBackupStoreException(Messages.BackupStore_backupCopy_closed_store);
- if (!file.exists())
- throw new IOException(NLS.bind(Messages.BackupStore_file_not_found, file.getAbsolutePath()));
- if (file.isDirectory())
- throw new IllegalArgumentException(NLS.bind(Messages.BackupStore_can_not_copy_directory, file.getAbsolutePath()));
- file = makeParentCanonical(file);
- //File buRoot = backupRoot;
- // File buRoot = findBackupRoot(file);
- File buDir = new File(backupRoot, backupName);
- // move the file
- // create the relative path from root and use that in buDir
- File buFile = new File(buDir, makeRelativeFromRoot(file).getPath());
- // already backed up, but was a directory = wrong usage
- if (buFile.isDirectory())
- throw new IllegalArgumentException(NLS.bind(Messages.BackupStore_directory_file_mismatch, buFile.getAbsolutePath()));
- // has already been backed up - can only be done once with one BackupStore
- if (buFile.exists())
- return false;
-
- // make sure all of the directories exist / gets created
- buFile.getParentFile().getCanonicalFile().mkdirs();
- if (buFile.getParentFile().exists() && !buFile.getParentFile().isDirectory())
- throw new IllegalArgumentException(NLS.bind(Messages.BackupStore_file_directory_mismatch, buFile.getParentFile().getAbsolutePath()));
-
- // just make a copy - one has to be made in one direction anyway
- // A renameTo followed by a copy is preferred as it preserves file permissions on the moved file
- // but it is easier to just copy and keep original.
- Util.copyStream(new FileInputStream(file), true, new FileOutputStream(buFile), true);
- backupCounter++;
- return true;
- }
-
- /**
- * Performs backup of an empty directory. The directory must be empty before it can be backed up (i.e.
- * similar to a delete of a directory). Backup the files of the directory first.
- * A call to backup a directory is really only needed for empty directories as a restore
- * of a file will also restore all of its parent directories.
- * @param file - the (empty) directory to back up
- * @return true if the directory was moved to backup. false if the directory was already backed up
- * @throws IllegalArgumentException if file is not a directory, or is not empty.
- * @throws IOException if directory can not be moved to the backup store, or if the directory is not writeable
- */
- @Override
- public boolean backupDirectory(File file) throws IOException {
- if (!file.isDirectory())
- throw new IllegalArgumentException(NLS.bind(Messages.BackupStore_not_a_directory, file.getAbsolutePath()));
- file = makeParentCanonical(file);
- if (file.list().length != 0)
- throw new IllegalArgumentException(NLS.bind(Messages.BackupStore_directory_not_empty, file.getAbsolutePath()));
- // the easiest way is to create a dummy file and back that up (the dummy is simply ignored when restoring).
- File dummy = new File(file, dummyName);
- dummy = makeParentCanonical(dummy);
- File buFile = getBackupFile(dummy);
- boolean backedUp = buFile.exists();
- // backup only if the folder has not been already backed up;
- // this can happen if, for example, two IUs unzip to the same folder and then want to delete it
- if (!backedUp) {
- if (closed)
- throw new ClosedBackupStoreException("Can not perform backup()"); //$NON-NLS-1$
- if (!dummy.createNewFile())
- throw new IOException(NLS.bind(Messages.BackupStore_can_not_create_dummy, dummy.getAbsolutePath()));
- moveToBackup(dummy, buFile);
- }
- // previous checks have verified that the directory exists
- if (!file.delete())
- throw new IOException(NLS.bind(Messages.BackupStore_can_not_remove, dummy.getAbsolutePath()));
- // will return true if the directory was already backed up at the beginning of the operation and false otherwise
- return !backedUp;
- }
-
- /**
- * Restores all backup files from backup store.
- * Note that restore of a (non directory) file deletes an existing file or directory found
- * in the restore location.
- * When the backup has been restored this BackupStore instance is closed and can not be
- * used for further backup or restore.
- *
- * If there are unrestorable items (non writable directories, or general IO exceptions) these items
- * are written to the log, and the backup copies remain in the file system and can be manually restored
- * (using a simple zip of the backup directory, and an unzip to the buRoot once the problem has been corrected).
- *
- * @throws IOException if the backup was not fully restored - unrestored items have been logged.
- * @throws ClosedBackupStoreException if the backup is already closed.
- */
- @Override
- public void restore() throws IOException {
- if (closed)
- throw new ClosedBackupStoreException(Messages.BackupStore_restore_closed_store);
- // put back all files
- // collect things that could not be restored (so final status can be reported)
- Set<File> unrestorable = new HashSet<>();
- boolean restored = true;
- if (!backupRoot.exists()) {
- logError(NLS.bind(Messages.BackupStore_missing_backup_directory, backupRoot.getAbsolutePath()));
- restored = false;
- } else
- restoreRoots(new File(backupRoot, backupName), unrestorable);
-
- logUnrestorables(unrestorable);
- if (unrestorable.size() > 0)
- restored = false;
- close(restored);
- closed = true;
- }
-
- private void logUnrestorables(Set<File> unrestorable) {
- // if there are unrestorable units log them
- //
- if (unrestorable != null && unrestorable.size() > 0) {
- for (File file : unrestorable)
- logError(NLS.bind(Messages.BackupStore_manual_restore_needed, file.getAbsolutePath()));
- }
- }
-
- /**
- * Discards and closes this BackupStore. Does nothing if this store is already
- * restored or discarded.
- */
- @Override
- public void discard() {
- if (closed)
- return;
- closeSocket();
- removeBackups();
- closed = true;
- }
-
- private void close(boolean fullyRestored) throws IOException {
- closeSocket();
- // check external tampering with backup store
- if (backupCounter != restoreCounter) {
- if (!fullyRestored)
- logError(NLS.bind(Messages.BackupStore_0_of_1_items_restored, Long.valueOf(restoreCounter), Long.valueOf(backupCounter)));
- else {
- logError(NLS.bind(Messages.BackupStore_externally_modified_0_of_1_restored, Long.valueOf(restoreCounter), Long.valueOf(backupCounter)));
- fullyRestored = false;
- }
- }
- if (!fullyRestored)
- throw new IOException(Messages.BackupStore_errors_while_restoring_see_log);
- // everything has been restored - the backup can now be removed
- removeBackups();
- }
-
- private void closeSocket() {
- if (socket != null && !socket.isClosed())
- try {
- socket.close();
- } catch (IOException e) { /* ignored */
- logWarning(NLS.bind(Messages.BackupStore_can_not_close_tcp_port, Integer.valueOf(socket.getLocalPort())));
- }
- }
-
- private void removeBackups() {
- File buRoot = new File(backupRoot, backupName);
- if (!fullyDelete(buRoot))
- logWarning(NLS.bind(Messages.BackupStore_can_not_remove_bu_directory, buRoot.getAbsolutePath()));
- }
-
- private static void logWarning(String message) {
- LogHelper.log(createWarning(message));
- }
-
- private static IStatus createWarning(String message) {
- return new Status(IStatus.WARNING, Activator.ID, message);
- }
-
- private static void logError(String message) {
- LogHelper.log(createError(message));
- }
-
- private static IStatus createError(String message) {
- return new Status(IStatus.ERROR, Activator.ID, message);
- }
-
- /**
- * Deletes a file, or a directory with all of it's children.
- * @param file the file or directory to fully delete
- * @return true if, and only if the file is deleted without errors
- */
- private boolean fullyDelete(File file) {
- if (file.isDirectory()) {
- File[] children = file.listFiles();
- if (children != null) {
- for (File child : children) {
- // we will not stop even if some deletion failed
- fullyDelete(new File(file, child.getName()));
- }
- }
- }
- // will attempt to delete before exists check to get rid of dead links
- if (file.delete()) {
- return true;
- }
- // will return true if files does not actually exist even delete fails
- return !file.exists();
- }
-
- private void restore(File root, File buRoot, Set<File> unrestorable) {
- File[] children = buRoot.listFiles();
- if (children == null) { // error - can't read the backup directory
- unrestorable.add(buRoot);
- return;
- }
- for (File child : children) {
- File bu = new File(buRoot, child.getName());
- File target = new File(root, bu.getName());
- if (bu.isDirectory()) {
- if (!target.exists() && !target.mkdir()) {
- unrestorable.add(bu);
- continue; // give up on this branch
- } else if (target.exists() && !target.isDirectory()) {
- // ouch, there is a file where we need a directory
- // that must be deleted.
- target.delete();
- if (!target.mkdir()) {
- unrestorable.add(bu);
- continue; // give up on branch
- }
- }
- restore(target, bu, unrestorable);
- } else {
- // do not restore the dummies (as they are used to trigger creation of
- // empty directories and are not wanted in the restored location.
- if (bu.getName().equals(dummyName)) {
- restoreCounter++; // count of the restored directory in this case.
- continue;
- }
- // if the original was overwritten by something and this file was not
- // removed, it needs to be deleted now. If it can't be deleted, the
- // renameTo will fail, and the bu is reported as not restorable.
- // fullyDelete will remove a directory completely - we are restoring a file so it can
- // not be kept.
- if (target.exists())
- fullyDelete(target);
-
- // rename if possible, but must copy if not possible to just rename
- if (!bu.renameTo(target)) {
- // did not work to rename, probably because of volume boundaries. Try to copy instead,
- try {
- Util.copyStream(new FileInputStream(bu), true, new FileOutputStream(target), true);
- restoreCounter++; // consider it restored
- } catch (FileNotFoundException e) {
- unrestorable.add(bu);
- continue;
- } catch (IOException e) {
- unrestorable.add(bu);
- continue;
- }
- if (!bu.delete()) { // cleanup
- // could not remove the backup after copy - log, safe to remove manually
- logWarning(NLS.bind(Messages.BackupStore_can_not_delete_tmp_file, bu.getAbsolutePath()));
- }
- } else
- restoreCounter++;
- }
- }
- }
-
- /**
- * Restores everything backed up in the buRoot. Responsible for decoding the specially named root
- * target directories (i.e. _/, __/, C/, etc.) into the real system names.
- * @param buRoot
- * @param unrestorable
- */
- private void restoreRoots(File buRoot, Set<File> unrestorable) {
- File[] children = buRoot.listFiles();
- if (children == null) { // error - can't read the backup directory
- unrestorable.add(buRoot);
- return;
- }
- for (File child : children) {
- // Names are root-chars, or drive letters in the root bu directory
- String name = child.getName();
- String rName = name;
- String prefix = ""; //$NON-NLS-1$
- while (rName.startsWith(ROOTCHAR)) {
- prefix += File.separator;
- rName = rName.substring(1);
- }
- if (prefix.length() < 1) {
- // The name is a drive name
- rName = rName + ":" + File.separator; //$NON-NLS-1$
- } else
- rName = prefix + rName;
- // File root = new File(rName);
- File bu = new File(buRoot, name);
- File target = new File(rName);
- if (!bu.isDirectory()) {
- // the roots should all be directories - so this can only happen if someone manually
- // stored files in the backup root - mark them as unrestorable and continue.
- unrestorable.add(bu);
- continue;
- }
- // the backup roots are system roots, and can not be created - but check root is directory and exists.
- // (Network drives could have gone away etc).
- //
- if (!(target.exists() && target.isDirectory())) {
- unrestorable.add(bu);
- continue; // give up on this branch
- }
- // then perform a recursive restore
- restore(target, bu, unrestorable);
- }
- restoreRenamedFiles(unrestorable);
- }
-
- private void restoreRenamedFiles(Set<File> unrestorable) {
- for (Entry<String, String> entry : renamedInPlace.entrySet()) {
- File bu = new File(entry.getValue());
- if (!bu.renameTo(new File(entry.getKey())))
- unrestorable.add(bu);
- }
- }
-
- private static long msCounter = 0;
-
- /**
- * Generates a unique hex string by taking currentTimeMillis + sequence
- * number at the end allowing for 32 numbers to be generated per ms.
- * This is sufficient uniqueness in the same VM. (And is still just a fallback solution
- * if there is no access to a TCP port)
- *
- * To make number unique over multiple VMs - the PID of the process would be enough, but
- * it is complicated to get hold of - a separate program must be launched and its PPID
- * investigated. There is no standard API in Java to get the PID. Instead, a socket port is bound
- * to ensure local uniqueness.
- *
- * To make number unique across multiple hosts (we may be provisioning over NFS), the
- * 48 LS bits of the IP address is used (this is more than enough for an IPv4 address).
- * (If there is no IP address, the machine is not on a
- * network) - unfortunately the MAC address can not be used as this requires Java 6 (where
- * there also is a UUID that should be used instead of this method).
- *
- * This method needs to be modified when IPv6 addressing is the norm - at that time, the
- * restriction on Java 1.4 has hopefully been lifted, and it is possible to use the MAC address,
- * or the UUID provided since java 1.6
- *
- * @return a unique string
- */
- private String genUnique() {
- // use 5 LSB bits for counter within ms - i.e. 32 instances can be created
- // per millisecond.
- long timePart = (System.currentTimeMillis() << 5) | (msCounter++ & 31);
- // can't use the MAC address - but take IP address if provisioning across NFS
- long ipPart = 0;
- try {
- // the returned address can be 32 bits IPv4, or 128 bits IPv6 (?)
- // In any case use the LSB bits (as many as will fit
- byte[] address = InetAddress.getLocalHost().getAddress();
- for (int i = 0; i < address.length; i++)
- ipPart = ((ipPart << 8) | (address[i] & 0xff));
- } catch (UnknownHostException e) {
- // there is no IP address, and there and hence no concurrency from other machines.
- // use the default ip part 0
- }
- int port = 0;
- try {
- // TODO: this should be replaced by InetAddress.getLoopbackAddress() when 1.7 compatibility is OK
- // on a system where solely IPv6 is available this address resolution will fail:
- socket = new ServerSocket(0, 1, InetAddress.getByName("127.0.0.1")); //$NON-NLS-1$
- port = socket.getLocalPort();
- } catch (IOException e) {
- try {
- if (socket != null)
- socket.close();
- } catch (IOException e1) { // ignore failure to close -
- }
- // use a random number as port in this case
- port = new Random().nextInt() & 0xffff;
- }
- // port is never > 0xffff
- long aPart = (ipPart << 16) | (port & 0xffff);
- return Long.toHexString(timePart) + "_" + Long.toHexString(aPart); //$NON-NLS-1$
-
- }
-
- /**
- * Turns a file into a "relativized" absolute file.
- * A leading "root" is transformed to the ROOTCHAR character. On Windows, network mapped drives starts
- * with two separators - and are encoded as two ROOTCHAR.
- * e.g.
- * \\Host\C$\File becomes __\Host\C$\File
- * /users/test/file becomes _/users/test/file
- * C:/somewhere/file becomes C/somewhere/file
- *
- * @param file
- * @return a relativized absolute abstract file
- */
- private File makeRelativeFromRoot(File file) {
- File absolute = file.getAbsoluteFile();
- String path = absolute.getPath();
- String prefix = ""; //$NON-NLS-1$
- while (path.startsWith(File.separator)) {
- prefix += ROOTCHAR;
- path = path.substring(1);
- }
- if (prefix.length() > 0) {
- path = prefix + File.separator + path;
- return new File(path);
- }
- // it is a windows drive letter first.
- // Transform C:/foo to C/foo
- //
- int idx = path.indexOf(":"); //$NON-NLS-1$
- if (idx < 1)
- throw new InternalError("File is neither absolute nor has a drive name: " + path); //$NON-NLS-1$
- path = path.substring(0, idx) + path.substring(idx + 1);
-
- return new File(path);
- }
-
- /**
- * The parent path may include ".." as a directory name - this must be made canonical. But if the file itself is
- * a symbolic link, it should not be resolved.
- */
- private File makeParentCanonical(File file) throws IOException {
- return new File(file.getParentFile().getCanonicalFile(), file.getName());
- }
-}
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/LazyBackupStore.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/LazyBackupStore.java
index 9ea5d5f56..f0aae9319 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/LazyBackupStore.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/LazyBackupStore.java
@@ -21,7 +21,7 @@ import java.io.IOException;
* when needed.
*/
public class LazyBackupStore implements IBackupStore {
- private BackupStore delegate;
+ private SimpleBackupStore delegate;
private final String prefix;
/**
@@ -61,7 +61,7 @@ public class LazyBackupStore implements IBackupStore {
private void loadDelegate() {
if (delegate != null)
return;
- delegate = new BackupStore(null, prefix);
+ delegate = new SimpleBackupStore(null, prefix);
}
@Override
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/Messages.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/Messages.java
index dde3435ed..9a3bd9c03 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/Messages.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/Messages.java
@@ -26,24 +26,23 @@ public class Messages extends NLS {
}
public static String BackupStore_0_of_1_items_restored;
- public static String BackupStore_backupCopy_closed_store;
- public static String BackupStore_can_not_close_tcp_port;
+ public static String BackupStore_externally_modified_0_of_1_restored;
+ public static String BackupStore_errors_while_restoring_see_log;
public static String BackupStore_can_not_copy_directory;
- public static String BackupStore_can_not_create_dummy;
+ public static String BackupStore_can_not_create_placeholder;
public static String BackupStore_can_not_delete_after_copy_0;
public static String BackupStore_can_not_delete_tmp_file;
public static String BackupStore_can_not_remove;
public static String BackupStore_can_not_remove_bu_directory;
+ public static String BackupStore_can_not_remove_bu_file;
public static String BackupStore_directory_file_mismatch;
public static String BackupStore_directory_not_empty;
- public static String BackupStore_errors_while_restoring_see_log;
- public static String BackupStore_externally_modified_0_of_1_restored;
public static String BackupStore_file_directory_mismatch;
public static String BackupStore_file_not_found;
public static String BackupStore_manual_restore_needed;
public static String BackupStore_missing_backup_directory;
public static String BackupStore_not_a_directory;
- public static String BackupStore_restore_closed_store;
+ public static String BackupStore_closed_store;
public static String BlockMacUpdate_0;
public static String BlockMacUpdate_1;
@@ -70,6 +69,8 @@ public class Messages extends NLS {
public static String NativePackageExtractionApplication_MissingParameters;
public static String NativePackageExtractionApplication_PersistencePb;
public static String NativePackageExtractionApplication_MissingValue;
+ public static String NativeTouchpoint_PromptForNative_RequiredBy;
+ public static String NativeTouchpoint_PromptForNative_YouCanDownloadFrom;
public static String PromptForNative_InstallText;
public static String PromptForNative_IntroText;
public static String PromptForNative_DialogTitle;
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/NativeTouchpoint.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/NativeTouchpoint.java
index 64d574ccd..32bb4848d 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/NativeTouchpoint.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/NativeTouchpoint.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2017 IBM Corporation and others.
+ * Copyright (c) 2007, 2019 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -18,12 +18,14 @@ import java.io.*;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.*;
+import java.util.stream.Collectors;
import org.eclipse.core.runtime.*;
import org.eclipse.equinox.internal.p2.touchpoint.natives.actions.ActionConstants;
import org.eclipse.equinox.p2.core.*;
import org.eclipse.equinox.p2.engine.IProfile;
import org.eclipse.equinox.p2.engine.spi.Touchpoint;
import org.eclipse.equinox.p2.metadata.IArtifactKey;
+import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.p2.repository.artifact.IFileArtifactRepository;
import org.eclipse.osgi.util.NLS;
@@ -38,7 +40,17 @@ public class NativeTouchpoint extends Touchpoint {
private static Map<IProfile, IBackupStore> backups = new WeakHashMap<>();
- private List<NativePackageEntry> packagesToInstall = new ArrayList<>();
+ private static class NativePackageToInstallInfo {
+ NativePackageEntry entry;
+ IInstallableUnit iu;
+
+ public NativePackageToInstallInfo(NativePackageEntry entry, IInstallableUnit iu) {
+ this.entry = entry;
+ this.iu = iu;
+ }
+ }
+
+ private List<NativePackageToInstallInfo> packagesToInstall = new ArrayList<>();
private Properties installCommandsProperties = new Properties();
private IProvisioningAgent agent;
@@ -98,12 +110,21 @@ public class NativeTouchpoint extends Touchpoint {
String text = Messages.PromptForNative_IntroText;
String downloadLinks = ""; //$NON-NLS-1$
List<NativePackageEntry> entriesWithoutDownloadLink = new ArrayList<>(packagesToInstall.size());
- for (NativePackageEntry nativePackageEntry : packagesToInstall) {
- text += '\t' + nativePackageEntry.name + ' ' + formatVersion(nativePackageEntry) + '\n';
- if (nativePackageEntry.getDownloadLink() != null) {
- downloadLinks += " <a>" + nativePackageEntry.getDownloadLink() + "</a>\n"; //$NON-NLS-1$ //$NON-NLS-2$
+ for (NativePackageToInstallInfo nativePackageEntry : packagesToInstall) {
+ text += '\t' + nativePackageEntry.entry.name + ' ' + formatVersion(nativePackageEntry.entry);
+ if (nativePackageEntry.iu != null) {
+ String name = nativePackageEntry.iu.getProperty(IInstallableUnit.PROP_NAME, null);
+ if (name != null && !name.isEmpty()) {
+ text += ' ';
+ text += NLS.bind(Messages.NativeTouchpoint_PromptForNative_RequiredBy, name);
+ }
+ }
+
+ text += '\n';
+ if (nativePackageEntry.entry.getDownloadLink() != null) {
+ downloadLinks += " <a>" + nativePackageEntry.entry.getDownloadLink() + "</a>\n"; //$NON-NLS-1$ //$NON-NLS-2$
} else {
- entriesWithoutDownloadLink.add(nativePackageEntry);
+ entriesWithoutDownloadLink.add(nativePackageEntry.entry);
}
}
@@ -114,7 +135,7 @@ public class NativeTouchpoint extends Touchpoint {
String downloadText = null;
if (downloadLinks.length() > 0) {
- downloadText = "You can download those from the following locations:\n" + downloadLinks;
+ downloadText = Messages.NativeTouchpoint_PromptForNative_YouCanDownloadFrom + downloadLinks;
}
serviceUI.showInformationMessage(Messages.PromptForNative_DialogTitle, text, downloadText);
@@ -158,12 +179,18 @@ public class NativeTouchpoint extends Touchpoint {
return text;
}
- public void addPackageToInstall(NativePackageEntry entry) {
- packagesToInstall.add(entry);
+ /**
+ * Add the given entry as a new native package that needs to be installed.
+ *
+ * @param entry Package information about the native
+ * @param iu optional IU that has this requirement
+ */
+ public void addPackageToInstall(NativePackageEntry entry, IInstallableUnit iu) {
+ packagesToInstall.add(new NativePackageToInstallInfo(entry, iu));
}
public List<NativePackageEntry> getPackagesToInstall() {
- return Collections.unmodifiableList(packagesToInstall);
+ return Collections.unmodifiableList(packagesToInstall.stream().map(e -> e.entry).collect(Collectors.toList()));
}
public void setDistro(String distro) {
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/SimpleBackupStore.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/SimpleBackupStore.java
new file mode 100644
index 000000000..b1c0261d7
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/SimpleBackupStore.java
@@ -0,0 +1,895 @@
+/*******************************************************************************
+ * Copyright (c) 2009, 2018 Cloudsmith Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Cloudsmith Inc. - initial API and implementation
+ * SAP AG - Ongoing development
+ *******************************************************************************/
+
+package org.eclipse.equinox.internal.p2.touchpoint.natives;
+
+import static java.nio.file.FileVisitResult.CONTINUE;
+import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
+import static java.util.stream.Collectors.joining;
+import static org.eclipse.equinox.internal.p2.touchpoint.natives.Util.logError;
+import static org.eclipse.equinox.internal.p2.touchpoint.natives.Util.logWarning;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.*;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.*;
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * Stores files by moving them to a uniquely named temporary directory.
+ *
+ * TheBackupStore remembers filenames and can recreate them in their original
+ * location.
+ *
+ * <h3>Usage</h3> The user of this class should instantiate the BackupStore with
+ * some prefix that is meaningful to a human. Uniqueness is obtained without the
+ * prefix - the prefix is used to be able to differentiate between different
+ * backup directories by a human (in case of crashes etc).
+ *
+ * If instantiated with a directory this directory will be used to store the
+ * backup root directory. If this directory is null, the users home directory is
+ * used by default.
+ *
+ * Once instantiated, use the {@link #backup(File)} and
+ * {@link #backupDirectory(File)} methods to move files to backup instead of
+ * deleting them. A file that is backed up should not be deleted - it is simply
+ * moved out of the way. Use {@link #backupCopy(File)} to move the file out of
+ * harms way, but keep a copy of it in the original location. The methods
+ * {@link #backupAll(File)} and {@link #backupCopyAll(File)} backs up an entire
+ * structure.
+ *
+ * When backup is finished - the user should either call {@link #restore()} to
+ * put all of the files back, or call {@link #discard()} to remove all of the
+ * backed up "copies".
+ *
+ * If {@link #restore()} or {@link #discard()} is not called the backup files
+ * will never be deleted.
+ *
+ * The backup store does not synchronize directories - actions that write new
+ * files are responsible for removing them. Overwriting existing files should be
+ * done by first backing up the file, and then creating a new file. Modifying a
+ * file, should be done by using {@link #backupCopy(File)} or first making a
+ * copy, then backing up the original, and then renaming the copy.
+ *
+ * <h3>Read Only and Permissions</h3> Directories that are read only (to current
+ * user) can not be backed up. Backup is performed using
+ * {@link File#renameTo(File)} and handling of permissions is operating system
+ * dependent. It is expected that a Un*x type system retains the permissions as
+ * a file is moved to the backup store and later gets restored. Backup
+ * directories are created as they are needed and will (at least on Un*x)
+ * inherit the permissions from its parent directory.
+ *
+ * If a rename can not be performed, the backup store will make a copy and
+ * delete the original file. This makes it possible to backup and restore across
+ * volume boundaries.
+ *
+ * When restoring directories they will be created with permissions in a
+ * platform specific way (on UN*IX they will inherit the permissions of the
+ * parent directory).
+ *
+ * <h3>Checkpointing</h3> Checkpointing (i.e. to be able to rollback to a
+ * particular point) can be implemented by using multiple instances of
+ * BackupStore. The client code will need to remember the individual order among
+ * the backup stores.
+ *
+ * <h3>Restartability</h3> Not implemented - it is possible to obtain the name
+ * of the backup directories, so manual restore is possible after a crash. An
+ * idea is to add persistence to a file, and be able to read it back in again.
+ *
+ * <h3>A note about exceptions</h3> In general {@link IllegalArgumentException}
+ * is thrown when attempting an operation that is considered "wrong use", and an
+ * {@link IllegalStateException} or subclass thereof is thrown on an overall
+ * wrong use of BackupStore (i.e. attempt to backup when store has been
+ * restored). Some cases of "wrong use" can not be differentiated from I/O
+ * errors (like a "file not found" as this could be caused by an entire disk
+ * disappearing - in these case an {@link IOException} is thrown.
+ *
+ * <h3>Implementation Note</h3> The backup root directory will contain folders
+ * that reflects file system roots. These are encoded using "_" for the UNI*X
+ * root directory, "__" for a Windows network mounted directory, and single
+ * "drive letter" folders corresponding to Windows drive letters. Typically, on
+ * UN*X there will only be a "_" directory in the backup root, and on windows
+ * there will typically be a single directory called "C".
+ */
+public class SimpleBackupStore implements IBackupStore {
+ public static final String BACKUP_FILE_EXTENSION = "p2bu"; //$NON-NLS-1$
+
+ public static final String DIR_PLACEHOLDER = "emptydir"; //$NON-NLS-1$
+
+ /**
+ * The name to use for a directory that represents leading separator (i.e. "/"
+ * or "\").
+ */
+ private static final String ROOTCHAR = "_"; //$NON-NLS-1$
+
+ /**
+ * Map of directory File to backup root (File) - the backup root has a directory
+ * named {@link #buStoreName} where the backup is found.
+ */
+ private final Path buStoreRoot;
+
+ private String buInPlaceSuffix;
+
+ /**
+ * Backup files that sit next to the original rather than in the backup store.
+ */
+ private List<Path> buInPlace;
+
+ /**
+ * Counter of how many files where backed up. Used as a simple check mechanism
+ * if everything was restored (a guard against manual/external tampering with
+ * the backup directories).
+ */
+ private long backupCounter;
+
+ /**
+ * Counter of how many files where restored. See {@link #backupCounter}.
+ */
+ private long restoreCounter;
+
+ /**
+ * Flag indicating if this BackupStore has been restored or canceled.
+ */
+ private boolean closed;
+
+ /**
+ * Generates a BackupStore with a default prefix of ".p2bu" for backup directory
+ * and probe file.
+ */
+ public SimpleBackupStore() {
+ this(null, "." + BACKUP_FILE_EXTENSION); //$NON-NLS-1$
+ }
+
+ /**
+ * Generates a BackupStore with a specified prefix for backup directories and
+ * probe file.
+ *
+ * @param buStoreParent Parent under which the backup store will be created. If
+ * null, java.io.tmpdir is used
+ * @param prefix Prefix used for human identification of backup stores.
+ */
+ public SimpleBackupStore(File buStoreParent, String prefix) {
+ String unique = UUID.randomUUID().toString();
+
+ String buStoreName = prefix + "_" + unique; //$NON-NLS-1$
+ this.buStoreRoot = (buStoreParent != null) ? buStoreParent.toPath().resolve(buStoreName)
+ : Paths.get(System.getProperty("java.io.tmpdir")).resolve(buStoreName); //$NON-NLS-1$
+
+ this.buInPlaceSuffix = String.format("-%s.%s", unique, BACKUP_FILE_EXTENSION); //$NON-NLS-1$
+ this.buInPlace = new ArrayList<>();
+ }
+
+ /**
+ * Returns the unique backup name (this is the name of generated backup
+ * directories).
+ *
+ * @return the backup name.
+ */
+ @Override
+ public String getBackupName() {
+ return buStoreRoot.getFileName().toString();
+ }
+
+ /**
+ * @return the parent dire under which backups are created
+ */
+ public File getBackupRoot() {
+ return buStoreRoot.toFile();
+ }
+
+ /**
+ * Backup the file by moving it to the backup store (for later (optional)
+ * restore). Calling this method with a file that represents a directory is
+ * equivalent to calling {@link #backupDirectory(File)}.
+ *
+ * A file (path) can only be backed up once per BackupStore instance. When the
+ * file is backed up, it is moved to a directory under this BackupStore
+ * instance's directory with a relative path corresponding to the original
+ * relative path from the backup root e.g. the file /A/B/C/foo.txt could be
+ * moved to /A/.p2bu_ffffff_ffffff/B/C/foo.txt when /A is the backup root.
+ *
+ * If a directory is first backed up, and later replaced by a regular file, and
+ * this file is backed up (or vice versa) - an {@link IllegalArgumentException}
+ * is thrown
+ *
+ * A backup can not be performed on a closed BackupStore.
+ *
+ * @param file - the file (or directory) to backup
+ *
+ * @return true if the file was backed up, false if this file (path) has already
+ * been backed up (the file is not moved to the store).
+ *
+ * @throws IOException - if the backup operation fails, or the
+ * file does not exist
+ * @throws ClosedBackupStoreException - if the BackupStore has been closed
+ * @throws IllegalArgumentException - on type mismatch (file vs. directory) of
+ * earlier backup, or if file does not exist
+ */
+ @Override
+ public boolean backup(File file) throws IOException {
+ assertOpen();
+
+ Path path = file.toPath();
+
+ if (Files.isDirectory(path)) {
+ return backupDirectory(path.toFile());
+ }
+
+ if (!Files.exists(path)) {
+ throw new IOException(NLS.bind(Messages.BackupStore_file_not_found, path.toAbsolutePath()));
+ }
+
+ Path buPath = toBackupPath(path);
+
+ // Already backed up, but was a directory - wrong usage
+ if (Files.isDirectory(buPath)) {
+ throw new IllegalArgumentException(
+ NLS.bind(Messages.BackupStore_directory_file_mismatch, buPath.toAbsolutePath()));
+ }
+
+ return moveToBackup(path, buPath);
+ }
+
+ /**
+ * Performs backup of an empty directory.
+ *
+ * The directory must be empty before it can be backed up (i.e. similar to a
+ * delete of a directory). The called must backup the files of the directory
+ * first. A call to backup a directory is really only needed for empty
+ * directories as a restore of a file will also restore all of its parent
+ * directories.
+ *
+ * @param file - the (empty) directory to back up
+ *
+ * @return true if the directory was moved to backup. false if the directory was
+ * already backed up.
+ *
+ * @throws IllegalArgumentException if file is not a directory, or is not empty.
+ * @throws IOException if directory can not be moved to the backup
+ * store, or if the directory is not writeable
+ */
+ @Override
+ public boolean backupDirectory(File file) throws IOException {
+ assertOpen();
+
+ Path path = file.toPath();
+
+ if (!Files.isDirectory(path)) {
+ throw new IllegalArgumentException(NLS.bind(Messages.BackupStore_not_a_directory, file.getAbsolutePath()));
+ }
+
+ if (Files.list(path).count() > 0) {
+ throw new IllegalArgumentException(
+ NLS.bind(Messages.BackupStore_directory_not_empty, file.getAbsolutePath()));
+ }
+
+ return moveDirToBackup(path);
+ }
+
+ /**
+ * Backs up a file, or everything under a directory.
+ *
+ * @param file - file to backup or directory
+ *
+ * @throws IOException if backup operation failed
+ */
+ @Override
+ public void backupAll(File file) throws IOException {
+ assertOpen();
+
+ Path path = file.toPath().normalize();
+
+ Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
+ @Override
+ public FileVisitResult visitFile(Path f, BasicFileAttributes attrs) throws IOException {
+ backup(f.toFile());
+ return CONTINUE;
+ }
+
+ @Override
+ public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
+ if (exc != null) {
+ throw exc;
+ }
+ moveDirToBackup(dir);
+ return CONTINUE;
+ }
+ });
+ }
+
+ /**
+ * Backup the file by leaving a copy of the contents in the original location.
+ *
+ * Calling this method with a file that represents a directory throws an
+ * {@link IllegalArgumentException}.
+ *
+ * A file (path) can only be backed up once per BackupStore instance. When the
+ * file is backed up, it is moved to a directory under this BackupStore
+ * instance's directory with a relative path corresponding to the original
+ * relative path from the backup root e.g. the file /A/B/C/foo.txt could be
+ * moved to /A/.p2bu_ffffff_ffffff/B/C/foo.txt when /A is the backup root.
+ *
+ * If a directory is first backed up, and later replaced by a regular file, and
+ * this file is backed up (or vice versa) - an {@link IllegalArgumentException}
+ * is thrown
+ *
+ * A backup can not be performed on a closed BackupStore.
+ *
+ * @param file - the file (or directory) to backup
+ *
+ * @return true if the file was backed up, false if this file (path) has already
+ * been backed up (the file is not moved to the store).
+ *
+ * @throws IOException if the backup operation fails, or the file
+ * does not exist
+ * @throws ClosedBackupStoreException if the BackupStore has been closed
+ * @throws IllegalArgumentException on type mismatch (file vs. directory) of
+ * earlier backup, or if file is a Directory
+ */
+ @Override
+ public boolean backupCopy(File file) throws IOException {
+ assertOpen();
+
+ Path path = file.toPath();
+
+ if (!Files.exists(path)) {
+ throw new IOException(NLS.bind(Messages.BackupStore_file_not_found, file.getAbsolutePath()));
+ }
+
+ if (Files.isDirectory(path)) {
+ throw new IllegalArgumentException(
+ NLS.bind(Messages.BackupStore_can_not_copy_directory, file.getAbsolutePath()));
+ }
+
+ Path buPath = toBackupPath(path);
+
+ // Already backed up, but was a directory = wrong usage
+ if (Files.isDirectory(buPath)) {
+ throw new IllegalArgumentException(
+ NLS.bind(Messages.BackupStore_directory_file_mismatch, buPath.toAbsolutePath()));
+ }
+
+ // Already backed up, can only be done once with one BackupStore
+ if (Files.exists(buPath)) {
+ return false;
+ }
+
+ Files.createDirectories(buPath.getParent());
+ Files.copy(path, buPath, REPLACE_EXISTING);
+
+ backupCounter++;
+ return true;
+ }
+
+ /**
+ * Backs up a file, or everything under a directory.
+ *
+ * A copy of the backup is left in the original place.
+ *
+ * @param file
+ *
+ * @throws IOException
+ */
+ @Override
+ public void backupCopyAll(File file) throws IOException {
+ assertOpen();
+
+ Path path = file.toPath();
+ if (!Files.exists(path)) {
+ return;
+ }
+
+ path = path.normalize();
+
+ if (Files.isRegularFile(path, LinkOption.NOFOLLOW_LINKS)) {
+ backupCopy(file);
+ } else if (Files.isDirectory(path)) {
+ Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
+ @Override
+ public FileVisitResult visitFile(Path f, BasicFileAttributes attrs) throws IOException {
+ backupCopy(f.toFile());
+ return CONTINUE;
+ }
+
+ @Override
+ public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
+ if (exc != null) {
+ throw exc;
+ }
+ copyDirToBackup(dir);
+ return CONTINUE;
+ }
+ });
+ }
+ }
+
+ /**
+ * Restores all backup files from backup store. Note that restore of a (non
+ * directory) file deletes an existing file or directory found in the restore
+ * location. When the backup has been restored this BackupStore instance is
+ * closed and can not be used for further backup or restore.
+ *
+ * If there are unrestorable items (non writable directories, or general IO
+ * exceptions) these items are written to the log, and the backup copies remain
+ * in the file system and can be manually restored (using a simple zip of the
+ * backup directory, and an unzip to the buRoot once the problem has been
+ * corrected).
+ *
+ * @throws IOException if the backup was not fully restored -
+ * unrestored items have been logged.
+ * @throws ClosedBackupStoreException if the backup is already closed.
+ */
+ @Override
+ public void restore() throws IOException {
+ assertOpen();
+ closed = true;
+
+ // Put back all files.
+ // Collect things that could not be restored
+ Map<Path, Throwable> unrestorable = new HashMap<>();
+
+ restoreBackups(unrestorable);
+ restoreInPlaceBackups(unrestorable);
+
+ boolean restored = true;
+
+ // Checked failed attempts to restore
+ if (!unrestorable.isEmpty()) {
+ restored = false;
+
+ unrestorable.forEach((p, err) -> {
+ logError(NLS.bind(Messages.BackupStore_manual_restore_needed, err, p.toAbsolutePath()));
+ });
+ }
+
+ // Check external tampering with backup store
+ if (backupCounter != restoreCounter) {
+ restored = false;
+
+ if (!unrestorable.isEmpty()) {
+ logError(NLS.bind(Messages.BackupStore_0_of_1_items_restored, restoreCounter, backupCounter));
+ } else {
+ logError(NLS.bind(Messages.BackupStore_externally_modified_0_of_1_restored, restoreCounter,
+ backupCounter));
+ }
+ }
+
+ if (!restored) {
+ throw new IOException(Messages.BackupStore_errors_while_restoring_see_log);
+ }
+ }
+
+ /**
+ * Discards and closes this BackupStore. Does nothing if this store is already
+ * restored or discarded.
+ */
+ @Override
+ public void discard() {
+ if (closed) {
+ return;
+ }
+ closed = true;
+
+ try {
+ deleteAll(buStoreRoot);
+ } catch (IOException e) {
+ logWarning(NLS.bind(Messages.BackupStore_can_not_remove_bu_directory, buStoreRoot.toAbsolutePath()));
+ }
+
+ for (Path buFile : buInPlace) {
+ try {
+ deleteAll(buFile);
+ } catch (IOException e) {
+ logWarning(NLS.bind(Messages.BackupStore_can_not_remove_bu_file, buFile.toAbsolutePath()));
+ }
+ }
+ }
+
+ private void assertOpen() {
+ if (closed) {
+ throw new ClosedBackupStoreException(Messages.BackupStore_closed_store);
+ }
+ }
+
+ /**
+ * Makes sure a directory exists in the backup store without touching the original directory content
+ *
+ * @param path
+ *
+ * @return false if the directory is already created in the backup store, false if a placeholder had
+ * to be created and backed up.
+ *
+ * @throws IOException
+ */
+ private boolean copyDirToBackup(Path path) throws IOException {
+ Path buPath = toBackupPath(path);
+
+ if (Files.exists(buPath)) {
+ return false;
+ }
+
+ Path placeholderPath = path.resolve(DIR_PLACEHOLDER);
+ try {
+ Files.createFile(placeholderPath);
+ } catch (IOException e) {
+ throw new IOException(
+ NLS.bind(Messages.BackupStore_can_not_create_placeholder, placeholderPath.toAbsolutePath()), e);
+ }
+
+ Path buPlaceholderPath = buPath.resolve(DIR_PLACEHOLDER);
+ moveToBackup(placeholderPath, buPlaceholderPath);
+ return true;
+ }
+
+ private boolean moveDirToBackup(Path dir) throws IOException {
+ boolean copied = copyDirToBackup(dir);
+
+ try {
+ Files.delete(dir);
+ } catch (IOException e) {
+ throw new IOException(NLS.bind(Messages.BackupStore_can_not_remove, dir.toAbsolutePath()));
+ }
+
+ return copied;
+ }
+
+ /**
+ * Move/rename file to a backup file.
+ *
+ * Exposed for testing purposes.
+ *
+ * Callers of the method must have ensured that the source file exists and the
+ * backup file does not exist.
+ *
+ * @param file source file to move; should already exist and must not be
+ * directory
+ * @param buFile destination backup file to move to; should not exist and must
+ * be a directory
+ *
+ * @throws IOException if the backup operation fails
+ */
+ private boolean moveToBackup(Path path, Path buPath) throws IOException {
+ // Already backed up. Can only be done once with one BackupStore.
+ if (Files.exists(buPath)) {
+ /*
+ * Although backed up, the file can be still on the file system. For example,
+ * two IUs may be unzipping their contents to the same location and share a few
+ * common files, which have to be removed twice.
+ */
+ try {
+ Files.delete(path);
+ } catch (IOException e) {
+ throw new IOException(NLS.bind(Messages.BackupStore_can_not_remove, path.toAbsolutePath()), e);
+ }
+
+ return false;
+ }
+
+ // make sure all of the directories exist / gets created
+ Path buPathDir = buPath.getParent();
+ try {
+ Files.createDirectories(buPathDir);
+ } catch (IOException e) {
+ throw new IllegalArgumentException(
+ NLS.bind(Messages.BackupStore_file_directory_mismatch, buPathDir.toAbsolutePath()), e);
+ }
+
+ move(path, buPath);
+ if (isEclipseExe(path) && Files.isRegularFile(path)) {
+ // The original is the launcher executable and it still exists at the original
+ // location although the move succeeded.
+ // This happens when it is the Windows executable that is locked because it's
+ // running and we are attempting to move it to a different drive.
+ // In this case the target will exist as a copy, so we should delete it.
+ // Then backup in place which will necessarily be on the same drive.
+ Files.delete(buPath);
+ Path inPlaceBuPath = toInPlaceBackupPath(path);
+ move(path, inPlaceBuPath);
+ buInPlace.add(inPlaceBuPath);
+ }
+
+ backupCounter++;
+ return true;
+ }
+
+ /**
+ * Restores everything stored in the backup root
+ *
+ * Responsible for converting the root prefix of the path from backup format
+ * back to the original real OS names. I.e. "_/" to "//", "__/" to "///", "C/"
+ * to "C:", etc.
+ *
+ * @param unrestorable accumulate unrestorable paths (including the entire
+ * backup store).
+ *
+ * @throws IOException
+ */
+ private void restoreBackups(Map<Path, Throwable> unrestorable) throws IOException {
+ if (!Files.exists(buStoreRoot)) {
+ unrestorable.put(buStoreRoot, new IOException(
+ NLS.bind(Messages.BackupStore_missing_backup_directory, buStoreRoot.toAbsolutePath())));
+ return;
+ }
+
+ Files.walkFileTree(buStoreRoot, new SimpleFileVisitor<Path>() {
+ @Override
+ public FileVisitResult preVisitDirectory(Path buDir, BasicFileAttributes attrs) {
+ try {
+ if (Files.isSameFile(buStoreRoot, buDir)) {
+ return CONTINUE;
+ }
+
+ Path dir = toSourcePath(buDir);
+
+ // There is a file where we the original directory used to be - delete it
+ if (Files.isRegularFile(dir)) {
+ Files.delete(dir);
+ }
+
+ // Make the original directory if needed
+ Files.createDirectories(dir);
+ } catch (IOException e) {
+ unrestorable.put(buDir, e);
+ }
+ return CONTINUE;
+ }
+
+ @Override
+ public FileVisitResult visitFile(Path buFile, BasicFileAttributes attrs) {
+ Path file = toSourcePath(buFile);
+ try {
+ // The first level children of buStoreRoot are always directories since they
+ // model file system roots
+ if (Files.isSameFile(buFile.getParent(), buStoreRoot)) {
+ unrestorable.put(buFile, new IOException("Not a directory")); //$NON-NLS-1$
+ } else {
+ /*
+ * Do not restore the place-holders as they are used to trigger creation of
+ * empty directories and are not wanted in the restored location.
+ *
+ * They are counted as restored non the less.
+ */
+ if (!DIR_PLACEHOLDER.equals(buFile.getFileName().toString())) {
+ // Clean up the site where the original used to be.
+ // It may be that a file or a directory now occupies it.
+ deleteAll(file);
+
+ // Move the backup to the original location
+ move(buFile, file);
+ } else {
+ Files.delete(buFile);
+ }
+
+ restoreCounter++;
+ }
+ } catch (IOException e) {
+ unrestorable.put(buFile, e);
+ }
+ return CONTINUE;
+ }
+
+ @Override
+ public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
+ unrestorable.put(file, exc);
+ throw exc;
+ }
+
+ @Override
+ public FileVisitResult postVisitDirectory(Path buDir, IOException exc) throws IOException {
+ if (exc != null) {
+ unrestorable.put(buDir, exc);
+ throw exc;
+ }
+ try {
+ Files.delete(buDir);
+ } catch (DirectoryNotEmptyException e) {
+ String children = Files.list(buDir)
+ .map(p -> p.relativize(buDir))
+ .map(Path::toString)
+ .collect(joining(",")); //$NON-NLS-1$
+ unrestorable.put(buDir, new IOException(String.format(
+ "Directory %s not empty: %s", buDir, children, e))); //$NON-NLS-1$
+ } catch (IOException e) {
+ unrestorable.put(buDir, e);
+ }
+ return CONTINUE;
+ }
+ });
+ }
+
+ private void restoreInPlaceBackups(Map<Path, Throwable> unrestorable) {
+ for (Path buPath : buInPlace) {
+ Path path = toInPlaceSourcePath(buPath);
+
+ try {
+ move(buPath, path);
+ restoreCounter++;
+ } catch (IOException e) {
+ unrestorable.put(buPath, e);
+ }
+ }
+ }
+
+ /**
+ * Converts a source path to a backup path.
+ *
+ * Exposed for testing purposes.
+ *
+ * A leading "root" is transformed to the ROOTCHAR character. On Windows,
+ * network mapped drives starts with two separators - and are encoded as two
+ * ROOTCHAR.
+ *
+ * E.g. \\Host\C$\file becomes __\Host\C$\file /users/test/file becomes
+ * _/users/test/file C:/file becomes C/file
+ *
+ * @param file a source file that needs to be backed up
+ *
+ * @return a file to which the original content can be backed up
+ *
+ * @throws IOException
+ */
+ protected Path toBackupPath(Path path) throws IOException {
+ Path pathNormal = path.normalize();
+
+ String buPath = pathNormal.toAbsolutePath().toString();
+
+ String buPrefix = ""; //$NON-NLS-1$
+ while (buPath.startsWith(File.separator)) {
+ buPrefix += ROOTCHAR;
+ buPath = buPath.substring(1);
+ }
+
+ // Linux or Windows net mount
+ if (!buPrefix.isEmpty()) {
+ buPath = Paths.get(buPrefix, buPath).toString();
+ }
+ // Windows
+ else {
+ // It is a windows drive letter first.
+ // Transform C:/foo to C/foo
+ int idx = buPath.indexOf(":"); //$NON-NLS-1$
+ if (idx < 1) {
+ throw new IllegalArgumentException("File is neither absolute nor has a drive name: " + buPath); //$NON-NLS-1$
+ }
+ buPath = buPath.substring(0, idx) + buPath.substring(idx + 1);
+ }
+
+ Path buFile = buStoreRoot.resolve(buPath);
+ return buFile;
+ }
+
+ /**
+ * Converts a backup file to the original source file.
+ *
+ * ///x/y/z -> ___x/y/z \\x\y\z c:\x\y\z -> c\x\y\z
+ *
+ * @param buPath an absolute file under {@link #buStoreRoot} to which some
+ * content is backed up.
+ *
+ * @return the original source file to which the content can be restored.
+ */
+ protected Path toSourcePath(Path buPath) {
+ Path buPathRel = buStoreRoot.relativize(buPath);
+
+ String pathName = buPathRel.toString();
+
+ String prefix = ""; //$NON-NLS-1$
+ while (pathName.startsWith(ROOTCHAR)) {
+ prefix += File.separator;
+ pathName = pathName.substring(1);
+ }
+
+ if (prefix.isEmpty()) {
+ // The first char is a windows drive name
+ pathName = pathName.charAt(0) + ":" + pathName.substring(1); //$NON-NLS-1$
+ } else {
+ pathName = prefix + pathName;
+ }
+
+ return Paths.get(pathName);
+ }
+
+ /**
+ * Converts a path to an in-place backup path.
+ *
+ * Exposed for testing purposes.
+ *
+ * @param path
+ *
+ * @return a path next to the original where the original will be moved, rather
+ * than will be moved
+ */
+ protected Path toInPlaceBackupPath(Path path) {
+ String buPathName = path.getFileName() + buInPlaceSuffix;
+ Path buPath = path.toAbsolutePath().resolveSibling(buPathName);
+ return buPath;
+ }
+
+ /**
+ * Converts a in-place backup path to the original source path.
+ *
+ * Exposed for testing purposes.
+ *
+ * @param path
+ *
+ * @return a source path
+ */
+ protected Path toInPlaceSourcePath(Path buPath) {
+ String buPathName = buPath.getFileName().toString();
+
+ int suffixIdx = buPathName.indexOf(buInPlaceSuffix);
+ if (suffixIdx <= 0) {
+ throw new IllegalArgumentException();
+ }
+
+ String pathName = buPathName.substring(0, suffixIdx);
+ Path path = buPath.resolveSibling(pathName);
+ return path;
+ }
+
+ /**
+ * A generic file operation that attempts to move a file.
+ *
+ * Exposed in a separate method for testing purposes.
+ */
+ protected void move(Path source, Path target) throws IOException {
+ Files.move(source, target, REPLACE_EXISTING);
+ }
+
+ private static boolean isEclipseExe(Path file) {
+ String name = file.getFileName().toString();
+
+ String launcher = System.getProperty("eclipse.launcher"); //$NON-NLS-1$
+ if (launcher != null) {
+ String launcherName = Paths.get(launcher).getFileName().toString();
+ if (name.equalsIgnoreCase(launcherName)) {
+ return true;
+ }
+ }
+
+ return name.equalsIgnoreCase("eclipse.exe") || name.equalsIgnoreCase("eclipsec.exe"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * Deletes a file, or a directory with all of it's children.
+ *
+ * @param path
+ *
+ * @throws IOException
+ */
+ private static void deleteAll(Path path) throws IOException {
+ if (!Files.exists(path)) {
+ return;
+ }
+
+ Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
+ @Override
+ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
+ Files.delete(file);
+ return CONTINUE;
+ }
+
+ @Override
+ public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
+ if (exc != null) {
+ throw exc;
+ }
+ Files.delete(dir);
+ return CONTINUE;
+ }
+ });
+ }
+}
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/Util.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/Util.java
index 3edabc078..afde945b3 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/Util.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/Util.java
@@ -31,10 +31,9 @@ import org.eclipse.equinox.p2.repository.artifact.*;
import org.eclipse.osgi.util.NLS;
public class Util {
-
- public static void log(String message) {
- LogHelper.log(createError(message));
- }
+ /*
+ * Logging
+ */
public static IStatus createError(String message) {
return new Status(IStatus.ERROR, Activator.ID, message);
@@ -44,6 +43,34 @@ public class Util {
return new Status(IStatus.ERROR, Activator.ID, message, exception);
}
+ public static void logError(String message, Throwable exception) {
+ LogHelper.log(createError(message, exception));
+ }
+
+ public static void logError(String message) {
+ LogHelper.log(createError(message));
+ }
+
+ public static IStatus createWarning(String message) {
+ return new Status(IStatus.WARNING, Activator.ID, message);
+ }
+
+ public static IStatus createWarning(String message, Throwable exception) {
+ return new Status(IStatus.WARNING, Activator.ID, message, exception);
+ }
+
+ public static void logWarning(String message, Throwable exception) {
+ LogHelper.log(createWarning(message, exception));
+ }
+
+ public static void logWarning(String message) {
+ LogHelper.log(createWarning(message));
+ }
+
+ /*
+ * Locations and caches
+ */
+
public static String getInstallFolder(IProfile profile) {
return profile.getProperty(IProfile.PROP_INSTALL_FOLDER);
}
@@ -58,11 +85,13 @@ public class Util {
public static IFileArtifactRepository getDownloadCacheRepo(IProvisioningAgent agent) throws ProvisionException {
URI location = getDownloadCacheLocation(agent);
- if (location == null)
+ if (location == null) {
throw new IllegalStateException(Messages.could_not_obtain_download_cache);
+ }
IArtifactRepositoryManager manager = getArtifactRepositoryManager(agent);
- if (manager == null)
+ if (manager == null) {
throw new IllegalStateException(Messages.artifact_repo_not_found);
+ }
IArtifactRepository repository;
try {
repository = manager.loadRepository(location, null);
@@ -76,18 +105,24 @@ public class Util {
}
IFileArtifactRepository downloadCache = repository.getAdapter(IFileArtifactRepository.class);
- if (downloadCache == null)
+ if (downloadCache == null) {
throw new ProvisionException(NLS.bind(Messages.download_cache_not_writeable, location));
+ }
return downloadCache;
}
- static private URI getDownloadCacheLocation(IProvisioningAgent agent) {
+ private static URI getDownloadCacheLocation(IProvisioningAgent agent) {
IAgentLocation location = getAgentLocation(agent);
- if (location == null)
+ if (location == null) {
return null;
+ }
return URIUtil.append(location.getDataArea("org.eclipse.equinox.p2.core"), "cache/"); //$NON-NLS-1$ //$NON-NLS-2$
}
+ /*
+ * File operations
+ */
+
/**
* Unzip from a File to an output directory, with progress indication and
* backup. monitor and backup store may be null.
@@ -113,9 +148,8 @@ public class Util {
monitor);
} catch (IOException e) {
// add the file name to the message
- IOException ioException = new IOException(NLS.bind(Messages.Util_Error_Unzipping, zipFile, e.getMessage()));
- ioException.initCause(e);
- throw ioException;
+ IOException ioExc = new IOException(NLS.bind(Messages.Util_Error_Unzipping, zipFile, e.getMessage()), e);
+ throw ioExc;
}
}
@@ -150,8 +184,9 @@ public class Util {
throw new IOException(Messages.Util_Invalid_Zip_File_Format);
}
- if (path != null && path.trim().length() == 0)
+ if (path != null && path.trim().length() == 0) {
path = null;
+ }
Pattern pathRegex = path == null ? null : createAntStylePattern("(" + path + ")(*)"); //$NON-NLS-1$ //$NON-NLS-2$
Collection<Pattern> includeRegexp = new ArrayList<>();
@@ -177,8 +212,9 @@ public class Util {
boolean unzip = includeRegexp.isEmpty();
for (Pattern pattern : includeRegexp) {
unzip = pattern.matcher(name).matches();
- if (unzip)
+ if (unzip) {
break;
+ }
}
if (unzip && !excludeRegexp.isEmpty()) {
for (Pattern pattern : excludeRegexp) {
@@ -193,8 +229,9 @@ public class Util {
Matcher matcher = pathRegex.matcher(name);
if (matcher.matches()) {
name = matcher.group(2);
- if (name.startsWith("/")) //$NON-NLS-1$
+ if (name.startsWith("/")) { //$NON-NLS-1$
name = name.substring(1);
+ }
}
}
File outFile = createSubPathFile(outputDir, name);
@@ -203,10 +240,11 @@ public class Util {
outFile.mkdirs();
} else {
if (outFile.exists()) {
- if (store != null)
+ if (store != null) {
store.backup(outFile);
- else
+ } else {
outFile.delete();
+ }
} else {
outFile.getParentFile().mkdirs();
}
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CheckAndPromptNativePackage.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CheckAndPromptNativePackage.java
index 38dd03da3..66f2cad4a 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CheckAndPromptNativePackage.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CheckAndPromptNativePackage.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2014, 2017 Rapicorp, Inc. and others.
+ * Copyright (c) 2014, 2019 Rapicorp, Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -20,6 +20,7 @@ import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.equinox.internal.p2.touchpoint.natives.*;
import org.eclipse.equinox.p2.engine.spi.ProvisioningAction;
+import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.osgi.util.NLS;
public class CheckAndPromptNativePackage extends ProvisioningAction {
@@ -30,22 +31,24 @@ public class CheckAndPromptNativePackage extends ProvisioningAction {
@Override
public IStatus execute(Map<String, Object> parameters) {
- //Get and check the paremeters
+ // Get and check the paremeters
String distro = (String) parameters.get(ActionConstants.PARM_LINUX_DISTRO);
String packageName = (String) parameters.get(ActionConstants.PARM_LINUX_PACKAGE_NAME);
String packageVersion = (String) parameters.get(ActionConstants.PARM_LINUX_PACKAGE_VERSION);
String versionComparator = (String) parameters.get(ActionConstants.PARM_LINUX_VERSION_COMPARATOR);
+ IInstallableUnit iu = (IInstallableUnit) parameters.get(ActionConstants.PARM_IU);
if (distro == null || packageName == null || (versionComparator != null && packageVersion == null))
return new Status(IStatus.ERROR, Activator.ID, Messages.Incorrect_Command);
distro = distro.toLowerCase();
- //If we are not running the distro we are provisioning, do nothing and return
+ // If we are not running the distro we are provisioning, do nothing and return
if (!runningDistro(distro))
return Status.OK_STATUS;
- //Check if the desired package is installed and collect information in the touchpoint
+ // Check if the desired package is installed and collect information in the
+ // touchpoint
File scriptToExecute = NativeTouchpoint.getFileFromBundle(distro, IS_INSTALLED);
if (scriptToExecute == null)
return new Status(IStatus.ERROR, Activator.ID, NLS.bind(Messages.Cannot_Find_status, distro));
@@ -64,23 +67,26 @@ public class CheckAndPromptNativePackage extends ProvisioningAction {
}
int exitValue = new ProcessBuilder(cmd).start().waitFor();
switch (exitValue) {
- case 0 :
- return Status.OK_STATUS;
- case 1 :
- case 2 :
- ((NativeTouchpoint) getTouchpoint()).addPackageToInstall(new NativePackageEntry(packageName, packageVersion, versionComparator));
- ((NativeTouchpoint) getTouchpoint()).setDistro(distro);
- return Status.OK_STATUS;
+ case 0:
+ return Status.OK_STATUS;
+ case 1:
+ case 2:
+ ((NativeTouchpoint) getTouchpoint()).addPackageToInstall(
+ new NativePackageEntry(packageName, packageVersion, versionComparator), iu);
+ ((NativeTouchpoint) getTouchpoint()).setDistro(distro);
+ return Status.OK_STATUS;
}
} catch (IOException e) {
- return new Status(IStatus.ERROR, Activator.ID, NLS.bind(Messages.Cannot_Check_Package, new String[] {packageName, packageVersion, distro}));
+ return new Status(IStatus.ERROR, Activator.ID,
+ NLS.bind(Messages.Cannot_Check_Package, new String[] { packageName, packageVersion, distro }));
} catch (InterruptedException e) {
- return new Status(IStatus.ERROR, Activator.ID, NLS.bind(Messages.Cannot_Check_Package, new String[] {packageName, packageVersion, distro}));
+ return new Status(IStatus.ERROR, Activator.ID,
+ NLS.bind(Messages.Cannot_Check_Package, new String[] { packageName, packageVersion, distro }));
}
return Status.OK_STATUS;
}
- //Check if the given distro is currently being run
+ // Check if the given distro is currently being run
protected boolean runningDistro(String distro) {
try {
File scriptToExecute = NativeTouchpoint.getFileFromBundle(distro, IS_RUNNING);
@@ -103,7 +109,7 @@ public class CheckAndPromptNativePackage extends ProvisioningAction {
@Override
public IStatus undo(Map<String, Object> parameters) {
- //Nothing to do since we are not modifying any state.
+ // Nothing to do since we are not modifying any state.
return null;
}
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CheckAndPromptNativePackageWindowsRegistry.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CheckAndPromptNativePackageWindowsRegistry.java
index b0e4c06f1..d458412a7 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CheckAndPromptNativePackageWindowsRegistry.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CheckAndPromptNativePackageWindowsRegistry.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015, 2017 SAP SE and others.
+ * Copyright (c) 2015, 2019 SAP SE and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -20,6 +20,7 @@ import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.equinox.internal.p2.touchpoint.natives.*;
import org.eclipse.equinox.p2.engine.spi.ProvisioningAction;
+import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.osgi.util.NLS;
public class CheckAndPromptNativePackageWindowsRegistry extends ProvisioningAction {
@@ -31,21 +32,23 @@ public class CheckAndPromptNativePackageWindowsRegistry extends ProvisioningActi
@Override
public IStatus execute(Map<String, Object> parameters) {
- //If we are not running on Windows, do nothing and return
+ // If we are not running on Windows, do nothing and return
if (!IS_WINDOWS)
return Status.OK_STATUS;
- //Get and check the paremeters
+ // Get and check the paremeters
String packageName = (String) parameters.get(ActionConstants.PARM_LINUX_PACKAGE_NAME);
String packageVersion = (String) parameters.get(ActionConstants.PARM_LINUX_PACKAGE_VERSION);
String key = (String) parameters.get(ActionConstants.PARM_WINDOWS_REGISTRY_KEY);
String attName = (String) parameters.get(ActionConstants.PARM_WINDOWS_REGISTRY_ATTRIBUTE_NAME);
String attValue = (String) parameters.get(ActionConstants.PARM_WINDOWS_REGISTRY_ATTRIBUTE_VALUE);
+ IInstallableUnit iu = (IInstallableUnit) parameters.get(ActionConstants.PARM_IU);
if (key == null || (attName != null && attValue == null))
return new Status(IStatus.ERROR, Activator.ID, Messages.Incorrect_Command);
- //Check if the desired package is installed and collect information in the touchpoint
+ // Check if the desired package is installed and collect information in the
+ // touchpoint
File scriptToExecute = NativeTouchpoint.getFileFromBundle(WINDOWS_DISTRO, IS_INSTALLED);
if (scriptToExecute == null)
return new Status(IStatus.ERROR, Activator.ID, NLS.bind(Messages.Cannot_Find_status, WINDOWS_DISTRO));
@@ -62,28 +65,30 @@ public class CheckAndPromptNativePackageWindowsRegistry extends ProvisioningActi
}
int exitValue = new ProcessBuilder(cmd).start().waitFor();
switch (exitValue) {
- case 0 :
- return Status.OK_STATUS;
- case 1 :
- case 2 :
- default :
- NativePackageEntry packageEntry = new NativePackageEntry(packageName, packageVersion, null);
- String downloadLink = (String) parameters.get(ActionConstants.PARM_DOWNLOAD_LINK);
- packageEntry.setDownloadLink(downloadLink);
- ((NativeTouchpoint) getTouchpoint()).addPackageToInstall(packageEntry);
- ((NativeTouchpoint) getTouchpoint()).setDistro(WINDOWS_DISTRO);
- return Status.OK_STATUS;
+ case 0:
+ return Status.OK_STATUS;
+ case 1:
+ case 2:
+ default:
+ NativePackageEntry packageEntry = new NativePackageEntry(packageName, packageVersion, null);
+ String downloadLink = (String) parameters.get(ActionConstants.PARM_DOWNLOAD_LINK);
+ packageEntry.setDownloadLink(downloadLink);
+ ((NativeTouchpoint) getTouchpoint()).addPackageToInstall(packageEntry, iu);
+ ((NativeTouchpoint) getTouchpoint()).setDistro(WINDOWS_DISTRO);
+ return Status.OK_STATUS;
}
} catch (IOException e) {
- return new Status(IStatus.ERROR, Activator.ID, NLS.bind(Messages.Cannot_Check_Package, new String[] {packageName, packageVersion, WINDOWS_DISTRO}));
+ return new Status(IStatus.ERROR, Activator.ID, NLS.bind(Messages.Cannot_Check_Package,
+ new String[] { packageName, packageVersion, WINDOWS_DISTRO }));
} catch (InterruptedException e) {
- return new Status(IStatus.ERROR, Activator.ID, NLS.bind(Messages.Cannot_Check_Package, new String[] {packageName, packageVersion, WINDOWS_DISTRO}));
+ return new Status(IStatus.ERROR, Activator.ID, NLS.bind(Messages.Cannot_Check_Package,
+ new String[] { packageName, packageVersion, WINDOWS_DISTRO }));
}
}
@Override
public IStatus undo(Map<String, Object> parameters) {
- //Nothing to do since we are not modifying any state.
+ // Nothing to do since we are not modifying any state.
return null;
}
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupcopyAction.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupcopyAction.java
index 840c891b3..eaa8e60fc 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupcopyAction.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupcopyAction.java
@@ -40,7 +40,8 @@ public class CleanupcopyAction extends ProvisioningAction {
/**
* Perform a cleanup of a previously made copy action.
- * @param parameters action parameters
+ *
+ * @param parameters action parameters
* @param restoreable flag indicating if the operation should be backed up
* @return status
*/
@@ -56,7 +57,7 @@ public class CleanupcopyAction extends ProvisioningAction {
IInstallableUnit iu = (IInstallableUnit) parameters.get(ActionConstants.PARM_IU);
IProfile profile = (IProfile) parameters.get(ActionConstants.PARM_PROFILE);
- String copied = profile.getInstallableUnitProperty(iu, "copied" + ActionConstants.PIPE + source + ActionConstants.PIPE + target); //$NON-NLS-1$
+ String copied = profile.getInstallableUnitProperty(iu, CopyAction.buildCopiedFileIUPropertyKey(target, source));
if (copied == null)
return Status.OK_STATUS;
@@ -69,8 +70,8 @@ public class CleanupcopyAction extends ProvisioningAction {
if (!file.exists())
continue;
- //directories need to be deleted from the bottom-up, but directories are listed
- //in traversal order during copy, so we need to reverse the directory list
+ // directories need to be deleted from the bottom-up, but directories are listed
+ // in traversal order during copy, so we need to reverse the directory list
if (file.isDirectory())
directories.add(0, file);
else {
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupzipAction.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupzipAction.java
index 99ef41487..e3dbccac9 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupzipAction.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupzipAction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2017 IBM Corporation and others.
+ * Copyright (c) 2008, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -89,7 +89,8 @@ public class CleanupzipAction extends ProvisioningAction {
try {
store.backup(file);
} catch (IOException e) {
- return new Status(IStatus.ERROR, Activator.ID, IStatus.OK, NLS.bind(Messages.backup_file_failed, file.getPath()), e);
+ return new Status(IStatus.ERROR, Activator.ID, IStatus.OK,
+ NLS.bind(Messages.backup_file_failed, file.getPath()), e);
}
else
file.delete();
@@ -97,7 +98,7 @@ public class CleanupzipAction extends ProvisioningAction {
}
// sort directories by path length longest path is in top
// this will make sure that a sub folder will be removed before its parent
- Collections.sort(directories, (f1, f2) -> {
+ directories.sort((f1, f2) -> {
if (f1 == f2)
return 0;
if (f1 != null && f2 == null)
@@ -119,7 +120,8 @@ public class CleanupzipAction extends ProvisioningAction {
try {
store.backupDirectory(directory);
} catch (IOException e) {
- return new Status(IStatus.ERROR, Activator.ID, IStatus.OK, NLS.bind(Messages.backup_file_failed, directory.getPath()), e);
+ return new Status(IStatus.ERROR, Activator.ID, IStatus.OK,
+ NLS.bind(Messages.backup_file_failed, directory.getPath()), e);
}
} else
directory.delete();
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CopyAction.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CopyAction.java
index 427e40bd4..94404fdf4 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CopyAction.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CopyAction.java
@@ -26,12 +26,12 @@ import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.osgi.util.NLS;
/**
- * Copies from PARM_COPY_SOURCE to PARAM_COPY_TARGET
- * The optional parameter PARAM_COPY_OVERWRITE overwrites and existing file if set to true, else
- * and existing file with the same name is an error. The default is false.
- * If the source is a directory, a merge copy to the target is performed.
- * Copy will copy files and directories (recursively).
- *
+ * Copies from PARM_COPY_SOURCE to PARAM_COPY_TARGET The optional parameter
+ * PARAM_COPY_OVERWRITE overwrites and existing file if set to true, else and
+ * existing file with the same name is an error. The default is false. If the
+ * source is a directory, a merge copy to the target is performed. Copy will
+ * copy files and directories (recursively).
+ *
*/
public class CopyAction extends ProvisioningAction {
public static final String ID = "cp"; //$NON-NLS-1$
@@ -41,10 +41,11 @@ public class CopyAction extends ProvisioningAction {
return copy(parameters, true);
}
- /** Perform the copy.
+ /**
+ * Perform the copy.
*
- * @param parameters action parameters
- * @param restoreable flag indicating if the operation should be backed up
+ * @param parameters action parameters
+ * @param restoreable flag indicating if the operation should be backed up
* @return status
*/
public static IStatus copy(Map<String, Object> parameters, boolean restoreable) {
@@ -52,11 +53,13 @@ public class CopyAction extends ProvisioningAction {
IBackupStore backupStore = restoreable ? (IBackupStore) parameters.get(NativeTouchpoint.PARM_BACKUP) : null;
if (target == null)
- return new Status(IStatus.ERROR, Activator.ID, IStatus.OK, NLS.bind(Messages.param_not_set, ActionConstants.PARM_COPY_TARGET, ID), null);
+ return new Status(IStatus.ERROR, Activator.ID, IStatus.OK,
+ NLS.bind(Messages.param_not_set, ActionConstants.PARM_COPY_TARGET, ID), null);
String source = (String) parameters.get(ActionConstants.PARM_COPY_SOURCE);
if (source == null)
- return new Status(IStatus.ERROR, Activator.ID, IStatus.OK, NLS.bind(Messages.param_not_set, ActionConstants.PARM_COPY_SOURCE, ID), null);
+ return new Status(IStatus.ERROR, Activator.ID, IStatus.OK,
+ NLS.bind(Messages.param_not_set, ActionConstants.PARM_COPY_SOURCE, ID), null);
String overwrite = (String) parameters.get(ActionConstants.PARM_COPY_OVERWRITE);
Profile profile = (Profile) parameters.get(ActionConstants.PARM_PROFILE);
@@ -78,7 +81,8 @@ public class CopyAction extends ProvisioningAction {
try {
copiedFiles = mergeCopy(sourceFile, targetFile, Boolean.parseBoolean(overwrite), backupStore);
} catch (IOException e) {
- return new Status(IStatus.ERROR, Activator.ID, IStatus.OK, NLS.bind(Messages.copy_failed, sourceFile.getPath()), e);
+ return new Status(IStatus.ERROR, Activator.ID, IStatus.OK,
+ NLS.bind(Messages.copy_failed, sourceFile.getPath()), e);
}
// keep copied file in the profile as memento for CleanupCopy
StringBuffer copiedFileNameBuffer = new StringBuffer();
@@ -86,11 +90,16 @@ public class CopyAction extends ProvisioningAction {
copiedFileNameBuffer.append(copiedFile.getAbsolutePath()).append(ActionConstants.PIPE);
}
- profile.setInstallableUnitProperty(iu, "copied" + ActionConstants.PIPE + originalSource + ActionConstants.PIPE + target, copiedFileNameBuffer.toString()); //$NON-NLS-1$
+ profile.setInstallableUnitProperty(iu, buildCopiedFileIUPropertyKey(target, originalSource),
+ copiedFileNameBuffer.toString());
return Status.OK_STATUS;
}
+ static String buildCopiedFileIUPropertyKey(String target, String originalSource) {
+ return "copied" + ActionConstants.PIPE + originalSource + ActionConstants.PIPE + target; //$NON-NLS-1$
+ }
+
@Override
public IStatus undo(Map<String, Object> parameters) {
return CleanupcopyAction.cleanupcopy(parameters, false);
@@ -98,12 +107,14 @@ public class CopyAction extends ProvisioningAction {
/**
* Merge-copy file or directory.
+ *
* @param source
* @param target
* @param overwrite
* @throws IOException
*/
- private static File[] mergeCopy(File source, File target, boolean overwrite, IBackupStore backupStore) throws IOException {
+ private static File[] mergeCopy(File source, File target, boolean overwrite, IBackupStore backupStore)
+ throws IOException {
ArrayList<File> copiedFiles = new ArrayList<>();
xcopy(copiedFiles, source, target, overwrite, backupStore);
return copiedFiles.toArray(new File[copiedFiles.size()]);
@@ -111,15 +122,17 @@ public class CopyAction extends ProvisioningAction {
/**
* Merge-copy file or directory.
+ *
* @param copiedFiles - ArrayList where copied files are collected
* @param source
* @param target
* @param overwrite
* @throws IOException
*/
- private static void xcopy(ArrayList<File> copiedFiles, File source, File target, boolean overwrite, IBackupStore backupStore) throws IOException {
+ private static void xcopy(ArrayList<File> copiedFiles, File source, File target, boolean overwrite,
+ IBackupStore backupStore) throws IOException {
if (!source.exists())
- throw new IOException("Source: " + source + "does not exists"); //$NON-NLS-1$//$NON-NLS-2$
+ throw new IOException("Source: " + source + " does not exists"); //$NON-NLS-1$//$NON-NLS-2$
if (source.isDirectory()) {
if (target.exists() && target.isFile()) {
@@ -152,7 +165,7 @@ public class CopyAction extends ProvisioningAction {
} catch (IOException e) {
// get the original IOException to the log
e.printStackTrace();
- throw new IOException("Error while copying:" + source.getAbsolutePath()); //$NON-NLS-1$
+ throw new IOException("Error while copying: " + source.getAbsolutePath()); //$NON-NLS-1$
}
copiedFiles.add(target);
}
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/UnzipAction.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/UnzipAction.java
index 77961095b..6dc4cf962 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/UnzipAction.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/UnzipAction.java
@@ -44,19 +44,22 @@ public class UnzipAction extends ProvisioningAction {
/**
* Unzip as directed by parameters.
* Record what was zipped in the profile.
+ *
* @param parameters
* @param restoreable - if the unzip should be backed up
* @return status
*/
public IStatus unzip(Map<String, Object> parameters, boolean restoreable) {
String source = (String) parameters.get(ActionConstants.PARM_SOURCE);
- if (source == null)
+ if (source == null) {
return Util.createError(NLS.bind(Messages.param_not_set, ActionConstants.PARM_SOURCE, ACTION_UNZIP));
+ }
String originalSource = source;
String target = (String) parameters.get(ActionConstants.PARM_TARGET);
- if (target == null)
+ if (target == null) {
return Util.createError(NLS.bind(Messages.param_not_set, ActionConstants.PARM_TARGET, ACTION_UNZIP));
+ }
IInstallableUnit iu = (IInstallableUnit) parameters.get(ActionConstants.PARM_IU);
Profile profile = (Profile) parameters.get(ActionConstants.PARM_PROFILE);
@@ -87,7 +90,9 @@ public class UnzipAction extends ProvisioningAction {
unzippedFileNameBuffer.append(unzippedFile.getAbsolutePath()).append(ActionConstants.PIPE);
}
- profile.setInstallableUnitProperty(iu, "unzipped" + ActionConstants.PIPE + originalSource + ActionConstants.PIPE + target, unzippedFileNameBuffer.toString()); //$NON-NLS-1$
+ profile.setInstallableUnitProperty(iu,
+ "unzipped" + ActionConstants.PIPE + originalSource + ActionConstants.PIPE + target, //$NON-NLS-1$
+ unzippedFileNameBuffer.toString());
return Status.OK_STATUS;
}
@@ -96,18 +101,23 @@ public class UnzipAction extends ProvisioningAction {
* Unzips a source zip into the given destination. Any existing contents in the destination
* are backed up in the provided backup store.
*/
- private static File[] unzip(String source, String destination, String path, String includePattern, String excludePattern, IBackupStore store) {
+ private static File[] unzip(String source, String destination, String path, String includePattern,
+ String excludePattern, IBackupStore store) {
File zipFile = new File(source);
if (zipFile == null || !zipFile.exists()) {
- Util.log(UnzipAction.class.getName() + " the files to be unzipped is not here"); //$NON-NLS-1$
+ Util.logError(UnzipAction.class.getName() + " the files to be unzipped is not here", null); //$NON-NLS-1$
}
try {
String taskName = NLS.bind(Messages.unzipping, source);
String[] includes = includePattern == null ? null : includePattern.split("\\s+"); //$NON-NLS-1$
String[] excludes = excludePattern == null ? null : excludePattern.split("\\s+"); //$NON-NLS-1$
- return Util.unzipFile(zipFile, new File(destination), path, includes, excludes, store, taskName, new NullProgressMonitor());
+ return Util.unzipFile(zipFile, new File(destination), path, includes, excludes, store, taskName,
+ new NullProgressMonitor());
} catch (IOException e) {
- Util.log(UnzipAction.class.getName() + " error unzipping zipfile: " + zipFile.getAbsolutePath() + "destination: " + destination); //$NON-NLS-1$ //$NON-NLS-2$
+ Util.logError(
+ UnzipAction.class.getName() + " error unzipping zipfile: " + zipFile.getAbsolutePath() //$NON-NLS-1$
+ + "destination: " + destination, //$NON-NLS-1$
+ null);
}
return new File[0];
}
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/messages.properties b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/messages.properties
index a58772ee9..298d24fa7 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/messages.properties
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/messages.properties
@@ -14,27 +14,26 @@
# SAP SE - bug 465602
###############################################################################
-BackupStore_backupCopy_closed_store=Can not perform backup on closed backup store.
+BackupStore_closed_store=Can not perform operation on closed backup store.
BackupStore_0_of_1_items_restored={0} items out of {1} items restored.
-BackupStore_can_not_close_tcp_port=Could not close tcp socket for port: {0}
BackupStore_can_not_copy_directory=Can not copy a directory: {0}
-BackupStore_can_not_create_dummy=Can not create dummy file: {0}
+BackupStore_can_not_create_placeholder=Can not create placeholder file: {0}
BackupStore_can_not_delete_after_copy_0=File that was copied to backup could not be deleted: {0}
BackupStore_can_not_delete_tmp_file=Can not delete temporary file - it is safe to delete it manually: {0}
BackupStore_can_not_remove=Can not remove : {0}
BackupStore_can_not_remove_bu_directory=Could not remove temporary backup directory (it is safe to manually delete it and its contents): {0}
+BackupStore_can_not_remove_bu_file=Could not remove temporary backup file (it is safe to manually delete it): {0}
BackupStore_directory_file_mismatch=File already backed up as a directory: {0}
BackupStore_directory_not_empty=Directory is not empty: {0}
BackupStore_errors_while_restoring_see_log=Errors while restoring - see earlier logged errors
BackupStore_externally_modified_0_of_1_restored=Backup store modified externally\! {0} items out of {1} items restored. Remaining items can not be found.
BackupStore_file_directory_mismatch=File already backed up as a file - and is now required as a directory: {0}
BackupStore_file_not_found=File does not exist: {0}.
-BackupStore_manual_restore_needed=Manual restore of backup needed for: {0}
+BackupStore_manual_restore_needed=Restore failed: {0}. Manual restore of backup needed for: {1}
BackupStore_missing_backup_directory=Missing backup directory - can not restore: {0}
BackupStore_not_a_directory=File is not a directory: {0}
-BackupStore_restore_closed_store=Can not perform restore on closed backup store
BlockMacUpdate_0=Installation impossible
-BlockMacUpdate_1=The installation/update you are trying to perform can not be completed because of structural changes to Eclipse. The installation/update will stop and will leave your existing Eclipse installation intact. You need to retrieve a new version of Eclipse from http://download.eclipse.org/.
+BlockMacUpdate_1=The installation/update you are trying to perform can not be completed because of structural changes to Eclipse. The installation/update will stop and will leave your existing Eclipse installation intact. You need to retrieve a new version of Eclipse from https://download.eclipse.org/.
action_0_status=The action {0} was performed.
action_0_failed_on_file_1_reason_2=The action {0} on file {1} failed. Reason: {2}
@@ -60,6 +59,8 @@ NativePackageExtractionApplication_FolderNotFound=The folder to analyze could no
NativePackageExtractionApplication_MissingParameters=Missing arguments, please specify {0} and {1}.
NativePackageExtractionApplication_MissingValue=The value is missing for argument {0}.
NativePackageExtractionApplication_PersistencePb=error while persisting results in
+NativeTouchpoint_PromptForNative_RequiredBy=(Required by {0})
+NativeTouchpoint_PromptForNative_YouCanDownloadFrom=You can download those from the following locations:\n
PromptForNative_InstallText=\n You can install those by executing the following command: \n\t
PromptForNative_IntroText=The software you installed requires the following OS packages to be installed: \n
PromptForNative_DialogTitle=Install Native Software Packages
diff --git a/bundles/org.eclipse.equinox.p2.transport.ecf/.classpath b/bundles/org.eclipse.equinox.p2.transport.ecf/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.transport.ecf/.classpath
+++ b/bundles/org.eclipse.equinox.p2.transport.ecf/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.transport.ecf/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.transport.ecf/.settings/org.eclipse.jdt.core.prefs
index 775b2b448..486c1970c 100644
--- a/bundles/org.eclipse.equinox.p2.transport.ecf/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.transport.ecf/.settings/org.eclipse.jdt.core.prefs
@@ -18,9 +18,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -37,6 +37,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -93,6 +94,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -129,7 +131,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -143,7 +146,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -264,7 +266,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -335,7 +336,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -480,7 +480,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.transport.ecf/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.transport.ecf/META-INF/MANIFEST.MF
index b7d5b65f7..31f2492ff 100644
--- a/bundles/org.eclipse.equinox.p2.transport.ecf/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.transport.ecf/META-INF/MANIFEST.MF
@@ -2,8 +2,8 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.transport.ecf
-Bundle-Version: 1.2.300.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Version: 1.3.300.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.ecf;bundle-version="3.1.0",
org.eclipse.ecf.filetransfer;bundle-version="4.0.0",
org.eclipse.ecf.provider.filetransfer;bundle-version="3.1.0",
diff --git a/bundles/org.eclipse.equinox.p2.transport.ecf/pom.xml b/bundles/org.eclipse.equinox.p2.transport.ecf/pom.xml
index 0a3372888..7d8611d3e 100644
--- a/bundles/org.eclipse.equinox.p2.transport.ecf/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.transport.ecf/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.transport.ecf</artifactId>
- <version>1.2.300-SNAPSHOT</version>
+ <version>1.3.300-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/Activator.java b/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/Activator.java
index 9a34baeaf..7b6649c20 100644
--- a/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/Activator.java
+++ b/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/Activator.java
@@ -16,6 +16,7 @@
******************************************************************************/
package org.eclipse.equinox.internal.p2.transport.ecf;
+import java.util.Optional;
import org.eclipse.ecf.filetransfer.service.IRetrieveFileTransferFactory;
import org.eclipse.ecf.provider.filetransfer.IFileTransferProtocolToFactoryMapper;
import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
@@ -24,9 +25,9 @@ import org.osgi.service.packageadmin.PackageAdmin;
import org.osgi.util.tracker.ServiceTracker;
/**
- * The activator class controls the plug-in life cycle.
- * This activator has helper methods to get file transfer service tracker, and
- * for making sure required ECF bundles are started.
+ * The activator class controls the plug-in life cycle. This activator has
+ * helper methods to get file transfer service tracker, and for making sure
+ * required ECF bundles are started.
*/
@SuppressWarnings("restriction")
public class Activator implements BundleActivator {
@@ -66,10 +67,6 @@ public class Activator implements BundleActivator {
}
- public static BundleContext getContext() {
- return Activator.context;
- }
-
/**
* Get singleton instance.
*
@@ -80,9 +77,11 @@ public class Activator implements BundleActivator {
}
/**
- * Returns a {@link IRetrieveFileTransferFactory} using a {@link ServiceTracker} after having attempted
- * to start the bundle "org.eclipse.ecf.provider.filetransfer". If something is wrong with the configuration
- * this method returns null.
+ * Returns a {@link IRetrieveFileTransferFactory} using a {@link ServiceTracker}
+ * after having attempted to start the bundle
+ * "org.eclipse.ecf.provider.filetransfer". If something is wrong with the
+ * configuration this method returns null.
+ *
* @return a factory, or null, if configuration is incorrect
*/
public IRetrieveFileTransferFactory getRetrieveFileTransferFactory() {
@@ -128,14 +127,15 @@ public class Activator implements BundleActivator {
}
/**
- * Gets the singleton ServiceTracker for the IRetrieveFileTransferFactory and starts the bundles
- * "org.eclipse.ecf" and
+ * Gets the singleton ServiceTracker for the IRetrieveFileTransferFactory and
+ * starts the bundles "org.eclipse.ecf" and
* "org.eclipse.ecf.provider.filetransfer" on first call.
- * @return ServiceTracker
+ *
+ * @return ServiceTracker
*/
private synchronized ServiceTracker<IRetrieveFileTransferFactory, IRetrieveFileTransferFactory> getFileTransferServiceTracker() {
if (retrievalFactoryTracker == null) {
- retrievalFactoryTracker = new ServiceTracker<>(Activator.getContext(), IRetrieveFileTransferFactory.class, null);
+ retrievalFactoryTracker = new ServiceTracker<>(Activator.context, IRetrieveFileTransferFactory.class, null);
retrievalFactoryTracker.open();
startBundle("org.eclipse.ecf"); //$NON-NLS-1$
startBundle("org.eclipse.ecf.provider.filetransfer"); //$NON-NLS-1$
@@ -145,14 +145,15 @@ public class Activator implements BundleActivator {
private IFileTransferProtocolToFactoryMapper getProtocolToFactoryMapper() {
if (protocolToFactoryMapperTracker == null) {
- protocolToFactoryMapperTracker = new ServiceTracker<>(context, IFileTransferProtocolToFactoryMapper.class, null);
+ protocolToFactoryMapperTracker = new ServiceTracker<>(context, IFileTransferProtocolToFactoryMapper.class,
+ null);
protocolToFactoryMapperTracker.open();
}
return protocolToFactoryMapperTracker.getService();
}
private boolean startBundle(String bundleId) {
- PackageAdmin packageAdmin = ServiceHelper.getService(Activator.getContext(), PackageAdmin.class);
+ PackageAdmin packageAdmin = ServiceHelper.getService(Activator.context, PackageAdmin.class);
if (packageAdmin == null)
return false;
@@ -165,7 +166,7 @@ public class Activator implements BundleActivator {
bundle.start(Bundle.START_TRANSIENT);
return true;
}
- }catch (BundleException e) {
+ } catch (BundleException e) {
// failed, try next bundle
}
}
@@ -173,4 +174,18 @@ public class Activator implements BundleActivator {
return false;
}
+ public static String getProperty(String key) {
+ if (context != null) {
+ return context.getProperty(key);
+ }
+ return System.getProperty(key);
+ }
+
+ public static Optional<Version> getVersion() {
+ return Optional.ofNullable(context) //
+ .map(BundleContext::getBundle) //
+ .or(() -> Optional.ofNullable(FrameworkUtil.getBundle(FileReader.class)))//
+ .map(Bundle::getVersion);
+ }
+
}
diff --git a/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/FileInfoReader.java b/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/FileInfoReader.java
index 8a45c5486..cfca3d832 100644
--- a/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/FileInfoReader.java
+++ b/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/FileInfoReader.java
@@ -163,7 +163,7 @@ public class FileInfoReader extends Job implements IRemoteFileSystemListener {
try {
container = ContainerFactory.getDefault().createContainer();
} catch (ContainerCreateException e) {
- throw RepositoryStatusHelper.fromMessage(Messages.ecf_configuration_error);
+ throw RepositoryStatusHelper.fromExceptionMessage(e ,Messages.ecf_configuration_error);
}
IRemoteFileSystemBrowserContainerAdapter adapter = container.getAdapter(IRemoteFileSystemBrowserContainerAdapter.class);
diff --git a/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/FileReader.java b/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/FileReader.java
index 166e70d8a..7d95289f4 100644
--- a/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/FileReader.java
+++ b/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/FileReader.java
@@ -34,7 +34,7 @@ import org.eclipse.equinox.internal.p2.repository.*;
import org.eclipse.equinox.internal.p2.repository.Messages;
import org.eclipse.equinox.p2.core.IProvisioningAgent;
import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.Version;
/**
* FileReader is an ECF FileTransferJob implementation.
@@ -42,8 +42,8 @@ import org.osgi.framework.FrameworkUtil;
public final class FileReader extends FileTransferJob implements IFileTransferListener {
/**
* Class used to suppress warnings about a job being blocked by another job.
- * Since we are running a job that will always be blocked by another job that
- * is actually performing the transfer, these messages are unnecessary and ugly.
+ * Since we are running a job that will always be blocked by another job that is
+ * actually performing the transfer, these messages are unnecessary and ugly.
*/
static class SuppressBlockedMonitor extends ProgressMonitorWrapper {
public SuppressBlockedMonitor(IProgressMonitor monitor, int ticks) {
@@ -52,23 +52,23 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
@Override
public void setBlocked(IStatus reason) {
- //do nothing
+ // do nothing
}
@Override
public void clearBlocked() {
- //do nothing
+ // do nothing
}
}
static Map<String, Map<String, String>> options;
static private String getProperty(String key, String defaultValue) {
- String value = Activator.getContext().getProperty(key);
- if (value == null) {
- value = defaultValue;
+ String value = Activator.getProperty(key);
+ if (value != null) {
+ return value;
}
- return value;
+ return defaultValue;
}
static {
@@ -80,8 +80,9 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
String osgiArch = getProperty("org.osgi.framework.processor", "unknownArch");//$NON-NLS-1$//$NON-NLS-2$
String language = getProperty("osgi.nl", "unknownLanguage");//$NON-NLS-1$//$NON-NLS-2$
String osVersion = getProperty("org.osgi.framework.os.version", "unknownOSVersion"); //$NON-NLS-1$ //$NON-NLS-2$
- String p2Version = FrameworkUtil.getBundle(FileReader.class).getVersion().toString();
- userAgent = "p2/" + p2Version + " (Java " + javaSpec + ' ' + javaVendor + "; " + osName + ' ' + osVersion + ' ' + osgiArch + "; " + language + ") "; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
+ String p2Version = Activator.getVersion().map(Version::toString).orElse("unknownVersion"); //$NON-NLS-1$
+ userAgent = "p2/" + p2Version + " (Java " + javaSpec + ' ' + javaVendor + "; " + osName + ' ' + osVersion + ' ' //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ + osgiArch + "; " + language + ") "; //$NON-NLS-1$ //$NON-NLS-2$
String userAgentProvided = getProperty("p2.userAgent", null); //$NON-NLS-1$
if (userAgentProvided == null) {
String productId = getProperty("eclipse.product", "unknownProduct"); //$NON-NLS-1$ //$NON-NLS-2$
@@ -107,6 +108,8 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
private ProgressStatistics statistics;
private final int connectionRetryCount;
private final long connectionRetryDelay;
+ /** See bug 574173: allow to retry download if specified */
+ private final boolean retryOnSocketTimeout;
private final IConnectContext connectContext;
private URI requestUri;
protected IFileTransferConnectStartEvent connectEvent;
@@ -118,8 +121,8 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
private IFileTransferPausable pasuable = null;
/**
- * Create a new FileReader that will retry failed connection attempts and sleep some amount of time between each
- * attempt.
+ * Create a new FileReader that will retry failed connection attempts and sleep
+ * some amount of time between each attempt.
*/
public FileReader(IProvisioningAgent aAgent, IConnectContext aConnectContext) {
super(Messages.FileTransport_reader); // job label
@@ -129,6 +132,7 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
setUser(false);
connectionRetryCount = RepositoryPreferences.getConnectionRetryCount();
connectionRetryDelay = RepositoryPreferences.getConnectionMsRetryDelay();
+ retryOnSocketTimeout = RepositoryPreferences.getRetryOnSocketTimeout();
connectContext = aConnectContext;
this.agent = aAgent;
}
@@ -138,8 +142,8 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
}
/**
- * A job to handle cancelation when trying to establish a socket connection.
- * At this point we don't have a transfer job running yet, so we need a separate
+ * A job to handle cancelation when trying to establish a socket connection. At
+ * this point we don't have a transfer job running yet, so we need a separate
* job to monitor for cancelation.
*/
protected class CancelHandler extends Job {
@@ -167,7 +171,7 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
@Override
protected void canceling() {
- //wake up from sleep in run method
+ // wake up from sleep in run method
Thread t = getThread();
if (t != null)
t.interrupt();
@@ -182,10 +186,12 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
connectEvent = (IFileTransferConnectStartEvent) event;
connectEvent.connectUsingJob(((IFileTransferConnectStartEvent) event).prepareConnectJob(null));
cancelJob = new CancelHandler();
- //schedule with a delay to avoid the overhead of an extra job on a fast connection
+ // schedule with a delay to avoid the overhead of an extra job on a fast
+ // connection
cancelJob.schedule(500);
} else if (event instanceof IIncomingFileTransferReceiveStartEvent) {
- //we no longer need the cancel handler because we are about to fork the transfer job
+ // we no longer need the cancel handler because we are about to fork the
+ // transfer job
if (cancelJob != null)
cancelJob.cancel();
IIncomingFileTransfer source = ((IIncomingFileTransferEvent) event).getSource();
@@ -204,7 +210,8 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
return;
}
long fileLength = source.getFileLength();
- ProgressStatistics stats = new ProgressStatistics(agent, requestUri, source.getRemoteFileName(), fileLength);
+ ProgressStatistics stats = new ProgressStatistics(agent, requestUri, source.getRemoteFileName(),
+ fileLength);
setStatistics(stats);
if (theMonitor != null) {
@@ -252,7 +259,8 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
} else if (event instanceof IIncomingFileTransferReceivePausedEvent) {
this.hasPaused = true;
} else if (event instanceof IIncomingFileTransferReceiveResumedEvent) {
- //we no longer need the cancel handler because we are about to resume the transfer job
+ // we no longer need the cancel handler because we are about to resume the
+ // transfer job
if (cancelJob != null)
cancelJob.cancel();
try {
@@ -273,7 +281,8 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
}
}
- public InputStream read(URI url, final IProgressMonitor monitor) throws CoreException, FileNotFoundException, AuthenticationFailedException, JREHttpClientRequiredException {
+ public InputStream read(URI url, final IProgressMonitor monitor)
+ throws CoreException, FileNotFoundException, AuthenticationFailedException, JREHttpClientRequiredException {
final PipedInputStream input = new PipedInputStream();
PipedOutputStream output;
try {
@@ -375,7 +384,8 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
if (monitor == null)
monitor = new NullProgressMonitor();
try {
- sendRetrieveRequest(uri, anOutputStream, (startPos != -1 ? new DownloadRange(startPos) : null), false, monitor);
+ sendRetrieveRequest(uri, anOutputStream, (startPos != -1 ? new DownloadRange(startPos) : null), false,
+ monitor);
Job.getJobManager().join(this, new SuppressBlockedMonitor(monitor, 0));
waitPaused(uri, anOutputStream, startPos, monitor);
if (monitor.isCanceled() && connectEvent != null)
@@ -399,7 +409,9 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
}
}
- protected void waitPaused(URI uri, OutputStream anOutputStream, long startPos, IProgressMonitor monitor) throws AuthenticationFailedException, JREHttpClientRequiredException, FileNotFoundException, CoreException, OperationCanceledException, InterruptedException {
+ protected void waitPaused(URI uri, OutputStream anOutputStream, long startPos, IProgressMonitor monitor)
+ throws AuthenticationFailedException, JREHttpClientRequiredException, FileNotFoundException, CoreException,
+ OperationCanceledException, InterruptedException {
if (hasPaused) {
while (hasPaused) {
Thread.sleep(1000);
@@ -411,8 +423,10 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
}
}
- protected void sendRetrieveRequest(URI uri, OutputStream outputStream, DownloadRange range, boolean closeStreamOnFinish, //
- IProgressMonitor monitor) throws CoreException, FileNotFoundException, AuthenticationFailedException, JREHttpClientRequiredException {
+ protected void sendRetrieveRequest(URI uri, OutputStream outputStream, DownloadRange range,
+ boolean closeStreamOnFinish, //
+ IProgressMonitor monitor)
+ throws CoreException, FileNotFoundException, AuthenticationFailedException, JREHttpClientRequiredException {
IRetrieveFileTransferFactory factory = Activator.getDefault().getRetrieveFileTransferFactory();
if (factory == null) {
@@ -438,7 +452,8 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
throw new OperationCanceledException();
try {
- IFileID fileID = FileIDFactory.getDefault().createFileID(adapter.getRetrieveNamespace(), uri.toString());
+ IFileID fileID = FileIDFactory.getDefault().createFileID(adapter.getRetrieveNamespace(),
+ uri.toString());
adapter.sendRetrieveRequest(fileID, range, this, options);
} catch (IncomingFileTransferException e) {
exception = e;
@@ -471,17 +486,20 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
}
/**
- * Utility method to check exception condition and determine if retry should be done.
- * If there was an exception it is translated into one of the specified exceptions and thrown.
+ * Utility method to check exception condition and determine if retry should be
+ * done. If there was an exception it is translated into one of the specified
+ * exceptions and thrown.
*
- * @param uri the URI being read - used for logging purposes
+ * @param uri the URI being read - used for logging purposes
* @param attemptCounter - the current attempt number (start with 0)
- * @return true if the exception is an IOException and attemptCounter < connectionRetryCount, false otherwise
+ * @return true if the exception is an IOException and attemptCounter <
+ * connectionRetryCount, false otherwise
* @throws CoreException
* @throws FileNotFoundException
* @throws AuthenticationFailedException
*/
- private boolean checkException(URI uri, int attemptCounter) throws CoreException, FileNotFoundException, AuthenticationFailedException, JREHttpClientRequiredException {
+ private boolean checkException(URI uri, int attemptCounter)
+ throws CoreException, FileNotFoundException, AuthenticationFailedException, JREHttpClientRequiredException {
// note that 'exception' could have been captured in a callback
if (exception != null) {
// check if HTTP client needs to be changed
@@ -497,11 +515,14 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
if (t instanceof CoreException)
throw RepositoryStatusHelper.unwindCoreException((CoreException) t);
- // not meaningful to try 'timeout again' - if a server is that busy, we
- // need to wait for quite some time before retrying- it is not likely it is
- // just a temporary network thing.
- if (t instanceof SocketTimeoutException)
- throw RepositoryStatusHelper.wrap(t);
+ if (!retryOnSocketTimeout) {
+ // not meaningful to try 'timeout again' - if a server is that busy, we
+ // need to wait for quite some time before retrying- it is not likely it is
+ // just a temporary network thing.
+ if (t instanceof SocketTimeoutException) {
+ throw RepositoryStatusHelper.wrap(t);
+ }
+ }
if (t instanceof IOException && attemptCounter < connectionRetryCount) {
// TODO: Retry only certain exceptions or filter out
@@ -509,7 +530,10 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
//
exception = null;
try {
- LogHelper.log(new Status(IStatus.WARNING, Activator.ID, NLS.bind(Messages.connection_to_0_failed_on_1_retry_attempt_2, new String[] {uri.toString(), t.getMessage(), String.valueOf(attemptCounter)}), t));
+ LogHelper.log(new Status(IStatus.WARNING, Activator.ID,
+ NLS.bind(Messages.connection_to_0_failed_on_1_retry_attempt_2,
+ new String[] { uri.toString(), t.getMessage(), String.valueOf(attemptCounter) }),
+ t));
Thread.sleep(connectionRetryDelay);
return false;
@@ -528,6 +552,7 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
/**
* Closes input and output streams
+ *
* @param aStream
*/
public static void hardClose(Object aStream) {
@@ -578,8 +603,8 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
}
/**
- * Sets a testing probe that can intercept events on the file reader for testing purposes.
- * This method should only ever be called from automated test suites.
+ * Sets a testing probe that can intercept events on the file reader for testing
+ * purposes. This method should only ever be called from automated test suites.
*/
public static void setTestProbe(IFileReaderProbe probe) {
testProbe = probe;
@@ -587,8 +612,8 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
/**
* Sets the progress statistics. This method is synchronized because the field
- * is accessed from both the transfer thread and the thread initiating the transfer
- * and we need to ensure field values are consistent across threads.
+ * is accessed from both the transfer thread and the thread initiating the
+ * transfer and we need to ensure field values are consistent across threads.
*
* @param statistics the statistics to set, or <code>null</code>
*/
@@ -597,9 +622,9 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
}
/**
- * Returns the progress statistics. This method is synchronized because the field
- * is accessed from both the transfer thread and the thread initiating the transfer
- * and we need to ensure field values are consistent across threads.
+ * Returns the progress statistics. This method is synchronized because the
+ * field is accessed from both the transfer thread and the thread initiating the
+ * transfer and we need to ensure field values are consistent across threads.
*
* @return the statistics, or <code>null</code>
*/
@@ -609,6 +634,7 @@ public final class FileReader extends FileTransferJob implements IFileTransferLi
/**
* An interface to allow automated tests to hook into file reader events
+ *
* @see #setTestProbe
*/
public interface IFileReaderProbe {
diff --git a/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/RepositoryTransport.java b/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/RepositoryTransport.java
index ba13b7fc4..a705ddcc0 100644
--- a/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/RepositoryTransport.java
+++ b/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/RepositoryTransport.java
@@ -192,8 +192,8 @@ public class RepositoryTransport extends Transport {
// must translate this core exception as it is most likely not informative to a
// user
if (e.getStatus().getException() == null)
- throw new CoreException(RepositoryStatus.forException(e, toDownload));
- throw new CoreException(RepositoryStatus.forStatus(e.getStatus(), toDownload));
+ throw new CoreException(forException(e, toDownload));
+ throw new CoreException(forStatus(e.getStatus(), toDownload));
} catch (LoginCanceledException e) {
// i.e. same behavior when user cancels as when failing n attempts.
throw new AuthenticationFailedException();
@@ -253,8 +253,8 @@ public class RepositoryTransport extends Transport {
// must translate this core exception as it is most likely not informative to a
// user
if (e.getStatus().getException() == null)
- throw new CoreException(RepositoryStatus.forException(e, toDownload));
- throw new CoreException(RepositoryStatus.forStatus(e.getStatus(), toDownload));
+ throw new CoreException(forException(e, toDownload));
+ throw new CoreException(forStatus(e.getStatus(), toDownload));
} catch (AuthenticationFailedException e) {
promptUser = true;
} catch (LoginCanceledException e) {
@@ -278,6 +278,8 @@ public class RepositoryTransport extends Transport {
return true;
else if (t instanceof SocketException)
return true;
+ else if (t instanceof IncomingFileTransferException && ((IncomingFileTransferException) t).getErrorCode() == 503)
+ return true;
return false;
}
@@ -308,7 +310,7 @@ public class RepositoryTransport extends Transport {
retryCount = Integer.valueOf(alreadyRetryCount.intValue() + 1);
}
}
- if (retryCount != null) {
+ if (retryCount != null && retryCount.intValue() <= retry) {
socketExceptionRetry.put(toDownload, retryCount);
return new DownloadStatus(IStatus.ERROR, Activator.ID, IArtifactRepository.CODE_RETRY,
NLS.bind(Messages.connection_to_0_failed_on_1_retry_attempt_2, new String[] {
diff --git a/bundles/org.eclipse.equinox.p2.ui.admin.rcp/.classpath b/bundles/org.eclipse.equinox.p2.ui.admin.rcp/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.ui.admin.rcp/.classpath
+++ b/bundles/org.eclipse.equinox.p2.ui.admin.rcp/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.ui.admin.rcp/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.ui.admin.rcp/.settings/org.eclipse.jdt.core.prefs
index 7f57486db..b8c25ff3b 100644
--- a/bundles/org.eclipse.equinox.p2.ui.admin.rcp/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.ui.admin.rcp/.settings/org.eclipse.jdt.core.prefs
@@ -16,9 +16,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -88,6 +89,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -125,7 +127,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -139,7 +142,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -260,7 +262,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -331,7 +332,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -476,7 +476,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.ui.admin.rcp/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.ui.admin.rcp/META-INF/MANIFEST.MF
index 2da82a17e..78f885414 100644
--- a/bundles/org.eclipse.equinox.p2.ui.admin.rcp/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.ui.admin.rcp/META-INF/MANIFEST.MF
@@ -4,9 +4,9 @@ Bundle-Name: %bundleName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Bundle-SymbolicName: org.eclipse.equinox.p2.ui.admin.rcp; singleton:=true
-Bundle-Version: 1.2.100.qualifier
+Bundle-Version: 1.3.200.qualifier
Bundle-Activator: org.eclipse.equinox.internal.p2.ui.admin.rcp.Activator
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime
Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.equinox.p2.ui.admin.rcp/pom.xml b/bundles/org.eclipse.equinox.p2.ui.admin.rcp/pom.xml
index 691ac56f5..be007c637 100644
--- a/bundles/org.eclipse.equinox.p2.ui.admin.rcp/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.ui.admin.rcp/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.ui.admin.rcp</artifactId>
- <version>1.2.100-SNAPSHOT</version>
+ <version>1.3.200-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.ui.admin.rcp/rcp.product b/bundles/org.eclipse.equinox.p2.ui.admin.rcp/rcp.product
index 6b02be252..9ba3bcdc0 100644
--- a/bundles/org.eclipse.equinox.p2.ui.admin.rcp/rcp.product
+++ b/bundles/org.eclipse.equinox.p2.ui.admin.rcp/rcp.product
@@ -136,9 +136,21 @@ Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in t
<plugins>
<plugin id="com.ibm.icu"/>
+ <plugin id="com.sun.jna"/>
+ <plugin id="com.sun.jna.platform"/>
+ <plugin id="javax.annotation"/>
+ <plugin id="javax.inject"/>
+ <plugin id="org.apache.batik.constants"/>
+ <plugin id="org.apache.batik.css"/>
+ <plugin id="org.apache.batik.i18n"/>
+ <plugin id="org.apache.batik.util"/>
<plugin id="org.apache.commons.codec"/>
<plugin id="org.apache.commons.httpclient"/>
+ <plugin id="org.apache.commons.io"/>
+ <plugin id="org.apache.commons.jxpath"/>
<plugin id="org.apache.commons.logging"/>
+ <plugin id="org.apache.felix.scr"/>
+ <plugin id="org.apache.xmlgraphics"/>
<plugin id="org.eclipse.compare"/>
<plugin id="org.eclipse.compare.core"/>
<plugin id="org.eclipse.core.commands"/>
@@ -149,11 +161,37 @@ Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in t
<plugin id="org.eclipse.core.expressions"/>
<plugin id="org.eclipse.core.filebuffers"/>
<plugin id="org.eclipse.core.filesystem"/>
+ <plugin id="org.eclipse.core.filesystem.linux.x86_64" fragment="true"/>
<plugin id="org.eclipse.core.filesystem.macosx" fragment="true"/>
<plugin id="org.eclipse.core.jobs"/>
<plugin id="org.eclipse.core.net"/>
+ <plugin id="org.eclipse.core.net.linux" fragment="true"/>
<plugin id="org.eclipse.core.resources"/>
<plugin id="org.eclipse.core.runtime"/>
+ <plugin id="org.eclipse.e4.core.commands"/>
+ <plugin id="org.eclipse.e4.core.contexts"/>
+ <plugin id="org.eclipse.e4.core.di"/>
+ <plugin id="org.eclipse.e4.core.di.annotations"/>
+ <plugin id="org.eclipse.e4.core.di.extensions"/>
+ <plugin id="org.eclipse.e4.core.di.extensions.supplier"/>
+ <plugin id="org.eclipse.e4.core.services"/>
+ <plugin id="org.eclipse.e4.emf.xpath"/>
+ <plugin id="org.eclipse.e4.ui.bindings"/>
+ <plugin id="org.eclipse.e4.ui.css.core"/>
+ <plugin id="org.eclipse.e4.ui.css.swt"/>
+ <plugin id="org.eclipse.e4.ui.css.swt.theme"/>
+ <plugin id="org.eclipse.e4.ui.di"/>
+ <plugin id="org.eclipse.e4.ui.dialogs"/>
+ <plugin id="org.eclipse.e4.ui.ide"/>
+ <plugin id="org.eclipse.e4.ui.model.workbench"/>
+ <plugin id="org.eclipse.e4.ui.services"/>
+ <plugin id="org.eclipse.e4.ui.swt.gtk" fragment="true"/>
+ <plugin id="org.eclipse.e4.ui.widgets"/>
+ <plugin id="org.eclipse.e4.ui.workbench"/>
+ <plugin id="org.eclipse.e4.ui.workbench.addons.swt"/>
+ <plugin id="org.eclipse.e4.ui.workbench.renderers.swt"/>
+ <plugin id="org.eclipse.e4.ui.workbench.swt"/>
+ <plugin id="org.eclipse.e4.ui.workbench3"/>
<plugin id="org.eclipse.ecf"/>
<plugin id="org.eclipse.ecf.filetransfer"/>
<plugin id="org.eclipse.ecf.identity"/>
@@ -162,13 +200,20 @@ Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in t
<plugin id="org.eclipse.ecf.provider.filetransfer.httpclient.ssl" fragment="true"/>
<plugin id="org.eclipse.ecf.provider.filetransfer.ssl" fragment="true"/>
<plugin id="org.eclipse.ecf.ssl" fragment="true"/>
+ <plugin id="org.eclipse.emf.common"/>
+ <plugin id="org.eclipse.emf.ecore"/>
+ <plugin id="org.eclipse.emf.ecore.change"/>
+ <plugin id="org.eclipse.emf.ecore.xmi"/>
<plugin id="org.eclipse.equinox.app"/>
+ <plugin id="org.eclipse.equinox.bidi"/>
<plugin id="org.eclipse.equinox.common"/>
- <plugin id="org.eclipse.equinox.ds"/>
+ <plugin id="org.eclipse.equinox.concurrent"/>
<plugin id="org.eclipse.equinox.frameworkadmin"/>
<plugin id="org.eclipse.equinox.frameworkadmin.equinox"/>
<plugin id="org.eclipse.equinox.launcher"/>
- <plugin id="org.eclipse.equinox.launcher.cocoa.macosx" fragment="true"/>
+ <plugin id="org.eclipse.equinox.launcher.cocoa.macosx.aarch64" fragment="true"/>
+ <plugin id="org.eclipse.equinox.launcher.cocoa.macosx.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.equinox.launcher.gtk.linux.x86_64" fragment="true"/>
<plugin id="org.eclipse.equinox.p2.artifact.repository"/>
<plugin id="org.eclipse.equinox.p2.console"/>
<plugin id="org.eclipse.equinox.p2.core"/>
@@ -181,6 +226,7 @@ Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in t
<plugin id="org.eclipse.equinox.p2.metadata.repository"/>
<plugin id="org.eclipse.equinox.p2.operations"/>
<plugin id="org.eclipse.equinox.p2.publisher"/>
+ <plugin id="org.eclipse.equinox.p2.publisher.eclipse"/>
<plugin id="org.eclipse.equinox.p2.repository"/>
<plugin id="org.eclipse.equinox.p2.repository.tools"/>
<plugin id="org.eclipse.equinox.p2.touchpoint.eclipse"/>
@@ -193,6 +239,7 @@ Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in t
<plugin id="org.eclipse.equinox.preferences"/>
<plugin id="org.eclipse.equinox.registry"/>
<plugin id="org.eclipse.equinox.security"/>
+ <plugin id="org.eclipse.equinox.security.linux" fragment="true"/>
<plugin id="org.eclipse.equinox.security.macosx" fragment="true"/>
<plugin id="org.eclipse.equinox.security.ui"/>
<plugin id="org.eclipse.equinox.simpleconfigurator"/>
@@ -201,29 +248,40 @@ Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in t
<plugin id="org.eclipse.help"/>
<plugin id="org.eclipse.jface"/>
<plugin id="org.eclipse.jface.databinding"/>
+ <plugin id="org.eclipse.jface.notifications"/>
<plugin id="org.eclipse.jface.text"/>
<plugin id="org.eclipse.osgi"/>
+ <plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/>
<plugin id="org.eclipse.osgi.services"/>
+ <plugin id="org.eclipse.osgi.util"/>
<plugin id="org.eclipse.swt"/>
<plugin id="org.eclipse.swt.cocoa.macosx" fragment="true"/>
+ <plugin id="org.eclipse.swt.gtk.linux.x86_64" fragment="true"/>
<plugin id="org.eclipse.text"/>
<plugin id="org.eclipse.ui"/>
<plugin id="org.eclipse.ui.cocoa" fragment="true"/>
<plugin id="org.eclipse.ui.editors"/>
<plugin id="org.eclipse.ui.forms"/>
<plugin id="org.eclipse.ui.ide"/>
+ <plugin id="org.eclipse.ui.navigator"/>
<plugin id="org.eclipse.ui.net"/>
<plugin id="org.eclipse.ui.views"/>
<plugin id="org.eclipse.ui.workbench"/>
<plugin id="org.eclipse.ui.workbench.texteditor"/>
+ <plugin id="org.eclipse.urischeme"/>
<plugin id="org.sat4j.core"/>
<plugin id="org.sat4j.pb"/>
+ <plugin id="org.tukaani.xz"/>
+ <plugin id="org.w3c.css.sac"/>
+ <plugin id="org.w3c.dom.events"/>
+ <plugin id="org.w3c.dom.smil"/>
+ <plugin id="org.w3c.dom.svg"/>
</plugins>
<configurations>
+ <plugin id="org.apache.felix.scr" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="4" />
<plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
- <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />
</configurations>
diff --git a/bundles/org.eclipse.equinox.p2.ui.admin/.classpath b/bundles/org.eclipse.equinox.p2.ui.admin/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.ui.admin/.classpath
+++ b/bundles/org.eclipse.equinox.p2.ui.admin/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.ui.admin/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.ui.admin/.settings/org.eclipse.jdt.core.prefs
index 3ff983cfa..1fd15eacb 100644
--- a/bundles/org.eclipse.equinox.p2.ui.admin/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.ui.admin/.settings/org.eclipse.jdt.core.prefs
@@ -16,9 +16,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -88,6 +89,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -124,7 +126,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -138,7 +141,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -259,7 +261,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -330,7 +331,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -475,7 +475,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.ui.admin/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.ui.admin/META-INF/MANIFEST.MF
index ba2230e0d..81450429b 100644
--- a/bundles/org.eclipse.equinox.p2.ui.admin/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.ui.admin/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %bundleName
Bundle-SymbolicName: org.eclipse.equinox.p2.ui.admin;singleton:=true
-Bundle-Version: 1.1.300.qualifier
+Bundle-Version: 1.2.0.qualifier
Bundle-Activator: org.eclipse.equinox.internal.p2.ui.admin.ProvAdminUIActivator
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -11,7 +11,7 @@ Export-Package: org.eclipse.equinox.internal.p2.ui.admin;x-friends:="org.eclipse
org.eclipse.equinox.internal.p2.ui.admin.preferences;x-internal:=true
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.ui
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Import-Package: org.eclipse.equinox.internal.p2.core.helpers,
org.eclipse.equinox.internal.p2.ui,
diff --git a/bundles/org.eclipse.equinox.p2.ui.admin/pom.xml b/bundles/org.eclipse.equinox.p2.ui.admin/pom.xml
index cff56a504..af1847806 100644
--- a/bundles/org.eclipse.equinox.p2.ui.admin/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.ui.admin/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.ui.admin</artifactId>
- <version>1.1.300-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.ui.discovery/.classpath b/bundles/org.eclipse.equinox.p2.ui.discovery/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.ui.discovery/.classpath
+++ b/bundles/org.eclipse.equinox.p2.ui.discovery/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.ui.discovery/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.ui.discovery/.settings/org.eclipse.jdt.core.prefs
index c7bd22b57..456e7b09f 100644
--- a/bundles/org.eclipse.equinox.p2.ui.discovery/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.ui.discovery/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -88,6 +89,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -123,7 +125,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -137,7 +140,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -258,7 +260,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -329,7 +330,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -474,7 +474,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.ui.discovery/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.ui.discovery/META-INF/MANIFEST.MF
index dcc642a82..7adb2a1e0 100644
--- a/bundles/org.eclipse.equinox.p2.ui.discovery/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.ui.discovery/META-INF/MANIFEST.MF
@@ -2,15 +2,15 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.equinox.p2.ui.discovery;singleton:=true
-Bundle-Version: 1.1.300.qualifier
+Bundle-Version: 1.2.300.qualifier
Bundle-Vendor: %Bundle-Vendor
Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.ui,
- org.eclipse.equinox.p2.discovery;bundle-version="[1.0.0,1.2.0)",
+ org.eclipse.ui;bundle-version="[3.118.0,4.0.0)",
+ org.eclipse.equinox.p2.discovery;bundle-version="[1.0.0,1.3.0)",
org.eclipse.ui.browser,
- org.eclipse.equinox.p2.discovery.compatibility;bundle-version="[1.0.0,1.2.0)";resolution:=optional,
+ org.eclipse.equinox.p2.discovery.compatibility;bundle-version="[1.0.0,1.3.0)";resolution:=optional,
org.eclipse.equinox.p2.core;bundle-version="[2.0.0,3.0.0)",
org.eclipse.equinox.p2.ui;bundle-version="2.0.0",
org.eclipse.equinox.p2.metadata;bundle-version="[2.0.0,3.0.0)",
@@ -24,6 +24,5 @@ Export-Package: org.eclipse.equinox.internal.p2.ui.discovery;x-internal:=true,
org.eclipse.equinox.internal.p2.ui.discovery.util;x-internal:=true,
org.eclipse.equinox.internal.p2.ui.discovery.wizards;x-internal:=true
Bundle-ClassPath: .
-Import-Package: com.ibm.icu.text,
- org.eclipse.equinox.p2.planner;version="2.0.0"
+Import-Package: org.eclipse.equinox.p2.planner;version="2.0.0"
Automatic-Module-Name: org.eclipse.equinox.p2.ui.discovery
diff --git a/bundles/org.eclipse.equinox.p2.ui.discovery/pom.xml b/bundles/org.eclipse.equinox.p2.ui.discovery/pom.xml
index 572a6990c..54fa0b47d 100644
--- a/bundles/org.eclipse.equinox.p2.ui.discovery/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.ui.discovery/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.ui.discovery</artifactId>
- <version>1.1.300-SNAPSHOT</version>
+ <version>1.2.300-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/operations/DiscoveryInstallOperation.java b/bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/operations/DiscoveryInstallOperation.java
index e93fc9753..6160d535f 100644
--- a/bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/operations/DiscoveryInstallOperation.java
+++ b/bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/operations/DiscoveryInstallOperation.java
@@ -27,7 +27,8 @@ import org.eclipse.equinox.p2.core.ProvisionException;
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.operations.*;
-import org.eclipse.equinox.p2.query.*;
+import org.eclipse.equinox.p2.query.IQuery;
+import org.eclipse.equinox.p2.query.QueryUtil;
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager;
import org.eclipse.equinox.p2.ui.ProvisioningUI;
@@ -255,9 +256,7 @@ public class DiscoveryInstallOperation implements IRunnableWithProgress {
for (final IMetadataRepository repository : repositories) {
checkCancelled(monitor);
final Set<String> installableUnitIdsThisRepository = getDescriptorIds(repository);
- IQueryResult<IInstallableUnit> result = repository.query(createInstalledIUsQuery(), monitor.newChild(1));
- for (Iterator<IInstallableUnit> iter = result.iterator(); iter.hasNext();) {
- IInstallableUnit iu = iter.next();
+ for (IInstallableUnit iu : repository.query(createInstalledIUsQuery(), monitor.newChild(1))) {
String id = iu.getId();
if (installableUnitIdsThisRepository.contains(id))
installableUnits.add(iu);
diff --git a/bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/repository/RepositoryDiscoveryStrategy.java b/bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/repository/RepositoryDiscoveryStrategy.java
index 51ade4115..9bdee681a 100644
--- a/bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/repository/RepositoryDiscoveryStrategy.java
+++ b/bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/repository/RepositoryDiscoveryStrategy.java
@@ -135,8 +135,8 @@ public class RepositoryDiscoveryStrategy extends AbstractDiscoveryStrategy {
+ //
": properties['org.eclipse.equinox.p2.type.category'] == true"); //$NON-NLS-1$
IQueryResult<IInstallableUnit> result = repository.query(query, monitor.newChild(1));
- for (Iterator<IInstallableUnit> iter = result.iterator(); iter.hasNext();) {
- process(repository, iter.next());
+ for (IInstallableUnit iInstallableUnit : result) {
+ process(repository, iInstallableUnit);
}
}
}
diff --git a/bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/util/PatternFilter.java b/bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/util/PatternFilter.java
index 0ff29eeb5..4b4ca6f23 100644
--- a/bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/util/PatternFilter.java
+++ b/bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/util/PatternFilter.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2017 IBM Corporation and others.
+ * Copyright (c) 2004, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,10 +14,11 @@
*******************************************************************************/
package org.eclipse.equinox.internal.p2.ui.discovery.util;
-import com.ibm.icu.text.BreakIterator;
-import java.util.*;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Pattern;
import org.eclipse.jface.viewers.*;
-import org.eclipse.ui.internal.misc.StringMatcher;
+import org.eclipse.ui.internal.misc.TextMatcher;
/**
* A filter used in conjunction with <code>FilteredTree</code>. In order to
@@ -52,12 +53,14 @@ public class PatternFilter extends ViewerFilter {
/**
* The string pattern matcher used for this pattern filter.
*/
- private StringMatcher matcher;
+ private TextMatcher matcher;
private boolean useEarlyReturnIfMatcherIsNull = true;
private static Object[] EMPTY = new Object[0];
+ private static final Pattern NON_WORD = Pattern.compile("\\W+", Pattern.UNICODE_CHARACTER_CLASS); //$NON-NLS-1$
+
@Override
public final Object[] filter(Viewer viewer, Object parent, Object[] elements) {
// we don't want to optimize if we've extended the filter ... this
@@ -168,7 +171,7 @@ public class PatternFilter extends ViewerFilter {
if (includeLeadingWildcard) {
pattern = "*" + pattern; //$NON-NLS-1$
}
- matcher = new StringMatcher(pattern, true, false);
+ matcher = new TextMatcher(pattern, true, false);
}
}
@@ -270,31 +273,7 @@ public class PatternFilter extends ViewerFilter {
* @return an array of words
*/
private String[] getWords(String text) {
- List<String> words = new ArrayList<>();
- // Break the text up into words, separating based on whitespace and
- // common punctuation.
- // Previously used String.split(..., "\\W"), where "\W" is a regular
- // expression (see the Javadoc for class Pattern).
- // Need to avoid both String.split and regular expressions, in order to
- // compile against JCL Foundation (bug 80053).
- // Also need to do this in an NL-sensitive way. The use of BreakIterator
- // was suggested in bug 90579.
- BreakIterator iter = BreakIterator.getWordInstance();
- iter.setText(text);
- int i = iter.first();
- while (i != java.text.BreakIterator.DONE && i < text.length()) {
- int j = iter.following(i);
- if (j == java.text.BreakIterator.DONE) {
- j = text.length();
- }
- // match the word
- if (Character.isLetterOrDigit(text.charAt(i))) {
- String word = text.substring(i, j);
- words.add(word);
- }
- i = j;
- }
- return words.toArray(new String[words.size()]);
+ return NON_WORD.split(text, 0);
}
/**
diff --git a/bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/util/SelectionProviderAdapter.java b/bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/util/SelectionProviderAdapter.java
index b645084ca..39d91109d 100644
--- a/bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/util/SelectionProviderAdapter.java
+++ b/bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/util/SelectionProviderAdapter.java
@@ -20,8 +20,8 @@ import org.eclipse.jface.util.SafeRunnable;
import org.eclipse.jface.viewers.*;
/**
- * Provides an simple implementation of {@link ISelectionProvider} that propagates selection events to registered
- * listeners.
+ * Provides an simple implementation of {@link ISelectionProvider} that
+ * propagates selection events to registered listeners.
*
* @author Steffen Pingel
*/
@@ -30,10 +30,10 @@ public class SelectionProviderAdapter extends EventManager implements ISelection
private ISelection selection;
/**
- * Constructs a <code>SelectionProviderAdapter</code> and initializes the selection to <code>selection</code>.
+ * Constructs a <code>SelectionProviderAdapter</code> and initializes the
+ * selection to <code>selection</code>.
*
- * @param selection
- * the initial selection
+ * @param selection the initial selection
* @see #setSelection(ISelection)
*/
public SelectionProviderAdapter(ISelection selection) {
@@ -41,7 +41,8 @@ public class SelectionProviderAdapter extends EventManager implements ISelection
}
/**
- * Constructs a <code>SelectionProviderAdapter</code> with a <code>null</code> selection.
+ * Constructs a <code>SelectionProviderAdapter</code> with a <code>null</code>
+ * selection.
*/
public SelectionProviderAdapter() {
}
@@ -64,13 +65,12 @@ public class SelectionProviderAdapter extends EventManager implements ISelection
@Override
public void selectionChanged(final SelectionChangedEvent event) {
this.selection = event.getSelection();
- Object[] listeners = getListeners();
- for (int i = 0; i < listeners.length; ++i) {
- final ISelectionChangedListener listener = (ISelectionChangedListener) listeners[i];
+ for (Object listener : getListeners()) {
+ final ISelectionChangedListener selectionChangedListener = (ISelectionChangedListener) listener;
SafeRunner.run(new SafeRunnable() {
@Override
public void run() {
- listener.selectionChanged(event);
+ selectionChangedListener.selectionChanged(event);
}
});
}
diff --git a/bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/wizards/CatalogViewer.java b/bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/wizards/CatalogViewer.java
index eda1bcad6..f4df92354 100644
--- a/bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/wizards/CatalogViewer.java
+++ b/bundles/org.eclipse.equinox.p2.ui.discovery/src/org/eclipse/equinox/internal/p2/ui/discovery/wizards/CatalogViewer.java
@@ -28,7 +28,6 @@ import org.eclipse.equinox.internal.p2.ui.discovery.DiscoveryUi;
import org.eclipse.equinox.internal.p2.ui.discovery.util.*;
import org.eclipse.equinox.p2.engine.IProfile;
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
-import org.eclipse.equinox.p2.query.IQueryResult;
import org.eclipse.equinox.p2.query.QueryUtil;
import org.eclipse.equinox.p2.ui.ProvisioningUI;
import org.eclipse.jface.dialogs.MessageDialog;
@@ -276,7 +275,7 @@ public class CatalogViewer extends FilteredViewer {
return null;
}
String regex = filterText;
- regex.replace("\\", "\\\\").replace("?", ".").replace("*", ".*?"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
+ regex = regex.replace("\\", "\\\\").replace("?", ".").replace("*", ".*?"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
return Pattern.compile(regex, Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
}
@@ -450,9 +449,7 @@ public class CatalogViewer extends FilteredViewer {
Set<String> features = new HashSet<>();
IProfile profile = ProvUI.getProfileRegistry(ProvisioningUI.getDefaultUI().getSession()).getProfile(ProvisioningUI.getDefaultUI().getProfileId());
if (profile != null) {
- IQueryResult<IInstallableUnit> result = profile.available(QueryUtil.createIUGroupQuery(), monitor);
- for (Iterator<IInstallableUnit> it = result.iterator(); it.hasNext();) {
- IInstallableUnit unit = it.next();
+ for (IInstallableUnit unit : profile.available(QueryUtil.createIUGroupQuery(), monitor)) {
features.add(unit.getId());
}
}
diff --git a/bundles/org.eclipse.equinox.p2.ui.importexport/.classpath b/bundles/org.eclipse.equinox.p2.ui.importexport/.classpath
index eca7bdba8..e801ebfb4 100755
--- a/bundles/org.eclipse.equinox.p2.ui.importexport/.classpath
+++ b/bundles/org.eclipse.equinox.p2.ui.importexport/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.ui.importexport/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.ui.importexport/.settings/org.eclipse.jdt.core.prefs
index 56dc6fd12..6411527bd 100755
--- a/bundles/org.eclipse.equinox.p2.ui.importexport/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.ui.importexport/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -88,6 +89,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -123,7 +125,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -137,7 +140,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -258,7 +260,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -329,7 +330,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -474,7 +474,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.ui.importexport/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.ui.importexport/META-INF/MANIFEST.MF
index e4629577f..467432a6b 100755
--- a/bundles/org.eclipse.equinox.p2.ui.importexport/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.ui.importexport/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.ui.importexport;singleton:=true
-Bundle-Version: 1.2.400.qualifier
+Bundle-Version: 1.3.200.qualifier
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime;bundle-version="[3.11.0,4.0.0)",
@@ -10,7 +10,7 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.equinox.p2.extensionlocation,
org.eclipse.equinox.p2.metadata;bundle-version="2.1.0",
org.eclipse.ui.forms;bundle-version="3.5.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Localization: plugin
Bundle-ActivationPolicy: lazy
Import-Package: org.eclipse.equinox.internal.p2.metadata.repository.io,
@@ -35,5 +35,4 @@ Import-Package: org.eclipse.equinox.internal.p2.metadata.repository.io,
Service-Component: OSGI-INF/importexport.xml
Export-Package: org.eclipse.equinox.internal.p2.importexport;version="1.3.0";x-friends:="org.eclipse.equinox.p2.tests",
org.eclipse.equinox.internal.p2.importexport.internal;x-friends:="org.eclipse.equinox.p2.tests"
-Bundle-Activator: org.eclipse.equinox.internal.p2.importexport.internal.ImportExportActivator
Automatic-Module-Name: org.eclipse.equinox.p2.ui.importexport
diff --git a/bundles/org.eclipse.equinox.p2.ui.importexport/P2 Replication.launch b/bundles/org.eclipse.equinox.p2.ui.importexport/P2 Replication.launch
index fa6b4f110..0d47c0a51 100644
--- a/bundles/org.eclipse.equinox.p2.ui.importexport/P2 Replication.launch
+++ b/bundles/org.eclipse.equinox.p2.ui.importexport/P2 Replication.launch
@@ -1,418 +1,32 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
-<booleanAttribute key="append.args" value="true"/>
-<booleanAttribute key="askclear" value="true"/>
-<booleanAttribute key="automaticAdd" value="true"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="true"/>
-<booleanAttribute key="clearws" value="true"/>
-<booleanAttribute key="clearwslog" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/P2 Replication"/>
-<booleanAttribute key="default" value="true"/>
-<booleanAttribute key="generateProfile" value="true"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<stringAttribute key="location" value="${workspace_loc}/runtime-New_configuration"/>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-console"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.p2.profile=SDKProfile&#13;&#13;&#10;-Declipse.p2.data.area=${target_home}/p2"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.platform.ide"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="templateConfig" value="${target_home}/configuration/config.ini"/>
-<booleanAttribute key="tracing" value="false"/>
-<mapAttribute key="tracingOptions">
-<mapEntry key="org.eclipse.cdt.core/debug" value="true"/>
-<mapEntry key="org.eclipse.cdt.core/debug/ASTCache" value="false"/>
-<mapEntry key="org.eclipse.cdt.core/debug/deltaprocessor" value="false"/>
-<mapEntry key="org.eclipse.cdt.core/debug/formatter" value="false"/>
-<mapEntry key="org.eclipse.cdt.core/debug/index/locks" value="false"/>
-<mapEntry key="org.eclipse.cdt.core/debug/indexer/activity" value="false"/>
-<mapEntry key="org.eclipse.cdt.core/debug/indexer/problems" value="false"/>
-<mapEntry key="org.eclipse.cdt.core/debug/indexer/problems/inclusion" value="false"/>
-<mapEntry key="org.eclipse.cdt.core/debug/indexer/problems/scanner" value="false"/>
-<mapEntry key="org.eclipse.cdt.core/debug/indexer/problems/syntax" value="false"/>
-<mapEntry key="org.eclipse.cdt.core/debug/indexer/statistics" value="false"/>
-<mapEntry key="org.eclipse.cdt.core/debug/matchlocator" value="false"/>
-<mapEntry key="org.eclipse.cdt.core/debug/model" value="false"/>
-<mapEntry key="org.eclipse.cdt.core/debug/parser" value="false"/>
-<mapEntry key="org.eclipse.cdt.core/debug/parser/exceptions" value="false"/>
-<mapEntry key="org.eclipse.cdt.core/debug/scanner" value="false"/>
-<mapEntry key="org.eclipse.cdt.core/debug/search" value="false"/>
-<mapEntry key="org.eclipse.cdt.core/debug/typeresolver" value="false"/>
-<mapEntry key="org.eclipse.cdt.debug.mi.core/debug" value="true"/>
-<mapEntry key="org.eclipse.cdt.dsf.gdb/debug" value="false"/>
-<mapEntry key="org.eclipse.cdt.dsf.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.cdt.dsf.ui/debug/disassembly" value="false"/>
-<mapEntry key="org.eclipse.cdt.dsf.ui/debug/stepping" value="false"/>
-<mapEntry key="org.eclipse.cdt.dsf.ui/debug/vm/atomicUpdate" value="false"/>
-<mapEntry key="org.eclipse.cdt.dsf.ui/debug/vm/cache" value="false"/>
-<mapEntry key="org.eclipse.cdt.dsf.ui/debug/vm/contentProvider" value="false"/>
-<mapEntry key="org.eclipse.cdt.dsf.ui/debug/vm/delta" value="false"/>
-<mapEntry key="org.eclipse.cdt.dsf.ui/debug/vm/presentationId" value=""/>
-<mapEntry key="org.eclipse.cdt.dsf/debug" value="false"/>
-<mapEntry key="org.eclipse.cdt.dsf/debug/executor" value="false"/>
-<mapEntry key="org.eclipse.cdt.dsf/debug/executorName" value=""/>
-<mapEntry key="org.eclipse.cdt.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.cdt.ui/debug/SemanticHighlighting" value="false"/>
-<mapEntry key="org.eclipse.cdt.ui/debug/contentassist" value="false"/>
-<mapEntry key="org.eclipse.cdt.ui/debug/folding" value="false"/>
-<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>
-<mapEntry key="org.eclipse.core.expressions/debug/TypeExtensionManager" value="false"/>
-<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>
-<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>
-<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>
-<mapEntry key="org.eclipse.core.resources/debug" value="false"/>
-<mapEntry key="org.eclipse.core.resources/history" value="false"/>
-<mapEntry key="org.eclipse.core.resources/natures" value="false"/>
-<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>
-<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>
-<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>
-<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>
-<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>
-<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>
-<mapEntry key="org.eclipse.core.resources/strings" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/breadcrumb" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/launchhistory" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/contentProvider" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/model" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/presentationId" value=""/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/stateSaveRestore" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>
-<mapEntry key="org.eclipse.equinox.ds/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.ds/instantiate_all" value="false"/>
-<mapEntry key="org.eclipse.equinox.ds/performance" value="true"/>
-<mapEntry key="org.eclipse.equinox.ds/print_on_console" value="true"/>
-<mapEntry key="org.eclipse.equinox.p2.engine/engine/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.engine/enginesession/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.engine/profileregistry/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>
-<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>
-<mapEntry key="org.eclipse.equinox.security.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.security.ui/debug/storage" value="false"/>
-<mapEntry key="org.eclipse.equinox.security/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.security/debug/loginFramework" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>
-<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>
-<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>
-<mapEntry key="org.eclipse.help/debug" value="true"/>
-<mapEntry key="org.eclipse.help/debug/context" value="false"/>
-<mapEntry key="org.eclipse.help/debug/search" value="false"/>
-<mapEntry key="org.eclipse.help/debug/toc" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.core/debug" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.core/debug/compilationEnv" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFileMaps" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFiles" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.pluggable.core/debug" value="false"/>
-<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/builder/stats" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/failure" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/formatter" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/indexmanager/advanced" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>
-<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>
-<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>
-<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>
-<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>
-<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>
-<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/BreadcrumbItemDropDown" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>
-<mapEntry key="org.eclipse.jem.util/debug/loglevel" value="WARNING"/>
-<mapEntry key="org.eclipse.jem.util/debug/logtrace" value="false"/>
-<mapEntry key="org.eclipse.jem.util/debug/logtracefile" value="false"/>
-<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>
-<mapEntry key="org.eclipse.jface.text/assert/TextSelection/validConstructorArguments" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/AbstractInformationControlManager" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>
-<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>
-<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>
-<mapEntry key="org.eclipse.osgi/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>
-<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/uses" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>
-<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>
-<mapEntry key="org.eclipse.pde.build/debug" value="false"/>
-<mapEntry key="org.eclipse.pde.core/cache" value="false"/>
-<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>
-<mapEntry key="org.eclipse.pde.core/debug" value="true"/>
-<mapEntry key="org.eclipse.pde.core/validation" value="false"/>
-<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>
-<mapEntry key="org.eclipse.team.core/debug" value="false"/>
-<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>
-<mapEntry key="org.eclipse.team.core/streams" value="false"/>
-<mapEntry key="org.eclipse.team.core/threading" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>
-<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>
-<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/markers" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/>
-<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>
-<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>
-<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>
-<mapEntry key="org.eclipse.ui.intro/debug/toolbar" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/flags/noBrowser" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>
-<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>
-<mapEntry key="org.eclipse.ui.navigator/debug" value="false"/>
-<mapEntry key="org.eclipse.ui.navigator/debug/dnd" value="false"/>
-<mapEntry key="org.eclipse.ui.navigator/debug/resolution" value="false"/>
-<mapEntry key="org.eclipse.ui.navigator/debug/setup" value="false"/>
-<mapEntry key="org.eclipse.ui.navigator/debug/sort" value="false"/>
-<mapEntry key="org.eclipse.ui.navigator/debug/viewermap" value="false"/>
-<mapEntry key="org.eclipse.ui.navigator/perf/explorer/createPartControl" value="1300"/>
-<mapEntry key="org.eclipse.ui.workbench/debug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/swtdebugglobal" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/workingSets" value="false"/>
-<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>
-<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>
-<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>
-<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>
-<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/sources" value="false"/>
-<mapEntry key="org.eclipse.wst.common.environment/debug" value="true"/>
-<mapEntry key="org.eclipse.wst.common.environment/trace/command" value="true"/>
-<mapEntry key="org.eclipse.wst.common.environment/trace/data" value="true"/>
-<mapEntry key="org.eclipse.wst.common.environment/trace/emitter" value="true"/>
-<mapEntry key="org.eclipse.wst.common.environment/trace/error" value="true"/>
-<mapEntry key="org.eclipse.wst.common.environment/trace/info" value="true"/>
-<mapEntry key="org.eclipse.wst.common.environment/trace/warning" value="true"/>
-<mapEntry key="org.eclipse.wst.common.environment/trace/ws_ant" value="true"/>
-<mapEntry key="org.eclipse.wst.common.environment/trace/ws_dt_cmd_engine" value="true"/>
-<mapEntry key="org.eclipse.wst.common.environment/trace/ws_framework" value="true"/>
-<mapEntry key="org.eclipse.wst.common.project.facet.core/actionSorting" value="false"/>
-<mapEntry key="org.eclipse.wst.common.project.facet.core/activation" value="false"/>
-<mapEntry key="org.eclipse.wst.common.project.facet.core/delegate/calls" value="false"/>
-<mapEntry key="org.eclipse.wst.common.project.facet.core/events/project" value="false"/>
-<mapEntry key="org.eclipse.wst.common.project.facet.core/events/project/stacktrace" value="false"/>
-<mapEntry key="org.eclipse.wst.dtd.ui/projectionperf" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/debug" value="true"/>
-<mapEntry key="org.eclipse.wst.sse.core/dom/adapter/notification/time" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/dom/adapter/notification/time/criteria" value="10"/>
-<mapEntry key="org.eclipse.wst.sse.core/filebuffers/leaks" value="true"/>
-<mapEntry key="org.eclipse.wst.sse.core/filebuffers/lifecycle" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/filebuffers/modelmanagement" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/format" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/structureddocument" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/structuredmodel/lifecycle" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/structuredmodel/locks" value="true"/>
-<mapEntry key="org.eclipse.wst.sse.core/structuredmodel/modelmanager" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/structuredmodel/state" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/tasks" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/tasks/detection" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/tasks/job" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/tasks/overalltime" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/tasks/preferences" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/tasks/registry" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/tasks/time" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/actioncontributor/debugstatusfields" value="true"/>
-<mapEntry key="org.eclipse.wst.sse.ui/contentOutline" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerSpelling" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerSpelling/showProblems" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerValidators" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerjob" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/debug/tracefilter" value=""/>
-<mapEntry key="org.eclipse.wst.sse.ui/extendedconfigurationbuilder" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/extendedconfigurationbuilder/time" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/contributetime" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/debugmenu" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/debugpopup" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/debugtoolbar" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/readtime" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/filemodelprovider/lifecyclelistener" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/filemodelprovider/modelstatelistener" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/filemodelprovider/operations" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/gotoNextAnnotation" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/preferences-properties" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/propertyChangeUpdateActionContributionItem" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/propertySheet" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/storagemodelprovider/elementstatelistener" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/storagemodelprovider/operations" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/structuredPresentationReconciler" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/structuredPresentationReconciler/time" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/transferbuilder/time" value="false"/>
-<mapEntry key="org.eclipse.wst.validation/debug" value="true"/>
-<mapEntry key="org.eclipse.wst.validation/extraValDetail" value=""/>
-<mapEntry key="org.eclipse.wst.validation/filter/allExcept" value=""/>
-<mapEntry key="org.eclipse.wst.validation/timings" value="false"/>
-<mapEntry key="org.eclipse.wst.validation/timings/tracefile" value=""/>
-<mapEntry key="org.eclipse.wst.validation/timings/useDoubles" value="false"/>
-<mapEntry key="org.eclipse.wst.validation/trace/level" value=""/>
-<mapEntry key="org.eclipse.wst.validation/v1" value="false"/>
-<mapEntry key="org.eclipse.wst.xml.core/debug" value="true"/>
-<mapEntry key="org.eclipse.wst.xml.core/debug/cmdocumentcache" value="false"/>
-<mapEntry key="org.eclipse.wst.xml.core/debug/cmdocumentmanager" value="false"/>
-<mapEntry key="org.eclipse.wst.xml.core/debug/tracefilter" value=""/>
-<mapEntry key="org.eclipse.wst.xml.ui/projectionperf" value="false"/>
-<mapEntry key="org.eclipse.wtp.common/debug/loglevel" value="WARNING"/>
-<mapEntry key="org.eclipse.wtp.common/debug/logtrace" value="false"/>
-<mapEntry key="org.eclipse.wtp.common/debug/logtracefile" value="false"/>
-</mapAttribute>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfig" value="true"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<booleanAttribute key="useProduct" value="true"/>
-<booleanAttribute key="usefeatures" value="false"/>
+ <booleanAttribute key="append.args" value="true"/>
+ <booleanAttribute key="askclear" value="true"/>
+ <booleanAttribute key="automaticAdd" value="true"/>
+ <booleanAttribute key="automaticValidate" value="false"/>
+ <stringAttribute key="bootstrap" value=""/>
+ <stringAttribute key="checked" value="[NONE]"/>
+ <booleanAttribute key="clearConfig" value="true"/>
+ <booleanAttribute key="clearws" value="true"/>
+ <booleanAttribute key="clearwslog" value="false"/>
+ <stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/P2 Replication"/>
+ <booleanAttribute key="default" value="true"/>
+ <booleanAttribute key="generateProfile" value="true"/>
+ <booleanAttribute key="includeOptional" value="true"/>
+ <stringAttribute key="location" value="${workspace_loc}/runtime-New_configuration"/>
+ <booleanAttribute key="org.eclipse.jdt.launching.ATTR_ATTR_USE_ARGFILE" value="false"/>
+ <stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-console"/>
+ <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+ <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.p2.profile=SDKProfile&#13;&#13;&#10;-Declipse.p2.data.area=${target_home}/p2"/>
+ <stringAttribute key="pde.version" value="3.3"/>
+ <stringAttribute key="product" value="org.eclipse.platform.ide"/>
+ <booleanAttribute key="show_selected_only" value="false"/>
+ <stringAttribute key="templateConfig" value="${target_home}/configuration/config.ini"/>
+ <booleanAttribute key="tracing" value="false"/>
+ <booleanAttribute key="useCustomFeatures" value="false"/>
+ <booleanAttribute key="useDefaultConfig" value="true"/>
+ <booleanAttribute key="useDefaultConfigArea" value="true"/>
+ <booleanAttribute key="useProduct" value="true"/>
+ <booleanAttribute key="usefeatures" value="false"/>
</launchConfiguration>
diff --git a/bundles/org.eclipse.equinox.p2.ui.importexport/forceQualifierUpdate.txt b/bundles/org.eclipse.equinox.p2.ui.importexport/forceQualifierUpdate.txt
index 56f1032a8..03b2dab4b 100644
--- a/bundles/org.eclipse.equinox.p2.ui.importexport/forceQualifierUpdate.txt
+++ b/bundles/org.eclipse.equinox.p2.ui.importexport/forceQualifierUpdate.txt
@@ -1,2 +1,3 @@
# To force a version qualifier update add the bug here
Bug 403352 - Update all parent versions to match our build stream
+Bug 572789 - Comparator errors in I20210412-1800 after moving to compiler from 4.20 M1 \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.ui.importexport/icons/obj16/install-handler.png b/bundles/org.eclipse.equinox.p2.ui.importexport/icons/obj16/install-handler.png
new file mode 100644
index 000000000..07986bf79
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.ui.importexport/icons/obj16/install-handler.png
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.ui.importexport/icons/obj16/install-handler@2x.png b/bundles/org.eclipse.equinox.p2.ui.importexport/icons/obj16/install-handler@2x.png
new file mode 100644
index 000000000..88a3e73cf
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.ui.importexport/icons/obj16/install-handler@2x.png
Binary files differ
diff --git a/bundles/org.eclipse.equinox.p2.ui.importexport/plugin.xml b/bundles/org.eclipse.equinox.p2.ui.importexport/plugin.xml
index d3b4800bf..f67a5b6a5 100755
--- a/bundles/org.eclipse.equinox.p2.ui.importexport/plugin.xml
+++ b/bundles/org.eclipse.equinox.p2.ui.importexport/plugin.xml
@@ -10,7 +10,7 @@
<wizard
category="org.eclipse.equinox.p2.category"
class="org.eclipse.equinox.internal.p2.importexport.internal.wizard.ExportWizard"
- icon="icons/wizban/install_wiz.png"
+ icon="icons/obj16/install-handler.png"
id="org.eclipse.equinox.p2.replication.export"
name="%export.name">
<description>
@@ -27,7 +27,7 @@
<wizard
category="org.eclipse.equinox.p2.category"
class="org.eclipse.equinox.internal.p2.importexport.internal.wizard.ImportWizard"
- icon="icons/wizban/install_wiz.png"
+ icon="icons/obj16/install-handler.png"
id="org.eclipse.equinox.p2.replication.import"
name="%import.name">
<description>
@@ -37,7 +37,7 @@
<wizard
category="org.eclipse.equinox.p2.category"
class="org.eclipse.equinox.internal.p2.importexport.internal.wizard.ImportFromInstallationWizard"
- icon="icons/wizban/install_wiz.png"
+ icon="icons/obj16/install-handler.png"
id="org.eclipse.equinox.p2.replication.importfrominstallation"
name="%importfrominstallation.name">
<description>
diff --git a/bundles/org.eclipse.equinox.p2.ui.importexport/pom.xml b/bundles/org.eclipse.equinox.p2.ui.importexport/pom.xml
index 67c106465..0d01faecf 100644
--- a/bundles/org.eclipse.equinox.p2.ui.importexport/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.ui.importexport/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.ui.importexport</artifactId>
- <version>1.2.400-SNAPSHOT</version>
+ <version>1.3.200-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/IUDetail.java b/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/IUDetail.java
index 0a547d078..50087fd61 100644
--- a/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/IUDetail.java
+++ b/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/IUDetail.java
@@ -59,4 +59,20 @@ public class IUDetail implements IAdaptable {
public int hashCode() {
return iu.hashCode();
}
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ if (iu != null) {
+ sb.append("iu="); //$NON-NLS-1$
+ sb.append(iu);
+ sb.append(", "); //$NON-NLS-1$
+ }
+ if (referredRepo != null) {
+ sb.append("referredRepo="); //$NON-NLS-1$
+ sb.append(referredRepo);
+ }
+ sb.append("]"); //$NON-NLS-1$
+ return sb.toString();
+ }
}
diff --git a/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/ImportExportActivator.java b/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/ImportExportActivator.java
deleted file mode 100644
index 0be4d6f81..000000000
--- a/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/ImportExportActivator.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011 WindRiver Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * WindRiver Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.equinox.internal.p2.importexport.internal;
-
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-public class ImportExportActivator extends AbstractUIPlugin {
-
- private static ImportExportActivator instance = null;
-
- public static ImportExportActivator getDefault() {
- return instance;
- }
-
- @Override
- public void start(BundleContext context) throws Exception {
- super.start(context);
-
- instance = this;
- }
-}
diff --git a/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ExportWizard.java b/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ExportWizard.java
index 33f7a1ee7..07e3d9654 100755
--- a/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ExportWizard.java
+++ b/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ExportWizard.java
@@ -15,19 +15,21 @@ package org.eclipse.equinox.internal.p2.importexport.internal.wizard;
import java.io.File;
import org.eclipse.core.runtime.Platform;
-import org.eclipse.equinox.internal.p2.importexport.internal.*;
+import org.eclipse.equinox.internal.p2.importexport.internal.Constants;
+import org.eclipse.equinox.internal.p2.importexport.internal.Messages;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.osgi.util.NLS;
-import org.eclipse.ui.IExportWizard;
-import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.*;
+import org.osgi.framework.FrameworkUtil;
public class ExportWizard extends AbstractWizard implements IExportWizard {
public ExportWizard() {
- IDialogSettings workbenchSettings = ImportExportActivator.getDefault().getDialogSettings();
+ IDialogSettings workbenchSettings = PlatformUI
+ .getDialogSettingsProvider(FrameworkUtil.getBundle(ExportWizard.class)).getDialogSettings();
String sectionName = "ExportWizard"; //$NON-NLS-1$
IDialogSettings section = workbenchSettings.getSection(sectionName);
if (section == null) {
@@ -46,7 +48,8 @@ public class ExportWizard extends AbstractWizard implements IExportWizard {
@Override
public void init(IWorkbench workbench, IStructuredSelection selection) {
setWindowTitle(Messages.ExportWizard_WizardTitle);
- setDefaultPageImageDescriptor(ImageDescriptor.createFromURL(Platform.getBundle(Constants.Bundle_ID).getEntry("icons/wizban/install_wiz.png"))); //$NON-NLS-1$
+ setDefaultPageImageDescriptor(ImageDescriptor
+ .createFromURL(Platform.getBundle(Constants.Bundle_ID).getEntry("icons/wizban/install_wiz.png"))); //$NON-NLS-1$
setNeedsProgressMonitor(true);
}
@@ -54,7 +57,8 @@ public class ExportWizard extends AbstractWizard implements IExportWizard {
public boolean performFinish() {
File file = new File(((ExportPage) mainPage).getDestinationValue());
if (file.exists()) {
- if (!MessageDialog.openConfirm(this.getShell(), Messages.ExportWizard_ConfirmDialogTitle, NLS.bind(Messages.ExportWizard_OverwriteConfirm, file.getAbsolutePath())))
+ if (!MessageDialog.openConfirm(this.getShell(), Messages.ExportWizard_ConfirmDialogTitle,
+ NLS.bind(Messages.ExportWizard_OverwriteConfirm, file.getAbsolutePath())))
return false;
}
return super.performFinish();
diff --git a/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportFromInstallationPage.java b/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportFromInstallationPage.java
index e9574252e..34acd48a2 100644
--- a/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportFromInstallationPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportFromInstallationPage.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2011, 2017 WindRiver Corporation and others.
+ * Copyright (c) 2011, 2021 WindRiver Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -112,7 +112,7 @@ public class ImportFromInstallationPage extends AbstractImportPage implements IS
boolean rt;
if (Display.findDisplay(Thread.currentThread()) == null) {
- Callable<Boolean> getSuperValidateDest = new Callable<Boolean>() {
+ Callable<Boolean> getSuperValidateDest = new Callable<>() {
Boolean validated;
@Override
@@ -139,7 +139,7 @@ public class ImportFromInstallationPage extends AbstractImportPage implements IS
try {
String destination;
if (Display.findDisplay(Thread.currentThread()) == null) {
- Callable<String> getDestinationValue = new Callable<String>() {
+ Callable<String> getDestinationValue = new Callable<>() {
String des;
@Override
@@ -418,7 +418,7 @@ public class ImportFromInstallationPage extends AbstractImportPage implements IS
@Override
public void setCheckedElements(Object[] elements) {
- new UnsupportedOperationException();
+ throw new UnsupportedOperationException();
}
public ProvisioningContext getProvisioningContext() {
diff --git a/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportFromInstallationWizard.java b/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportFromInstallationWizard.java
index 0fb83516b..8d4568601 100644
--- a/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportFromInstallationWizard.java
+++ b/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportFromInstallationWizard.java
@@ -15,7 +15,8 @@ package org.eclipse.equinox.internal.p2.importexport.internal.wizard;
import java.util.Collection;
import org.eclipse.core.runtime.Platform;
-import org.eclipse.equinox.internal.p2.importexport.internal.*;
+import org.eclipse.equinox.internal.p2.importexport.internal.Constants;
+import org.eclipse.equinox.internal.p2.importexport.internal.Messages;
import org.eclipse.equinox.internal.p2.ui.dialogs.ISelectableIUsPage;
import org.eclipse.equinox.internal.p2.ui.dialogs.InstallWizard;
import org.eclipse.equinox.internal.p2.ui.model.IUElementListRoot;
@@ -27,8 +28,8 @@ import org.eclipse.equinox.p2.ui.ProvisioningUI;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.IImportWizard;
-import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.*;
+import org.osgi.framework.FrameworkUtil;
public class ImportFromInstallationWizard extends InstallWizard implements IImportWizard {
@@ -36,9 +37,12 @@ public class ImportFromInstallationWizard extends InstallWizard implements IImpo
this(ProvisioningUI.getDefaultUI(), null, null, null);
}
- public ImportFromInstallationWizard(ProvisioningUI ui, InstallOperation operation, Collection<IInstallableUnit> initialSelections, LoadMetadataRepositoryJob preloadJob) {
+ public ImportFromInstallationWizard(ProvisioningUI ui, InstallOperation operation,
+ Collection<IInstallableUnit> initialSelections, LoadMetadataRepositoryJob preloadJob) {
super(ui, operation, initialSelections, preloadJob);
- IDialogSettings workbenchSettings = ImportExportActivator.getDefault().getDialogSettings();
+ IDialogSettings workbenchSettings = PlatformUI
+ .getDialogSettingsProvider(FrameworkUtil.getBundle(ImportFromInstallationWizard.class))
+ .getDialogSettings();
String sectionName = "ImportFromInstallationWizard"; //$NON-NLS-1$
IDialogSettings section = workbenchSettings.getSection(sectionName);
if (section == null) {
@@ -50,7 +54,8 @@ public class ImportFromInstallationWizard extends InstallWizard implements IImpo
@Override
public void init(IWorkbench workbench, IStructuredSelection selection) {
setWindowTitle(Messages.ImportWizard_WINDOWTITLE);
- setDefaultPageImageDescriptor(ImageDescriptor.createFromURL(Platform.getBundle(Constants.Bundle_ID).getEntry("icons/wizban/install_wiz.png"))); //$NON-NLS-1$
+ setDefaultPageImageDescriptor(ImageDescriptor
+ .createFromURL(Platform.getBundle(Constants.Bundle_ID).getEntry("icons/wizban/install_wiz.png"))); //$NON-NLS-1$
setNeedsProgressMonitor(true);
}
diff --git a/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportPage.java b/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportPage.java
index 56ff67ec3..d782893bd 100644
--- a/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportPage.java
@@ -328,27 +328,32 @@ public class ImportPage extends AbstractImportPage implements ISelectableIUsPage
public Object[] getCheckedIUElements() {
Object[] checked = viewer.getCheckedElements();
List<IUDetail> checkedFeatures = new ArrayList<>(checked.length);
+ boolean useLatest = installLatest.getSelection();
for (Object checked1 : checked) {
IUDetail feature = (IUDetail) checked1;
IUDetail[] existingFeatures = newProposedFeature.get(feature);
- if (existingFeatures == null)
+ if (existingFeatures == null) {
checkedFeatures.add(feature);
- else {
+ } else {
IUDetail matchPolicy = null;
for (IUDetail f : existingFeatures) {
- if (matchPolicy == null)
- matchPolicy = f;
- // here use exact match
- else if (matchPolicy.getIU().getVersion().compareTo(f.getIU().getVersion()) < 0) {
- if (installLatest.getSelection())
- matchPolicy = f;
- else
- continue;
- } else
+ if (matchPolicy == null) {
matchPolicy = f;
+ } else {
+ if (matchPolicy.getIU().getVersion().compareTo(f.getIU().getVersion()) < 0) {
+ if (useLatest) {
+ matchPolicy = f;
+ }
+ } else {
+ if (!useLatest) {
+ matchPolicy = f;
+ }
+ }
+ }
}
- if (matchPolicy != null)
+ if (matchPolicy != null) {
checkedFeatures.add(matchPolicy);
+ }
}
}
return checkedFeatures.toArray(new IUDetail[checkedFeatures.size()]);
@@ -362,7 +367,7 @@ public class ImportPage extends AbstractImportPage implements ISelectableIUsPage
@Override
public void setCheckedElements(Object[] elements) {
- new UnsupportedOperationException();
+ throw new UnsupportedOperationException();
}
public ProvisioningContext getProvisioningContext() {
diff --git a/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportWizard.java b/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportWizard.java
index 676333bc9..22a8b1905 100644
--- a/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportWizard.java
+++ b/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/ImportWizard.java
@@ -19,7 +19,8 @@ import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Collection;
import org.eclipse.core.runtime.*;
-import org.eclipse.equinox.internal.p2.importexport.internal.*;
+import org.eclipse.equinox.internal.p2.importexport.internal.Constants;
+import org.eclipse.equinox.internal.p2.importexport.internal.Messages;
import org.eclipse.equinox.internal.p2.ui.ProvUI;
import org.eclipse.equinox.internal.p2.ui.ProvUIMessages;
import org.eclipse.equinox.internal.p2.ui.dialogs.ISelectableIUsPage;
@@ -36,9 +37,9 @@ import org.eclipse.jface.operation.IRunnableContext;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IImportWizard;
-import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.*;
import org.eclipse.ui.statushandlers.StatusManager;
+import org.osgi.framework.FrameworkUtil;
public class ImportWizard extends InstallWizard implements IImportWizard {
@@ -46,9 +47,12 @@ public class ImportWizard extends InstallWizard implements IImportWizard {
this(ProvisioningUI.getDefaultUI(), null, null, null);
}
- public ImportWizard(ProvisioningUI ui, InstallOperation operation, Collection<IInstallableUnit> initialSelections, LoadMetadataRepositoryJob preloadJob) {
+ public ImportWizard(ProvisioningUI ui, InstallOperation operation, Collection<IInstallableUnit> initialSelections,
+ LoadMetadataRepositoryJob preloadJob) {
super(ui, operation, initialSelections, preloadJob);
- IDialogSettings workbenchSettings = ImportExportActivator.getDefault().getDialogSettings();
+ IDialogSettings workbenchSettings = PlatformUI
+ .getDialogSettingsProvider(FrameworkUtil.getBundle(ImportFromInstallationWizard.class))
+ .getDialogSettings();
String sectionName = "ImportWizard"; //$NON-NLS-1$
IDialogSettings section = workbenchSettings.getSection(sectionName);
if (section == null) {
@@ -60,7 +64,8 @@ public class ImportWizard extends InstallWizard implements IImportWizard {
@Override
public void init(IWorkbench workbench, IStructuredSelection selection) {
setWindowTitle(Messages.ImportWizard_WINDOWTITLE);
- setDefaultPageImageDescriptor(ImageDescriptor.createFromURL(Platform.getBundle(Constants.Bundle_ID).getEntry("icons/wizban/install_wiz.png"))); //$NON-NLS-1$
+ setDefaultPageImageDescriptor(ImageDescriptor
+ .createFromURL(Platform.getBundle(Constants.Bundle_ID).getEntry("icons/wizban/install_wiz.png"))); //$NON-NLS-1$
setNeedsProgressMonitor(true);
}
@@ -80,8 +85,9 @@ public class ImportWizard extends InstallWizard implements IImportWizard {
}
/**
- * Recompute the provisioning plan based on the items in the IUElementListRoot and the given provisioning context.
- * Report progress using the specified runnable context. This method may be called before the page is created.
+ * Recompute the provisioning plan based on the items in the IUElementListRoot
+ * and the given provisioning context. Report progress using the specified
+ * runnable context. This method may be called before the page is created.
*
* @param runnableContext
*/
@@ -98,9 +104,11 @@ public class ImportWizard extends InstallWizard implements IImportWizard {
ProvisioningContext context = getProvisioningContext();
initializeResolutionModelElements(getOperationSelections());
if (planSelections.length == 0) {
- operation = new InstallOperation(new ProvisioningSession(AbstractPage.agent), new ArrayList<IInstallableUnit>()) {
+ operation = new InstallOperation(new ProvisioningSession(AbstractPage.agent),
+ new ArrayList<IInstallableUnit>()) {
@Override
- protected void computeProfileChangeRequest(MultiStatus status, IProgressMonitor progressMonitor) {
+ protected void computeProfileChangeRequest(MultiStatus status,
+ IProgressMonitor progressMonitor) {
progressMonitor.done();
}
@@ -108,7 +116,8 @@ public class ImportWizard extends InstallWizard implements IImportWizard {
public IStatus getResolutionResult() {
if (sub.isCanceled())
return Status.CANCEL_STATUS;
- return new Status(IStatus.ERROR, Constants.Bundle_ID, Messages.ImportWizard_CannotQuerySelection);
+ return new Status(IStatus.ERROR, Constants.Bundle_ID,
+ Messages.ImportWizard_CannotQuerySelection);
}
};
} else {
@@ -126,10 +135,11 @@ public class ImportWizard extends InstallWizard implements IImportWizard {
computeRemediationOperation(operation, ui, monitor);
}
}
- Display.getDefault().asyncExec(() -> planChanged());
+ Display.getDefault().asyncExec(this::planChanged);
});
} catch (InterruptedException e) {
- operation = new InstallOperation(new ProvisioningSession(AbstractPage.agent), new ArrayList<IInstallableUnit>()) {
+ operation = new InstallOperation(new ProvisioningSession(AbstractPage.agent),
+ new ArrayList<IInstallableUnit>()) {
@Override
public IStatus getResolutionResult() {
@@ -149,7 +159,8 @@ public class ImportWizard extends InstallWizard implements IImportWizard {
if (message != null) {
couldNotResolveStatus = new Status(IStatus.ERROR, Constants.Bundle_ID, message, null);
} else {
- couldNotResolveStatus = new Status(IStatus.ERROR, Constants.Bundle_ID, ProvUIMessages.ProvisioningOperationWizard_UnexpectedFailureToResolve, null);
+ couldNotResolveStatus = new Status(IStatus.ERROR, Constants.Bundle_ID,
+ ProvUIMessages.ProvisioningOperationWizard_UnexpectedFailureToResolve, null);
}
StatusManager.getManager().handle(couldNotResolveStatus, StatusManager.LOG);
}
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/.classpath b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/.classpath
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/.settings/org.eclipse.jdt.core.prefs
index 499e92fc0..a452cb270 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -36,6 +36,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -89,6 +90,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -125,7 +127,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -139,7 +142,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -260,7 +262,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -331,7 +332,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -476,7 +476,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/META-INF/MANIFEST.MF
index c18424357..f6a0f04ed 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %bundleName
Bundle-SymbolicName: org.eclipse.equinox.p2.ui.sdk.scheduler;singleton:=true
-Bundle-Version: 1.4.500.qualifier
+Bundle-Version: 1.5.300.qualifier
Bundle-Activator: org.eclipse.equinox.internal.p2.ui.sdk.scheduler.AutomaticUpdatePlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -13,10 +13,9 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.equinox.p2.updatechecker,
org.eclipse.equinox.p2.ui,
org.eclipse.equinox.p2.repository;bundle-version="2.3.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
-Import-Package: com.ibm.icu.util;version="4.0.1",
- org.eclipse.equinox.internal.p2.core.helpers,
+Import-Package: org.eclipse.equinox.internal.p2.core.helpers,
org.eclipse.equinox.internal.p2.engine,
org.eclipse.equinox.internal.p2.engine.phases,
org.eclipse.equinox.internal.p2.garbagecollector,
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/pom.xml b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/pom.xml
index 8b936702a..f5f8a49f1 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.ui.sdk.scheduler</artifactId>
- <version>1.4.500-SNAPSHOT</version>
+ <version>1.5.300-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatePlugin.java b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatePlugin.java
index 5b5bc9ba6..a2241a7b0 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatePlugin.java
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatePlugin.java
@@ -83,8 +83,6 @@ public class AutomaticUpdatePlugin extends AbstractUIPlugin {
super.start(bundleContext);
plugin = this;
context = bundleContext;
- IProvisioningAgent agent = ServiceHelper.getService(getContext(), IProvisioningAgent.class);
- session = new ProvisioningSession(agent);
}
@Override
@@ -104,8 +102,9 @@ public class AutomaticUpdatePlugin extends AbstractUIPlugin {
public AutomaticUpdateScheduler getScheduler() {
// If the scheduler was disabled, it does not get initialized
- if (scheduler == null)
+ if (scheduler == null) {
scheduler = new AutomaticUpdateScheduler();
+ }
return scheduler;
}
@@ -181,6 +180,12 @@ public class AutomaticUpdatePlugin extends AbstractUIPlugin {
}
public ProvisioningSession getSession() {
+ if (session == null) {
+ synchronized (this) {
+ IProvisioningAgent agent = ServiceHelper.getService(getContext(), IProvisioningAgent.class);
+ session = new ProvisioningSession(agent);
+ }
+ }
return session;
}
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdateScheduler.java b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdateScheduler.java
index 12aba4601..6d56f31c9 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdateScheduler.java
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdateScheduler.java
@@ -19,8 +19,8 @@ package org.eclipse.equinox.internal.p2.ui.sdk.scheduler;
import java.util.Date;
import java.util.Random;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
import org.eclipse.equinox.internal.p2.garbagecollector.GarbageCollector;
import org.eclipse.equinox.internal.p2.ui.sdk.scheduler.migration.MigrationSupport;
@@ -33,6 +33,7 @@ import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.p2.query.IQuery;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.ui.IStartup;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.statushandlers.StatusManager;
/**
@@ -51,62 +52,69 @@ public class AutomaticUpdateScheduler implements IStartup {
private static final int ONE_HOUR_IN_MS = 60 * 60 * 1000;
private static final int ONE_DAY_IN_MS = 24 * ONE_HOUR_IN_MS;
- private IUpdateListener listener = null;
- private IUpdateChecker checker = null;
- String profileId;
-
- /**
- * The constructor.
- */
- public AutomaticUpdateScheduler() {
- AutomaticUpdatePlugin.getDefault().setScheduler(this);
- IProvisioningAgent agent = ServiceHelper.getService(AutomaticUpdatePlugin.getContext(),
- IProvisioningAgent.class);
- checker = agent.getService(IUpdateChecker.class);
- if (checker == null) {
- // Something did not initialize properly
- IStatus status = new Status(IStatus.ERROR, AutomaticUpdatePlugin.PLUGIN_ID,
- AutomaticUpdateMessages.AutomaticUpdateScheduler_UpdateNotInitialized);
- StatusManager.getManager().handle(status, StatusManager.LOG);
- return;
- }
- profileId = IProfileRegistry.SELF;
- }
+ private IUpdateListener listener;
+ private IUpdateChecker checker;
@Override
public void earlyStartup() {
- IProvisioningAgent agent = ServiceHelper.getService(AutomaticUpdatePlugin.getContext(),
- IProvisioningAgent.class);
- IProfileRegistry registry = agent.getService(IProfileRegistry.class);
- IProfile currentProfile = registry.getProfile(profileId);
- if (currentProfile != null && new MigrationSupport().performMigration(agent, registry, currentProfile))
- return;
+ AutomaticUpdatePlugin.getDefault().setScheduler(this);
- garbageCollect();
- scheduleUpdate();
+ Job updateJob = new Job("Update Job") { //$NON-NLS-1$
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ IProvisioningAgent agent = ServiceHelper.getService(AutomaticUpdatePlugin.getContext(),
+ IProvisioningAgent.class);
+ if (agent == null) {
+ String message = "No provisioning agent service found"; //$NON-NLS-1$
+ AutomaticUpdatePlugin.getDefault().getLog().warn(message, new IllegalStateException(message));
+ return Status.CANCEL_STATUS;
+ }
+ IProfileRegistry registry = agent.getService(IProfileRegistry.class);
+ IProfile currentProfile = registry.getProfile(IProfileRegistry.SELF);
+ if (currentProfile != null
+ && new MigrationSupport().performMigration(agent, registry, currentProfile)) {
+ return Status.OK_STATUS;
+ }
+
+ removeUnusedPlugins(registry, agent);
+ scheduleUpdate();
+ return Status.OK_STATUS;
+ }
+
+ @Override
+ public boolean belongsTo(Object family) {
+ return AutomaticUpdateScheduler.class == family;
+ }
+
+ @Override
+ public boolean shouldRun() {
+ return PlatformUI.isWorkbenchRunning();
+ }
+ };
+
+ updateJob.setSystem(true);
+ // allow the system to settle
+ updateJob.schedule(20000);
}
/**
* Invokes the garbage collector to discard unused plugins, if specified by a
* corresponding preference.
+ *
+ * @param agent non null
*/
- private void garbageCollect() {
- // Nothing to do if we don't know what profile we are checking
- if (profileId == null)
- return;
+ private void removeUnusedPlugins(IProfileRegistry registry, IProvisioningAgent agent) {
// check if gc is enabled
IPreferenceStore pref = AutomaticUpdatePlugin.getDefault().getPreferenceStore();
- if (!pref.getBoolean(PreferenceConstants.PREF_GC_ON_STARTUP))
+ if (!pref.getBoolean(PreferenceConstants.PREF_GC_ON_STARTUP)) {
return;
- IProvisioningAgent agent = ServiceHelper.getService(AutomaticUpdatePlugin.getContext(),
- IProvisioningAgent.class);
+ }
GarbageCollector collector = agent.getService(GarbageCollector.class);
- if (collector == null)
- return;
- IProfileRegistry registry = agent.getService(IProfileRegistry.class);
- if (registry == null)
+ if (collector == null || registry == null) {
return;
- IProfile profile = registry.getProfile(profileId);
+ }
+ IProfile profile = registry.getProfile(IProfileRegistry.SELF);
if (profile == null)
return;
collector.runGC(profile);
@@ -118,25 +126,15 @@ public class AutomaticUpdateScheduler implements IStartup {
public void rescheduleUpdate() {
removeUpdateListener();
- IPreferenceStore pref = AutomaticUpdatePlugin.getDefault().getPreferenceStore();
- String schedule = pref.getString(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE);
- // See if we have a scheduled check or startup only. If it is
- // startup only, there is nothing more to do now, a listener will
- // be created on the next startup.
- if (schedule.equals(PreferenceConstants.PREF_UPDATE_ON_STARTUP)) {
- return;
- }
scheduleUpdate();
}
private void scheduleUpdate() {
- // Nothing to do if we don't know what profile we are checking
- if (profileId == null)
- return;
IPreferenceStore pref = AutomaticUpdatePlugin.getDefault().getPreferenceStore();
// See if automatic search is enabled at all
- if (!pref.getBoolean(PreferenceConstants.PREF_AUTO_UPDATE_ENABLED))
+ if (!pref.getBoolean(PreferenceConstants.PREF_AUTO_UPDATE_ENABLED)) {
return;
+ }
String schedule = pref.getString(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE);
long delay = IUpdateChecker.ONE_TIME_CHECK;
long poll = IUpdateChecker.ONE_TIME_CHECK;
@@ -161,7 +159,23 @@ public class AutomaticUpdateScheduler implements IStartup {
AutomaticUpdatePlugin.getDefault().getAutomaticUpdater().checkingForUpdates();
}
};
- checker.addUpdateCheck(profileId, getProfileQuery(), delay, poll, listener);
+
+ IProvisioningAgent pagent = ServiceHelper.getService(AutomaticUpdatePlugin.getContext(),
+ IProvisioningAgent.class);
+ if (pagent == null) {
+ String message = "No provisioning agent service found"; //$NON-NLS-1$
+ AutomaticUpdatePlugin.getDefault().getLog().warn(message, new IllegalStateException(message));
+ return;
+ }
+ checker = pagent.getService(IUpdateChecker.class);
+ if (checker == null) {
+ // Something did not initialize properly
+ IStatus status = new Status(IStatus.ERROR, AutomaticUpdatePlugin.PLUGIN_ID,
+ AutomaticUpdateMessages.AutomaticUpdateScheduler_UpdateNotInitialized);
+ StatusManager.getManager().handle(status, StatusManager.LOG);
+ return;
+ }
+ checker.addUpdateCheck(IProfileRegistry.SELF, getProfileQuery(), delay, poll, listener);
}
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdater.java b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdater.java
index d375e77a0..a3346d2ed 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdater.java
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdater.java
@@ -113,7 +113,7 @@ public class AutomaticUpdater implements IUpdateListener {
if (!status.isOK() || operation.getPossibleUpdates() == null || operation.getPossibleUpdates().length == 0) {
if (PlatformUI.isWorkbenchRunning()) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(() -> clearUpdateAffordances());
+ PlatformUI.getWorkbench().getDisplay().asyncExec(this::clearUpdateAffordances);
}
return;
}
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatesPopup.java b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatesPopup.java
index c2609fda3..4521018f3 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatesPopup.java
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatesPopup.java
@@ -128,7 +128,7 @@ public class AutomaticUpdatesPopup extends PopupDialog {
@Override
public int open() {
- prefListener = event -> handlePreferenceChange(event);
+ prefListener = this::handlePreferenceChange;
prefs.addPropertyChangeListener(prefListener);
return super.open();
}
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatesPreferencePage.java b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatesPreferencePage.java
index a0840dfb4..f8184f6ad 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatesPreferencePage.java
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatesPreferencePage.java
@@ -16,10 +16,8 @@
*******************************************************************************/
package org.eclipse.equinox.internal.p2.ui.sdk.scheduler;
-import com.ibm.icu.util.Calendar;
import java.text.DateFormat;
-import java.util.Date;
-import java.util.Locale;
+import java.util.*;
import org.eclipse.core.runtime.IProduct;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.dialogs.Dialog;
@@ -58,7 +56,8 @@ public class AutomaticUpdatesPreferencePage extends PreferencePage implements IW
@Override
protected Control createContents(Composite parent) {
- PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, IAutomaticUpdaterHelpContextIds.AUTOMATIC_UPDATES_PREFERENCE_PAGE);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(parent,
+ IAutomaticUpdaterHelpContextIds.AUTOMATIC_UPDATES_PREFERENCE_PAGE);
Composite container = new Composite(parent, SWT.NULL);
GridLayout layout = new GridLayout();
@@ -71,7 +70,8 @@ public class AutomaticUpdatesPreferencePage extends PreferencePage implements IW
createSpacer(container, 1);
updateScheduleGroup = new Group(container, SWT.NONE);
- updateScheduleGroup.setText(NLS.bind(AutomaticUpdateMessages.AutomaticUpdatesPreferencePage_UpdateSchedule, lastCheckForUpdateDateString()));
+ updateScheduleGroup.setText(NLS.bind(AutomaticUpdateMessages.AutomaticUpdatesPreferencePage_UpdateSchedule,
+ lastCheckForUpdateDateString()));
layout = new GridLayout();
layout.numColumns = 3;
updateScheduleGroup.setLayout(layout);
@@ -80,8 +80,10 @@ public class AutomaticUpdatesPreferencePage extends PreferencePage implements IW
onStartupRadio = new Button(updateScheduleGroup, SWT.RADIO);
IProduct product = Platform.getProduct();
- String productName = product != null && product.getName() != null ? product.getName() : AutomaticUpdateMessages.AutomaticUpdatesPreferencePage_GenericProductName;
- onStartupRadio.setText(NLS.bind(AutomaticUpdateMessages.AutomaticUpdatesPreferencePage_findOnStart, productName));
+ String productName = product != null && product.getName() != null ? product.getName()
+ : AutomaticUpdateMessages.AutomaticUpdatesPreferencePage_GenericProductName;
+ onStartupRadio
+ .setText(NLS.bind(AutomaticUpdateMessages.AutomaticUpdatesPreferencePage_findOnStart, productName));
gd = new GridData();
gd.horizontalSpan = 3;
onStartupRadio.setLayoutData(gd);
@@ -172,12 +174,14 @@ public class AutomaticUpdatesPreferencePage extends PreferencePage implements IW
}
private static String lastCheckForUpdateDateString() {
- Date lastCheckDate = new LastAutoCheckForUpdateMemo(AutomaticUpdatePlugin.getDefault().getAgentLocation()).read();
+ Date lastCheckDate = new LastAutoCheckForUpdateMemo(AutomaticUpdatePlugin.getDefault().getAgentLocation())
+ .read();
if (lastCheckDate == null) {
return AutomaticUpdateMessages.AutomaticUpdatesPreferencePage_never;
}
- DateFormat formatter = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.SHORT, Locale.getDefault());
+ DateFormat formatter = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.SHORT,
+ Locale.getDefault());
return formatter.format(lastCheckDate);
}
@@ -197,7 +201,8 @@ public class AutomaticUpdatesPreferencePage extends PreferencePage implements IW
remindScheduleRadio.setSelection(pref.getBoolean(PreferenceConstants.PREF_REMIND_SCHEDULE));
remindOnceRadio.setSelection(!pref.getBoolean(PreferenceConstants.PREF_REMIND_SCHEDULE));
- remindElapseCombo.setText(AutomaticUpdatesPopup.getElapsedTimeString(pref.getString(PreferenceConstants.PREF_REMIND_ELAPSED)));
+ remindElapseCombo.setText(
+ AutomaticUpdatesPopup.getElapsedTimeString(pref.getString(PreferenceConstants.PREF_REMIND_ELAPSED)));
searchOnlyRadio.setSelection(!pref.getBoolean(PreferenceConstants.PREF_DOWNLOAD_ONLY));
searchAndDownloadRadio.setSelection(pref.getBoolean(PreferenceConstants.PREF_DOWNLOAD_ONLY));
showUpdateWizard.setSelection(pref.getBoolean(PreferenceConstants.PREF_SHOW_UPDATE_WIZARD));
@@ -239,7 +244,8 @@ public class AutomaticUpdatesPreferencePage extends PreferencePage implements IW
remindOnceRadio.setSelection(!pref.getDefaultBoolean(PreferenceConstants.PREF_REMIND_SCHEDULE));
remindScheduleRadio.setSelection(pref.getDefaultBoolean(PreferenceConstants.PREF_REMIND_SCHEDULE));
- remindElapseCombo.setText(AutomaticUpdatesPopup.getElapsedTimeString(pref.getDefaultString(PreferenceConstants.PREF_REMIND_ELAPSED)));
+ remindElapseCombo.setText(AutomaticUpdatesPopup
+ .getElapsedTimeString(pref.getDefaultString(PreferenceConstants.PREF_REMIND_ELAPSED)));
searchOnlyRadio.setSelection(!pref.getDefaultBoolean(PreferenceConstants.PREF_DOWNLOAD_ONLY));
searchAndDownloadRadio.setSelection(pref.getDefaultBoolean(PreferenceConstants.PREF_DOWNLOAD_ONLY));
@@ -259,15 +265,18 @@ public class AutomaticUpdatesPreferencePage extends PreferencePage implements IW
if (onStartupRadio.getSelection()) {
pref.setValue(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE, PreferenceConstants.PREF_UPDATE_ON_STARTUP);
} else if (onFuzzyScheduleRadio.getSelection()) {
- pref.setValue(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE, PreferenceConstants.PREF_UPDATE_ON_FUZZY_SCHEDULE);
- new LastAutoCheckForUpdateMemo(AutomaticUpdatePlugin.getDefault().getAgentLocation()).readAndStoreIfAbsent(Calendar.getInstance().getTime());
+ pref.setValue(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE,
+ PreferenceConstants.PREF_UPDATE_ON_FUZZY_SCHEDULE);
+ new LastAutoCheckForUpdateMemo(AutomaticUpdatePlugin.getDefault().getAgentLocation())
+ .readAndStoreIfAbsent(Calendar.getInstance().getTime());
} else {
pref.setValue(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE, PreferenceConstants.PREF_UPDATE_ON_SCHEDULE);
}
if (remindScheduleRadio.getSelection()) {
pref.setValue(PreferenceConstants.PREF_REMIND_SCHEDULE, true);
- pref.setValue(PreferenceConstants.PREF_REMIND_ELAPSED, AutomaticUpdatesPopup.ELAPSED_VALUES[remindElapseCombo.getSelectionIndex()]);
+ pref.setValue(PreferenceConstants.PREF_REMIND_ELAPSED,
+ AutomaticUpdatesPopup.ELAPSED_VALUES[remindElapseCombo.getSelectionIndex()]);
} else {
pref.setValue(PreferenceConstants.PREF_REMIND_SCHEDULE, false);
}
@@ -284,7 +293,8 @@ public class AutomaticUpdatesPreferencePage extends PreferencePage implements IW
}
private int getFuzzyRecurrence(IPreferenceStore pref, boolean useDefault) {
- String day = useDefault ? pref.getDefaultString(AutomaticUpdateScheduler.P_FUZZY_RECURRENCE) : pref.getString(AutomaticUpdateScheduler.P_FUZZY_RECURRENCE);
+ String day = useDefault ? pref.getDefaultString(AutomaticUpdateScheduler.P_FUZZY_RECURRENCE)
+ : pref.getString(AutomaticUpdateScheduler.P_FUZZY_RECURRENCE);
for (int i = 0; i < AutomaticUpdateScheduler.FUZZY_RECURRENCE.length; i++)
if (AutomaticUpdateScheduler.FUZZY_RECURRENCE[i].equals(day))
return i;
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/PreviousConfigurationFinder.java b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/PreviousConfigurationFinder.java
index 2caadb6c8..a87721308 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/PreviousConfigurationFinder.java
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/PreviousConfigurationFinder.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2013, 2017 Ericsson AB and others.
+ * Copyright (c) 2013, 2020 Ericsson AB and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -38,7 +38,8 @@ public class PreviousConfigurationFinder {
}
/**
- * @throws NumberFormatException if cannot parse the major and minor version components
+ * @throws NumberFormatException if cannot parse the major and minor version
+ * components
*/
Identifier(String versionString) {
super();
@@ -58,18 +59,14 @@ public class PreviousConfigurationFinder {
service = Integer.parseInt(tokenizer.nextToken());
} catch (NumberFormatException nfe) {
// ignore the service qualifier in that case and default to 0
- // this will allow us to tolerate other non-conventional version numbers
+ // this will allow us to tolerate other non-conventional version numbers
}
}
/**
- * Returns true if this id is considered to be greater than or equal to the given baseline.
- * e.g.
- * 1.2.9 >= 1.3.1 -> false
- * 1.3.0 >= 1.3.1 -> false
- * 1.3.1 >= 1.3.1 -> true
- * 1.3.2 >= 1.3.1 -> true
- * 2.0.0 >= 1.3.1 -> true
+ * Returns true if this id is considered to be greater than or equal to the
+ * given baseline. e.g. 1.2.9 >= 1.3.1 -> false 1.3.0 >= 1.3.1 -> false 1.3.1 >=
+ * 1.3.1 -> true 1.3.2 >= 1.3.1 -> true 2.0.0 >= 1.3.1 -> true
*/
boolean isGreaterEqualTo(Identifier minimum) {
if (major < minimum.major)
@@ -96,6 +93,11 @@ public class PreviousConfigurationFinder {
}
@Override
+ public int hashCode() {
+ return Objects.hash(major, minor, service);
+ }
+
+ @Override
public String toString() {
return "" + major + '.' + minor + '.' + service; //$NON-NLS-1$
}
@@ -132,7 +134,8 @@ public class PreviousConfigurationFinder {
File configFolder;
String os_ws_arch;
- public ConfigurationDescriptor(String productId, Identifier version, String installPathHashcode, String platformConfig, File configFolder) {
+ public ConfigurationDescriptor(String productId, Identifier version, String installPathHashcode,
+ String platformConfig, File configFolder) {
this.productId = productId;
this.version = version;
this.installPathHashcode = installPathHashcode;
@@ -163,7 +166,8 @@ public class PreviousConfigurationFinder {
public static class ConfigurationDescriptorComparator implements Comparator<ConfigurationDescriptor> {
- // compare ConfigurationDescriptor according to their versions and when equals according to their lastModified field
+ // compare ConfigurationDescriptor according to their versions and when equals
+ // according to their lastModified field
@Override
public int compare(ConfigurationDescriptor o1, ConfigurationDescriptor o2) {
int result = -1;
@@ -198,7 +202,8 @@ public class PreviousConfigurationFinder {
Matcher m = path.matcher(candidate.getName());
if (!m.matches())
return null;
- return new ConfigurationDescriptor(m.group(1), new Identifier(m.group(2)), m.group(3), m.group(5), candidate.getAbsoluteFile());
+ return new ConfigurationDescriptor(m.group(1), new Identifier(m.group(2)), m.group(3), m.group(5),
+ candidate.getAbsoluteFile());
}
public IProvisioningAgent findPreviousInstalls(File searchRoot, File installFolder) {
@@ -206,14 +211,16 @@ public class PreviousConfigurationFinder {
ConfigurationDescriptor runningConfiguration = getConfigdataFromProductFile(installFolder);
if (runningConfiguration == null)
return null;
- ConfigurationDescriptor match = findMostRelevantConfigurationFromInstallHashDir(potentialConfigurations, runningConfiguration);
+ ConfigurationDescriptor match = findMostRelevantConfigurationFromInstallHashDir(potentialConfigurations,
+ runningConfiguration);
if (match == null)
match = findMostRelevantConfigurationFromProductId(potentialConfigurations, runningConfiguration);
if (match == null)
match = findSpecifiedConfiguration(searchRoot);
if (match == null)
return null;
- return AgentFromInstall.createAgentFrom(AutomaticUpdatePlugin.getDefault().getAgentProvider(), null, new File(match.getConfig(), "configuration"), null); //$NON-NLS-1$
+ return AgentFromInstall.createAgentFrom(AutomaticUpdatePlugin.getDefault().getAgentProvider(), null,
+ new File(match.getConfig(), "configuration"), null); //$NON-NLS-1$
}
@@ -240,13 +247,17 @@ public class PreviousConfigurationFinder {
private ConfigurationDescriptor getConfigdataFromProductFile(File installFolder) {
Object[] productFileInfo = loadEclipseProductFile(installFolder);
- //Contrarily to the runtime, when the .eclipseproduct can't be found, we don't fallback to org.eclipse.platform.
+ // Contrarily to the runtime, when the .eclipseproduct can't be found, we don't
+ // fallback to org.eclipse.platform.
if (productFileInfo.length == 0)
return null;
- return new ConfigurationDescriptor((String) productFileInfo[0], (Identifier) productFileInfo[1], getInstallDirHash(installFolder), Platform.getOS() + '_' + Platform.getWS() + '_' + Platform.getOSArch(), null);
+ return new ConfigurationDescriptor((String) productFileInfo[0], (Identifier) productFileInfo[1],
+ getInstallDirHash(installFolder),
+ Platform.getOS() + '_' + Platform.getWS() + '_' + Platform.getOSArch(), null);
}
- public ConfigurationDescriptor findMostRelevantConfigurationFromInstallHashDir(List<ConfigurationDescriptor> configurations, ConfigurationDescriptor configToMatch) {
+ public ConfigurationDescriptor findMostRelevantConfigurationFromInstallHashDir(
+ List<ConfigurationDescriptor> configurations, ConfigurationDescriptor configToMatch) {
ConfigurationDescriptor bestMatch = null;
int numberOfcriteriaMet = 0;
for (ConfigurationDescriptor candidate : configurations) {
@@ -259,7 +270,7 @@ public class PreviousConfigurationFinder {
if (configToMatch.getProductId().equals(candidate.getProductId()) && //
configToMatch.getPlatformConfig().equals(candidate.getPlatformConfig()) && //
(!candidate.getVersion().isGreaterEqualTo(configToMatch.getVersion()))) {
- //We have a match
+ // We have a match
criteriaMet++;
}
@@ -282,30 +293,34 @@ public class PreviousConfigurationFinder {
return bestMatch;
}
- //Out of a set of configuration, find the one with the most similar product info.
- public ConfigurationDescriptor findMostRelevantConfigurationFromProductId(List<ConfigurationDescriptor> configurations, ConfigurationDescriptor configToMatch) {
+ // Out of a set of configuration, find the one with the most similar product
+ // info.
+ public ConfigurationDescriptor findMostRelevantConfigurationFromProductId(
+ List<ConfigurationDescriptor> configurations, ConfigurationDescriptor configToMatch) {
ConfigurationDescriptor bestMatch = null;
List<ConfigurationDescriptor> candidates = new ArrayList<>();
List<ConfigurationDescriptor> candidatesWithUnkonwArchitecture = new ArrayList<>();
for (ConfigurationDescriptor candidate : configurations) {
- if (configToMatch.getProductId().equals(candidate.getProductId()) && configToMatch.getVersion().isGreaterEqualTo(candidate.getVersion())) {
+ if (configToMatch.getProductId().equals(candidate.getProductId())
+ && configToMatch.getVersion().isGreaterEqualTo(candidate.getVersion())) {
if (configToMatch.getPlatformConfig().equals(candidate.getPlatformConfig())) {
candidates.add(candidate);
- } else { //candidate.getPlatformConfig() returns null in legacy installation prior to 4.x.x releases
+ } else { // candidate.getPlatformConfig() returns null in legacy installation prior to
+ // 4.x.x releases
candidatesWithUnkonwArchitecture.add(candidate);
}
}
}
if (!candidates.isEmpty()) {
- Collections.sort(candidates, new ConfigurationDescriptorComparator());
+ candidates.sort(new ConfigurationDescriptorComparator());
bestMatch = candidates.get(candidates.size() - 1);
}
if (bestMatch == null) {
if (!candidatesWithUnkonwArchitecture.isEmpty()) {
- Collections.sort(candidatesWithUnkonwArchitecture, new ConfigurationDescriptorComparator());
+ candidatesWithUnkonwArchitecture.sort(new ConfigurationDescriptorComparator());
bestMatch = candidatesWithUnkonwArchitecture.get(candidatesWithUnkonwArchitecture.size() - 1);
}
}
@@ -313,7 +328,8 @@ public class PreviousConfigurationFinder {
return bestMatch;
}
- //Load the .eclipseproduct file in the base of the installation. This logic is very similar to the one found in the launcher
+ // Load the .eclipseproduct file in the base of the installation. This logic is
+ // very similar to the one found in the launcher
private Object[] loadEclipseProductFile(File installDir) {
final String ECLIPSE = "eclipse"; //$NON-NLS-1$
final String PRODUCT_SITE_MARKER = ".eclipseproduct"; //$NON-NLS-1$
@@ -341,10 +357,11 @@ public class PreviousConfigurationFinder {
} else {
return new String[0];
}
- return new Object[] {appId, appVersion};
+ return new Object[] { appId, appVersion };
}
- //Iterate through a folder to look for potential configuration folders and reify them.
+ // Iterate through a folder to look for potential configuration folders and
+ // reify them.
public List<ConfigurationDescriptor> readPreviousConfigurations(File configurationFolder) {
File[] candidates = configurationFolder.listFiles();
List<ConfigurationDescriptor> configurations = new ArrayList<>(candidates.length);
@@ -360,8 +377,8 @@ public class PreviousConfigurationFinder {
return configurations;
}
- //This code computes the hashCode of the install location.
- //This is a simplified version of the code that the launcher executes.
+ // This code computes the hashCode of the install location.
+ // This is a simplified version of the code that the launcher executes.
private String getInstallDirHash(File installFolder) {
try {
return Integer.toString(installFolder.getCanonicalPath().hashCode());
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/migration/MigrationPage.java b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/migration/MigrationPage.java
index 25b911a93..7cedadb2a 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/migration/MigrationPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/migration/MigrationPage.java
@@ -815,7 +815,7 @@ public class MigrationPage extends WizardPage implements ISelectableIUsPage, Lis
@Override
public void setCheckedElements(Object[] elements) {
- new UnsupportedOperationException();
+ throw new UnsupportedOperationException();
}
// Look for update of the current selected installation units and replace the
@@ -893,9 +893,7 @@ public class MigrationPage extends WizardPage implements ISelectableIUsPage, Lis
SubMonitor sub = SubMonitor.convert(monitor, 1000);
IQueryable<IInstallableUnit> queryable = context.getMetadata(sub.newChild(500));
- IQueryResult<IInstallableUnit> matches = queryable.query(new UpdateQuery(toUpdate), sub.newChild(500));
- for (Iterator<IInstallableUnit> it = matches.iterator(); it.hasNext();) {
- IInstallableUnit iu = it.next();
+ for (IInstallableUnit iu : queryable.query(new UpdateQuery(toUpdate), sub.newChild(500))) {
String key = iu.getId() + "_" + iu.getVersion().toString(); //$NON-NLS-1$
IInstallableUnit currentIU = resultsMap.get(key);
if (currentIU == null || hasHigherFidelity(iu, currentIU))
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/migration/MigrationWizard.java b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/migration/MigrationWizard.java
index 03f1b4f4e..37848bae8 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/migration/MigrationWizard.java
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/migration/MigrationWizard.java
@@ -146,11 +146,10 @@ public class MigrationWizard extends InstallWizard implements IImportWizard {
private void cleanupProfileRegistry() {
IProfileRegistry registry = ProvisioningUI.getDefaultUI().getSession().getProvisioningAgent()
.getService(IProfileRegistry.class);
- long[] history = registry.listProfileTimestamps(toImportFrom.getProfileId());
- for (int i = 0; i < history.length; i++) {
- if (history[i] < toImportFrom.getTimestamp())
+ for (long timestamp : registry.listProfileTimestamps(toImportFrom.getProfileId())) {
+ if (timestamp < toImportFrom.getTimestamp())
try {
- registry.removeProfile(toImportFrom.getProfileId(), history[i]);
+ registry.removeProfile(toImportFrom.getProfileId(), timestamp);
} catch (ProvisionException e) {
// Can't happen
}
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/migration/messages.properties b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/migration/messages.properties
index c92e67f75..e3811a316 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/migration/messages.properties
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/migration/messages.properties
@@ -10,7 +10,7 @@ MigrationWizard_WINDOWTITLE=Migrate
MigrationWizard_WINDOWTITLE_FIRSTRUN=Import
MigrationPage_DIALOG_TITLE=Migration wizard
MigrationPage_DIALOG_TITLE_FIRSTRUN=Import wizard
-MigrationPage_DIALOG_DESCRIPTION=This wizard helps you to import and reinstall previously installed plug-ins. It is triggered because\neither you are launching eclipse for the first time or your {0} has been updated.
+MigrationPage_DIALOG_DESCRIPTION=This wizard helps you to import and reinstall previously installed plug-ins. It is triggered because\neither you are launching for the first time or your {0} has been updated.
MigrationPage_DIALOG_DESCRIPTION_FIRSTRUN=It is the first time you are running {0} from this location.\nThis wizard will help you install plug-ins you may have previously installed.
MigrationPage_CONFIRMATION_TITLE=Migration cancellation
MigrationPage_CONFIRMATION_DIALOG=Canceling this operation will stop the re-installation of your plug-ins. Are you sure you want to cancel?
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/.classpath b/bundles/org.eclipse.equinox.p2.ui.sdk/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk/.classpath
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.ui.sdk/.settings/org.eclipse.jdt.core.prefs
index b6ee06ea1..3c15076cc 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -36,6 +36,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -89,6 +90,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -125,7 +127,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -139,7 +142,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -260,7 +262,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -331,7 +332,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -476,7 +476,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.ui.sdk/META-INF/MANIFEST.MF
index d78261b23..4293409db 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %bundleName
Bundle-SymbolicName: org.eclipse.equinox.p2.ui.sdk;singleton:=true
-Bundle-Version: 1.1.500.qualifier
+Bundle-Version: 1.2.4.qualifier
Bundle-Activator: org.eclipse.equinox.internal.p2.ui.sdk.ProvSDKUIActivator
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -10,10 +10,14 @@ Export-Package: org.eclipse.equinox.internal.p2.ui.sdk;x-internal:=true,
org.eclipse.equinox.internal.p2.ui.sdk.prefs;x-internal:=true
Require-Bundle: org.eclipse.ui;bundle-version="3.6.0",
org.eclipse.core.runtime,
- org.eclipse.equinox.p2.ui
+ org.eclipse.equinox.p2.ui;bundle-version="2.6.0"
Import-Package: javax.xml.parsers,
+ org.bouncycastle.bcpg;version="1.69.0",
+ org.bouncycastle.openpgp;version="1.69.0",
org.eclipse.compare;resolution:=optional,
org.eclipse.compare.structuremergeviewer;resolution:=optional,
+ org.eclipse.equinox.internal.p2.artifact.processors.pgp,
+ org.eclipse.equinox.internal.p2.engine.phases,
org.eclipse.equinox.p2.core;version="[2.0.0,3.0.0)",
org.eclipse.equinox.p2.engine;version="[2.0.0,3.0.0)",
org.eclipse.equinox.p2.engine.query;version="[2.0.0,3.0.0)",
@@ -21,11 +25,12 @@ Import-Package: javax.xml.parsers,
org.eclipse.equinox.p2.operations;version="[2.0.0,3.0.0)",
org.eclipse.equinox.p2.planner;version="2.0.0",
org.eclipse.equinox.p2.query;version="[2.0.0,3.0.0)",
+ org.eclipse.equinox.p2.repository.spi;version="2.0.0",
org.eclipse.osgi.util;version="1.1.0",
org.osgi.framework;version="1.6.0",
org.w3c.dom,
org.xml.sax
Service-Component: OSGI-INF/policy_component.xml, OSGI-INF/licenseManager_component.xml
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.equinox.p2.ui.sdk
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/plugin.properties b/bundles/org.eclipse.equinox.p2.ui.sdk/plugin.properties
index 672cb238d..372fe98ce 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk/plugin.properties
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk/plugin.properties
@@ -28,5 +28,7 @@ provisioningPrefPage = Install/Update
sitesPrefPage = Available Software Sites
installedSoftwarePage = Installed Software
installHistoryPage = Installation History
+trustPrefPage = Trust
preferenceKeywords.general=automatic update schedule remove download site software uninstall install import bundle
+preferenceKeywords.trust=trust security keys pgp gpg
preferences=Update and Install Preferences
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/plugin.xml b/bundles/org.eclipse.equinox.p2.ui.sdk/plugin.xml
index 249d78378..69e973118 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk/plugin.xml
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk/plugin.xml
@@ -22,6 +22,14 @@
<keywordReference id="org.eclipse.equinox.p2.ui.sdk.updates.general"/>
</page>
+ <page
+ name="%trustPrefPage"
+ category="org.eclipse.equinox.internal.p2.ui.sdk.ProvisioningPreferencePage"
+ class="org.eclipse.equinox.internal.p2.ui.sdk.TrustPreferencePage"
+ id="org.eclipse.equinox.internal.p2.ui.sdk.TrustPreferencePage">
+ <keywordReference id="org.eclipse.equinox.p2.ui.sdk.updates.trust"/>
+ </page>
+
</extension>
<extension
@@ -29,6 +37,10 @@
<keyword
label="%preferenceKeywords.general"
id="org.eclipse.equinox.p2.ui.sdk.updates.general"/>
+ <keyword
+ id="org.eclipse.equinox.p2.ui.sdk.updates.trust"
+ label="%preferenceKeywords.trust">
+ </keyword>
</extension>
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/pom.xml b/bundles/org.eclipse.equinox.p2.ui.sdk/pom.xml
index e79458ed6..bcca1f5ac 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.ui.sdk</artifactId>
- <version>1.1.500-SNAPSHOT</version>
+ <version>1.2.4-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/PreloadingRepositoryHandler.java b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/PreloadingRepositoryHandler.java
index e850dd502..19b86bccb 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/PreloadingRepositoryHandler.java
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/PreloadingRepositoryHandler.java
@@ -67,7 +67,7 @@ abstract class PreloadingRepositoryHandler extends AbstractHandler {
// Log the detailed message
StatusManager.getManager().handle(ProvSDKUIActivator.getNoSelfProfileStatus());
} else {
- BusyIndicator.showWhile(getShell().getDisplay(), () -> doExecuteAndLoad());
+ BusyIndicator.showWhile(getShell().getDisplay(), this::doExecuteAndLoad);
}
return null;
}
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKMessages.java b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKMessages.java
index 5dc6f784f..26d979317 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKMessages.java
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKMessages.java
@@ -17,8 +17,8 @@ package org.eclipse.equinox.internal.p2.ui.sdk;
import org.eclipse.osgi.util.NLS;
/**
- * Message class for provisioning UI messages.
- *
+ * Message class for provisioning UI messages.
+ *
* @since 3.4
*/
public class ProvSDKMessages extends NLS {
@@ -39,6 +39,7 @@ public class ProvSDKMessages extends NLS {
public static String ProvisioningPreferencePage_OpenWizardIfInvalid;
public static String ProvisioningPreferencePage_PromptToOpenWizard;
public static String ProvisioningPreferencePage_UninstallUpdateLink;
+ public static String ProvisioningPreferencePage_checkCompatibleWithCurrentJRE;
public static String ProvSDKUIActivator_ErrorSavingPrefs;
public static String ProvSDKUIActivator_NoSelfProfile;
public static String ProvSDKUIActivator_OpenWizardAnyway;
@@ -49,5 +50,32 @@ public class ProvSDKMessages extends NLS {
public static String UpdateHandler_ProgressTaskName;
public static String RemediationOperation_ResolveJobName;
public static String RemediationOperation_ResolveJobTask;
+ public static String TrustPreferencePage_title;
+ public static String TrustPreferencePage_export;
+ public static String TrustPreferencePage_fileExportTitle;
+ public static String TrustPreferencePage_pgpIntro;
+ public static String TrustPreferencePage_fileImportTitle;
+ public static String TrustPreferencePage_addPGPKeyButtonLabel;
+ public static String TrustPreferencePage_Contributor;
+ public static String TrustPreferencePage_CopyFingerprint;
+ public static String TrustPreferencePage_DataValidExpires;
+ public static String TrustPreferencePage_DateExpired;
+ public static String TrustPreferencePage_DateExpiredSince;
+ public static String TrustPreferencePage_DateNotYetvalid;
+ public static String TrustPreferencePage_DateNotYetValid;
+ public static String TrustPreferencePage_DateValid;
+ public static String TrustPreferencePage_Details;
+ public static String TrustPreferencePage_Export;
+ public static String TrustPreferencePage_FingerprintIdColumn;
+ public static String TrustPreferencePage_NameColumn;
+ public static String TrustPreferencePage_PreferenceContributor;
+ public static String TrustPreferencePage_removePGPKeyButtonLabel;
+ public static String TrustPreferencePage_TrustAll;
+ public static String TrustPreferencePage_TrustAllConfirmationDescription;
+ public static String TrustPreferencePage_TrustAllConfirmationTitle;
+ public static String TrustPreferencePage_TrustAllNo;
+ public static String TrustPreferencePage_TrustAllYes;
+ public static String TrustPreferencePage_TypeColumn;
+ public static String TrustPreferencePage_ValidityColumn;
}
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKUIActivator.java b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKUIActivator.java
index 8d048812a..7fa681f29 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKUIActivator.java
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKUIActivator.java
@@ -54,7 +54,7 @@ public class ProvSDKUIActivator extends AbstractUIPlugin {
/**
* Returns the singleton plugin instance
- *
+ *
* @return the instance
*/
public static ProvSDKUIActivator getDefault() {
@@ -64,7 +64,7 @@ public class ProvSDKUIActivator extends AbstractUIPlugin {
/**
* Returns an image descriptor for the image file at the given plug-in
* relative path
- *
+ *
* @param path
* the path
* @return the image descriptor
@@ -135,6 +135,10 @@ public class ProvSDKUIActivator extends AbstractUIPlugin {
value = store.getString(PreferenceConstants.PREF_GROUP_BY_CATEGORY);
policy.setGroupByCategory(!IPreferenceStore.STRING_DEFAULT_DEFAULT.equals(value) ? store.getBoolean(PreferenceConstants.PREF_GROUP_BY_CATEGORY) : policy.getGroupByCategory());
+ value = store.getString(PreferenceConstants.PREF_CHECK_AGAINST_CURRENT_JRE);
+ policy.setCheckAgainstCurrentExecutionEnvironment(!IPreferenceStore.STRING_DEFAULT_DEFAULT.equals(value)
+ ? store.getBoolean(PreferenceConstants.PREF_CHECK_AGAINST_CURRENT_JRE)
+ : policy.getCheckAgainstCurrentExecutionEnvironment());
}
/*
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/SimpleLicenseManager.java b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/SimpleLicenseManager.java
index 160fdf055..b5972a964 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/SimpleLicenseManager.java
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/SimpleLicenseManager.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2017 IBM Corporation and others.
+ * Copyright (c) 2007, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,17 +11,21 @@
* Contributors:
* IBM Corporation - initial API and implementation
* Genuitec, LLC - added license support
+ * Hannes Wellmann - Bug 574622: Persist remembered accepted licenses
*******************************************************************************/
package org.eclipse.equinox.internal.p2.ui.sdk;
import java.util.HashSet;
-import java.util.StringTokenizer;
+import java.util.Set;
+import java.util.regex.Pattern;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.equinox.internal.p2.ui.sdk.prefs.PreferenceConstants;
import org.eclipse.equinox.p2.core.IAgentLocation;
import org.eclipse.equinox.p2.engine.IProfileRegistry;
import org.eclipse.equinox.p2.engine.ProfileScope;
import org.eclipse.equinox.p2.metadata.ILicense;
import org.eclipse.equinox.p2.ui.LicenseManager;
+import org.osgi.service.prefs.BackingStoreException;
import org.osgi.service.prefs.Preferences;
/**
@@ -32,8 +36,8 @@ import org.osgi.service.prefs.Preferences;
* @since 3.6
*/
public class SimpleLicenseManager extends LicenseManager {
- java.util.Set<String> accepted = new HashSet<>();
- String profileId;
+ private final Set<String> accepted = new HashSet<>();
+ private final String profileId;
public SimpleLicenseManager(String profileId) {
super();
@@ -75,26 +79,25 @@ public class SimpleLicenseManager extends LicenseManager {
return new ProfileScope(location, profileId).getNode(ProvSDKUIActivator.PLUGIN_ID);
}
+ private static final Pattern DIGESTS_DELIMITER = Pattern.compile(","); //$NON-NLS-1$
+
private void initializeFromPreferences() {
Preferences pref = getPreferences();
if (pref != null) {
String digestList = pref.get(PreferenceConstants.PREF_LICENSE_DIGESTS, ""); //$NON-NLS-1$
- StringTokenizer tokenizer = new StringTokenizer(digestList, ","); //$NON-NLS-1$
- while (tokenizer.hasMoreTokens()) {
- accepted.add(tokenizer.nextToken().trim());
- }
+ DIGESTS_DELIMITER.splitAsStream(digestList).filter(s -> !s.isBlank()).map(String::strip)
+ .forEach(accepted::add);
}
}
private void updatePreferences() {
Preferences pref = getPreferences();
- StringBuilder result = new StringBuilder();
- Object[] indexedList = accepted.toArray();
- for (int i = 0; i < indexedList.length; i++) {
- if (i != 0)
- result.append(","); //$NON-NLS-1$
- result.append((String) indexedList[i]);
+ String acceptedLicenseDigests = String.join(",", accepted); //$NON-NLS-1$
+ pref.put(PreferenceConstants.PREF_LICENSE_DIGESTS, acceptedLicenseDigests);
+ try {
+ pref.flush();
+ } catch (BackingStoreException e) {
+ Platform.getLog(SimpleLicenseManager.class).error("Persisting remembered licenses failed", e); //$NON-NLS-1$
}
- pref.put(PreferenceConstants.PREF_LICENSE_DIGESTS, result.toString());
}
}
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/TrustPreferencePage.java b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/TrustPreferencePage.java
new file mode 100644
index 000000000..bb0ef513e
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/TrustPreferencePage.java
@@ -0,0 +1,491 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Red Hat Inc.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.equinox.internal.p2.ui.sdk;
+
+import static org.eclipse.swt.events.SelectionListener.widgetSelectedAdapter;
+
+import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.security.cert.*;
+import java.time.Instant;
+import java.time.temporal.ChronoUnit;
+import java.util.*;
+import java.util.List;
+import java.util.function.Function;
+import org.bouncycastle.bcpg.ArmoredOutputStream;
+import org.bouncycastle.openpgp.PGPPublicKey;
+import org.eclipse.core.runtime.*;
+import org.eclipse.equinox.internal.p2.artifact.processors.pgp.PGPPublicKeyStore;
+import org.eclipse.equinox.internal.p2.engine.phases.CertificateChecker;
+import org.eclipse.equinox.internal.p2.ui.dialogs.PGPPublicKeyViewDialog;
+import org.eclipse.equinox.internal.p2.ui.viewers.CertificateLabelProvider;
+import org.eclipse.equinox.p2.core.IProvisioningAgent;
+import org.eclipse.equinox.p2.engine.IProfileRegistry;
+import org.eclipse.equinox.p2.repository.spi.PGPPublicKeyService;
+import org.eclipse.jface.dialogs.*;
+import org.eclipse.jface.layout.TableColumnLayout;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.util.Policy;
+import org.eclipse.jface.viewers.*;
+import org.eclipse.jface.widgets.LabelFactory;
+import org.eclipse.jface.widgets.WidgetFactory;
+import org.eclipse.jface.window.Window;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.*;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.*;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.Constants;
+
+public class TrustPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
+
+ private static final String EXPORT_FILTER_PATH = "exportFilterPath"; //$NON-NLS-1$
+ private static final String ADD_FILTER_PATH = "addFilterPath"; //$NON-NLS-1$
+
+ private CertificateChecker certificateChecker;
+ private Set<Certificate> trustedCertificates;
+ private PGPPublicKeyStore trustedKeys;
+ private Map<PGPPublicKey, Set<Bundle>> contributedTrustedKeys;
+ private boolean dirty;
+ private TableViewer viewer;
+
+ public TrustPreferencePage() {
+ super(ProvSDKMessages.TrustPreferencePage_title);
+ }
+
+ @Override
+ public void init(IWorkbench workbench) {
+ // nothing to do
+ }
+
+ @Override
+ protected Control createContents(Composite parent) {
+ IProvisioningAgent provisioningAgent = ProvSDKUIActivator.getDefault().getProvisioningAgent();
+ certificateChecker = new CertificateChecker(provisioningAgent);
+ certificateChecker
+ .setProfile(provisioningAgent.getService(IProfileRegistry.class).getProfile(IProfileRegistry.SELF));
+ trustedCertificates = new LinkedHashSet<>(certificateChecker.getPreferenceTrustedCertificates());
+ contributedTrustedKeys = certificateChecker.getContributedTrustedKeys();
+ trustedKeys = certificateChecker.getPreferenceTrustedKeys();
+
+ Composite res = new Composite(parent, SWT.NONE);
+ res.setLayout(new GridLayout(2, false));
+
+ // Ensure that the message supports wrapping for a long text message.
+ GridData data = new GridData(SWT.FILL, SWT.DEFAULT, true, false, 2, 1);
+ data.widthHint = convertWidthInCharsToPixels(90);
+ LabelFactory factory = WidgetFactory.label(SWT.WRAP).text(ProvSDKMessages.TrustPreferencePage_pgpIntro)
+ .font(parent.getFont()).layoutData(data);
+ factory.create(res);
+
+ TableColumnLayout tableColumnLayout = new TableColumnLayout();
+ Composite tableComposite = WidgetFactory.composite(SWT.NONE)
+ .layoutData(new GridData(SWT.FILL, SWT.FILL, true, true)).layout(tableColumnLayout).create(res);
+ Table keyTable = WidgetFactory.table(SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION)
+ .headerVisible(true).linesVisible(true).font(parent.getFont()).create(tableComposite);
+ viewer = new TableViewer(keyTable);
+ keyTable.setHeaderVisible(true);
+ viewer.setContentProvider(new ArrayContentProvider());
+
+ // This column is packed later.
+ TableViewerColumn typeColumn = createColumn(viewer, ProvSDKMessages.TrustPreferencePage_TypeColumn,
+ key -> "PGP", cert -> "x509", tableColumnLayout, 1); //$NON-NLS-1$ //$NON-NLS-2$
+
+ createColumn(viewer, ProvSDKMessages.TrustPreferencePage_FingerprintIdColumn,
+ key -> PGPPublicKeyService.toHexFingerprint(key),
+ cert -> cert.getSerialNumber().toString(), tableColumnLayout, 10);
+
+ createColumn(viewer, ProvSDKMessages.TrustPreferencePage_NameColumn, key -> {
+ List<String> userIds = new ArrayList<>();
+ key.getUserIDs().forEachRemaining(userIds::add);
+ return String.join(", ", userIds); //$NON-NLS-1$
+ }, cert -> CertificateLabelProvider.getText(cert), tableColumnLayout, 15);
+
+ createColumn(viewer, ProvSDKMessages.TrustPreferencePage_Contributor, key -> {
+ {
+ Set<String> contributors = new LinkedHashSet<>();
+ if (trustedKeys.all().contains(key)) {
+ contributors.add(ProvSDKMessages.TrustPreferencePage_PreferenceContributor);
+ }
+ Set<Bundle> bundles = contributedTrustedKeys.get(key);
+ if (bundles != null) {
+ Set<String> bundleContributors = new TreeSet<>(Policy.getComparator());
+ bundles.stream().map(bundle -> getBundleName(bundle)).forEach(bundleContributors::add);
+ contributors.addAll(bundleContributors);
+ }
+ return String.join(", ", contributors); //$NON-NLS-1$
+ }
+ }, cert -> ProvSDKMessages.TrustPreferencePage_PreferenceContributor, tableColumnLayout,
+ contributedTrustedKeys.isEmpty() ? 8 : 15);
+
+ createColumn(viewer, ProvSDKMessages.TrustPreferencePage_ValidityColumn, pgp -> {
+ if (pgp.getCreationTime().after(Date.from(Instant.now()))) {
+ return NLS.bind(ProvSDKMessages.TrustPreferencePage_DateNotYetValid, pgp.getCreationTime());
+ }
+ long validSeconds = pgp.getValidSeconds();
+ if (validSeconds == 0) {
+ return ProvSDKMessages.TrustPreferencePage_DateValid;
+ }
+ Instant expires = pgp.getCreationTime().toInstant().plus(validSeconds, ChronoUnit.SECONDS);
+ return expires.isBefore(Instant.now())
+ ? NLS.bind(ProvSDKMessages.TrustPreferencePage_DateExpiredSince, expires)
+ : NLS.bind(ProvSDKMessages.TrustPreferencePage_DataValidExpires, expires);
+ }, x509 -> {
+ try {
+ x509.checkValidity();
+ return ProvSDKMessages.TrustPreferencePage_DateValid;
+ } catch (CertificateExpiredException expired) {
+ return ProvSDKMessages.TrustPreferencePage_DateExpired;
+ } catch (CertificateNotYetValidException notYetValid) {
+ return ProvSDKMessages.TrustPreferencePage_DateNotYetvalid;
+ }
+ }, tableColumnLayout, 8);
+
+ updateInput();
+
+ Composite buttonComposite = createVerticalButtonBar(res);
+ buttonComposite.setLayoutData(new GridData(SWT.DEFAULT, SWT.BEGINNING, false, false));
+
+ Button exportButton = new Button(buttonComposite, SWT.PUSH);
+ exportButton.setText(ProvSDKMessages.TrustPreferencePage_export);
+ setVerticalButtonLayoutData(exportButton);
+ exportButton.setEnabled(false);
+
+ exportButton.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> {
+ Object element = viewer.getStructuredSelection().getFirstElement();
+ FileDialog dialog = new FileDialog(getShell(), SWT.SAVE);
+ dialog.setFilterPath(getFilterPath(EXPORT_FILTER_PATH));
+ dialog.setText(ProvSDKMessages.TrustPreferencePage_fileExportTitle);
+ dialog.setFilterExtensions(new String[] { "*.asc" }); //$NON-NLS-1$
+ FileDialog destination = new FileDialog(exportButton.getShell(), SWT.SAVE);
+ destination.setFilterPath(getFilterPath(EXPORT_FILTER_PATH));
+ destination.setText(ProvSDKMessages.TrustPreferencePage_Export);
+ if (element instanceof X509Certificate) {
+ X509Certificate cert = (X509Certificate) element;
+ destination.setFilterExtensions(new String[] { "*.der" }); //$NON-NLS-1$
+ destination.setFileName(cert.getSerialNumber().toString() + ".der"); //$NON-NLS-1$
+ String path = destination.open();
+ setFilterPath(EXPORT_FILTER_PATH, destination.getFilterPath());
+ if (path == null) {
+ return;
+ }
+ File destinationFile = new File(path);
+ try (FileOutputStream output = new FileOutputStream(destinationFile)) {
+ output.write(cert.getEncoded());
+ } catch (IOException | CertificateEncodingException ex) {
+ ProvSDKUIActivator.getDefault().getLog()
+ .log(new Status(IStatus.ERROR, ProvSDKUIActivator.PLUGIN_ID, ex.getMessage(), ex));
+ }
+ } else {
+ PGPPublicKey key = (PGPPublicKey) element;
+ destination.setFilterExtensions(new String[] { "*.asc" }); //$NON-NLS-1$
+ destination.setFileName(PGPPublicKeyService.toHexFingerprint(key) + ".asc"); //$NON-NLS-1$
+ String path = destination.open();
+ setFilterPath(EXPORT_FILTER_PATH, destination.getFilterPath());
+ if (path == null) {
+ return;
+ }
+ File destinationFile = new File(path);
+ try (OutputStream output = new ArmoredOutputStream(new FileOutputStream(destinationFile))) {
+ key.encode(output);
+ } catch (IOException ex) {
+ ProvSDKUIActivator.getDefault().getLog()
+ .log(new Status(IStatus.ERROR, ProvSDKUIActivator.PLUGIN_ID, ex.getMessage(), ex));
+ }
+ }
+ }));
+
+ Button addButton = new Button(buttonComposite, SWT.PUSH);
+ addButton.setText(ProvSDKMessages.TrustPreferencePage_addPGPKeyButtonLabel);
+ addButton.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> {
+ FileDialog dialog = new FileDialog(getShell(), SWT.OPEN);
+ dialog.setFilterPath(getFilterPath(ADD_FILTER_PATH));
+ dialog.setText(ProvSDKMessages.TrustPreferencePage_fileImportTitle);
+ dialog.setFilterExtensions(new String[] { "*.asc;*.der" }); //$NON-NLS-1$
+ String path = dialog.open();
+ setFilterPath(ADD_FILTER_PATH, dialog.getFilterPath());
+ if (path == null) {
+ return;
+ }
+
+ if (path.endsWith(".der")) { //$NON-NLS-1$
+ try {
+ CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); //$NON-NLS-1$
+ try (InputStream input = Files.newInputStream(Paths.get(path))) {
+ Collection<? extends Certificate> certificates = certificateFactory.generateCertificates(input);
+ trustedCertificates.addAll(certificates);
+ updateInput();
+ viewer.setSelection(new StructuredSelection(certificates.toArray()), true);
+ }
+ } catch (IOException | CertificateException ex) {
+ ProvSDKUIActivator.getDefault().getLog()
+ .log(new Status(IStatus.ERROR, ProvSDKUIActivator.PLUGIN_ID, ex.getMessage(), ex));
+ }
+ } else {
+ HashSet<Object> oldKeys = new HashSet<>(trustedKeys.all());
+ trustedKeys.add(new File(path));
+
+ HashSet<Object> newKeys = new HashSet<>(trustedKeys.all());
+ newKeys.removeAll(oldKeys);
+ updateInput();
+ viewer.setSelection(new StructuredSelection(newKeys.toArray()), true);
+ }
+ dirty = true;
+ }));
+ setVerticalButtonLayoutData(addButton);
+
+ Button removeButton = new Button(buttonComposite, SWT.PUSH);
+ removeButton.setText(ProvSDKMessages.TrustPreferencePage_removePGPKeyButtonLabel);
+ removeButton.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> {
+ for (Object key : getSelectedKeys()) {
+ if (key instanceof PGPPublicKey) {
+ trustedKeys.remove((PGPPublicKey) key);
+ } else {
+ trustedCertificates.remove(key);
+ }
+ }
+ updateInput();
+ dirty = true;
+ }));
+ removeButton.setEnabled(false);
+ setVerticalButtonLayoutData(removeButton);
+
+ Runnable details = () -> {
+ Object element = viewer.getStructuredSelection().getFirstElement();
+ if (element instanceof X509Certificate) {
+ // create and open dialog for certificate chain
+ CertificateLabelProvider.openDialog(getShell(), (X509Certificate) element);
+ } else {
+ new PGPPublicKeyViewDialog(getShell(), (PGPPublicKey) element,
+ provisioningAgent.getService(PGPPublicKeyService.class)).open();
+ }
+ };
+
+ Button detailsButton = new Button(buttonComposite, SWT.PUSH);
+ detailsButton.setText(ProvSDKMessages.TrustPreferencePage_Details);
+ detailsButton.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> details.run()));
+ detailsButton.setEnabled(false);
+ setVerticalButtonLayoutData(detailsButton);
+
+ viewer.addPostSelectionChangedListener(e -> {
+ List<Object> selectedKeys = getSelectedKeys();
+ exportButton.setEnabled(selectedKeys.size() == 1);
+ Collection<PGPPublicKey> keys = trustedKeys.all();
+ removeButton.setEnabled(
+ selectedKeys.stream().anyMatch(o -> keys.contains(o) || trustedCertificates.contains(o)));
+ detailsButton.setEnabled(selectedKeys.size() == 1);
+ });
+
+ Button trustAllButton = WidgetFactory.button(SWT.CHECK).text(ProvSDKMessages.TrustPreferencePage_TrustAll)
+ .font(JFaceResources.getDialogFont()).create(res);
+ setButtonLayoutData(trustAllButton).verticalSpan = 2;
+ trustAllButton.setSelection(certificateChecker.isTrustAlways());
+ trustAllButton.addSelectionListener(widgetSelectedAdapter(e -> {
+ if (trustAllButton.getSelection()) {
+ // Prompt the user to ensure they really understand what they've chosen, the
+ // risk, and where the preference is stored if they wish to change it in the
+ // future. Also ensure that the default button is no so that they must
+ // explicitly click the yes button, not just hit enter.
+ MessageDialog messageDialog = new MessageDialog(getShell(),
+ ProvSDKMessages.TrustPreferencePage_TrustAllConfirmationTitle, null,
+ ProvSDKMessages.TrustPreferencePage_TrustAllConfirmationDescription, MessageDialog.QUESTION,
+ new String[] { ProvSDKMessages.TrustPreferencePage_TrustAllYes,
+ ProvSDKMessages.TrustPreferencePage_TrustAllNo },
+ 1) {
+ @Override
+ public Image getImage() {
+ return getWarningImage();
+ }
+ };
+ int result = messageDialog.open();
+ if (result != Window.OK) {
+ certificateChecker.setTrustAlways(false);
+ // Restore the setting.
+ trustAllButton.setSelection(false);
+ } else {
+ certificateChecker.setTrustAlways(true);
+ }
+
+ }
+ }));
+
+ viewer.addDoubleClickListener(e -> details.run());
+
+ typeColumn.getColumn().pack();
+
+ createMenu();
+
+ return res;
+ }
+
+ private void createMenu() {
+ Control control = viewer.getControl();
+ Menu menu = new Menu(control);
+ control.setMenu(menu);
+ MenuItem item = new MenuItem(menu, SWT.PUSH);
+ item.setText(ProvSDKMessages.TrustPreferencePage_CopyFingerprint);
+ item.addSelectionListener(widgetSelectedAdapter(e -> {
+ Object element = viewer.getStructuredSelection().getFirstElement();
+ if (element instanceof PGPPublicKey) {
+ Clipboard clipboard = new Clipboard(getShell().getDisplay());
+ clipboard.setContents(new Object[] {
+ PGPPublicKeyService.toHexFingerprint((PGPPublicKey) element) },
+ new Transfer[] { TextTransfer.getInstance() });
+ clipboard.dispose();
+ }
+ }));
+
+ viewer.addSelectionChangedListener(
+ e -> item.setEnabled(viewer.getStructuredSelection().getFirstElement() instanceof PGPPublicKey));
+ }
+
+ private TableViewerColumn createColumn(TableViewer tableViewer, String text, Function<PGPPublicKey, String> pgpMap,
+ Function<X509Certificate, String> x509Map, TableColumnLayout tableColumnLayout, int columnWeight) {
+ TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE);
+ column.getColumn().setText(text);
+ column.setLabelProvider(new PGPOrX509ColumnLabelProvider(pgpMap, x509Map));
+
+ tableColumnLayout.setColumnData(column.getColumn(), new ColumnWeightData(columnWeight));
+ return column;
+ }
+
+ private void updateInput() {
+ Set<PGPPublicKey> input = new TreeSet<>((k1, k2) -> {
+ return Arrays.compare(k1.getFingerprint(), k2.getFingerprint());
+ });
+ input = new LinkedHashSet<>();
+ Collection<PGPPublicKey> all = trustedKeys.all();
+ input = new TreeSet<>((k1, k2) -> {
+ boolean contains1 = all.contains(k1);
+ boolean contains2 = all.contains(k2);
+ if (contains1 != contains2) {
+ if (contains1) {
+ return -1;
+ }
+ return 1;
+ }
+ return PGPPublicKeyService.toHexFingerprint(k1).compareTo(PGPPublicKeyService.toHexFingerprint(k2));
+ });
+ input.addAll(all);
+ input.addAll(contributedTrustedKeys.keySet());
+
+ LinkedHashSet<Object> allInput = new LinkedHashSet<>();
+ allInput.addAll(trustedCertificates);
+ allInput.addAll(input);
+ viewer.setInput(allInput);
+ }
+
+ @SuppressWarnings("unchecked")
+ private List<Object> getSelectedKeys() {
+ return viewer.getStructuredSelection().toList();
+ }
+
+ private Composite createVerticalButtonBar(Composite parent) {
+ // Create composite.
+ Composite composite = new Composite(parent, SWT.NONE);
+ initializeDialogUnits(composite);
+
+ // create a layout with spacing and margins appropriate for the font
+ // size.
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 1;
+ layout.marginWidth = 5;
+ layout.marginHeight = 0;
+ layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
+ layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
+ composite.setLayout(layout);
+
+ return composite;
+ }
+
+ private GridData setVerticalButtonLayoutData(Button button) {
+ GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
+ Point minSize = button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
+ data.widthHint = Math.max(widthHint, minSize.x);
+ button.setLayoutData(data);
+ return data;
+ }
+
+ private String getFilterPath(String key) {
+ IDialogSettings dialogSettings = DialogSettings
+ .getOrCreateSection(ProvSDKUIActivator.getDefault().getDialogSettings(), getClass().getName());
+ String filterPath = dialogSettings.get(key);
+ if (filterPath == null) {
+ filterPath = System.getProperty("user.home"); //$NON-NLS-1$
+ }
+ return filterPath;
+ }
+
+ private void setFilterPath(String key, String filterPath) {
+ if (filterPath != null) {
+ IDialogSettings dialogSettings = DialogSettings
+ .getOrCreateSection(ProvSDKUIActivator.getDefault().getDialogSettings(), getClass().getName());
+ dialogSettings.put(key, filterPath);
+ }
+ }
+
+ private String getBundleName(Bundle bundle) {
+ String value = bundle.getHeaders().get(Constants.BUNDLE_NAME);
+ return value == null ? bundle.getSymbolicName() : Platform.getResourceString(bundle, value);
+ }
+
+ @Override
+ protected void performDefaults() {
+ trustedCertificates = new LinkedHashSet<>(certificateChecker.getPreferenceTrustedCertificates());
+ trustedKeys = certificateChecker.getPreferenceTrustedKeys();
+ updateInput();
+ super.performDefaults();
+ }
+
+ @Override
+ public boolean performOk() {
+ if (dirty) {
+ IStatus persistTrustedCertificates = certificateChecker.persistTrustedCertificates(trustedCertificates);
+ IStatus persistTrustedKeys = certificateChecker.persistTrustedKeys(trustedKeys);
+ dirty = false;
+ return persistTrustedKeys.isOK() && persistTrustedCertificates.isOK();
+ }
+ return true;
+ }
+
+ private static class PGPOrX509ColumnLabelProvider extends ColumnLabelProvider {
+ private Function<PGPPublicKey, String> pgpMap;
+ private Function<X509Certificate, String> x509map;
+
+ public PGPOrX509ColumnLabelProvider(Function<PGPPublicKey, String> pgpMap,
+ Function<X509Certificate, String> x509map) {
+ this.pgpMap = pgpMap;
+ this.x509map = x509map;
+ }
+
+ @Override
+ public String getText(Object element) {
+ if (element instanceof PGPPublicKey) {
+ return pgpMap.apply((PGPPublicKey) element);
+ }
+ if (element instanceof X509Certificate) {
+ return x509map.apply((X509Certificate) element);
+ }
+ return super.getText(element);
+ }
+ }
+
+}
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/messages.properties b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/messages.properties
index 0fd03e610..93df84f7f 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/messages.properties
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/messages.properties
@@ -12,13 +12,13 @@
# IBM Corporation - initial API and implementation
###############################################################################
-Handler_CannotLaunchUI=Cannot complete the request. This installation has not been configured properly for Software Updates. See the error log for details.
+Handler_CannotLaunchUI=Cannot complete the request. This installation has not been configured properly for Software Updates. See the error log for details.
Handler_SDKUpdateUIMessageTitle=Software Updates
InstallNewSoftwareHandler_ProgressTaskName=Searching for available software...
PreferenceInitializer_Error=Error accessing preferences.
ProvSDKUIActivator_ErrorSavingPrefs=Error saving update preferences
ProvSDKUIActivator_NoSelfProfile=Could not locate the running profile instance. The eclipse.p2.data.area and eclipse.p2.profile properties may not be set correctly in this application's config.ini file.
-ProvSDKUIActivator_OpenWizardAnyway=The software items you selected may not be valid with your current installation. Do you want to open the wizard anyway to review the selections?
+ProvSDKUIActivator_OpenWizardAnyway=The software items you selected may not be valid with your current installation. Do you want to open the wizard anyway to review the selections?
ProvSDKUIActivator_Question=Question
ProvisioningPreferencePage_AlwaysOpenWizard=&Open the wizard anyway to review or change selections
ProvisioningPreferencePage_BrowsingPrefsGroup=Browsing for updates
@@ -28,9 +28,37 @@ ProvisioningPreferencePage_NeverOpenWizard=&Report the problems and do not open
ProvisioningPreferencePage_OpenWizardIfInvalid=When software selected for an install wizard may not be compatible
ProvisioningPreferencePage_PromptToOpenWizard=As&k me what to do when it happens
ProvisioningPreferencePage_UninstallUpdateLink=<a>Uninstall or update</a> software that is already installed
+ProvisioningPreferencePage_checkCompatibleWithCurrentJRE=Verify provisioning operation is compatible with currently running &JRE
SDKPolicy_PrefPageName=Available Software Sites
-UpdateHandler_NoSitesMessage=There are no update sites to search. Do you wish to open the "Available Software Sites" preferences?
+UpdateHandler_NoSitesMessage=There are no update sites to search. Do you wish to open the "Available Software Sites" preferences?
UpdateHandler_NoSitesTitle=No Updates Found
UpdateHandler_ProgressTaskName=Checking for updates...
RemediationOperation_ResolveJobName=Searching alternate solutions...
-RemediationOperation_ResolveJobTask=Some items cannot be at the highest version. Searching for the highest common denominator ... \ No newline at end of file
+RemediationOperation_ResolveJobTask=Some items cannot be at the highest version. Searching for the highest common denominator ...
+TrustPreferencePage_title=Trust
+TrustPreferencePage_export=\uD83D\uDCE5 E&xport...
+TrustPreferencePage_fileExportTitle=Export PGP public key
+TrustPreferencePage_fileImportTitle=Import PGP public key to trust
+TrustPreferencePage_addPGPKeyButtonLabel=\u2795 &Add...
+TrustPreferencePage_Contributor=Contributor
+TrustPreferencePage_CopyFingerprint=Copy Fingerprint
+TrustPreferencePage_DataValidExpires=\u2714\uFE0F Valid, expires {0}
+TrustPreferencePage_DateExpired=\u274C Expired
+TrustPreferencePage_DateExpiredSince=\u274C Expired since {0}
+TrustPreferencePage_DateNotYetvalid=\u274C Not yet valid
+TrustPreferencePage_DateNotYetValid=\u274C Not yet valid, starts {0}
+TrustPreferencePage_DateValid=\u2714\uFE0F Valid
+TrustPreferencePage_Details=\uD83D\uDD0D D&etails...
+TrustPreferencePage_Export=Export...
+TrustPreferencePage_FingerprintIdColumn=Fingerprint/Id
+TrustPreferencePage_NameColumn=Name
+TrustPreferencePage_PreferenceContributor=<preferences>
+TrustPreferencePage_removePGPKeyButtonLabel=\uD83D\uDDD1\uFE0F &Remove
+TrustPreferencePage_pgpIntro=Artifacts verifiably signed by the following trusted certificates and PGP public keys will be installed without confirmation.
+TrustPreferencePage_TrustAll=Trust all content
+TrustPreferencePage_TrustAllConfirmationDescription=Are you certain you wish to trust all content, including unsigned content of unknown origin, with no confirmation for all future operations?
+TrustPreferencePage_TrustAllConfirmationTitle=Always Trust Everything Confirmation
+TrustPreferencePage_TrustAllNo=No, Prompt Me Instead
+TrustPreferencePage_TrustAllYes=Yes, I Accept the Risk
+TrustPreferencePage_TypeColumn=Type
+TrustPreferencePage_ValidityColumn=Validity Dates
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/PreferenceConstants.java b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/PreferenceConstants.java
index 8da529da9..54c0c0b5f 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/PreferenceConstants.java
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/PreferenceConstants.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Ericsson AB (Hamdan Msheik) - Bug 396420 - Control Install dialog through preference customization
@@ -27,4 +27,5 @@ public class PreferenceConstants {
public static final String PREF_HIDE_INSTALLED = "hideAlreadyInstalled"; //$NON-NLS-1$
public static final String PREF_OPEN_WIZARD_ON_ERROR_PLAN = "allowNonOKPlan"; //$NON-NLS-1$
public static final String PREF_LICENSE_DIGESTS = "licenseDigestList"; //$NON-NLS-1$
+ public static final String PREF_CHECK_AGAINST_CURRENT_JRE = "checkAgainstCurrentJRE"; //$NON-NLS-1$
}
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/PreferenceInitializer.java b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/PreferenceInitializer.java
index a5b61cd47..9a1aeb9d6 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/PreferenceInitializer.java
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/PreferenceInitializer.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Ericsson AB (Hamdan Msheik) - Bug 396420 - Control Install dialog through preference customization
@@ -62,6 +62,7 @@ public class PreferenceInitializer extends AbstractPreferenceInitializer {
// default values
node.putBoolean(PreferenceConstants.PREF_SHOW_LATEST_VERSION, true);
node.put(PreferenceConstants.PREF_OPEN_WIZARD_ON_ERROR_PLAN, MessageDialogWithToggle.PROMPT);
+ node.putBoolean(PreferenceConstants.PREF_CHECK_AGAINST_CURRENT_JRE, true);
}
private static IAgentLocation getDefaultAgentLocation() {
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/ProvisioningPreferencePage.java b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/ProvisioningPreferencePage.java
index 5f76933f4..913a38b71 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/ProvisioningPreferencePage.java
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/ProvisioningPreferencePage.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -29,7 +29,7 @@ import org.osgi.service.prefs.Preferences;
/**
* Preference page for general provisioning preferences.
- *
+ *
* @since 3.4
*/
@@ -38,6 +38,7 @@ public class ProvisioningPreferencePage extends PreferencePage implements IWorkb
private Group browsingGroup, validateGroup;
private Button showLatestRadio, showAllRadio;
private Button alwaysShowFailedPlan, neverShowFailedPlan, promptOnFailedPlan;
+ private Button checkAgainstCurrentCheckbox;
@Override
protected Control createContents(Composite parent) {
@@ -96,11 +97,14 @@ public class ProvisioningPreferencePage extends PreferencePage implements IWorkb
gd.horizontalSpan = 3;
promptOnFailedPlan.setLayoutData(gd);
+ checkAgainstCurrentCheckbox = new Button(container, SWT.CHECK);
+ checkAgainstCurrentCheckbox.setText(ProvSDKMessages.ProvisioningPreferencePage_checkCompatibleWithCurrentJRE);
+
//Link to installed software page
//See https://bugs.eclipse.org/bugs/show_bug.cgi?id=313242
Link link = new Link(container, SWT.PUSH);
link.setText(ProvSDKMessages.ProvisioningPreferencePage_UninstallUpdateLink);
- link.addListener(SWT.Selection, event -> ProvUI.openInstallationDialog(event));
+ link.addListener(SWT.Selection, ProvUI::openInstallationDialog);
initialize();
@@ -117,6 +121,7 @@ public class ProvisioningPreferencePage extends PreferencePage implements IWorkb
alwaysShowFailedPlan.setSelection(openWizard.equals(MessageDialogWithToggle.ALWAYS));
neverShowFailedPlan.setSelection(openWizard.equals(MessageDialogWithToggle.NEVER));
promptOnFailedPlan.setSelection(openWizard.equals(MessageDialogWithToggle.PROMPT));
+ checkAgainstCurrentCheckbox.setSelection(pref.getBoolean(PreferenceConstants.PREF_CHECK_AGAINST_CURRENT_JRE));
}
@Override
@@ -129,6 +134,8 @@ public class ProvisioningPreferencePage extends PreferencePage implements IWorkb
alwaysShowFailedPlan.setSelection(openWizard.equals(MessageDialogWithToggle.ALWAYS));
neverShowFailedPlan.setSelection(openWizard.equals(MessageDialogWithToggle.NEVER));
promptOnFailedPlan.setSelection(openWizard.equals(MessageDialogWithToggle.PROMPT));
+ checkAgainstCurrentCheckbox
+ .setSelection(pref.getBoolean(PreferenceConstants.PREF_CHECK_AGAINST_CURRENT_JRE, false));
}
@Override
@@ -141,7 +148,7 @@ public class ProvisioningPreferencePage extends PreferencePage implements IWorkb
pref.setValue(PreferenceConstants.PREF_OPEN_WIZARD_ON_ERROR_PLAN, MessageDialogWithToggle.NEVER);
else
pref.setValue(PreferenceConstants.PREF_OPEN_WIZARD_ON_ERROR_PLAN, MessageDialogWithToggle.PROMPT);
-
+ pref.setValue(PreferenceConstants.PREF_CHECK_AGAINST_CURRENT_JRE, checkAgainstCurrentCheckbox.getSelection());
ProvSDKUIActivator.getDefault().savePreferences();
return true;
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/.classpath b/bundles/org.eclipse.equinox.p2.ui/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.ui/.classpath
+++ b/bundles/org.eclipse.equinox.p2.ui/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.ui/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.ui/.settings/org.eclipse.jdt.core.prefs
index 792214af7..8d3182a1a 100644
--- a/bundles/org.eclipse.equinox.p2.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.ui/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -88,6 +89,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=erro
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -123,8 +125,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -138,7 +140,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -259,7 +260,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -330,7 +330,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -475,7 +474,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.ui/META-INF/MANIFEST.MF
index a42189cdc..433d2e820 100644
--- a/bundles/org.eclipse.equinox.p2.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %bundleName
Bundle-SymbolicName: org.eclipse.equinox.p2.ui;singleton:=true
-Bundle-Version: 2.5.700.qualifier
+Bundle-Version: 2.7.400.qualifier
Bundle-Activator: org.eclipse.equinox.internal.p2.ui.ProvUIActivator
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -19,9 +19,9 @@ Export-Package: org.eclipse.equinox.internal.p2.ui;
org.eclipse.equinox.internal.p2.ui.dialogs;
x-friends:="org.eclipse.equinox.p2.ui.admin,
org.eclipse.equinox.p2.ui.sdk.scheduler,
+ org.eclipse.equinox.p2.ui.sdk,
org.eclipse.pde.ui,
org.eclipse.equinox.p2.ui.importexport",
- org.eclipse.equinox.internal.p2.ui.misc;x-internal:=true,
org.eclipse.equinox.internal.p2.ui.model;
x-friends:="org.eclipse.equinox.internal.p2.ui.analysis,
org.eclipse.equinox.p2.ui.admin,
@@ -29,25 +29,30 @@ Export-Package: org.eclipse.equinox.internal.p2.ui;
org.eclipse.equinox.p2.ui.sdk,
org.eclipse.equinox.p2.ui.importexport",
org.eclipse.equinox.internal.p2.ui.query;x-friends:="org.eclipse.equinox.internal.p2.ui.analysis,org.eclipse.equinox.p2.ui.admin",
- org.eclipse.equinox.internal.p2.ui.viewers;x-friends:="org.eclipse.equinox.p2.ui.admin,org.eclipse.equinox.p2.ui.sdk.scheduler,org.eclipse.equinox.p2.ui.importexport",
- org.eclipse.equinox.p2.ui;version="2.0.0"
+ org.eclipse.equinox.internal.p2.ui.viewers;x-friends:="org.eclipse.equinox.p2.ui.admin,org.eclipse.equinox.p2.ui.sdk,org.eclipse.equinox.p2.ui.sdk.scheduler,org.eclipse.equinox.p2.ui.importexport",
+ org.eclipse.equinox.p2.ui;version="2.6.0"
Require-Bundle: org.eclipse.ui;bundle-version="3.107.0",
- org.eclipse.core.runtime;bundle-version="[3.11.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.18.0,4.0.0)",
org.eclipse.core.expressions,
org.eclipse.equinox.security.ui;bundle-version="[1.0.0,2.0.0)",
org.eclipse.e4.ui.dialogs;bundle-version="1.1.600"
-Import-Package: com.ibm.icu.text,
- javax.xml.parsers,
+Import-Package: javax.xml.parsers,
+ org.bouncycastle.bcpg;version="1.65.0",
+ org.bouncycastle.openpgp;version="1.65.0",
+ org.bouncycastle.util;version="1.65.1",
+ org.eclipse.equinox.internal.p2.artifact.processors.pgp,
org.eclipse.equinox.internal.p2.artifact.repository,
org.eclipse.equinox.internal.p2.core.helpers,
org.eclipse.equinox.internal.p2.director,
+ org.eclipse.equinox.internal.p2.extensionlocation,
org.eclipse.equinox.internal.p2.metadata,
org.eclipse.equinox.internal.p2.metadata.repository,
+ org.eclipse.equinox.internal.p2.operations,
org.eclipse.equinox.internal.p2.repository.helpers,
org.eclipse.equinox.internal.provisional.configurator,
org.eclipse.equinox.internal.provisional.p2.core.eventbus,
org.eclipse.equinox.internal.provisional.p2.repository,
- org.eclipse.equinox.p2.core;version="[2.0.0,3.0.0)",
+ org.eclipse.equinox.p2.core;version="[2.7.0,3.0.0)",
org.eclipse.equinox.p2.core.spi;version="[2.0.0,3.0.0)",
org.eclipse.equinox.p2.engine;version="[2.0.0,3.0.0)",
org.eclipse.equinox.p2.engine.query;version="[2.0.0,3.0.0)",
@@ -58,12 +63,14 @@ Import-Package: com.ibm.icu.text,
org.eclipse.equinox.p2.query;version="[2.0.0,3.0.0)",
org.eclipse.equinox.p2.repository;version="[2.0.0,3.0.0)",
org.eclipse.equinox.p2.repository.artifact;version="[2.0.0,3.0.0)",
+ org.eclipse.equinox.p2.repository.artifact.spi;version="[2.0.0,3.0.0)",
org.eclipse.equinox.p2.repository.metadata;version="[2.0.0,3.0.0)",
+ org.eclipse.equinox.p2.repository.spi;version="2.0.0",
org.osgi.framework;version="1.6.0",
org.osgi.service.packageadmin;version="1.2.0",
org.w3c.dom,
org.xml.sax
Service-Component: OSGI-INF/repositoryTracker_component.xml, OSGI-INF/serviceui.xml
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.equinox.p2.ui
diff --git a/bundles/org.eclipse.equinox.p2.ui/forceQualifierUpdate.txt b/bundles/org.eclipse.equinox.p2.ui/forceQualifierUpdate.txt
index a7d33c907..1cb35fada 100644
--- a/bundles/org.eclipse.equinox.p2.ui/forceQualifierUpdate.txt
+++ b/bundles/org.eclipse.equinox.p2.ui/forceQualifierUpdate.txt
@@ -1,3 +1,4 @@
# To force a version qualifier update add the bug here
Bug 403352 - Update all parent versions to match our build stream
Bug 509973 - Comparator errors in I20170105-0320
+Bug 572789 - Comparator errors in I20210412-1800 after moving to compiler from 4.20 M1 \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.ui/plugin.xml b/bundles/org.eclipse.equinox.p2.ui/plugin.xml
index 6f6031e2e..87e8645fd 100644
--- a/bundles/org.eclipse.equinox.p2.ui/plugin.xml
+++ b/bundles/org.eclipse.equinox.p2.ui/plugin.xml
@@ -12,6 +12,13 @@
<adapter type="org.eclipse.equinox.p2.repository.metadata.IMetadataRepository"/>
<adapter type="org.eclipse.equinox.p2.repository.artifact.IArtifactRepository"/>
</factory>
+ <factory
+ adaptableType="org.eclipse.ui.internal.about.AboutPluginsPage"
+ class="org.eclipse.equinox.internal.p2.ui.KeySigningInfoFactory">
+ <adapter
+ type="org.eclipse.ui.internal.about.AboutBundleData$ExtendedSigningInfo">
+ </adapter>
+ </factory>
</extension>
<extension
diff --git a/bundles/org.eclipse.equinox.p2.ui/pom.xml b/bundles/org.eclipse.equinox.p2.ui/pom.xml
index 234eeb862..13cace16e 100644
--- a/bundles/org.eclipse.equinox.p2.ui/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.ui/pom.xml
@@ -14,11 +14,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.ui</artifactId>
- <version>2.5.700-SNAPSHOT</version>
+ <version>2.7.400-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ElementQueryDescriptor.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ElementQueryDescriptor.java
index 69dc82e0c..f6da40030 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ElementQueryDescriptor.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ElementQueryDescriptor.java
@@ -22,7 +22,7 @@ import org.eclipse.equinox.p2.query.*;
* ElementQueryDescriptor represents everything needed to run a query, including
* the object to be queried, the query to use, and the query result. It can optionally
* wrap the query results in a UI element.
- *
+ *
* @since 3.4
*/
public class ElementQueryDescriptor {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ElementWrapper.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ElementWrapper.java
index 2a9d60c49..0cc7fbc4b 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ElementWrapper.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ElementWrapper.java
@@ -1,4 +1,4 @@
-/*******************************************************************************
+/*******************************************************************************
* Copyright (c) 2009, 2010 EclipseSource and others.
*
* This
@@ -49,7 +49,7 @@ public abstract class ElementWrapper {
/**
* Determines if this object should be accepted and wrapped
- * by a UI element.
+ * by a UI element.
*/
protected boolean shouldWrap(Object o) {
return true;
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/IProvHelpContextIds.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/IProvHelpContextIds.java
index ec96746e6..3c75aa5e9 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/IProvHelpContextIds.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/IProvHelpContextIds.java
@@ -7,41 +7,43 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.internal.p2.ui;
-
/**
* Help context ids for the P2 UI
* <p>
* This interface contains constants only; it is not intended to be implemented
* or extended.
* </p>
+ *
* @since 3.4
* @noextend This interface is not intended to be extended by clients.
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface IProvHelpContextIds {
- public static final String PREFIX = ProvUIActivator.PLUGIN_ID + "."; //$NON-NLS-1$
+ String PREFIX = ProvUIActivator.PLUGIN_ID + "."; //$NON-NLS-1$
+
+ String REVERT_CONFIGURATION_WIZARD = PREFIX + "revert_configuration_wizard_context"; //$NON-NLS-1$
- public static final String REVERT_CONFIGURATION_WIZARD = PREFIX + "revert_configuration_wizard_context"; //$NON-NLS-1$
+ String UNINSTALL_WIZARD = PREFIX + "uinstall_wizard_context"; //$NON-NLS-1$
- public static final String UNINSTALL_WIZARD = PREFIX + "uinstall_wizard_context"; //$NON-NLS-1$
+ String UPDATE_WIZARD = PREFIX + "update_wizard_context"; //$NON-NLS-1$
- public static final String UPDATE_WIZARD = PREFIX + "update_wizard_context"; //$NON-NLS-1$
+ String ADD_REPOSITORY_DIALOG = PREFIX + "add_repository_dialog_context"; //$NON-NLS-1$
- public static final String ADD_REPOSITORY_DIALOG = PREFIX + "add_repository_dialog_context"; //$NON-NLS-1$
+ String INSTALL_WIZARD = PREFIX + "install_wizard_context"; //$NON-NLS-1$
- public static final String INSTALL_WIZARD = PREFIX + "install_wizard_context"; //$NON-NLS-1$
+ String REPOSITORY_MANIPULATION_DIALOG = PREFIX + "repository_manipulation_dialog_context"; //$NON-NLS-1$
- public static final String REPOSITORY_MANIPULATION_DIALOG = PREFIX + "repository_manipulation_dialog_context"; //$NON-NLS-1$
+ String INSTALLED_SOFTWARE = PREFIX + "installed_software_context"; //$NON-NLS-1$
- public static final String INSTALLED_SOFTWARE = PREFIX + "installed_software_context"; //$NON-NLS-1$
+ String AVAILABLE_SOFTWARE = PREFIX + "available_software_context"; //$NON-NLS-1$
- public static final String AVAILABLE_SOFTWARE = PREFIX + "available_software_context"; //$NON-NLS-1$
+ String TRUST_DIALOG = PREFIX + "trust_dialog_context"; //$NON-NLS-1$
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/KeySigningInfoFactory.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/KeySigningInfoFactory.java
new file mode 100644
index 000000000..1134dbb56
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/KeySigningInfoFactory.java
@@ -0,0 +1,184 @@
+/*******************************************************************************
+ * Copyright (c) 2022 Eclipse contributors and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.equinox.internal.p2.ui;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.*;
+import org.bouncycastle.openpgp.*;
+import org.eclipse.core.runtime.*;
+import org.eclipse.equinox.internal.p2.artifact.processors.pgp.PGPPublicKeyStore;
+import org.eclipse.equinox.internal.p2.artifact.processors.pgp.PGPSignatureVerifier;
+import org.eclipse.equinox.p2.core.IProvisioningAgent;
+import org.eclipse.equinox.p2.metadata.IArtifactKey;
+import org.eclipse.equinox.p2.query.IQueryResult;
+import org.eclipse.equinox.p2.repository.artifact.*;
+import org.eclipse.equinox.p2.repository.spi.PGPPublicKeyService;
+import org.eclipse.ui.internal.about.AboutBundleData;
+import org.eclipse.ui.internal.about.AboutPluginsPage;
+import org.osgi.framework.Bundle;
+
+/**
+ * A factory used by the {@link AboutPluginsPage} to provide extended signing
+ * information, in particular information about PGP signing.
+ *
+ * @since 2.7.400
+ */
+public class KeySigningInfoFactory implements IAdapterFactory {
+
+ private static final Class<?>[] CLASSES = new Class[] { AboutBundleData.ExtendedSigningInfo.class };
+
+ @Override
+ public <T> T getAdapter(Object adaptableObject, Class<T> adapterType) {
+ if (adapterType == AboutBundleData.ExtendedSigningInfo.class) {
+ return adapterType.cast(new AboutBundleData.ExtendedSigningInfo() {
+ private final Map<File, Map<PGPSignature, PGPPublicKey>> bundlePoolArtficactSigningDetails = getBundlePoolArtficactPGPSigningDetails();
+
+ @Override
+ public boolean isSigned(Bundle bundle) {
+ return getDetails(bundle) != null;
+ }
+
+ @Override
+ public String getSigningType(Bundle bundle) {
+ return ProvUIMessages.KeySigningInfoFactory_PGPSigningType;
+ }
+
+ @Override
+ public String getSigningDetails(Bundle bundle) {
+ Map<PGPSignature, PGPPublicKey> details = getDetails(bundle);
+ if (details != null) {
+ PGPPublicKeyService keyService = getKeyService();
+ List<String> lines = new ArrayList<>();
+ for (PGPPublicKey key : details.values()) {
+ if (keyService != null) {
+ // Be sure to normalize/enhance the key so we properly don't show
+ // self-signatures.
+ key = keyService.addKey(key);
+ }
+ if (!lines.isEmpty()) {
+ lines.add(""); //$NON-NLS-1$
+ }
+ addDetails(key, lines, ""); //$NON-NLS-1$
+ if (keyService != null) {
+ Set<PGPPublicKey> verifiedCertifications = keyService.getVerifiedCertifications(key);
+ boolean first = true;
+ for (PGPPublicKey verifyingKey : verifiedCertifications) {
+ /// Don't show self-signatures.
+ if (!verifyingKey.equals(key)) {
+ if (first) {
+ lines.add(" " + ProvUIMessages.KeySigningInfoFactory_KeySignersSection); //$NON-NLS-1$
+ first = false;
+ }
+ addDetails(verifyingKey, lines, " "); //$NON-NLS-1$
+ }
+ }
+ }
+ }
+ return String.join("\n", lines); //$NON-NLS-1$
+ }
+ return null;
+ }
+
+ @Override
+ public Date getSigningTime(Bundle bundle) {
+ Map<PGPSignature, PGPPublicKey> details = getDetails(bundle);
+ return details == null ? null : details.keySet().iterator().next().getCreationTime();
+ }
+
+ private void addDetails(PGPPublicKey key, List<String> lines, String indentation) {
+ lines.add(indentation + ProvUIMessages.KeySigningInfoFactory_FingerprintItem
+ + PGPPublicKeyService.toHexFingerprint(key));
+ for (Iterator<String> userIDs = key.getUserIDs(); userIDs.hasNext();) {
+ lines.add(indentation + ProvUIMessages.KeySigningInfoFactory_UserIDItem + userIDs.next());
+ }
+ }
+
+ private PGPPublicKeyService getKeyService() {
+ IProvisioningAgent agent = org.eclipse.equinox.internal.p2.extensionlocation.Activator
+ .getCurrentAgent();
+ return agent == null ? null : agent.getService(PGPPublicKeyService.class);
+ }
+
+ private Map<PGPSignature, PGPPublicKey> getDetails(Bundle bundle) {
+ try {
+ File bundleFile = FileLocator.getBundleFile(bundle).getCanonicalFile();
+ Map<PGPSignature, PGPPublicKey> details = bundlePoolArtficactSigningDetails.get(bundleFile);
+ return details;
+ } catch (IOException | RuntimeException e) {
+ ProvUIActivator.getDefault().getLog()
+ .log(new Status(IStatus.ERROR, ProvUIActivator.PLUGIN_ID, e.getMessage(), e));
+ return null;
+ }
+ }
+ });
+ }
+
+ return null;
+ }
+
+ @Override
+ public Class<?>[] getAdapterList() {
+ return CLASSES;
+ }
+
+ /**
+ * Returns a map from artifact files to the PGP signature/key pairs that were
+ * used to {@link PGPSignatureVerifier#close() verify} the artifact while it was
+ * being downloaded.
+ *
+ * @return a map of all the PGP signed artifact files to their signature/key
+ * pairs.
+ */
+ private static Map<File, Map<PGPSignature, PGPPublicKey>> getBundlePoolArtficactPGPSigningDetails() {
+ Map<File, Map<PGPSignature, PGPPublicKey>> result = new LinkedHashMap<>();
+ try {
+ // Look up artifact metadata for all the bundle pool repository of the
+ // installation.
+ IFileArtifactRepository bundlePoolRepository = org.eclipse.equinox.internal.p2.extensionlocation.Activator
+ .getBundlePoolRepository();
+ IQueryResult<IArtifactKey> allArtifactKeys = bundlePoolRepository.query(ArtifactKeyQuery.ALL_KEYS,
+ new NullProgressMonitor());
+ for (IArtifactKey key : allArtifactKeys) {
+ for (IArtifactDescriptor descriptor : bundlePoolRepository.getArtifactDescriptors(key)) {
+ File file = bundlePoolRepository.getArtifactFile(descriptor);
+ if (file != null) {
+ try {
+ Collection<PGPSignature> signatures = PGPSignatureVerifier.getSignatures(descriptor);
+ if (!signatures.isEmpty()) {
+ Map<PGPSignature, PGPPublicKey> details = new LinkedHashMap<>();
+ PGPPublicKeyStore keys = PGPSignatureVerifier.getKeys(descriptor);
+ for (PGPSignature signature : signatures) {
+ Collection<PGPPublicKey> signingKeys = keys.getKeys(signature.getKeyID());
+ if (!signingKeys.isEmpty()) {
+ // There is vanishingly small chance that two keys with colliding key IDs were
+ // used on two different signatures on the same artifact.
+ details.put(signature, signingKeys.iterator().next());
+ }
+ }
+ if (!details.isEmpty()) {
+ result.put(file.getCanonicalFile(), details);
+ }
+ }
+ } catch (IOException | PGPException | RuntimeException e) {
+ ProvUIActivator.getDefault().getLog()
+ .log(new Status(IStatus.ERROR, ProvUIActivator.PLUGIN_ID, e.getMessage(), e));
+ }
+ }
+ }
+ }
+ } catch (RuntimeException e) {
+ ProvUIActivator.getDefault().getLog()
+ .log(new Status(IStatus.ERROR, ProvUIActivator.PLUGIN_ID, e.getMessage(), e));
+ }
+ return result;
+ }
+}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/MessageDialogWithLink.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/MessageDialogWithLink.java
index 676f67ce7..34044e1d9 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/MessageDialogWithLink.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/MessageDialogWithLink.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* Mickael Istria (Red Hat Inc.) - 483644 Improve "No updates found" dialog
*******************************************************************************/
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUI.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUI.java
index 7b122b233..efc21e838 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUI.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUI.java
@@ -17,17 +17,24 @@
package org.eclipse.equinox.internal.p2.ui;
+import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import org.eclipse.core.commands.*;
import org.eclipse.core.commands.common.NotDefinedException;
import org.eclipse.core.runtime.*;
+import org.eclipse.equinox.internal.p2.director.ProfileChangeRequest;
+import org.eclipse.equinox.internal.p2.metadata.ProvidedCapability;
import org.eclipse.equinox.internal.p2.ui.dialogs.ILayoutConstants;
import org.eclipse.equinox.internal.p2.ui.query.IUViewQueryContext;
import org.eclipse.equinox.internal.p2.ui.viewers.IUColumnConfig;
import org.eclipse.equinox.internal.provisional.p2.core.eventbus.IProvisioningEventBus;
import org.eclipse.equinox.p2.engine.*;
-import org.eclipse.equinox.p2.metadata.IInstallableUnit;
-import org.eclipse.equinox.p2.operations.ProvisioningSession;
-import org.eclipse.equinox.p2.operations.UpdateOperation;
+import org.eclipse.equinox.p2.metadata.*;
+import org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitDescription;
+import org.eclipse.equinox.p2.operations.*;
+import org.eclipse.equinox.p2.planner.IPlanner;
+import org.eclipse.equinox.p2.planner.IProfileChangeRequest;
import org.eclipse.equinox.p2.query.QueryUtil;
import org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager;
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager;
@@ -35,6 +42,7 @@ import org.eclipse.equinox.p2.ui.Policy;
import org.eclipse.equinox.p2.ui.ProvisioningUI;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osgi.util.ManifestElement;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Shell;
@@ -42,6 +50,8 @@ import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.commands.ICommandService;
import org.eclipse.ui.handlers.IHandlerService;
import org.eclipse.ui.statushandlers.StatusManager;
+import org.osgi.framework.BundleException;
+import org.osgi.framework.Constants;
/**
* Generic provisioning UI utility and policy methods.
@@ -309,4 +319,109 @@ public class ProvUI {
return session.getProvisioningAgent().getService(IProvisioningEventBus.class);
}
+ public static IProvisioningPlan toCompabilityWithCurrentJREProvisioningPlan(
+ ProfileChangeOperation referenceOperation, IProgressMonitor monitor) {
+ IInstallableUnit currentJREUnit = createCurrentJavaSEUnit();
+ IProfileChangeRequest compatibilityWithCurrentRequest = toCurrentJREOperation(referenceOperation,
+ currentJREUnit);
+ IPlanner planner = referenceOperation.getProvisioningPlan().getProfile().getProvisioningAgent()
+ .getService(IPlanner.class);
+ IProvisioningPlan res = planner.getProvisioningPlan(compatibilityWithCurrentRequest,
+ referenceOperation.getProvisioningContext(), monitor);
+ return res;
+ }
+
+ private static IProfileChangeRequest toCurrentJREOperation(ProfileChangeOperation operation,
+ IInstallableUnit currnetJREUnit) {
+ IProfileChangeRequest initialRequest = operation.getProfileChangeRequest();
+ if (initialRequest == null) {
+ throw new IllegalStateException("operation plan must be resolved"); //$NON-NLS-1$
+ }
+ IProfileChangeRequest res = ((ProfileChangeRequest) initialRequest).clone();
+ res.addExtraRequirements(Collections.singleton(MetadataFactory
+ .createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "a.jre.javase", null, null, 0, 0, false))); //$NON-NLS-1$
+ operation.getProvisioningPlan().getProfile().query(QueryUtil.createIUQuery("a.jre.javase"), null) //$NON-NLS-1$
+ .forEach(res::remove);
+ res.add(currnetJREUnit);
+ return res;
+ }
+
+ private static IInstallableUnit createCurrentJavaSEUnit() {
+ InstallableUnitDescription desc = new InstallableUnitDescription();
+ desc.setId("currently-running-execution-environement-do-not-actually-install"); //$NON-NLS-1$
+ Version eeVersion = getCurrentJavaSEVersion();
+ desc.setVersion(eeVersion);
+ desc.addProvidedCapabilities(Collections
+ .singletonList(new ProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, desc.getId(), eeVersion)));
+ desc.addProvidedCapabilities(parseSystemCapabilities(Constants.FRAMEWORK_SYSTEMCAPABILITIES));
+ desc.addProvidedCapabilities(parseSystemCapabilities(Constants.FRAMEWORK_SYSTEMCAPABILITIES_EXTRA));
+ desc.addProvidedCapabilities(toJavaPackageCapabilities(Constants.FRAMEWORK_SYSTEMPACKAGES));
+ desc.addProvidedCapabilities(toJavaPackageCapabilities(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA));
+ return MetadataFactory.createInstallableUnit(desc);
+ }
+
+ private static List<IProvidedCapability> toJavaPackageCapabilities(String systemPropertyName) {
+ String packages = System.getProperty(systemPropertyName);
+ if (packages != null && !packages.trim().isEmpty()) {
+ try {
+ return Arrays.stream(ManifestElement.parseHeader(systemPropertyName, packages)) //
+ .map(jrePackage -> {
+ String packageName = jrePackage.getValue();
+ Version packageVersion = Version.create(jrePackage.getAttribute("version")); //$NON-NLS-1$
+ return MetadataFactory.createProvidedCapability("java.package", packageName, //$NON-NLS-1$
+ packageVersion);
+ }).collect(Collectors.toList());
+ } catch (BundleException e) {
+ ProvUIActivator.getDefault().getLog()
+ .log(new Status(IStatus.ERROR, ProvUIActivator.PLUGIN_ID, e.getMessage(), e));
+ }
+ }
+ return Collections.emptyList();
+ }
+
+ private static Version getCurrentJavaSEVersion() {
+ String[] segments = System.getProperty("java.version").split("\\."); //$NON-NLS-1$ //$NON-NLS-2$
+ if ("1".equals(segments[0])) { //$NON-NLS-1$
+ return Version.create(segments[0] + '.' + segments[1] + ".0"); //$NON-NLS-1$
+ }
+ return Version.create(segments[0].split("-")[0] + ".0.0"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ static Collection<IProvidedCapability> parseSystemCapabilities(String systemProperty) {
+ String systemCapabilities = System.getProperty(systemProperty);
+ if (systemCapabilities == null || systemCapabilities.trim().isEmpty()) {
+ return Collections.emptyList();
+ }
+ try {
+ return Arrays.stream(ManifestElement.parseHeader(systemProperty, systemCapabilities)) //
+ .flatMap(eeCapability -> {
+ String eeName = eeCapability.getAttribute("osgi.ee"); //$NON-NLS-1$
+ if (eeName == null) {
+ return Stream.empty();
+ }
+ return parseEECapabilityVersion(eeCapability) //
+ .map(version -> MetadataFactory.createProvidedCapability("osgi.ee", eeName, version)); //$NON-NLS-1$
+ }).collect(Collectors.toList());
+ } catch (BundleException e) {
+ ProvUIActivator.getDefault().getLog()
+ .log(new Status(IStatus.ERROR, ProvUIActivator.PLUGIN_ID, e.getMessage(), e));
+ return Collections.emptyList();
+ }
+ }
+
+ private static Stream<Version> parseEECapabilityVersion(ManifestElement eeCapability) {
+ String singleVersion = eeCapability.getAttribute("version:Version"); //$NON-NLS-1$
+ String[] multipleVersions = ManifestElement
+ .getArrayFromList(eeCapability.getAttribute("version:List<Version>")); //$NON-NLS-1$
+
+ if (singleVersion == null && multipleVersions == null) {
+ return Stream.empty();
+ } else if (singleVersion == null) {
+ return Arrays.stream(multipleVersions).map(Version::parseVersion);
+ } else if (multipleVersions == null) {
+ return Stream.of(singleVersion).map(Version::parseVersion);
+ }
+ return Stream.empty();
+ }
+
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIActivator.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIActivator.java
index 104276e4f..b96d4d934 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIActivator.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIActivator.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Red Hat, Inc. - support for remediation page, Bug 460967
@@ -30,7 +30,7 @@ import org.osgi.framework.BundleContext;
/**
* Controls the lifecycle of the provisioning UI bundle
- *
+ *
* @since 3.4
*/
public class ProvUIActivator extends AbstractUIPlugin {
@@ -47,7 +47,7 @@ public class ProvUIActivator extends AbstractUIPlugin {
/**
* Returns the singleton plugin instance
- *
+ *
* @return the instance
*/
public static ProvUIActivator getDefault() {
@@ -73,7 +73,7 @@ public class ProvUIActivator extends AbstractUIPlugin {
Job.getJobManager().cancel(LoadMetadataRepositoryJob.LOAD_FAMILY);
// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=305163
// join the jobs so that this bundle does not stop until the jobs are
- // actually cancelled.
+ // actually cancelled.
Job.getJobManager().join(LoadMetadataRepositoryJob.LOAD_FAMILY, new NullProgressMonitor());
plugin = null;
ProvUIActivator.context = null;
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIAdapterFactory.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIAdapterFactory.java
index 4fda80108..45e5ae4cb 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIAdapterFactory.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIAdapterFactory.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Red Hat Inc. - Fix compiler problems from generified IAdaptable#getAdapter
@@ -23,9 +23,9 @@ import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
/**
* Adapter factory for provisioning elements
- *
+ *
* @since 3.4
- *
+ *
*/
public class ProvUIAdapterFactory implements IAdapterFactory {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java
index fa4b58742..f79aacc0b 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java
@@ -18,8 +18,8 @@ package org.eclipse.equinox.internal.p2.ui;
import org.eclipse.osgi.util.NLS;
/**
- * Message class for provisioning UI messages.
- *
+ * Message class for provisioning UI messages.
+ *
* @since 3.4
*/
public class ProvUIMessages extends NLS {
@@ -78,6 +78,7 @@ public class ProvUIMessages extends NLS {
public static String IUGeneralInfoPropertyPage_VersionLabel;
public static String IULicensePropertyPage_NoLicense;
public static String IULicensePropertyPage_ViewLicenseLabel;
+ public static String PGPPublicKeyViewDialog_Title;
public static String ProfileModificationAction_InvalidSelections;
public static String ProfileModificationWizardPage_DetailsLabel;
public static String ProfileSnapshots_Label;
@@ -247,6 +248,10 @@ public class ProvUIMessages extends NLS {
public static String SelectableIUsPage_Deselect_All;
public static String InstallRemediationPage_Title;
public static String InstallRemediationPage_Description;
+ public static String KeySigningInfoFactory_FingerprintItem;
+ public static String KeySigningInfoFactory_KeySignersSection;
+ public static String KeySigningInfoFactory_PGPSigningType;
+ public static String KeySigningInfoFactory_UserIDItem;
public static String UpdateRemediationPage_Title;
public static String UpdateRemediationPage_Description;
public static String RemediationPage_SubDescription;
@@ -271,11 +276,38 @@ public class ProvUIMessages extends NLS {
public static String RemedyElementNotHighestVersion;
public static String TrustCertificateDialog_Details;
+ public static String TrustCertificateDialog_Export;
public static String TrustCertificateDialog_Title;
public static String TrustCertificateDialog_Message;
+ public static String TrustCertificateDialog_MessageUnsigned;
+ public static String TrustCertificateDialog_MessageNameWarning;
+ public static String TrustCertificateDialog_MessagePGP;
public static String TrustCertificateDialog_AcceptSelectedButtonLabel;
+ public static String TrustCertificateDialog_AlwaysTrust;
+ public static String TrustCertificateDialog_AlwaysTrustConfirmationMessage;
+ public static String TrustCertificateDialog_AlwaysTrustConfirmationTitle;
+ public static String TrustCertificateDialog_AlwaysTrustNo;
+ public static String TrustCertificateDialog_AlwaysTrustYes;
+ public static String TrustCertificateDialog_ArtifactId;
public static String TrustCertificateDialog_SelectAll;
public static String TrustCertificateDialog_DeselectAll;
+ public static String TrustCertificateDialog_ObjectType;
+ public static String TrustCertificateDialog_Id;
+ public static String TrustCertificateDialog_Name;
+ public static String TrustCertificateDialog_Classifier;
+ public static String TrustCertificateDialog_CopyFingerprint;
+ public static String TrustCertificateDialog_dates;
+ public static String TrustCertificateDialog_NotApplicable;
+ public static String TrustCertificateDialog_NotYetValidStartDate;
+ public static String TrustCertificateDialog_expiredSince;
+ public static String TrustCertificateDialog_validExpires;
+ public static String TrustCertificateDialog_valid;
+ public static String TrustCertificateDialog_expired;
+ public static String TrustCertificateDialog_notYetValid;
+ public static String TrustCertificateDialog_RememberSigners;
+ public static String TrustCertificateDialog_Unknown;
+ public static String TrustCertificateDialog_Unsigned;
+ public static String TrustCertificateDialog_Version;
// Operations
public static String UpdateManagerCompatibility_ExportSitesTitle;
public static String UpdateManagerCompatibility_ImportSitesTitle;
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIProvisioningListener.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIProvisioningListener.java
index 6be6316bc..61d82adf3 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIProvisioningListener.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIProvisioningListener.java
@@ -25,7 +25,7 @@ import org.eclipse.equinox.p2.repository.IRepository;
* ProvisioningListener which handles event batching and other
* extensions to the provisioning event framework that are used by
* the UI.
- *
+ *
* @since 3.5
*/
public abstract class ProvUIProvisioningListener implements SynchronousProvisioningListener {
@@ -73,9 +73,9 @@ public abstract class ProvUIProvisioningListener implements SynchronousProvision
}
} else {
// We are still in the middle of a batch operation, but we've been notified
- // about a nested batch that ended. See if it ended with a specific event.
- // If it did, this means there was a user action involving a repository
- // (rather than side-effect events). For example, the user might add a repo while a full
+ // about a nested batch that ended. See if it ended with a specific event.
+ // If it did, this means there was a user action involving a repository
+ // (rather than side-effect events). For example, the user might add a repo while a full
// background load is running. We want to honor that
// event. See https://bugs.eclipse.org/bugs/show_bug.cgi?id=305478
RepositoryEvent innerEvent = event.getEvent();
@@ -130,7 +130,7 @@ public abstract class ProvUIProvisioningListener implements SynchronousProvision
/**
* A repository has been added. Subclasses may override. May be called
* from a non-UI thread.
- *
+ *
* @param event the RepositoryEvent describing the details
*/
protected void repositoryAdded(RepositoryEvent event) {
@@ -142,7 +142,7 @@ public abstract class ProvUIProvisioningListener implements SynchronousProvision
/**
* A repository has been removed. Subclasses may override. May be called
* from a non-UI thread.
- *
+ *
* @param event the RepositoryEvent describing the details
*/
protected void repositoryRemoved(RepositoryEvent event) {
@@ -154,7 +154,7 @@ public abstract class ProvUIProvisioningListener implements SynchronousProvision
/**
* A repository has been discovered. Subclasses may override. May be called
* from a non-UI thread.
- *
+ *
* @param event the RepositoryEvent describing the details
*/
protected void repositoryDiscovered(RepositoryEvent event) {
@@ -166,7 +166,7 @@ public abstract class ProvUIProvisioningListener implements SynchronousProvision
/**
* A repository has changed. Subclasses may override. May be called
* from a non-UI thread.
- *
+ *
* @param event the RepositoryEvent describing the details
*/
protected void repositoryChanged(RepositoryEvent event) {
@@ -192,7 +192,7 @@ public abstract class ProvUIProvisioningListener implements SynchronousProvision
/**
* The specified profile has changed. Subclasses may override. May be called
* from a non-UI thread.
- *
+ *
* @param profileId the id of the profile that changed.
*/
protected void profileChanged(final String profileId) {
@@ -204,7 +204,7 @@ public abstract class ProvUIProvisioningListener implements SynchronousProvision
/**
* The specified profile has been added. Subclasses may override. May be called
* from a non-UI thread.
- *
+ *
* @param profileId the id of the profile that has been added.
*/
protected void profileAdded(final String profileId) {
@@ -216,7 +216,7 @@ public abstract class ProvUIProvisioningListener implements SynchronousProvision
/**
* The specified profile has been removed. Subclasses may override. May be called
* from a non-UI thread.
- *
+ *
* @param profileId the id of the profile that has been removed.
*/
protected void profileRemoved(final String profileId) {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvisioningOperationRunner.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvisioningOperationRunner.java
index a70b640ba..eceed6bb9 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvisioningOperationRunner.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvisioningOperationRunner.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Red Hat Inc. - Bug 460967
@@ -34,7 +34,7 @@ import org.eclipse.ui.statushandlers.StatusManager;
* be run synchronously or in a job. When scheduled as a job, the operation
* determines whether the job is run in
* the background or in the UI.
- *
+ *
* @since 3.4
*/
public class ProvisioningOperationRunner {
@@ -49,7 +49,7 @@ public class ProvisioningOperationRunner {
/**
* Schedule a job to execute the supplied ProvisioningOperation.
- *
+ *
* @param job The operation to execute
* @param errorStyle the flags passed to the StatusManager for error reporting
*/
@@ -67,8 +67,8 @@ public class ProvisioningOperationRunner {
/**
* Request a restart of the platform according to the specified
- * restart policy.
- *
+ * restart policy.
+ *
* @param restartPolicy
*/
void requestRestart(final int restartPolicy) {
@@ -136,10 +136,10 @@ public class ProvisioningOperationRunner {
/**
* This method is provided for use in automated test case. It should
* no longer be needed to be used by clients.
- *
+ *
* @param suppress <code>true</code> to suppress all restarts and <code>false</code>
* to stop suppressing restarts.
- *
+ *
* @noreference This method is not intended to be referenced by clients.
*/
public void suppressRestart(boolean suppress) {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/QueryProvider.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/QueryProvider.java
index fd86b44da..699b8d120 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/QueryProvider.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/QueryProvider.java
@@ -31,7 +31,7 @@ import org.eclipse.equinox.p2.ui.ProvisioningUI;
/**
* Provides a default set of queries to drive the provisioning UI.
- *
+ *
* @since 3.5
*/
@@ -103,7 +103,7 @@ public class QueryProvider {
return new ElementQueryDescriptor(queryable, new RepositoryLocationQuery(), new Collector<URI>(), new ArtifactRepositoryElementWrapper(null, element));
case AVAILABLE_IUS :
- // Things get more complicated if the user wants to filter out installed items.
+ // Things get more complicated if the user wants to filter out installed items.
// This involves setting up a secondary query for installed content that the various
// collectors will use to reject content. We can't use a compound query because the
// queryables are different (profile for installed content, repo for available content)
@@ -137,7 +137,7 @@ public class QueryProvider {
}
// If it's a category or some other IUElement to drill down in, we get the requirements and show all requirements
- // that are also visible in the available list.
+ // that are also visible in the available list.
if (element instanceof CategoryElement || (element instanceof IIUElement && ((IIUElement) element).shouldShowChildren())) {
// children of a category should drill down according to the context. If we aren't in a category, we are already drilling down and
// continue to do so.
@@ -171,7 +171,7 @@ public class QueryProvider {
return null;
case AVAILABLE_UPDATES :
- // This query can be used by the automatic updater in headless cases (checking for updates).
+ // This query can be used by the automatic updater in headless cases (checking for updates).
// We traffic in IU's rather than wrapped elements
IProfile profile;
IInstallableUnit[] toUpdate = null;
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/QueryableRepositoryManager.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/QueryableRepositoryManager.java
index a3c368d7e..8b5d9e7d7 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/QueryableRepositoryManager.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/QueryableRepositoryManager.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -29,7 +29,7 @@ import org.eclipse.osgi.util.NLS;
* An object that provides query support for a specified
* set of repositories. The repository tracker flags determine which repositories
* are included in the query. Callers interested in only the resulting repository URIs
- * should specify a {@link RepositoryLocationQuery}, in which case the
+ * should specify a {@link RepositoryLocationQuery}, in which case the
* query is performed over the URI's. Otherwise the repositories are loaded and
* the query is performed over the repositories themselves.
*/
@@ -58,9 +58,9 @@ public abstract class QueryableRepositoryManager<T> implements IQueryable<T> {
* query.
* <p>
* This method is long-running; progress and cancellation are provided
- * by the given progress monitor.
+ * by the given progress monitor.
* </p>
- *
+ *
* @param query The query to perform..
* @param monitor a progress monitor, or <code>null</code> if progress
* reporting is not desired
@@ -92,7 +92,7 @@ public abstract class QueryableRepositoryManager<T> implements IQueryable<T> {
* can be queried by the receiver are already loaded. If a repository
* is not loaded because it was not found, this will not return false,
* because this repository cannot be queried.
- *
+ *
* @return <code>true</code> if all repositories to be queried by the
* receiver are loaded, <code>false</code> if they
* are not.
@@ -132,7 +132,7 @@ public abstract class QueryableRepositoryManager<T> implements IQueryable<T> {
/**
* Load the repository located at the specified location.
- *
+ *
* @param manager the manager
* @param location the repository location
* @param monitor the progress monitor
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/RepositoryLocationQuery.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/RepositoryLocationQuery.java
index 57a155556..8f1ae7e94 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/RepositoryLocationQuery.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/RepositoryLocationQuery.java
@@ -20,8 +20,8 @@ import java.net.URI;
import org.eclipse.equinox.p2.metadata.expression.ExpressionUtil;
/**
- * RepositoryLocationQuery yields true for all URI elements.
- *
+ * RepositoryLocationQuery yields true for all URI elements.
+ *
* @since 3.5
*/
public class RepositoryLocationQuery extends ExpressionMatchQuery<URI> {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/RepositoryOperationBeginningEvent.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/RepositoryOperationBeginningEvent.java
index 3aabb4d04..89acad61c 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/RepositoryOperationBeginningEvent.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/RepositoryOperationBeginningEvent.java
@@ -20,7 +20,7 @@ import java.util.EventObject;
* Event used to signal that a repository operation is about
* to begin. This event can be used to ignore lower-level repository events
* until the operation is complete.
- *
+ *
* @since 2.0
*/
public class RepositoryOperationBeginningEvent extends EventObject {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/RepositoryOperationEndingEvent.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/RepositoryOperationEndingEvent.java
index 2f2d53d5e..7e953a8ef 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/RepositoryOperationEndingEvent.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/RepositoryOperationEndingEvent.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -18,8 +18,8 @@ import java.util.EventObject;
import org.eclipse.equinox.internal.provisional.p2.repository.RepositoryEvent;
/**
- * Event used to signal that a repository operation has completed.
- *
+ * Event used to signal that a repository operation has completed.
+ *
* @since 2.0
*/
public class RepositoryOperationEndingEvent extends EventObject {
@@ -27,7 +27,7 @@ public class RepositoryOperationEndingEvent extends EventObject {
private static final long serialVersionUID = -4513769756968621852L;
/**
- * A repository event describing the nature of the operation.
+ * A repository event describing the nature of the operation.
*/
private RepositoryEvent event;
@@ -39,7 +39,7 @@ public class RepositoryOperationEndingEvent extends EventObject {
/**
* Construct a new instance of this event.
- *
+ *
* @param source the source of the event
* @param update a boolean indicating whether the UI should be updated in response
* to this event.
@@ -57,7 +57,7 @@ public class RepositoryOperationEndingEvent extends EventObject {
* Return a {@link RepositoryEvent} that reflects the operation that
* occurred. A <code>null</code> return value indicates that there
* was not a single underlying repository operation.
- *
+ *
* @return the {@link RepositoryEvent} that was involved in the operation. May be
* <code>null</code>. This event may be used by clients to determine
* what should be updated after an operation completes.
@@ -71,7 +71,7 @@ public class RepositoryOperationEndingEvent extends EventObject {
* Return a boolean that indicates whether the client should update the UI in response
* to this event.
* event.
- *
+ *
* @return <code>true</code> if clients should update to reflect to this event, <code>false</code>
* if the client should ignore the entire operation.
*/
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ServiceUIComponent.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ServiceUIComponent.java
index 5778045bc..cad8f35b9 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ServiceUIComponent.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ServiceUIComponent.java
@@ -7,15 +7,14 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.internal.p2.ui;
-import org.eclipse.equinox.p2.core.UIServices;
-
import org.eclipse.equinox.p2.core.IProvisioningAgent;
+import org.eclipse.equinox.p2.core.UIServices;
import org.eclipse.equinox.p2.core.spi.IAgentServiceFactory;
/**
@@ -26,7 +25,7 @@ public class ServiceUIComponent implements IAgentServiceFactory {
@Override
public Object createService(IProvisioningAgent agent) {
- return new ValidationDialogServiceUI();
+ return new ValidationDialogServiceUI(agent);
}
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/UpdateManagerCompatibility.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/UpdateManagerCompatibility.java
index ab481eddd..b1adf7354 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/UpdateManagerCompatibility.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/UpdateManagerCompatibility.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -16,7 +16,6 @@ package org.eclipse.equinox.internal.p2.ui;
import java.io.*;
import java.net.URI;
import java.net.URISyntaxException;
-import java.util.Iterator;
import java.util.Vector;
import javax.xml.parsers.*;
import org.eclipse.core.runtime.*;
@@ -37,7 +36,7 @@ import org.xml.sax.SAXException;
/**
* Utility methods involving compatibility with the Eclipse Update Manager.
- *
+ *
* @since 3.4
*
*/
@@ -134,8 +133,7 @@ public class UpdateManagerCompatibility {
writer = new PrintWriter(osw);
writer.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); //$NON-NLS-1$
writer.println("<bookmarks>"); //$NON-NLS-1$
- for (int i = 0; i < bookmarks.size(); i++) {
- Object obj = bookmarks.get(i);
+ for (MetadataRepositoryElement obj : bookmarks) {
writeObject(" ", obj, writer); //$NON-NLS-1$
}
} catch (IOException e) {
@@ -166,15 +164,14 @@ public class UpdateManagerCompatibility {
MetadataRepositoryElement element = (MetadataRepositoryElement) obj;
String sel = element.isEnabled() ? "true" : "false"; //$NON-NLS-1$ //$NON-NLS-2$
String name = element.getName();
- writer.print(indent + "<site url=\"" + URIUtil.toUnencodedString(element.getLocation()) + "\" selected=\"" + sel + "\" name=\"" + getWritableXMLString(name) + "\""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ writer.print(indent + "<site url=\"" + URIUtil.toUnencodedString(element.getLocation()) + "\" selected=\"" + sel + "\" name=\"" + getWritableXMLString(name) + "\""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
writer.println("/>"); //$NON-NLS-1$
}
}
public static IStatus getInstallHandlerStatus(IProvisioningPlan plan) {
IQueryResult<IInstallableUnit> result = plan.getAdditions().query(QueryUtil.createIUAnyQuery(), null);
- for (Iterator<IInstallableUnit> iterator = result.iterator(); iterator.hasNext();) {
- IInstallableUnit iu = iterator.next();
+ for (IInstallableUnit iu : result) {
if (iu != null && iu.getProperty(ECLIPSE_INSTALL_HANDLER_PROP) != null)
return new Status(IStatus.ERROR, ProvUIActivator.PLUGIN_ID, NLS.bind(ProvUIMessages.UpdateManagerCompatibility_ItemRequiresUpdateManager, iu.getId()));
}
@@ -213,8 +210,8 @@ public class UpdateManagerCompatibility {
public static void writeBookmarkFile(String filename, MetadataRepositoryElement[] sites) {
Vector<MetadataRepositoryElement> bookmarks = new Vector<>(sites.length);
- for (int i = 0; i < sites.length; i++)
- bookmarks.add(sites[i]);
+ for (MetadataRepositoryElement site : sites)
+ bookmarks.add(site);
store(filename, bookmarks);
}
@@ -222,7 +219,7 @@ public class UpdateManagerCompatibility {
/**
* Export the specified list of sites to a bookmarks file that
* can be read later.
- *
+ *
* @param shell the shell used to parent the export dialog
* @param sites the sites to export
*/
@@ -242,8 +239,8 @@ public class UpdateManagerCompatibility {
}
/**
- * Open the old UpdateManager installer UI using the specified shell.
- * We do not call the UpdateManagerUI class directly because we want to be able to be configured
+ * Open the old UpdateManager installer UI using the specified shell.
+ * We do not call the UpdateManagerUI class directly because we want to be able to be configured
* without requiring those plug-ins. Instead, we invoke a known command.
*/
public static void openInstaller() {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ValidationDialogServiceUI.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ValidationDialogServiceUI.java
index 8088e8f18..ae451f4c7 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ValidationDialogServiceUI.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ValidationDialogServiceUI.java
@@ -7,24 +7,36 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Rapicorp, Inc. - add support for information dialog
*******************************************************************************/
package org.eclipse.equinox.internal.p2.ui;
+import java.io.File;
import java.net.URL;
import java.security.cert.Certificate;
+import java.util.*;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import org.bouncycastle.openpgp.PGPPublicKey;
import org.eclipse.core.runtime.*;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.equinox.internal.p2.ui.dialogs.TrustCertificateDialog;
import org.eclipse.equinox.internal.p2.ui.dialogs.UserValidationDialog;
-import org.eclipse.equinox.internal.p2.ui.viewers.CertificateLabelProvider;
+import org.eclipse.equinox.p2.core.IProvisioningAgent;
import org.eclipse.equinox.p2.core.UIServices;
+import org.eclipse.equinox.p2.metadata.IArtifactKey;
+import org.eclipse.equinox.p2.repository.artifact.spi.IArtifactUIServices;
+import org.eclipse.equinox.p2.repository.spi.PGPPublicKeyService;
import org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob;
import org.eclipse.jface.dialogs.*;
-import org.eclipse.jface.viewers.*;
+import org.eclipse.jface.viewers.TreeNode;
+import org.eclipse.jface.window.IShellProvider;
import org.eclipse.jface.window.Window;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
@@ -34,18 +46,49 @@ import org.eclipse.swt.widgets.*;
import org.eclipse.ui.PlatformUI;
/**
- * The default GUI-based implementation of {@link UIServices}.
- * The service declaration is made in the serviceui_component.xml file.
-
+ * The default GUI-based implementation of {@link UIServices}. The service
+ * declaration is made in the serviceui_component.xml file.
+ *
*/
-public class ValidationDialogServiceUI extends UIServices {
+public class ValidationDialogServiceUI extends UIServices implements IArtifactUIServices {
+
+ private final IProvisioningAgent agent;
+
+ private Display display;
+
+ private Consumer<String> linkHandler = link -> {
+ if (PlatformUI.isWorkbenchRunning()) {
+ try {
+ URL url = new URL(link);
+ PlatformUI.getWorkbench().getBrowserSupport().getExternalBrowser().openURL(url);
+ } catch (Exception x) {
+ ProvUIActivator.getDefault().getLog()
+ .log(new Status(IStatus.ERROR, ProvUIActivator.PLUGIN_ID, x.getMessage(), x));
+ }
+ }
+ };
+
+ private IShellProvider shellProvider = () -> ProvUI.getDefaultParentShell();
+
+ public ValidationDialogServiceUI() {
+ this(null);
+ }
+
+ public ValidationDialogServiceUI(IProvisioningAgent agent) {
+ this.agent = agent;
+ }
static final class MessageDialogWithLink extends MessageDialog {
private final String linkText;
+ private final Consumer<String> linkOpener;
- MessageDialogWithLink(Shell parentShell, String dialogTitle, Image dialogTitleImage, String dialogMessage, int dialogImageType, String[] dialogButtonLabels, int defaultIndex, String linkText) {
- super(parentShell, dialogTitle, dialogTitleImage, dialogMessage, dialogImageType, dialogButtonLabels, defaultIndex);
+ MessageDialogWithLink(Shell parentShell, String dialogTitle, Image dialogTitleImage, String dialogMessage,
+ int dialogImageType, String[] dialogButtonLabels, int defaultIndex, String linkText,
+ Consumer<String> linkOpener) {
+ super(parentShell, dialogTitle, dialogTitleImage, dialogMessage, dialogImageType, dialogButtonLabels,
+ defaultIndex);
this.linkText = linkText;
+ this.linkOpener = linkOpener;
}
@Override
@@ -56,13 +99,7 @@ public class ValidationDialogServiceUI extends UIServices {
Link link = new Link(parent, SWT.NONE);
link.setText(linkText);
link.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> {
- try {
- URL url = new URL(e.text);
- PlatformUI.getWorkbench().getBrowserSupport().getExternalBrowser().openURL(url);
- } catch (Exception x) {
- ProvUIActivator.getDefault().getLog().log(//
- new Status(IStatus.ERROR, ProvUIActivator.PLUGIN_ID, x.getMessage(), x));
- }
+ linkOpener.accept(e.text);
}));
return link;
}
@@ -73,7 +110,8 @@ public class ValidationDialogServiceUI extends UIServices {
*/
static class OkCancelErrorDialog extends ErrorDialog {
- public OkCancelErrorDialog(Shell parentShell, String dialogTitle, String message, IStatus status, int displayMask) {
+ public OkCancelErrorDialog(Shell parentShell, String dialogTitle, String message, IStatus status,
+ int displayMask) {
super(parentShell, dialogTitle, message, status, displayMask);
}
@@ -91,10 +129,11 @@ public class ValidationDialogServiceUI extends UIServices {
final AuthenticationInfo[] result = new AuthenticationInfo[1];
if (!suppressAuthentication() && !isHeadless()) {
- PlatformUI.getWorkbench().getDisplay().syncExec(() -> {
- Shell shell = ProvUI.getDefaultParentShell();
+ getDisplay().syncExec(() -> {
+ Shell shell = shellProvider.getShell();
String message = NLS.bind(ProvUIMessages.ServiceUI_LoginDetails, location);
- UserValidationDialog dialog = new UserValidationDialog(shell, ProvUIMessages.ServiceUI_LoginRequired, null, message);
+ UserValidationDialog dialog = new UserValidationDialog(shell, ProvUIMessages.ServiceUI_LoginRequired,
+ null, message);
int dialogCode = dialog.open();
if (dialogCode == Window.OK) {
result[0] = dialog.getResult();
@@ -116,88 +155,195 @@ public class ValidationDialogServiceUI extends UIServices {
@Override
public TrustInfo getTrustInfo(Certificate[][] untrustedChains, final String[] unsignedDetail) {
+ return getTrustInfo(untrustedChains, Collections.emptyList(), unsignedDetail);
+ }
+
+ @Override
+ public TrustInfo getTrustInfo(Certificate[][] untrustedChains, Collection<PGPPublicKey> untrustedPublicKeys,
+ final String[] unsignedDetail) {
+ if (untrustedChains == null) {
+ untrustedChains = new Certificate[][] {};
+ }
boolean trustUnsigned = true;
boolean persistTrust = false;
- Certificate[] trusted = new Certificate[0];
- // Some day we may summarize all of this in one UI, or perhaps we'll have a preference to honor regarding
- // unsigned content. For now we prompt separately first as to whether unsigned detail should be trusted
+ List<Certificate> trustedCertificates = new ArrayList<>();
+ List<PGPPublicKey> trustedKeys = new ArrayList<>();
+ // Some day we may summarize all of this in one UI, or perhaps we'll have a
+ // preference to honor regarding
+ // unsigned content. For now we prompt separately first as to whether unsigned
+ // detail should be trusted
if (!isHeadless() && unsignedDetail != null && unsignedDetail.length > 0) {
- final boolean[] result = new boolean[] {false};
- PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
+ final boolean[] result = new boolean[] { false };
+ getDisplay().syncExec(new Runnable() {
@Override
public void run() {
- Shell shell = ProvUI.getDefaultParentShell();
- OkCancelErrorDialog dialog = new OkCancelErrorDialog(shell, ProvUIMessages.ServiceUI_warning_title, null, createStatus(), IStatus.WARNING);
+ Shell shell = shellProvider.getShell();
+ OkCancelErrorDialog dialog = new OkCancelErrorDialog(shell, ProvUIMessages.ServiceUI_warning_title,
+ null, createStatus(), IStatus.WARNING);
result[0] = dialog.open() == IDialogConstants.OK_ID;
}
private IStatus createStatus() {
- MultiStatus parent = new MultiStatus(ProvUIActivator.PLUGIN_ID, 0, ProvUIMessages.ServiceUI_unsigned_message, null);
- for (int i = 0; i < unsignedDetail.length; i++) {
- parent.add(new Status(IStatus.WARNING, ProvUIActivator.PLUGIN_ID, unsignedDetail[i]));
+ MultiStatus parent = new MultiStatus(ProvUIActivator.PLUGIN_ID, 0,
+ ProvUIMessages.ServiceUI_unsigned_message, null);
+ for (String element : unsignedDetail) {
+ parent.add(new Status(IStatus.WARNING, ProvUIActivator.PLUGIN_ID, element));
}
return parent;
}
});
trustUnsigned = result[0];
}
- // For now, there is no need to show certificates if there was unsigned content and we don't trust it.
+ // For now, there is no need to show certificates if there was unsigned content
+ // and we don't trust it.
if (!trustUnsigned)
- return new TrustInfo(trusted, persistTrust, trustUnsigned);
-
- // We've established trust for unsigned content, now examine the untrusted chains
- if (!isHeadless() && untrustedChains != null && untrustedChains.length > 0) {
-
- final Object[] result = new Object[1];
- final TreeNode[] input = createTreeNodes(untrustedChains);
-
- PlatformUI.getWorkbench().getDisplay().syncExec(() -> {
- Shell shell = ProvUI.getDefaultParentShell();
- ILabelProvider labelProvider = new CertificateLabelProvider();
- TreeNodeContentProvider contentProvider = new TreeNodeContentProvider();
- TrustCertificateDialog trustCertificateDialog = new TrustCertificateDialog(shell, input, labelProvider, contentProvider);
- trustCertificateDialog.open();
- Certificate[] values = new Certificate[trustCertificateDialog.getResult() == null ? 0 : trustCertificateDialog.getResult().length];
- for (int i = 0; i < values.length; i++) {
- values[i] = (Certificate) ((TreeNode) trustCertificateDialog.getResult()[i]).getValue();
+ return new TrustInfo(trustedCertificates, trustedKeys, persistTrust, trustUnsigned);
+
+ // We've established trust for unsigned content, now examine the untrusted
+ // chains
+ if (!isHeadless() && (untrustedChains.length > 0 || !untrustedPublicKeys.isEmpty())) {
+ return getTrustInfo(
+ Arrays.stream(untrustedChains).collect(
+ Collectors.toMap(Arrays::asList, it -> Set.of(), (e1, e2) -> e1, LinkedHashMap::new)),
+ untrustedPublicKeys.stream().collect(
+ Collectors.toMap(Function.identity(), it -> Set.of(), (e1, e2) -> e1, LinkedHashMap::new)),
+ null, null);
+
+ }
+
+ return new TrustInfo(trustedCertificates, trustedKeys, persistTrust, trustUnsigned);
+ }
+
+ @Override
+ public TrustInfo getTrustInfo(Map<List<Certificate>, Set<IArtifactKey>> untrustedCertificates,
+ Map<PGPPublicKey, Set<IArtifactKey>> untrustedPGPKeys, //
+ Set<IArtifactKey> unsignedArtifacts, //
+ Map<IArtifactKey, File> artifacts) {
+ boolean trustUnsigned = true;
+ AtomicBoolean persistTrust = new AtomicBoolean();
+ AtomicBoolean trustAlways = new AtomicBoolean();
+ List<Certificate> trustedCertificates = new ArrayList<>();
+ List<PGPPublicKey> trustedKeys = new ArrayList<>();
+ if (!isHeadless()) {
+ TreeNode[] input = createTreeNodes(untrustedCertificates, untrustedPGPKeys, unsignedArtifacts, artifacts);
+ if (input.length != 0) {
+ trustUnsigned = unsignedArtifacts == null || unsignedArtifacts.isEmpty();
+ List<Object> result = new ArrayList<>();
+ getDisplay().syncExec(() -> {
+ Shell shell = shellProvider.getShell();
+ TrustCertificateDialog trustCertificateDialog = new TrustCertificateDialog(shell, input);
+ if (trustCertificateDialog.open() == Window.OK) {
+ Object[] dialogResult = trustCertificateDialog.getResult();
+ if (dialogResult != null) {
+ result.addAll(Arrays.asList(dialogResult));
+ }
+ persistTrust.set(trustCertificateDialog.isRememberSelectedSigners());
+ trustAlways.set(trustCertificateDialog.isTrustAlways());
+ }
+ });
+ for (Object o : result) {
+ if (o instanceof TreeNode) {
+ o = ((TreeNode) o).getValue();
+ }
+ if (o instanceof Certificate) {
+ trustedCertificates.add((Certificate) o);
+ } else if (o instanceof PGPPublicKey) {
+ trustedKeys.add((PGPPublicKey) o);
+ } else if (o == null) {
+ trustUnsigned = true;
+ }
+ }
+ }
+ }
+
+ return new TrustInfo(trustedCertificates, trustedKeys, persistTrust.get(), trustUnsigned, trustAlways.get());
+ }
+
+ private TreeNode[] createTreeNodes(Map<List<Certificate>, Set<IArtifactKey>> untrustedCertificates,
+ Map<PGPPublicKey, Set<IArtifactKey>> untrustedPGPKeys, //
+ Set<IArtifactKey> unsignedArtifacts, //
+ Map<IArtifactKey, File> artifacts) {
+
+ List<ExtendedTreeNode> children = new ArrayList<>();
+ if (untrustedCertificates != null && !untrustedCertificates.isEmpty()) {
+ for (Map.Entry<List<Certificate>, Set<IArtifactKey>> entry : untrustedCertificates.entrySet()) {
+ ExtendedTreeNode parent = null;
+ List<Certificate> key = entry.getKey();
+ Set<IArtifactKey> associatedArtifacts = entry.getValue();
+ for (Certificate certificate : key) {
+ ExtendedTreeNode node = new ExtendedTreeNode(certificate, associatedArtifacts);
+ if (parent == null) {
+ children.add(node);
+ } else {
+ node.setParent(parent);
+ parent.setChildren(new TreeNode[] { node });
+ }
+ parent = node;
+ }
+ }
+ }
+
+ if (untrustedPGPKeys != null && !untrustedPGPKeys.isEmpty()) {
+ PGPPublicKeyService keyService = agent == null ? null : agent.getService(PGPPublicKeyService.class);
+ for (Map.Entry<PGPPublicKey, Set<IArtifactKey>> entry : untrustedPGPKeys.entrySet()) {
+ PGPPublicKey key = entry.getKey();
+ Set<IArtifactKey> associatedArtifacts = entry.getValue();
+ ExtendedTreeNode node = new ExtendedTreeNode(key, associatedArtifacts);
+ children.add(node);
+ expandChildren(node, key, keyService, new HashSet<>(), Integer.getInteger("p2.pgp.trust.depth", 3)); //$NON-NLS-1$
+ }
+ }
+
+ if (unsignedArtifacts != null && !unsignedArtifacts.isEmpty()) {
+ ExtendedTreeNode node = new ExtendedTreeNode(null, unsignedArtifacts);
+ children.add(node);
+
+ }
+
+ return children.toArray(TreeNode[]::new);
+ }
+
+ private void expandChildren(TreeNode result, PGPPublicKey key, PGPPublicKeyService keyService,
+ Set<PGPPublicKey> visited, int remainingDepth) {
+ if (keyService != null && remainingDepth > 0 && visited.add(key)) {
+ Set<PGPPublicKey> certifications = keyService.getVerifiedCertifications(key);
+ if (certifications != null && !certifications.isEmpty()) {
+ List<TreeNode> children = new ArrayList<>();
+ for (PGPPublicKey certifyingKey : certifications) {
+ if (visited.add(certifyingKey)) {
+ TreeNode treeNode = new TreeNode(certifyingKey);
+ children.add(treeNode);
+ }
+ }
+
+ if (!children.isEmpty()) {
+ result.setChildren(children.toArray(TreeNode[]::new));
+ children.forEach(child -> {
+ child.setParent(result);
+ PGPPublicKey certifyingKey = (PGPPublicKey) child.getValue();
+ visited.remove(certifyingKey);
+ expandChildren(child, certifyingKey, keyService, visited, remainingDepth - 1);
+ visited.add(certifyingKey);
+ });
}
- result[0] = values;
- });
- persistTrust = true;
- trusted = (Certificate[]) result[0];
- }
- return new TrustInfo(trusted, persistTrust, trustUnsigned);
- }
-
- private TreeNode[] createTreeNodes(Certificate[][] certificates) {
- TreeNode[] children = new TreeNode[certificates.length];
- for (int i = 0; i < certificates.length; i++) {
- TreeNode head = new TreeNode(certificates[i][0]);
- TreeNode parent = head;
- children[i] = head;
- for (int j = 0; j < certificates[i].length; j++) {
- TreeNode node = new TreeNode(certificates[i][j]);
- node.setParent(parent);
- parent.setChildren(new TreeNode[] {node});
- parent = node;
}
}
- return children;
}
@Override
public AuthenticationInfo getUsernamePassword(final String location, final AuthenticationInfo previousInfo) {
final AuthenticationInfo[] result = new AuthenticationInfo[1];
if (!suppressAuthentication() && !isHeadless()) {
- PlatformUI.getWorkbench().getDisplay().syncExec(() -> {
- Shell shell = ProvUI.getDefaultParentShell();
+ getDisplay().syncExec(() -> {
+ Shell shell = shellProvider.getShell();
String message = null;
if (previousInfo.saveResult())
message = NLS.bind(ProvUIMessages.ProvUIMessages_SavedNotAccepted_EnterFor_0, location);
else
message = NLS.bind(ProvUIMessages.ProvUIMessages_NotAccepted_EnterFor_0, location);
- UserValidationDialog dialog = new UserValidationDialog(previousInfo, shell, ProvUIMessages.ServiceUI_LoginRequired, null, message);
+ UserValidationDialog dialog = new UserValidationDialog(previousInfo, shell,
+ ProvUIMessages.ServiceUI_LoginRequired, null, message);
int dialogCode = dialog.open();
if (dialogCode == Window.OK) {
result[0] = dialog.getResult();
@@ -215,17 +361,131 @@ public class ValidationDialogServiceUI extends UIServices {
super.showInformationMessage(title, text, linkText);
return;
}
- PlatformUI.getWorkbench().getDisplay().syncExec(() -> {
- MessageDialog dialog = new MessageDialogWithLink(ProvUI.getDefaultParentShell(), title, null, text, MessageDialog.INFORMATION, new String[] {IDialogConstants.OK_LABEL}, 0, linkText);
+ getDisplay().syncExec(() -> {
+ MessageDialog dialog = new MessageDialogWithLink(shellProvider.getShell(), title, null, text,
+ MessageDialog.INFORMATION, new String[] { IDialogConstants.OK_LABEL }, 0, linkText, linkHandler);
dialog.open();
});
}
+ /**
+ * Returns a handler (used by
+ * {@link #showInformationMessage(String, String, String)}) to open a link in an
+ * external browser.
+ *
+ * @return a handler to open a link in an external browser.
+ *
+ * @since 2.7.400
+ */
+ public Consumer<String> getLinkHandler() {
+ return linkHandler;
+ }
+
+ /**
+ * Sets the handler used by
+ * {@link #showInformationMessage(String, String, String)} to open a link in an
+ * external browser.
+ *
+ * @param linkHandler the handler for opening links in an external browser.
+ *
+ * @since 2.7.400
+ */
+ public void setLinkHandler(Consumer<String> linkHandler) {
+ this.linkHandler = linkHandler;
+ }
+
+ /**
+ * Returns a shell that is appropriate to use as the parent for a modal dialog
+ * about to be opened.
+ *
+ * @return a shell that is appropriate to use as the parent for a modal dialog
+ * about to be opened.
+ *
+ * @see ProvUI#getDefaultParentShell()
+ *
+ * @since 2.7.400
+ */
+ public IShellProvider getShellProvider() {
+ return shellProvider;
+ }
+
+ /**
+ * Set the provider that yields a shell that is appropriate to use as the parent
+ * for a modal dialog about to be opened.
+ *
+ * @param shellProvider the provider of a shell that is appropriate to use as
+ * the parent for a modal dialog about to be opened.
+ */
+ public void setShellProvider(IShellProvider shellProvider) {
+ this.shellProvider = shellProvider;
+ }
+
+ /**
+ * Returns the display of the workbench or the display set by
+ * {@link #setDisplay(Display)} in a non-workbench application.
+ *
+ * @since 2.7.400
+ */
+ public Display getDisplay() {
+ if (display == null && PlatformUI.isWorkbenchRunning()) {
+ display = PlatformUI.getWorkbench().getDisplay();
+ }
+ return display;
+ }
+
+ /**
+ * Can be called once to set the display in a non-workbench application.
+ *
+ * @throws IllegalStateException if there is a workbench running or the display
+ * has already been set differently.
+ *
+ * @since 2.7.400
+ */
+ public void setDisplay(Display display) {
+ if (this.display != null && this.display != display) {
+ throw new IllegalStateException("Cannot change the display"); //$NON-NLS-1$
+ }
+ this.display = display;
+ }
+
private boolean isHeadless() {
- // If there is no UI available and we are still the IServiceUI,
- // assume that the operation should proceed. See
+ // If there is no UI available and we are still the IServiceUI,
+ // assume that the operation should proceed. See
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=291049
- return !PlatformUI.isWorkbenchRunning();
+ //
+ // But we shouldn't just assume that no workbench mean no display and no head.
+ // It should be possible to reuse this class in an application without a
+ // workbench, e.g., the Eclipse Installer.
+ return getDisplay() == null;
+ }
+
+ private static class ExtendedTreeNode extends TreeNode implements IAdaptable {
+ private final Set<IArtifactKey> artifacts;
+
+ public ExtendedTreeNode(Object value) {
+ super(value);
+ artifacts = null;
+ }
+
+ public ExtendedTreeNode(Object value, Set<IArtifactKey> artifacts) {
+ super(value);
+ this.artifacts = artifacts;
+ }
+
+ @Override
+ public <T> T getAdapter(Class<T> adapter) {
+ if (adapter.isInstance(this)) {
+ return adapter.cast(this);
+ }
+ if (adapter.isInstance(getValue())) {
+ return adapter.cast(value);
+ }
+ if (adapter == IArtifactKey[].class && artifacts != null) {
+ return adapter.cast(artifacts.toArray(IArtifactKey[]::new));
+ }
+
+ return null;
+ }
}
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/ColocatedRepositoryAction.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/ColocatedRepositoryAction.java
index 0d901485b..bdaf317d4 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/ColocatedRepositoryAction.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/ColocatedRepositoryAction.java
@@ -23,7 +23,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
public abstract class ColocatedRepositoryAction extends ProvisioningAction {
- public ColocatedRepositoryAction(ProvisioningUI ui, String label, String tooltipText, ISelectionProvider selectionProvider) {
+ public ColocatedRepositoryAction(ProvisioningUI ui, String label, String tooltipText,
+ ISelectionProvider selectionProvider) {
super(ui, label, selectionProvider);
setToolTipText(tooltipText);
init();
@@ -31,9 +32,10 @@ public abstract class ColocatedRepositoryAction extends ProvisioningAction {
protected URI[] getSelectedLocations(Object[] selectionArray) {
List<URI> urls = new ArrayList<>();
- for (int i = 0; i < selectionArray.length; i++) {
- if (selectionArray[i] instanceof MetadataRepositoryElement)
- urls.add(((MetadataRepositoryElement) selectionArray[i]).getLocation());
+ for (Object element : selectionArray) {
+ if (element instanceof MetadataRepositoryElement) {
+ urls.add(((MetadataRepositoryElement) element).getLocation());
+ }
}
return urls.toArray(new URI[urls.size()]);
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/ExistingIUInProfileAction.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/ExistingIUInProfileAction.java
index 38bfa1ee7..e671b4e0a 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/ExistingIUInProfileAction.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/ExistingIUInProfileAction.java
@@ -25,11 +25,11 @@ import org.eclipse.equinox.p2.ui.ProvisioningUI;
import org.eclipse.jface.viewers.ISelectionProvider;
/**
- *
+ *
* Abstract class that implements the enablement rules for actions that
* affect IU's already in a profile. The action only enables when all of the
* IU's involved are top level IU's from the same profile.
- *
+ *
* @since 3.5
*
*/
@@ -47,10 +47,10 @@ public abstract class ExistingIUInProfileAction extends ProfileModificationActio
// referred to by the element itself..
IProfile profile = getProfile();
if (selectionArray.length > 0) {
- for (int i = 0; i < selectionArray.length; i++) {
- if (selectionArray[i] instanceof InstalledIUElement) {
- InstalledIUElement element = (InstalledIUElement) selectionArray[i];
- // If the parents are different, then they are either from
+ for (Object selection : selectionArray) {
+ if (selection instanceof InstalledIUElement) {
+ InstalledIUElement element = (InstalledIUElement) selection;
+ // If the parents are different, then they are either from
// different profiles or are nested in different parts of the tree.
// Either way, this makes the selection invalid.
if (parent == null) {
@@ -62,7 +62,7 @@ public abstract class ExistingIUInProfileAction extends ProfileModificationActio
if (!isSelectable(element.getIU(), profile))
return false;
} else {
- IInstallableUnit iu = ProvUI.getAdapter(selectionArray[i], IInstallableUnit.class);
+ IInstallableUnit iu = ProvUI.getAdapter(selection, IInstallableUnit.class);
if (iu == null || !isSelectable(iu))
return false;
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/ProfileModificationAction.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/ProfileModificationAction.java
index e9a34294d..22cc60470 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/ProfileModificationAction.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/ProfileModificationAction.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Sonatype, Inc. - ongoing development
@@ -108,7 +108,7 @@ public abstract class ProfileModificationAction extends ProvisioningAction {
* action. If the action has not been run, return ACTION_NOT_RUN. If the
* action does not open a wizard, return Window.OK if the operation was performed,
* and Window.CANCEL if it was canceled.
- *
+ *
* @return integer return code
*/
public int getReturnCode() {
@@ -142,9 +142,9 @@ public abstract class ProfileModificationAction extends ProvisioningAction {
* the actual number of selections in the action's selection provider.
* That is, if the action is disabled due to invalid selections,
* this method will return those selections that were valid.
- *
+ *
* @return an array of selected IInstallableUnit that meet the
- * enablement criteria for the action.
+ * enablement criteria for the action.
*/
protected List<IInstallableUnit> getSelectedIUs() {
List<?> elements = getStructuredSelection().toList();
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/PropertyDialogAction.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/PropertyDialogAction.java
index f59ee4f49..97965dd81 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/PropertyDialogAction.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/PropertyDialogAction.java
@@ -19,7 +19,7 @@ import org.eclipse.jface.window.IShellProvider;
/**
* PropertyDialogAction which sets its enablement on construction.
- *
+ *
* @since 3.4
*
*/
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/RefreshAction.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/RefreshAction.java
index 81615726f..f9487e45a 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/RefreshAction.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/RefreshAction.java
@@ -38,7 +38,7 @@ public abstract class RefreshAction extends ProvisioningAction {
}
private void hookKeyListener(Control control) {
- control.addKeyListener(KeyListener.keyReleasedAdapter(e -> handleKeyReleased(e)));
+ control.addKeyListener(KeyListener.keyReleasedAdapter(this::handleKeyReleased));
}
@Override
@@ -52,7 +52,7 @@ public abstract class RefreshAction extends ProvisioningAction {
* Handle a key released event. Used internally and also
* made available so that clients can watch key events from
* any other controls and dispatch to this action.
- *
+ *
* @param event the key event
*/
public void handleKeyReleased(KeyEvent event) {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/UpdateAction.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/UpdateAction.java
index 84916667f..adae0238c 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/UpdateAction.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/actions/UpdateAction.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Sonatype, Inc. - ongoing development
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ApplyProfileChangesDialog.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ApplyProfileChangesDialog.java
index bfa3f5e20..bad3b7bf6 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ApplyProfileChangesDialog.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ApplyProfileChangesDialog.java
@@ -24,7 +24,7 @@ import org.eclipse.swt.widgets.Shell;
/**
* A dialog which prompts the user to restart.
- *
+ *
* @since 3.4
*/
public class ApplyProfileChangesDialog extends MessageDialog {
@@ -45,10 +45,10 @@ public class ApplyProfileChangesDialog extends MessageDialog {
* Prompt the user for restart or apply profile changes.
*
* @param parent the parent shell of the dialog, or <code>null</code> if none
- * @param mustRestart indicates whether the user must restart to get the
+ * @param mustRestart indicates whether the user must restart to get the
* changes. If <code>false</code>, then the user may choose to apply
* the changes to the running profile rather than restarting.
- * @return one of PROFILE_IGNORE (do nothing), PROFILE_APPLYCHANGES
+ * @return one of PROFILE_IGNORE (do nothing), PROFILE_APPLYCHANGES
* (attempt to apply the changes), or PROFILE_RESTART (restart the system).
*/
public static int promptForRestart(Shell parent, boolean mustRestart) {
@@ -64,7 +64,7 @@ public class ApplyProfileChangesDialog extends MessageDialog {
/**
* When a button is pressed, store the return code.
- *
+ *
* @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)
*/
@Override
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUGroup.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUGroup.java
index 8d98772d6..084d5cafe 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUGroup.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUGroup.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Sonatype, Inc. - ongoing development
@@ -44,7 +44,7 @@ import org.eclipse.ui.PlatformUI;
* An AvailableIUGroup is a reusable UI component that displays the
* IU's available for installation. By default, content from all available
* repositories is shown.
- *
+ *
* @since 3.4
*/
public class AvailableIUGroup extends StructuredIUGroup {
@@ -88,7 +88,7 @@ public class AvailableIUGroup extends StructuredIUGroup {
* Create a group that represents the available IU's from all available
* repositories. The default policy controls the visibility flags for
* repositories and IU's.
- *
+ *
* @param parent the parent composite for the group
*/
public AvailableIUGroup(ProvisioningUI ui, final Composite parent) {
@@ -104,7 +104,7 @@ public class AvailableIUGroup extends StructuredIUGroup {
/**
* Create a group that represents the available IU's.
- *
+ *
* @param ui the policy to use for deciding what should be shown
* @param parent the parent composite for the group
* @param font The font to use for calculating pixel sizes. This font is
@@ -141,7 +141,7 @@ public class AvailableIUGroup extends StructuredIUGroup {
// If the user expanded or collapsed anything while we were loading a repo
// in the background, we would not want to disrupt their work by making
- // a newly loaded visible and expanding it. Setting the load job to null
+ // a newly loaded visible and expanding it. Setting the load job to null
// will take care of this.
availableIUViewer.getTree().addTreeListener(new TreeListener() {
@Override
@@ -254,7 +254,7 @@ public class AvailableIUGroup extends StructuredIUGroup {
/**
* Set a boolean indicating whether a bold font should be used when
- * showing filtered items. This method does not refresh the tree or
+ * showing filtered items. This method does not refresh the tree or
* labels, so that must be done explicitly by the caller.
* @param useBoldFont
*/
@@ -296,9 +296,9 @@ public class AvailableIUGroup extends StructuredIUGroup {
public Object[] getSelectedIUElements() {
Object[] elements = viewer.getStructuredSelection().toArray();
ArrayList<Object> list = new ArrayList<>(elements.length);
- for (int i = 0; i < elements.length; i++)
- if (ElementUtils.getIU(elements[i]) != null)
- list.add(elements[i]);
+ for (Object element : elements)
+ if (ElementUtils.getIU(element) != null)
+ list.add(element);
return list.toArray();
}
@@ -315,9 +315,9 @@ public class AvailableIUGroup extends StructuredIUGroup {
if (selections.length == 0)
return new IInstallableUnit[0];
ArrayList<IInstallableUnit> leaves = new ArrayList<>(selections.length);
- for (int i = 0; i < selections.length; i++) {
- if (!getCheckboxTreeViewer().getGrayed(selections[i])) {
- IInstallableUnit iu = ProvUI.getAdapter(selections[i], IInstallableUnit.class);
+ for (Object selection : selections) {
+ if (!getCheckboxTreeViewer().getGrayed(selection)) {
+ IInstallableUnit iu = ProvUI.getAdapter(selection, IInstallableUnit.class);
if (iu != null && !ProvUI.isCategory(iu) && !leaves.contains(iu))
leaves.add(iu);
}
@@ -336,10 +336,10 @@ public class AvailableIUGroup extends StructuredIUGroup {
*/
void makeRepositoryVisible(final URI location) {
// If we are viewing by anything other than site, there is no specific way
- // to make a repo visible.
+ // to make a repo visible.
if (!(queryContext.getViewType() == IUViewQueryContext.AVAILABLE_VIEW_BY_REPO)) {
if (Display.getCurrent() == null)
- display.asyncExec(() -> updateAvailableViewState());
+ display.asyncExec(this::updateAvailableViewState);
else
updateAvailableViewState();
return;
@@ -391,13 +391,12 @@ public class AvailableIUGroup extends StructuredIUGroup {
if (event.getJob() == lastRequestedLoadJob) {
final Tree tree = treeViewer.getTree();
if (tree != null && !tree.isDisposed()) {
- TreeItem[] items = tree.getItems();
- for (int i = 0; i < items.length; i++) {
- if (items[i].getData() instanceof IRepositoryElement) {
- URI url = ((IRepositoryElement<?>) items[i].getData()).getLocation();
+ for (TreeItem item : tree.getItems()) {
+ if (item.getData() instanceof IRepositoryElement) {
+ URI url = ((IRepositoryElement<?>) item.getData()).getLocation();
if (url.equals(location)) {
- treeViewer.expandToLevel(items[i].getData(), AbstractTreeViewer.ALL_LEVELS);
- tree.select(items[i]);
+ treeViewer.expandToLevel(item.getData(), AbstractTreeViewer.ALL_LEVELS);
+ tree.select(item);
return;
}
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUPatternFilter.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUPatternFilter.java
index 0faa48ad7..af6d7f8e1 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUPatternFilter.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUPatternFilter.java
@@ -22,7 +22,7 @@ import org.eclipse.ui.dialogs.PatternFilter;
/**
* A class that handles filtering IU's based on a supplied matching string.
- *
+ *
* @since 3.4
*
*/
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUsPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUsPage.java
index e07c2ff6b..4457aa964 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUsPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/AvailableIUsPage.java
@@ -97,7 +97,7 @@ public class AvailableIUsPage extends ProvisioningWizardPage implements ISelecta
layout.marginWidth = 0;
composite.setLayout(layout);
- // Repo manipulation
+ // Repo manipulation
createRepoArea(composite);
sashForm = new SashForm(composite, SWT.VERTICAL);
@@ -113,7 +113,7 @@ public class AvailableIUsPage extends ProvisioningWizardPage implements ISelecta
grid.marginHeight = 0;
aboveSash.setLayout(grid);
- // Now the available group
+ // Now the available group
// If repositories are visible, we want to default to showing no repos. Otherwise all.
int filterConstant = AvailableIUGroup.AVAILABLE_NONE;
if (!getPolicy().getRepositoriesVisible()) {
@@ -126,7 +126,7 @@ public class AvailableIUsPage extends ProvisioningWizardPage implements ISelecta
availableIUGroup = new AvailableIUGroup(getProvisioningUI(), aboveSash, JFaceResources.getDialogFont(), queryContext, new IUColumnConfig[] {nameColumn, versionColumn}, filterConstant);
// Selection listeners must be registered on both the normal selection
- // events and the check mark events. Must be done after buttons
+ // events and the check mark events. Must be done after buttons
// are created so that the buttons can register and receive their selection notifications before us.
availableIUGroup.getStructuredViewer().addSelectionChangedListener(event -> {
updateDetails();
@@ -514,7 +514,7 @@ public class AvailableIUsPage extends ProvisioningWizardPage implements ISelecta
queryContext.setViewType(section.getInt(AVAILABLE_VIEW_TYPE));
}
} catch (NumberFormatException e) {
- // Ignore if there actually was a value that didn't parse.
+ // Ignore if there actually was a value that didn't parse.
}
// We no longer (in 3.5) show a view by site, so ignore any older dialog setting that
// instructs us to do this.
@@ -550,7 +550,7 @@ public class AvailableIUsPage extends ProvisioningWizardPage implements ISelecta
versionColumn.setWidthInPixels(section.getInt(VERSION_COLUMN_WIDTH));
}
} catch (NumberFormatException e) {
- // Ignore if there actually was a value that didn't parse.
+ // Ignore if there actually was a value that didn't parse.
}
}
}
@@ -569,7 +569,7 @@ public class AvailableIUsPage extends ProvisioningWizardPage implements ISelecta
}
}
} catch (NumberFormatException e) {
- // Ignore if there actually was a value that didn't parse.
+ // Ignore if there actually was a value that didn't parse.
}
}
return ILayoutConstants.IUS_TO_DETAILS_WEIGHTS;
@@ -678,10 +678,10 @@ public class AvailableIUsPage extends ProvisioningWizardPage implements ISelecta
}
/**
- * Set the selections to be used in this page. This method only changes the
+ * Set the selections to be used in this page. This method only changes the
* selections of items that are already visible. It does not expand items
* or change the repository elements in order to make the selections valid.
- *
+ *
* @param elements
*/
@Override
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ComboAutoCompleteField.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ComboAutoCompleteField.java
index 9439b0d0f..7f6249e02 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ComboAutoCompleteField.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ComboAutoCompleteField.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2018 IBM Corporation and others.
+ * Copyright (c) 2009, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -15,7 +15,7 @@
package org.eclipse.equinox.internal.p2.ui.dialogs;
import java.util.ArrayList;
-import org.eclipse.equinox.internal.p2.ui.misc.StringMatcher;
+import org.eclipse.core.text.StringMatcher;
import org.eclipse.jface.fieldassist.*;
import org.eclipse.swt.widgets.Combo;
@@ -24,7 +24,7 @@ import org.eclipse.swt.widgets.Combo;
* pattern matching the text in a combo to the contents of the combo.
* If the proposals should include items outside of the combo, then
* clients can set their own proposal strings.
- *
+ *
* @since 3.5
*/
public class ComboAutoCompleteField {
@@ -57,9 +57,9 @@ public class ComboAutoCompleteField {
return new IContentProposal[0];
StringMatcher matcher = new StringMatcher("*" + contents + "*", true, false); //$NON-NLS-1$ //$NON-NLS-2$
ArrayList<String> matches = new ArrayList<>();
- for (int i1 = 0; i1 < items.length; i1++)
- if (matcher.match(items[i1]))
- matches.add(items[i1]);
+ for (String item : items)
+ if (matcher.match(item))
+ matches.add(item);
// We don't want to autoactivate if the only proposal exactly matches
// what is in the combo. This prevents the popup from
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ContainerCheckedTreeViewer.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ContainerCheckedTreeViewer.java
index a5c55a570..827d04680 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ContainerCheckedTreeViewer.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ContainerCheckedTreeViewer.java
@@ -27,7 +27,7 @@ import org.eclipse.swt.widgets.*;
* (1)checking a parent will expand it when we know it's a long running
* operation that involves a placeholder. The modified method is
* doCheckStateChanged().
- *
+ *
* (2)when preserving selection, we do not want the check state to be rippled
* through the child and parent nodes. Since we know that
* preservingSelection(Runnable) isn't working properly, no need to do a bunch
@@ -56,7 +56,7 @@ public class ContainerCheckedTreeViewer extends CheckboxTreeViewer {
/**
* Constructor for ContainerCheckedTreeViewer.
- *
+ *
* @see CheckboxTreeViewer#CheckboxTreeViewer(Composite)
*/
public ContainerCheckedTreeViewer(Composite parent) {
@@ -66,7 +66,7 @@ public class ContainerCheckedTreeViewer extends CheckboxTreeViewer {
/**
* Constructor for ContainerCheckedTreeViewer.
- *
+ *
* @see CheckboxTreeViewer#CheckboxTreeViewer(Composite,int)
*/
public ContainerCheckedTreeViewer(Composite parent, int style) {
@@ -76,7 +76,7 @@ public class ContainerCheckedTreeViewer extends CheckboxTreeViewer {
/**
* Constructor for ContainerCheckedTreeViewer.
- *
+ *
* @see CheckboxTreeViewer#CheckboxTreeViewer(Tree)
*/
public ContainerCheckedTreeViewer(Tree tree) {
@@ -104,7 +104,7 @@ public class ContainerCheckedTreeViewer extends CheckboxTreeViewer {
/**
* Update element after a checkstate change.
- *
+ *
* @param element
*/
protected void doCheckStateChanged(Object element) {
@@ -231,7 +231,7 @@ public class ContainerCheckedTreeViewer extends CheckboxTreeViewer {
/**
* Recursively add the filtered children of element to the result.
- *
+ *
* @param element
* @param result
*/
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/CopyUtils.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/CopyUtils.java
index e1d2c2a51..d4b13da3f 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/CopyUtils.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/CopyUtils.java
@@ -27,7 +27,7 @@ import org.eclipse.ui.handlers.IHandlerService;
import org.eclipse.ui.swt.IFocusService;
public class CopyUtils {
- public static final String NEWLINE = System.getProperty("line.separator"); //$NON-NLS-1$
+ public static final String NEWLINE = System.lineSeparator();
public static final String DELIMITER = "\t"; //$NON-NLS-1$
private static final String NESTING_INDENT = " "; //$NON-NLS-1$
@@ -46,8 +46,9 @@ public class CopyUtils {
}
/**
- * Install a copy popup menu on the specified control and activate the copy handler for the control when
- * the control has focus. The handler will be deactivated when the control is disposed.
+ * Install a copy popup menu on the specified control and activate the copy
+ * handler for the control when the control has focus. The handler will be
+ * deactivated when the control is disposed.
*
* @param copyable the copyable that will perform the copy
* @param control the control on which to install the menu and handler
@@ -58,18 +59,21 @@ public class CopyUtils {
new CopyPopup(copyable, control);
if (fs != null && hs != null) {
fs.addFocusTracker(control, CONTROL_ID);
- final IHandlerActivation handlerActivation = hs.activateHandler(CopyHandler.ID, new CopyHandler(copyable), new Expression() {
- @Override
- public EvaluationResult evaluate(IEvaluationContext context) {
- return context.getVariable(ISources.ACTIVE_FOCUS_CONTROL_NAME) == control ? EvaluationResult.TRUE : EvaluationResult.FALSE;
- }
+ final IHandlerActivation handlerActivation = hs.activateHandler(CopyHandler.ID, new CopyHandler(copyable),
+ new Expression() {
+ @Override
+ public EvaluationResult evaluate(IEvaluationContext context) {
+ return context.getVariable(ISources.ACTIVE_FOCUS_CONTROL_NAME) == control
+ ? EvaluationResult.TRUE
+ : EvaluationResult.FALSE;
+ }
- @Override
- public void collectExpressionInfo(final ExpressionInfo info) {
- info.addVariableNameAccess(ISources.ACTIVE_FOCUS_CONTROL_NAME);
- }
+ @Override
+ public void collectExpressionInfo(final ExpressionInfo info) {
+ info.addVariableNameAccess(ISources.ACTIVE_FOCUS_CONTROL_NAME);
+ }
- });
+ });
control.addDisposeListener(e -> hs.deactivateHandler(handlerActivation));
}
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/DelayedFilterCheckboxTree.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/DelayedFilterCheckboxTree.java
index 300ce8cac..21f026608 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/DelayedFilterCheckboxTree.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/DelayedFilterCheckboxTree.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -25,10 +25,10 @@ import org.eclipse.ui.progress.WorkbenchJob;
/**
* FilteredTree extension that creates a ContainerCheckedTreeViewer, manages the
* check state across filtering (working around bugs in ContainerCheckedTreeViewer),
- * and preloads all metadata repositories before allowing filtering, in order to
+ * and preloads all metadata repositories before allowing filtering, in order to
* coordinate background fetch and filtering. It also manages a cache of expanded
* elements that can survive a change of input.
- *
+ *
* @since 3.4
*
*/
@@ -70,7 +70,7 @@ public class DelayedFilterCheckboxTree extends FilteredTree {
clearCheckStateCache();
} else {
ArrayList<Object> toRemove = new ArrayList<>(1);
- // See bug 258117. Ideally we would get check state changes
+ // See bug 258117. Ideally we would get check state changes
// for children when the parent state changed, but we aren't, so
// we need to remove all children from the additive check state
// cache.
@@ -201,7 +201,7 @@ public class DelayedFilterCheckboxTree extends FilteredTree {
} else if (ignoreFiltering) {
event.getJob().sleep();
} else {
- // shouldn't get here unless the prefilter job finished
+ // shouldn't get here unless the prefilter job finished
// and ignoreFiltering became false since we entered this listener.
rememberLeafCheckState();
}
@@ -282,10 +282,10 @@ public class DelayedFilterCheckboxTree extends FilteredTree {
if (checkState == null) {
checkState = new HashSet<>(checked.length);
}
- for (int i = 0; i < checked.length; i++) {
- if (!v.getGrayed(checked[i]) && contentProvider.getChildren(checked[i]).length == 0) {
- if (!checkState.contains(checked[i])) {
- checkState.add(checked[i]);
+ for (Object element : checked) {
+ if (!v.getGrayed(element) && contentProvider.getChildren(element).length == 0) {
+ if (!checkState.contains(element)) {
+ checkState.add(element);
}
}
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ILayoutConstants.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ILayoutConstants.java
index ed3bcc902..14659810e 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ILayoutConstants.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ILayoutConstants.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -17,9 +17,9 @@ package org.eclipse.equinox.internal.p2.ui.dialogs;
* ILayoutConstants defines common dialog constants used when laying
* out dialogs. Units of measurement are character widths and heights
* unless otherwise specified.
- *
+ *
* This interface is not intended to be implemented
- *
+ *
* @noimplement This interface is not intended to be implemented by clients.
* @noextend This interface is not intended to be extended by clients.
* @since 3.5
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IPreFilterJobProvider.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IPreFilterJobProvider.java
index 3506b1ce6..9cf44cf0c 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IPreFilterJobProvider.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IPreFilterJobProvider.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -19,7 +19,7 @@ import org.eclipse.core.runtime.jobs.Job;
* IPreFilterJobProvider provides an optional job that must be run before
* filtering can be allowed to occur in a filtered tree. The client is assumed
* to have set the expected job priority.
- *
+ *
*/
public interface IPreFilterJobProvider {
public Job getPreFilterJob();
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IRepositoryManipulationHook.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IRepositoryManipulationHook.java
index dd9eace18..678699148 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IRepositoryManipulationHook.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IRepositoryManipulationHook.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IRepositorySelectionListener.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IRepositorySelectionListener.java
index 3d7a584ea..d64f31742 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IRepositorySelectionListener.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IRepositorySelectionListener.java
@@ -16,16 +16,16 @@ package org.eclipse.equinox.internal.p2.ui.dialogs;
import java.net.URI;
/**
- * Listener for the repository selection combo. Whenever the selected repository changes (menu selection,
+ * Listener for the repository selection combo. Whenever the selected repository changes (menu selection,
* text modified, new repo added) this listener will be notified.
- *
+ *
* @since 3.5
*/
public interface IRepositorySelectionListener {
/**
* Called whenever the selected repository in the combo changes.
- *
- * @param repoChoice one of AvailableIUGroup.AVAILABLE_NONE, AvailableIUGroup.AVAILABLE_ALL, AvailableIUGroup.AVAILABLE_LOCAL, AvailableIUGroup.AVAILABLE_SPECIFIED
+ *
+ * @param repoChoice one of AvailableIUGroup.AVAILABLE_NONE, AvailableIUGroup.AVAILABLE_ALL, AvailableIUGroup.AVAILABLE_LOCAL, AvailableIUGroup.AVAILABLE_SPECIFIED
* @param repoLocation if the repoChoice is set to AvailableIUGroup.AVAILABLE_SPECIFIED, this field will contain the URI of the selected repo, otherwise <code>null</code>
*/
public void repositorySelectionChanged(int repoChoice, URI repoLocation);
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IResolutionErrorReportingPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IResolutionErrorReportingPage.java
index 0e5082482..8430bad7b 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IResolutionErrorReportingPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IResolutionErrorReportingPage.java
@@ -18,7 +18,7 @@ import org.eclipse.equinox.internal.p2.ui.model.IUElementListRoot;
import org.eclipse.equinox.p2.operations.ProfileChangeOperation;
/**
- *
+ *
* IErrorReportingPage is used to report resolution
* errors on a wizard page.
*
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ISelectableIUsPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ISelectableIUsPage.java
index 0e3c5730d..561cb2b13 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ISelectableIUsPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ISelectableIUsPage.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -17,7 +17,7 @@ package org.eclipse.equinox.internal.p2.ui.dialogs;
import org.eclipse.jface.wizard.IWizardPage;
/**
- *
+ *
* ISelectableIUsPage is used to get the selected or checked IUs in a
* wizard page.
*
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUCopyrightPropertyPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUCopyrightPropertyPage.java
index 3f661bc2a..07accd86b 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUCopyrightPropertyPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUCopyrightPropertyPage.java
@@ -27,7 +27,7 @@ import org.eclipse.swt.widgets.*;
/**
* PropertyPage that shows an IU's copyright
- *
+ *
* @since 3.4
*/
public class IUCopyrightPropertyPage extends IUPropertyPage {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUDetailsGroup.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUDetailsGroup.java
index 818ee6d25..c33c880c0 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUDetailsGroup.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUDetailsGroup.java
@@ -1,5 +1,5 @@
-/*******************************************************************************
-* Copyright (c) 2009, 2016 EclipseSource and others.
+/*******************************************************************************
+* Copyright (c) 2009, 2020 EclipseSource and others.
*
* This
* program and the accompanying materials are made available under the terms of
@@ -15,9 +15,9 @@
******************************************************************************/
package org.eclipse.equinox.internal.p2.ui.dialogs;
+import org.eclipse.core.text.StringMatcher;
import org.eclipse.equinox.internal.p2.ui.ProvUIMessages;
import org.eclipse.equinox.internal.p2.ui.actions.PropertyDialogAction;
-import org.eclipse.equinox.internal.p2.ui.misc.StringMatcher;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
@@ -50,7 +50,7 @@ public class IUDetailsGroup {
private String lastText;
/**
- *
+ *
*/
public IUDetailsGroup(Composite parent, ISelectionProvider selectionProvider, int widthHint, boolean scrollable) {
this.selectionProvider = selectionProvider;
@@ -142,13 +142,10 @@ public class IUDetailsGroup {
Link link = new Link(parent, SWT.PUSH);
link.setText(text);
- link.addListener(SWT.Selection, new Listener() {
- @Override
- public void handleEvent(Event event) {
- IAction linkAction = getLinkAction(event.widget);
- if (linkAction != null) {
- linkAction.runWithEvent(event);
- }
+ link.addListener(SWT.Selection, event -> {
+ IAction linkAction = getLinkAction(event.widget);
+ if (linkAction != null) {
+ linkAction.runWithEvent(event);
}
});
link.setToolTipText(action.getToolTipText());
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUGeneralInfoPropertyPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUGeneralInfoPropertyPage.java
index b74bd7ce6..050d66ab2 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUGeneralInfoPropertyPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUGeneralInfoPropertyPage.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -26,7 +26,7 @@ import org.eclipse.swt.widgets.*;
/**
* PropertyPage that shows an IU's properties
- *
+ *
* @since 3.4
*/
public class IUGeneralInfoPropertyPage extends IUPropertyPage {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IULicensePropertyPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IULicensePropertyPage.java
index 7e8d82f4a..a5a69935a 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IULicensePropertyPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IULicensePropertyPage.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -27,7 +27,7 @@ import org.eclipse.swt.widgets.*;
/**
* PropertyPage that shows an IU's license
- *
+ *
* @since 3.4
*/
public class IULicensePropertyPage extends IUPropertyPage {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUPropertyPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUPropertyPage.java
index d5e3f2d37..980208660 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUPropertyPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IUPropertyPage.java
@@ -31,7 +31,7 @@ import org.eclipse.ui.statushandlers.StatusManager;
/**
* PropertyPage that shows an IU's properties
- *
+ *
* @since 3.4
*/
public abstract class IUPropertyPage extends PropertyPage {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IViewMenuProvider.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IViewMenuProvider.java
index fd2afe491..62b72b14f 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IViewMenuProvider.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/IViewMenuProvider.java
@@ -17,7 +17,7 @@ package org.eclipse.equinox.internal.p2.ui.dialogs;
import org.eclipse.jface.action.IMenuManager;
/**
- *
+ *
* IViewMenuProvider is used to fill a view menu in dialog groups that support them.
* @since 3.4
*
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstallWizard.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstallWizard.java
index 6a1dbe8cc..1275b3ecd 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstallWizard.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstallWizard.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Sonatype, Inc. - ongoing development
@@ -35,9 +35,9 @@ import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
/**
- * An install wizard that allows the users to browse all of the repositories
- * and search/select for items to install.
- *
+ * An install wizard that allows the users to browse all of the repositories and
+ * search/select for items to install.
+ *
* @since 3.6
*/
public class InstallWizard extends WizardWithLicenses {
@@ -46,7 +46,8 @@ public class InstallWizard extends WizardWithLicenses {
boolean ignoreSelectionChanges = false;
IStatus installHandlerStatus;
- public InstallWizard(ProvisioningUI ui, InstallOperation operation, Collection<IInstallableUnit> initialSelections, LoadMetadataRepositoryJob preloadJob) {
+ public InstallWizard(ProvisioningUI ui, InstallOperation operation, Collection<IInstallableUnit> initialSelections,
+ LoadMetadataRepositoryJob preloadJob) {
super(ui, operation, initialSelections == null ? null : initialSelections.toArray(), preloadJob);
setWindowTitle(ProvUIMessages.InstallIUOperationLabel);
setDefaultPageImageDescriptor(ProvUIImages.getImageDescriptor(ProvUIImages.WIZARD_BANNER_INSTALL));
@@ -72,16 +73,18 @@ public class InstallWizard extends WizardWithLicenses {
return;
root = new IUElementListRoot(ui);
if (operation instanceof RemediationOperation) {
- AvailableIUElement[] elements = ElementUtils.requestToElement(((RemediationOperation) operation).getCurrentRemedy(), true);
+ AvailableIUElement[] elements = ElementUtils
+ .requestToElement(((RemediationOperation) operation).getCurrentRemedy(), true);
root.setChildren(elements);
planSelections = elements;
} else {
ArrayList<AvailableIUElement> list = new ArrayList<>(selectedElements.length);
ArrayList<AvailableIUElement> selections = new ArrayList<>(selectedElements.length);
- for (int i = 0; i < selectedElements.length; i++) {
- IInstallableUnit iu = ElementUtils.getIU(selectedElements[i]);
+ for (Object selectedElement : selectedElements) {
+ IInstallableUnit iu = ElementUtils.getIU(selectedElement);
if (iu != null) {
- AvailableIUElement element = new AvailableIUElement(root, iu, getProfileId(), shouldShowProvisioningPlanChildren());
+ AvailableIUElement element = new AvailableIUElement(root, iu, getProfileId(),
+ shouldShowProvisioningPlanChildren());
list.add(element);
selections.add(element);
}
@@ -92,8 +95,7 @@ public class InstallWizard extends WizardWithLicenses {
}
/*
- * Overridden to dynamically determine which page to get
- * selections from.
+ * Overridden to dynamically determine which page to get selections from.
*/
@Override
protected Object[] getOperationSelections() {
@@ -101,10 +103,9 @@ public class InstallWizard extends WizardWithLicenses {
}
/*
- * Get the page that is driving operation selections. This is
- * usually the main page, but it could be error page if there
- * was a resolution error and the user decides to change selections
- * and try again without going back.
+ * Get the page that is driving operation selections. This is usually the main
+ * page, but it could be error page if there was a resolution error and the user
+ * decides to change selections and try again without going back.
*/
protected ISelectableIUsPage getOperationSelectionsPage() {
IWizardPage page = getContainer().getCurrentPage();
@@ -141,14 +142,14 @@ public class InstallWizard extends WizardWithLicenses {
protected ProfileChangeOperation getProfileChangeOperation(Object[] elements) {
InstallOperation op = new InstallOperation(ui.getSession(), ElementUtils.elementsToIUs(elements));
op.setProfileId(getProfileId());
- // op.setRootMarkerKey(getRootMarkerKey());
+ // op.setRootMarkerKey(getRootMarkerKey());
return op;
}
@Override
protected boolean shouldUpdateErrorPageModelOnPlanChange() {
// We don't want the root of the error page to change unless we are on the
- // main page. For example, if we are on the error page, change checkmarks, and
+ // main page. For example, if we are on the error page, change checkmarks, and
// resolve again with an error, we wouldn't want the root items to change in the
// error page.
return getContainer().getCurrentPage() == mainPage && super.shouldUpdateErrorPageModelOnPlanChange();
@@ -161,8 +162,8 @@ public class InstallWizard extends WizardWithLicenses {
}
/*
- * overridden to ensure that the main page selections stay in synch
- * with changes to the error page.
+ * overridden to ensure that the main page selections stay in synch with changes
+ * to the error page.
*/
@Override
public void operationSelectionsChanged(ISelectableIUsPage page) {
@@ -171,9 +172,11 @@ public class InstallWizard extends WizardWithLicenses {
super.operationSelectionsChanged(page);
// If we are on the error page, resolution has failed.
// Our ability to move on depends on whether the selections have changed.
- // If they are the same selections, then we are not complete until selections are changed.
+ // If they are the same selections, then we are not complete until selections
+ // are changed.
if (getOperationSelectionsPage() == errorPage)
- ((WizardPage) errorPage).setPageComplete(pageSelectionsHaveChanged(errorPage) && errorPage.getCheckedIUElements().length > 0);
+ ((WizardPage) errorPage).setPageComplete(
+ pageSelectionsHaveChanged(errorPage) && errorPage.getCheckedIUElements().length > 0);
synchSelections(page);
}
@@ -192,34 +195,41 @@ public class InstallWizard extends WizardWithLicenses {
}
/*
- * Overridden to check whether there are UpdateManager install handlers in the item
- * to be installed. Operations don't know about this compatibility issue.
+ * Overridden to check whether there are UpdateManager install handlers in the
+ * item to be installed. Operations don't know about this compatibility issue.
*/
@Override
public IStatus getCurrentStatus() {
IStatus originalStatus = super.getCurrentStatus();
int sev = originalStatus.getSeverity();
- // Use the previously computed status if the user cancelled or if we were already in error.
- // If we don't have an operation or a plan, we can't check this condition either, so just
+ // Use the previously computed status if the user cancelled or if we were
+ // already in error.
+ // If we don't have an operation or a plan, we can't check this condition
+ // either, so just
// use the normal status.
- if (sev == IStatus.CANCEL || sev == IStatus.ERROR || operation == null || operation.getProvisioningPlan() == null) {
+ if (sev == IStatus.CANCEL || sev == IStatus.ERROR || operation == null
+ || operation.getProvisioningPlan() == null) {
return originalStatus;
}
// Does the plan require install handler support?
installHandlerStatus = UpdateManagerCompatibility.getInstallHandlerStatus(operation.getProvisioningPlan());
if (!installHandlerStatus.isOK()) {
- // Set the status into the wizard. This ensures future calls to this method won't
+ // Set the status into the wizard. This ensures future calls to this method
+ // won't
// repeat the work (and prompting).
couldNotResolveStatus = installHandlerStatus;
- // Is the update manager installer present? If so, offer to open it.
+ // Is the update manager installer present? If so, offer to open it.
// In either case, the failure will be reported in this wizard.
if (ProvUI.isUpdateManagerInstallerPresent()) {
PlatformUI.getWorkbench().getDisplay().asyncExec(() -> {
Shell shell = ProvUI.getDefaultParentShell();
- MessageDialog dialog = new MessageDialog(shell, ProvUIMessages.Policy_RequiresUpdateManagerTitle, null, ProvUIMessages.Policy_RequiresUpdateManagerMessage, MessageDialog.WARNING, new String[] {ProvUIMessages.LaunchUpdateManagerButton, IDialogConstants.CANCEL_LABEL}, 0);
+ MessageDialog dialog = new MessageDialog(shell, ProvUIMessages.Policy_RequiresUpdateManagerTitle,
+ null, ProvUIMessages.Policy_RequiresUpdateManagerMessage, MessageDialog.WARNING,
+ new String[] { ProvUIMessages.LaunchUpdateManagerButton, IDialogConstants.CANCEL_LABEL },
+ 0);
if (dialog.open() == 0)
- BusyIndicator.showWhile(shell.getDisplay(), () -> UpdateManagerCompatibility.openInstaller());
+ BusyIndicator.showWhile(shell.getDisplay(), UpdateManagerCompatibility::openInstaller);
});
}
return installHandlerStatus;
@@ -228,14 +238,16 @@ public class InstallWizard extends WizardWithLicenses {
}
/*
- * When we've found an install handler, that status trumps anything that the operation might have
- * determined. We are relying here on the knowledge that the wizard's couldNotResolveStatus is
- * reset on every new resolution, so that status only holds the installHandler status when it is
- * the current status. The installHandlerStatus must be non-OK for it to matter at all.
- *
+ * When we've found an install handler, that status trumps anything that the
+ * operation might have determined. We are relying here on the knowledge that
+ * the wizard's couldNotResolveStatus is reset on every new resolution, so that
+ * status only holds the installHandler status when it is the current status.
+ * The installHandlerStatus must be non-OK for it to matter at all.
+ *
*/
@Override
public boolean statusOverridesOperation() {
- return installHandlerStatus != null && !installHandlerStatus.isOK() && couldNotResolveStatus == installHandlerStatus;
+ return super.statusOverridesOperation() || (installHandlerStatus != null && !installHandlerStatus.isOK()
+ && couldNotResolveStatus == installHandlerStatus);
}
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstallWizardPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstallWizardPage.java
index 5938a0045..a1d93bb47 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstallWizardPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstallWizardPage.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Red Hat, Inc. - support for remediation page
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstalledIUGroup.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstalledIUGroup.java
index 0b87d3edb..291e66aed 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstalledIUGroup.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/InstalledIUGroup.java
@@ -7,18 +7,21 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.internal.p2.ui.dialogs;
+import java.util.*;
import org.eclipse.e4.ui.dialogs.filteredtree.FilteredTree;
import org.eclipse.e4.ui.dialogs.filteredtree.PatternFilter;
import org.eclipse.equinox.internal.p2.ui.ProvUI;
import org.eclipse.equinox.internal.p2.ui.ProvUIProvisioningListener;
+import org.eclipse.equinox.internal.p2.ui.model.InstalledIUElement;
import org.eclipse.equinox.internal.p2.ui.model.ProfileElement;
import org.eclipse.equinox.internal.p2.ui.viewers.*;
+import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.p2.ui.ProvisioningUI;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.viewers.TreeViewer;
@@ -27,9 +30,9 @@ import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.*;
/**
- * An InstalledIUGroup is a reusable UI component that displays the
- * IU's in a given profile.
- *
+ * An InstalledIUGroup is a reusable UI component that displays the IU's in a
+ * given profile.
+ *
* @since 3.4
*/
public class InstalledIUGroup extends StructuredIUGroup {
@@ -38,14 +41,15 @@ public class InstalledIUGroup extends StructuredIUGroup {
/**
* Create a group that represents the installed IU's.
- *
- * @param parent the parent composite for the group
- * @param font The font to use for calculating pixel sizes. This font is
- * not managed by the receiver.
- * @param profileId the id of the profile whose content is being shown.
+ *
+ * @param parent the parent composite for the group
+ * @param font The font to use for calculating pixel sizes. This font is
+ * not managed by the receiver.
+ * @param profileId the id of the profile whose content is being shown.
* @param columnConfig the columns to be shown
*/
- public InstalledIUGroup(ProvisioningUI ui, final Composite parent, Font font, String profileId, IUColumnConfig[] columnConfig) {
+ public InstalledIUGroup(ProvisioningUI ui, final Composite parent, Font font, String profileId,
+ IUColumnConfig[] columnConfig) {
super(ui, parent, font, columnConfig);
if (profileId == null)
this.profileId = ui.getProfileId();
@@ -59,17 +63,97 @@ public class InstalledIUGroup extends StructuredIUGroup {
// Table of installed IU's
FilteredTree filteredTree = new FilteredTree(parent,
SWT.MULTI | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER, new PatternFilter());
- filteredTree.getFilterControl().setFocus(); // Steal focus, consistent with org.eclipse.ui.internal.about.AboutPluginsPage
+ filteredTree.getFilterControl().setFocus(); // Steal focus, consistent with
+ // org.eclipse.ui.internal.about.AboutPluginsPage
TreeViewer installedIUViewer = filteredTree.getViewer();
- // Filters and sorters before establishing content, so we don't refresh unnecessarily.
+ // Filters and sorters before establishing content, so we don't refresh
+ // unnecessarily.
IUComparator comparator = new IUComparator(IUComparator.IU_NAME);
comparator.useColumnConfig(getColumnConfig());
installedIUViewer.setComparator(comparator);
installedIUViewer.setComparer(new ProvElementComparer());
// Now the content.
- installedIUViewer.setContentProvider(new DeferredQueryContentProvider());
+ // Specialize the content provider for performance optimization.
+ // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=550265
+ installedIUViewer.setContentProvider(new DeferredQueryContentProvider() {
+ /**
+ * A cache for mapping each element to its children.
+ */
+ private final Map<Object, Object[]> elementChildren = new HashMap<>();
+
+ /**
+ * A cache for mapping each IU to that IU's children.
+ */
+ private final Map<IInstallableUnit, Set<IInstallableUnit>> iuChildren = new HashMap<>();
+
+ @Override
+ public boolean hasChildren(Object element) {
+ // Delegate to getChildren so that all children are always cached.
+ return getChildren(element).length != 0;
+ }
+
+ @Override
+ public Object[] getChildren(Object element) {
+ Object[] objects = elementChildren.get(element);
+ if (objects == null) {
+ if (element instanceof InstalledIUElement) {
+ // Special case handling.
+ InstalledIUElement installedIUElement = (InstalledIUElement) element;
+ if (!installedIUElement.shouldShowChildren()) {
+ // If the element shouldn't show children because that would create a cycle,
+ // don't show any.
+ objects = new Object[0];
+ elementChildren.put(element, objects);
+ return objects;
+ }
+
+ // If the children for this IU have already been computed.
+ String localProfileId = installedIUElement.getProfileId();
+ IInstallableUnit iu = installedIUElement.getIU();
+ Set<IInstallableUnit> children = iuChildren.get(iu);
+ if (children != null) {
+ // Bypass the expensive query computation because we already know the IU
+ // children from a previous expensive computation.
+ Set<InstalledIUElement> elementIUChildren = new LinkedHashSet<>();
+ for (IInstallableUnit childIU : children) {
+ elementIUChildren.add(new InstalledIUElement(element, localProfileId, childIU));
+ }
+
+ objects = elementIUChildren.toArray();
+ elementChildren.put(element, objects);
+ return objects;
+ }
+ }
+
+ // Get the children the normal ways and cache them.
+ objects = super.getChildren(element);
+ elementChildren.put(element, objects);
+
+ // If there are children and this is an InstalledIUElement, cache the mapping
+ // from the IU to the child IUs for reuse above.
+ if (objects.length != 0 && element instanceof InstalledIUElement) {
+ InstalledIUElement installedIUElement = (InstalledIUElement) element;
+ IInstallableUnit iu = installedIUElement.getIU();
+ Set<IInstallableUnit> children = new LinkedHashSet<>();
+ for (Object object : objects) {
+ if (object instanceof InstalledIUElement) {
+ InstalledIUElement childInstalledIUElement = (InstalledIUElement) object;
+ IInstallableUnit childIU = childInstalledIUElement.getIU();
+ children.add(childIU);
+ } else {
+ // In case all the children are not also InstalledIUElement, which shouldn't
+ // happen.
+ return objects;
+ }
+ }
+ iuChildren.put(iu, children);
+ }
+ }
+ return objects;
+ }
+ });
// Now the visuals, columns before labels.
setTreeColumns(installedIUViewer.getTree());
@@ -78,9 +162,13 @@ public class InstalledIUGroup extends StructuredIUGroup {
// Input last.
installedIUViewer.setInput(getInput());
- final StructuredViewerProvisioningListener listener = new StructuredViewerProvisioningListener(getClass().getName(), installedIUViewer, ProvUIProvisioningListener.PROV_EVENT_IU | ProvUIProvisioningListener.PROV_EVENT_PROFILE, getProvisioningUI().getOperationRunner());
+ final StructuredViewerProvisioningListener listener = new StructuredViewerProvisioningListener(
+ getClass().getName(), installedIUViewer,
+ ProvUIProvisioningListener.PROV_EVENT_IU | ProvUIProvisioningListener.PROV_EVENT_PROFILE,
+ getProvisioningUI().getOperationRunner());
ProvUI.getProvisioningEventBus(getProvisioningUI().getSession()).addListener(listener);
- installedIUViewer.getControl().addDisposeListener(e -> ProvUI.getProvisioningEventBus(getProvisioningUI().getSession()).removeListener(listener));
+ installedIUViewer.getControl().addDisposeListener(
+ e -> ProvUI.getProvisioningEventBus(getProvisioningUI().getSession()).removeListener(listener));
return installedIUViewer;
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/PGPPublicKeyViewDialog.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/PGPPublicKeyViewDialog.java
new file mode 100644
index 000000000..a6cbf3be1
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/PGPPublicKeyViewDialog.java
@@ -0,0 +1,248 @@
+/*******************************************************************************
+ * Copyright (c) 2022 Eclipse contributors and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.equinox.internal.p2.ui.dialogs;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.List;
+import org.bouncycastle.bcpg.*;
+import org.bouncycastle.openpgp.PGPPublicKey;
+import org.bouncycastle.openpgp.PGPSignature;
+import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.equinox.internal.p2.ui.ProvUIMessages;
+import org.eclipse.equinox.p2.repository.spi.PGPPublicKeyService;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.TitleAreaDialog;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.viewers.StyledString;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.graphics.*;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.*;
+
+/**
+ * Presents information about a key in a format similar to what key servers
+ * display.
+ *
+ * @since 1.2.4
+ */
+public class PGPPublicKeyViewDialog extends TitleAreaDialog {
+
+ private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); //$NON-NLS-1$
+
+ final private PGPPublicKey originalKey;
+
+ final private PGPPublicKeyService keyService;
+
+ private StyledText styledText;
+
+ public PGPPublicKeyViewDialog(Shell parentShell, PGPPublicKey key, PGPPublicKeyService keyService) {
+ super(parentShell);
+ this.originalKey = key;
+ this.keyService = keyService;
+ DATE_FORMAT.setTimeZone(TimeZone.getTimeZone("UTC")); //$NON-NLS-1$
+ }
+
+ @Override
+ protected void configureShell(Shell newShell) {
+ super.configureShell(newShell);
+ newShell.setText(ProvUIMessages.PGPPublicKeyViewDialog_Title);
+ if (keyService != null) {
+ computeVerifiedCertifications(newShell);
+ }
+ }
+
+ @Override
+ protected void setShellStyle(int newShellStyle) {
+ super.setShellStyle(newShellStyle | SWT.RESIZE | SWT.DIALOG_TRIM);
+ }
+
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ Composite composite = (Composite) super.createDialogArea(parent);
+ GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
+ composite.setLayoutData(data);
+
+ styledText = new StyledText(composite, SWT.READ_ONLY | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
+ styledText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ // Create a sightly smaller text (mono-space) font.
+ FontData[] fontData = JFaceResources.getTextFont().getFontData();
+ for (FontData fontDataElement : fontData) {
+ fontDataElement.setHeight(fontDataElement.getHeight() - 1);
+ }
+ Font font = new Font(styledText.getDisplay(), fontData);
+ styledText.setFont(font);
+ styledText.addDisposeListener(e -> font.dispose());
+
+ GC gc = new GC(styledText);
+ gc.setFont(font);
+ data.widthHint = convertWidthInCharsToPixels(gc.getFontMetrics(), 110);
+ gc.dispose();
+
+ update(originalKey, Set.of());
+ return composite;
+ }
+
+ @Override
+ protected void createButtonsForButtonBar(Composite parent) {
+ createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CLOSE_LABEL, true).setFocus();
+ }
+
+ @SuppressWarnings("nls")
+ protected void update(PGPPublicKey key, Set<PGPPublicKey> verifiedCertifications) {
+ StyledString content = new StyledString();
+ String fingerprint = PGPPublicKeyService.toHexFingerprint(key);
+
+ PublicKeyPacket publicKeyPacket = key.getPublicKeyPacket();
+ publicKeyPacket.getAlgorithm();
+ content.append(" ");
+ content.append(publicKeyPacket instanceof PublicSubkeyPacket ? "sub" : "pub", StyledString.QUALIFIER_STYLER);
+ content.append(" ");
+
+ int algorithm = publicKeyPacket.getAlgorithm();
+ switch (algorithm) {
+ case PublicKeyAlgorithmTags.RSA_GENERAL:
+ case PublicKeyAlgorithmTags.RSA_ENCRYPT:
+ case PublicKeyAlgorithmTags.RSA_SIGN: {
+ content.append("rsa");
+ break;
+ }
+ case PublicKeyAlgorithmTags.DSA: {
+ content.append("dsa");
+ break;
+ }
+ case PublicKeyAlgorithmTags.ELGAMAL_ENCRYPT:
+ case PublicKeyAlgorithmTags.ELGAMAL_GENERAL: {
+ content.append("elgamal");
+ break;
+ }
+ default: {
+ content.append("[");
+ content.append(Integer.toString(algorithm));
+ content.append("]");
+ break;
+ }
+
+ }
+ int bitStrength = key.getBitStrength();
+ content.append(Integer.toString(bitStrength));
+ content.append("/");
+ content.append(fingerprint);
+
+ content.append(" ");
+ content.append(DATE_FORMAT.format(key.getCreationTime()));
+
+ content.append(" ");
+ content.append("\n");
+
+ List<String> users = new ArrayList<>();
+ key.getUserIDs().forEachRemaining(users::add);
+ if (!users.isEmpty()) {
+ for (String user : users) {
+ content.append(" ");
+ content.append("uid", StyledString.QUALIFIER_STYLER);
+ content.append(" ");
+ content.append(user, StyledString.COUNTER_STYLER);
+ content.append("\n");
+ }
+ }
+
+ Long subKeyOf = null;
+
+ for (Iterator<PGPSignature> signatures = key.getSignatures(); signatures.hasNext();) {
+ PGPSignature signature = signatures.next();
+ long keyID = signature.getKeyID();
+
+ if (signature.getSignatureType() == PGPSignature.SUBKEY_BINDING) {
+ subKeyOf = keyID;
+ }
+
+ content.append(" ");
+ content.append("sig", StyledString.QUALIFIER_STYLER);
+ content.append(" ");
+ content.append(PGPPublicKeyService.toHex(keyID));
+ content.append(" ");
+ Date creationTime = signature.getCreationTime();
+ String formattedCreationTime = DATE_FORMAT.format(creationTime);
+ content.append(formattedCreationTime);
+ long signatureExpirationTime = signature.getHashedSubPackets().getSignatureExpirationTime();
+ content.append(" ");
+ content.append(signatureExpirationTime == 0 ? formattedCreationTime.replaceAll(".", "_")
+ : DATE_FORMAT.format(new Date(creationTime.getTime() + 1000 * signatureExpirationTime)));
+
+ content.append(" ");
+ Optional<PGPPublicKey> resolvedKey = verifiedCertifications.stream().filter(k -> k.getKeyID() == keyID)
+ .findFirst();
+
+ long keyExpirationTime = signature.getHashedSubPackets().getKeyExpirationTime();
+ content.append(keyExpirationTime == 0 || resolvedKey == null || !resolvedKey.isPresent()
+ ? formattedCreationTime.replaceAll(".", "_")
+ : DATE_FORMAT.format(
+ new Date(resolvedKey.get().getCreationTime().getTime() + 1000 * keyExpirationTime)));
+
+ if (resolvedKey != null && resolvedKey.isPresent()) {
+ content.append(" ");
+ content.append(getLabel(resolvedKey.get()), StyledString.COUNTER_STYLER);
+ }
+
+ content.append("\n");
+ }
+
+ styledText.setText(content.getString());
+ styledText.setStyleRanges(content.getStyleRanges());
+
+ List<String> title = new ArrayList<>();
+ if (subKeyOf != null) {
+ long keyID = subKeyOf;
+ verifiedCertifications.stream().filter(k -> k.getKeyID() == keyID).findFirst()
+ .ifPresentOrElse(k -> title.add(getLabel(k)), () -> title.add(PGPPublicKeyService.toHex(keyID)));
+ }
+ title.add((subKeyOf == null ? "" : "sub ") + (users.isEmpty() ? fingerprint : users.get(0)));
+
+ setTitle(String.join("\n", title));
+ }
+
+ private String getLabel(PGPPublicKey key) {
+ Iterator<String> userIDs = key.getUserIDs();
+ if (userIDs.hasNext()) {
+ return userIDs.next();
+
+ }
+ return PGPPublicKeyService.toHexFingerprint(key);
+ }
+
+ private void computeVerifiedCertifications(Shell shell) {
+ Display display = shell.getDisplay();
+ new Job(PGPPublicKeyViewDialog.class.getName()) {
+ {
+ setSystem(true);
+ setPriority(Job.SHORT);
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ synchronized (keyService) {
+ PGPPublicKey enhancedKey = keyService.addKey(originalKey);
+ Set<PGPPublicKey> verifiedCertifications = keyService.getVerifiedCertifications(originalKey);
+ display.asyncExec(() -> {
+ if (!shell.isDisposed()) {
+ update(enhancedKey, verifiedCertifications);
+ }
+ });
+ }
+ return Status.OK_STATUS;
+ }
+ }.schedule();
+ }
+}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/PreselectedIUInstallWizard.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/PreselectedIUInstallWizard.java
index 4765154ef..0c92f1061 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/PreselectedIUInstallWizard.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/PreselectedIUInstallWizard.java
@@ -30,7 +30,7 @@ import org.eclipse.jface.wizard.IWizardPage;
/**
* An Install wizard that is invoked when the user has already selected which
* IUs should be installed and does not need to browse the available software.
- *
+ *
* @since 3.5
*/
public class PreselectedIUInstallWizard extends WizardWithLicenses {
@@ -70,8 +70,8 @@ public class PreselectedIUInstallWizard extends WizardWithLicenses {
root = new IUElementListRoot(ui);
ArrayList<AvailableIUElement> list = new ArrayList<>(selectedElements.length);
ArrayList<AvailableIUElement> selected = new ArrayList<>(selectedElements.length);
- for (int i = 0; i < selectedElements.length; i++) {
- IInstallableUnit iu = ElementUtils.getIU(selectedElements[i]);
+ for (Object selectedElement : selectedElements) {
+ IInstallableUnit iu = ElementUtils.getIU(selectedElement);
if (iu != null) {
AvailableIUElement element = new AvailableIUElement(root, iu, getProfileId(), shouldShowProvisioningPlanChildren());
list.add(element);
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ProvisioningOperationWizard.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ProvisioningOperationWizard.java
index ea24c8ece..47901c652 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ProvisioningOperationWizard.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ProvisioningOperationWizard.java
@@ -18,11 +18,13 @@ package org.eclipse.equinox.internal.p2.ui.dialogs;
import java.lang.reflect.InvocationTargetException;
import java.util.HashSet;
+import java.util.stream.Stream;
import org.eclipse.core.runtime.*;
import org.eclipse.core.runtime.jobs.*;
import org.eclipse.equinox.internal.p2.ui.*;
import org.eclipse.equinox.internal.p2.ui.model.ElementUtils;
import org.eclipse.equinox.internal.p2.ui.model.IUElementListRoot;
+import org.eclipse.equinox.p2.engine.IProvisioningPlan;
import org.eclipse.equinox.p2.engine.ProvisioningContext;
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.p2.operations.*;
@@ -55,6 +57,7 @@ public abstract class ProvisioningOperationWizard extends Wizard {
boolean resolveWithRelaxedConstraints = false;
boolean waitingForOtherJobs = false;
protected RemediationOperation remediationOperation;
+ private IProvisioningPlan localJRECheckPlan;
public ProvisioningOperationWizard(ProvisioningUI ui, ProfileChangeOperation operation, Object[] initialSelections,
LoadMetadataRepositoryJob job) {
@@ -128,6 +131,13 @@ public abstract class ProvisioningOperationWizard extends Wizard {
getContainer().run(true, true, monitor -> {
remediationOperation.setCurrentRemedy(remediationPage.getRemediationGroup().getCurrentRemedy());
remediationOperation.resolveModal(monitor);
+ if (getPolicy().getCheckAgainstCurrentExecutionEnvironment()) {
+ this.localJRECheckPlan = ProvUI
+ .toCompabilityWithCurrentJREProvisioningPlan(remediationOperation, monitor);
+ if (!compatibleWithCurrentEE()) {
+ couldNotResolveStatus = localJRECheckPlan.getStatus();
+ }
+ }
});
} catch (InterruptedException e) {
// Nothing to report if thread was interrupted
@@ -139,6 +149,9 @@ public abstract class ProvisioningOperationWizard extends Wizard {
initializeResolutionModelElements(ElementUtils.requestToElement(
((RemediationOperation) operation).getCurrentRemedy(), !(this instanceof UpdateWizard)));
planChanged();
+ if (getPolicy().getCheckAgainstCurrentExecutionEnvironment() && !compatibleWithCurrentEE()) {
+ return errorPage;
+ }
return resolutionPage;
} else if (page == mainPage || page == errorPage) {
ISelectableIUsPage currentPage = (ISelectableIUsPage) page;
@@ -152,6 +165,10 @@ public abstract class ProvisioningOperationWizard extends Wizard {
initializeResolutionModelElements(planSelections);
}
IStatus status = operation.getResolutionResult();
+ if (getPolicy().getCheckAgainstCurrentExecutionEnvironment() && !compatibleWithCurrentEE()) {
+ // skip remediation for EE compatibility issues
+ return errorPage;
+ }
if (status == null || status.getSeverity() == IStatus.ERROR) {
if (page == mainPage) {
if (remediationOperation != null && remediationOperation.getResolutionResult() == Status.OK_STATUS
@@ -177,6 +194,44 @@ public abstract class ProvisioningOperationWizard extends Wizard {
return super.getNextPage(page);
}
+ private boolean compatibleWithCurrentEE() {
+ if (operation == null || !getPolicy().getCheckAgainstCurrentExecutionEnvironment()) {
+ return true;
+ }
+ if (localJRECheckPlan == null) {
+ try {
+ getContainer().run(true, true, monitor -> {
+ if (!operation.hasResolved()) {
+ operation.resolveModal(monitor);
+ }
+ if (operation.getProfileChangeRequest() != null) {
+ this.localJRECheckPlan = ProvUI.toCompabilityWithCurrentJREProvisioningPlan(operation, null);
+ if (!compatibleWithCurrentEE()) {
+ couldNotResolveStatus = localJRECheckPlan.getStatus();
+ }
+ }
+ });
+ } catch (InvocationTargetException | InterruptedException e) {
+ return false;
+ }
+ }
+ if (localJRECheckPlan == null) {
+ return true;
+ }
+
+ IStatus currentEEPlanStatus = localJRECheckPlan.getStatus();
+ if (currentEEPlanStatus.getSeverity() != IStatus.ERROR) {
+ return true;
+ }
+ return Stream.of(currentEEPlanStatus).filter(status -> status.getSeverity() == IStatus.ERROR)
+ .flatMap(status -> status.isMultiStatus() ? Stream.of(status.getChildren()) : Stream.of(status))
+ .filter(status -> status.getSeverity() == IStatus.ERROR)
+ .flatMap(status -> status.isMultiStatus() ? Stream.of(status.getChildren()) : Stream.of(status))
+ .filter(status -> status.getSeverity() == IStatus.ERROR)
+ .flatMap(status -> status.isMultiStatus() ? Stream.of(status.getChildren()) : Stream.of(status))
+ .map(IStatus::getMessage).noneMatch(message -> message.contains("osgi.ee")); //$NON-NLS-1$
+ }
+
/**
* The selections that drive the provisioning operation have changed. We might
* need to change the completion state of the resolution page.
@@ -275,6 +330,7 @@ public abstract class ProvisioningOperationWizard extends Wizard {
couldNotResolveStatus = Status.OK_STATUS;
provisioningContext = getProvisioningContext();
operation = null;
+ localJRECheckPlan = null;
remediationOperation = null;
initializeResolutionModelElements(getOperationSelections());
if (planSelections.length == 0) {
@@ -285,6 +341,13 @@ public abstract class ProvisioningOperationWizard extends Wizard {
try {
runnableContext.run(true, true, monitor -> {
operation.resolveModal(monitor);
+ if (operation.getProfileChangeRequest() != null
+ && getPolicy().getCheckAgainstCurrentExecutionEnvironment()) {
+ this.localJRECheckPlan = ProvUI.toCompabilityWithCurrentJREProvisioningPlan(operation, monitor);
+ if (!compatibleWithCurrentEE()) {
+ couldNotResolveStatus = localJRECheckPlan.getStatus();
+ }
+ }
if (withRemediation) {
IStatus status = operation.getResolutionResult();
if (remediationPage != null && shouldRemediate(status)) {
@@ -303,11 +366,7 @@ public abstract class ProvisioningOperationWizard extends Wizard {
}
public boolean shouldRemediate(IStatus status) {
- if (status == null)
- return true;
- if (status.getSeverity() != IStatus.ERROR)
- return false;
- return true;
+ return status == null || status.getSeverity() == IStatus.ERROR;
}
/*
@@ -332,8 +391,13 @@ public abstract class ProvisioningOperationWizard extends Wizard {
public IStatus getCurrentStatus() {
if (statusOverridesOperation())
return couldNotResolveStatus;
- if (operation != null && operation.getResolutionResult() != null)
- return operation.getResolutionResult();
+ if (operation != null && operation.getResolutionResult() != null) {
+ if (!operation.getResolutionResult().isOK() || localJRECheckPlan == null || compatibleWithCurrentEE()) {
+ return operation.getResolutionResult();
+ } else if (!compatibleWithCurrentEE()) {
+ return localJRECheckPlan.getStatus();
+ }
+ }
return couldNotResolveStatus;
}
@@ -404,10 +468,12 @@ public abstract class ProvisioningOperationWizard extends Wizard {
// job is waiting, sleeping, running, report failures when
// it's done
repoPreloadJob.addJobChangeListener(new JobChangeAdapter() {
+
@Override
public void done(IJobChangeEvent e) {
asyncReportLoadFailures();
}
+
});
}
@@ -435,7 +501,9 @@ public abstract class ProvisioningOperationWizard extends Wizard {
* override any detail reported by the operation.
*/
public boolean statusOverridesOperation() {
- return false;
+ return operation != null && operation.getResolutionResult() != null
+ && operation.getResolutionResult().getSeverity() < IStatus.ERROR
+ && (localJRECheckPlan != null && !compatibleWithCurrentEE());
}
public void setRelaxedResolution(boolean value) {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ProvisioningWizardDialog.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ProvisioningWizardDialog.java
index c21154419..d1d1aaf10 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ProvisioningWizardDialog.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ProvisioningWizardDialog.java
@@ -58,7 +58,7 @@ public class ProvisioningWizardDialog extends WizardDialog {
/**
* This method is provided only for automated testing.
- *
+ *
* @noreference This method is not intended to be referenced by clients.
*/
public Button testGetButton(int id) {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RemediationGroup.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RemediationGroup.java
index 88c75032b..4596c241b 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RemediationGroup.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RemediationGroup.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* Red Hat, Inc. - initial API and implementation
* Karsten Thoms, itemis - Bug#448789
@@ -131,8 +131,7 @@ public class RemediationGroup {
checkboxes.get(ALLOWDIFFERENTVERSION_INDEX).setSelection(remedy != null && remedy.getConfig().allowDifferentVersion);
checkboxes.get(ALLOWINSTALLEDUPDATE_INDEX).setSelection(remedy != null && remedy.getConfig().allowInstalledUpdate);
checkboxes.get(ALLOWINSTALLEDREMOVAL_INDEX).setSelection(remedy != null && remedy.getConfig().allowInstalledRemoval);
- for (Iterator<Button> iterator = checkboxes.iterator(); iterator.hasNext();) {
- Button btn1 = iterator.next();
+ for (Button btn1 : checkboxes) {
btn1.setVisible(true);
}
if (btn == buildMyOwnSolution && btn.getSelection()) {
@@ -289,8 +288,7 @@ public class RemediationGroup {
versions.add(ProvUIMessages.RemedyElementRequestedVersion + iuDetail.getRequestedVersion().toString());
if (iuDetail.getBeingInstalledVersion() != null)
versions.add(ProvUIMessages.RemedyElementBeingInstalledVersion + iuDetail.getBeingInstalledVersion().toString());
- for (Iterator<String> iterator = versions.iterator(); iterator.hasNext();) {
- String version = iterator.next();
+ for (String version : versions) {
toolTipText += (toolTipText == "" ? "" : "\n") + version; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
if (containerPage != null && containerPage.getWizard() instanceof UpdateWizard && compare(iuDetail.getBeingInstalledVersion(), iuDetail.getRequestedVersion()) < 0)
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RemediationPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RemediationPage.java
index 4943173cb..e8406e90a 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RemediationPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RemediationPage.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* Red Hat, Inc. - initial API and implementation
*******************************************************************************/
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositoryManipulatorDropTarget.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositoryManipulatorDropTarget.java
index dca0dcd61..e7f19142c 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositoryManipulatorDropTarget.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositoryManipulatorDropTarget.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -32,7 +32,7 @@ import org.eclipse.ui.statushandlers.StatusManager;
* FileTransfer data types. Files are converted to URL's with the file
* protocol. Any dropped URLs (or Files) are interpreted to mean that the
* user wishes to add these files as repositories.
- *
+ *
* @since 3.4
*
*/
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositoryNameAndLocationDialog.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositoryNameAndLocationDialog.java
index 1e8ca431c..2677700e5 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositoryNameAndLocationDialog.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositoryNameAndLocationDialog.java
@@ -32,9 +32,9 @@ import org.eclipse.swt.widgets.*;
/**
* Class for showing a repository name and location
- *
+ *
* @since 3.4
- *
+ *
*/
public class RepositoryNameAndLocationDialog extends StatusDialog {
@@ -79,7 +79,7 @@ public class RepositoryNameAndLocationDialog extends StatusDialog {
/**
* Return a RepositoryTracker appropriate for validating and adding the
* repository.
- *
+ *
* @return the Repository Tracker
*/
protected RepositoryTracker getRepositoryTracker() {
@@ -102,7 +102,7 @@ public class RepositoryNameAndLocationDialog extends StatusDialog {
/**
* Get the repository location as currently typed in by the user. Return null if there
* is a problem with the URL.
- *
+ *
* @return the URL currently typed in by the user.
*/
protected URI getUserLocation() {
@@ -112,7 +112,7 @@ public class RepositoryNameAndLocationDialog extends StatusDialog {
/**
* Get the location of the repository that was entered by the user.
* Return <code>null</code> if no location was provided.
- *
+ *
* @return the location of the repository that has been provided by the user.
*/
public URI getLocation() {
@@ -122,7 +122,7 @@ public class RepositoryNameAndLocationDialog extends StatusDialog {
/**
* Get the name of the repository that was entered by the user.
* Return <code>null</code> if no name was provided.
- *
+ *
* @return the name of the repository that has been provided by the user.
*/
public String getName() {
@@ -132,7 +132,7 @@ public class RepositoryNameAndLocationDialog extends StatusDialog {
/**
* Validate the repository URL, returning a status that is appropriate
* for showing the user. The boolean indicates whether the repositories
- * should be consulted for validating the URL. For example, it is not
+ * should be consulted for validating the URL. For example, it is not
* appropriate to contact the repositories on every keystroke.
*/
protected IStatus validateRepositoryURL(final boolean contactRepositories) {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositorySelectionGroup.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositorySelectionGroup.java
index 2bdad8f32..2936e3987 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositorySelectionGroup.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositorySelectionGroup.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2018 IBM Corporation and others.
+ * Copyright (c) 2009, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -11,13 +11,14 @@
* Contributors:
* IBM Corporation - initial API and implementation
* Yury Chernikov <Yury.Chernikov@borland.com> - Bug 271447 [ui] Bad layout in 'Install available software' dialog
+ * Pierre-Yves B. <pyvesdev@gmail.com> - Bug 281164 - [ui] Install new software dialog 'Work with' 'type or select a site' should not be a selection
*******************************************************************************/
package org.eclipse.equinox.internal.p2.ui.dialogs;
-import com.ibm.icu.text.Collator;
import java.lang.reflect.InvocationTargetException;
import java.net.URI;
import java.net.URISyntaxException;
+import java.text.Collator;
import java.util.*;
import org.eclipse.core.runtime.*;
import org.eclipse.equinox.internal.p2.ui.*;
@@ -46,9 +47,9 @@ import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
/**
- * A RepositorySelectionGroup is a reusable UI component that displays
- * available repositories and allows the user to select them.
- *
+ * A RepositorySelectionGroup is a reusable UI component that displays available
+ * repositories and allows the user to select them.
+ *
* @since 3.5
*/
public class RepositorySelectionGroup {
@@ -78,9 +79,10 @@ public class RepositorySelectionGroup {
Image info, warning, error;
URI[] comboRepos; // the URIs shown in the combo, kept in sync with combo items
- HashMap<String, URI> disabledRepoProposals = new HashMap<>(); // proposal string -> disabled URI
+ HashMap<String, URI> disabledRepoProposals = new HashMap<>(); // proposal string -> disabled URI
- public RepositorySelectionGroup(ProvisioningUI ui, IWizardContainer container, Composite parent, IUViewQueryContext queryContext) {
+ public RepositorySelectionGroup(ProvisioningUI ui, IWizardContainer container, Composite parent,
+ IUViewQueryContext queryContext) {
this.container = container;
this.queryContext = queryContext;
this.ui = ui;
@@ -98,8 +100,10 @@ public class RepositorySelectionGroup {
protected void createControl(Composite parent) {
final RepositoryTracker tracker = ui.getRepositoryTracker();
// Get the possible field error indicators
- info = FieldDecorationRegistry.getDefault().getFieldDecoration(FieldDecorationRegistry.DEC_INFORMATION).getImage();
- warning = FieldDecorationRegistry.getDefault().getFieldDecoration(FieldDecorationRegistry.DEC_WARNING).getImage();
+ info = FieldDecorationRegistry.getDefault().getFieldDecoration(FieldDecorationRegistry.DEC_INFORMATION)
+ .getImage();
+ warning = FieldDecorationRegistry.getDefault().getFieldDecoration(FieldDecorationRegistry.DEC_WARNING)
+ .getImage();
error = FieldDecorationRegistry.getDefault().getFieldDecoration(FieldDecorationRegistry.DEC_ERROR).getImage();
// Combo that filters sites
@@ -132,7 +136,8 @@ public class RepositorySelectionGroup {
}
});
- // Auto complete - install before our own key listeners, so that auto complete gets first shot.
+ // Auto complete - install before our own key listeners, so that auto complete
+ // gets first shot.
repoAutoComplete = new ComboAutoCompleteField(repoCombo);
repoCombo.setVisibleItemCount(COUNT_VISIBLE_ITEMS);
repoCombo.addKeyListener(KeyListener.keyPressedAdapter(e -> {
@@ -157,27 +162,42 @@ public class RepositorySelectionGroup {
URI location = null;
IStatus status = null;
String text = repoCombo.getText().trim();
- int index = getComboIndex(text);
- // only validate text that doesn't match existing text in combo
- if (index < 0) {
- location = tracker.locationFromString(repoCombo.getText());
- if (location == null) {
- status = tracker.getInvalidLocationStatus(repoCombo.getText());
+ if (!text.isEmpty()) {
+ int index = getComboIndex(text);
+ // only validate text that doesn't match existing text in combo
+ if (index < 0) {
+ location = tracker.locationFromString(repoCombo.getText());
+ if (location == null) {
+ status = tracker.getInvalidLocationStatus(repoCombo.getText());
+ } else {
+ status = tracker.validateRepositoryLocation(ui.getSession(), location, false,
+ new NullProgressMonitor());
+ }
} else {
- status = tracker.validateRepositoryLocation(ui.getSession(), location, false, new NullProgressMonitor());
+ // user typed or pasted an existing location. Select it.
+ repoComboSelectionChanged();
}
- } else {
- // user typed or pasted an existing location. Select it.
- repoComboSelectionChanged();
}
setRepoComboDecoration(status);
});
+ // Clear default text when user clicks in the combo box.
+ repoCombo.addMouseListener(MouseListener.mouseDownAdapter(e -> {
+ if (repoCombo.getText().equals(SITE_NONE))
+ repoCombo.setText(""); //$NON-NLS-1$
+ }));
+
+ // Restore default text when focus is lost from the combo box.
+ repoCombo.addFocusListener(FocusListener.focusLostAdapter(e -> {
+ if (repoCombo.getText().isEmpty())
+ fillRepoCombo(SITE_NONE);
+ }));
+
repoDec = new ControlDecoration(repoCombo, SWT.LEFT | SWT.TOP);
repoDec.setMarginWidth(DEC_MARGIN_WIDTH);
DropTarget target = new DropTarget(repoCombo, DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK);
- target.setTransfer(new Transfer[] {URLTransfer.getInstance(), FileTransfer.getInstance()});
+ target.setTransfer(new Transfer[] { URLTransfer.getInstance(), FileTransfer.getInstance() });
target.addDropListener(new URLDropAdapter(true) {
@Override
protected void handleDrop(String urlText, DropTargetEvent event) {
@@ -245,17 +265,17 @@ public class RepositorySelectionGroup {
public void setRepositorySelection(int scope, URI location) {
switch (scope) {
- case AvailableIUGroup.AVAILABLE_ALL :
- fillRepoCombo(SITE_ALL);
- break;
- case AvailableIUGroup.AVAILABLE_LOCAL :
- fillRepoCombo(SITE_LOCAL);
- break;
- case AvailableIUGroup.AVAILABLE_SPECIFIED :
- fillRepoCombo(getSiteString(location));
- break;
- default :
- fillRepoCombo(SITE_NONE);
+ case AvailableIUGroup.AVAILABLE_ALL:
+ fillRepoCombo(SITE_ALL);
+ break;
+ case AvailableIUGroup.AVAILABLE_LOCAL:
+ fillRepoCombo(SITE_LOCAL);
+ break;
+ case AvailableIUGroup.AVAILABLE_SPECIFIED:
+ fillRepoCombo(getSiteString(location));
+ break;
+ default:
+ fillRepoCombo(SITE_NONE);
}
setRepoComboDecoration(null);
}
@@ -270,7 +290,7 @@ public class RepositorySelectionGroup {
repoDec.setDescriptionText(ProvUIMessages.AvailableIUsPage_RepoFilterInstructions);
repoDec.setImage(info);
// We may have been previously showing an error or warning
- // hover. We will need to dismiss it, but if there is no text
+ // hover. We will need to dismiss it, but if there is no text
// typed, don't do this, so that the user gets the info cue
if (repoCombo.getText().length() > 0)
repoDec.showHoverText(null);
@@ -296,9 +316,9 @@ public class RepositorySelectionGroup {
}
/*
- * Fill the repo combo and use the specified string
- * as the selection. If the selection is null, then the
- * current selection should be preserved if applicable.
+ * Fill the repo combo and use the specified string as the selection. If the
+ * selection is null, then the current selection should be preserved if
+ * applicable.
*/
void fillRepoCombo(final String selection) {
RepositoryTracker tracker = ui.getRepositoryTracker();
@@ -364,7 +384,8 @@ public class RepositorySelectionGroup {
String getSiteString(URI uri) {
String nickname = getMetadataRepositoryManager().getRepositoryProperty(uri, IRepository.PROP_NICKNAME);
if (nickname != null && nickname.length() > 0)
- return NLS.bind(ProvUIMessages.AvailableIUsPage_NameWithLocation, new Object[] {nickname, ProvUIMessages.RepositorySelectionGroup_NameAndLocationSeparator, URIUtil.toUnencodedString(uri)});
+ return NLS.bind(ProvUIMessages.AvailableIUsPage_NameWithLocation, new Object[] { nickname,
+ ProvUIMessages.RepositorySelectionGroup_NameAndLocationSeparator, URIUtil.toUnencodedString(uri) });
return URIUtil.toUnencodedString(uri);
}
@@ -428,9 +449,9 @@ public class RepositorySelectionGroup {
return i;
}
}
- // Look for URI match - the user may have pasted or dragged
+ // Look for URI match - the user may have pasted or dragged
// in a location that matches one we already know about, even
- // if the text does not match completely. (slashes, no name, etc.)
+ // if the text does not match completely. (slashes, no name, etc.)
try {
URI location = URIUtil.fromString(repoText);
for (int i = 0; i < comboRepos.length; i++)
@@ -441,7 +462,7 @@ public class RepositorySelectionGroup {
// never mind
}
- // Special case. The user has typed a URI with a trailing slash.
+ // Special case. The user has typed a URI with a trailing slash.
// Make a URI without the trailing slash and see if it matches
// a location we know about.
// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=268580
@@ -454,7 +475,8 @@ public class RepositorySelectionGroup {
void addComboProvisioningListeners() {
// We need to monitor repository events so that we can adjust the repo combo.
- comboRepoListener = new ProvUIProvisioningListener(getClass().getName(), ProvUIProvisioningListener.PROV_EVENT_METADATA_REPOSITORY, ui.getOperationRunner()) {
+ comboRepoListener = new ProvUIProvisioningListener(getClass().getName(),
+ ProvUIProvisioningListener.PROV_EVENT_METADATA_REPOSITORY, ui.getOperationRunner()) {
@Override
protected void repositoryAdded(RepositoryEvent e) {
fillRepoCombo(getSiteString(e.getRepositoryLocation()));
@@ -482,8 +504,8 @@ public class RepositorySelectionGroup {
}
/*
- * Add a repository using the text in the combo or launch a dialog if the text
- * represents an already known repo.
+ * Add a repository using the text in the combo or launch a dialog if the text
+ * represents an already known repo.
*/
void addRepository(boolean alwaysPrompt) {
final RepositoryTracker manipulator = ui.getRepositoryTracker();
@@ -533,7 +555,7 @@ public class RepositorySelectionGroup {
container.run(false, false, monitor -> {
URI location;
IStatus status;
- // This might be a disabled repo. If so, no need to validate further.
+ // This might be a disabled repo. If so, no need to validate further.
if (disabledRepoProposals.containsKey(selectedRepo)) {
location = disabledRepoProposals.get(selectedRepo);
status = Status.OK_STATUS;
@@ -580,8 +602,8 @@ public class RepositorySelectionGroup {
}
// A single site is selected.
ProvisioningContext context = new ProvisioningContext(ui.getSession().getProvisioningAgent());
- context.setMetadataRepositories(new URI[] {comboRepos[siteSel]});
- context.setArtifactRepositories(new URI[] {comboRepos[siteSel]});
+ context.setMetadataRepositories(new URI[] { comboRepos[siteSel] });
+ context.setArtifactRepositories(new URI[] { comboRepos[siteSel] });
return context;
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ResolutionResultsWizardPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ResolutionResultsWizardPage.java
index be0de7ec5..6f8ec99ac 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ResolutionResultsWizardPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ResolutionResultsWizardPage.java
@@ -41,7 +41,7 @@ import org.eclipse.ui.statushandlers.StatusManager;
/**
* A wizard page that shows detailed information about a resolved install
* operation. It allows drill down into the elements that will be installed.
- *
+ *
* @since 3.4
*
*/
@@ -254,9 +254,9 @@ public abstract class ResolutionResultsWizardPage extends ResolutionStatusPage {
if (operation == null || operation.getProvisioningPlan() == null)
return;
Object[] elements = root.getChildren(root);
- for (int i = 0; i < elements.length; i++) {
- if (elements[i] instanceof QueriedElement) {
- ((QueriedElement) elements[i]).setQueryable(getQueryable(operation.getProvisioningPlan()));
+ for (Object element : elements) {
+ if (element instanceof QueriedElement) {
+ ((QueriedElement) element).setQueryable(getQueryable(operation.getProvisioningPlan()));
}
}
}
@@ -265,10 +265,10 @@ public abstract class ResolutionResultsWizardPage extends ResolutionStatusPage {
/**
* Returns the restart policy for this operation.
- *
+ *
* @return an integer constant describing whether the running profile
- * needs to be restarted.
- *
+ * needs to be restarted.
+ *
* @see ProvisioningJob#RESTART_NONE
* @see ProvisioningJob#RESTART_ONLY
* @see ProvisioningJob#RESTART_OR_APPLY
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ResolutionStatusPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ResolutionStatusPage.java
index af5f6de1d..8596da46b 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ResolutionStatusPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ResolutionStatusPage.java
@@ -16,6 +16,7 @@
package org.eclipse.equinox.internal.p2.ui.dialogs;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.equinox.internal.p2.operations.ResolutionResult;
import org.eclipse.equinox.internal.p2.ui.*;
import org.eclipse.equinox.internal.p2.ui.model.*;
import org.eclipse.equinox.internal.p2.ui.viewers.IUColumnConfig;
@@ -29,11 +30,11 @@ import org.eclipse.swt.custom.SashForm;
import org.eclipse.ui.statushandlers.StatusManager;
/**
- * A wizard page that presents a check box list of IUs and allows the user
- * to select and deselect them. Typically the first page in a provisioning
+ * A wizard page that presents a check box list of IUs and allows the user to
+ * select and deselect them. Typically the first page in a provisioning
* operation wizard, and usually it is the page used to report resolution errors
* before advancing to resolution detail.
- *
+ *
* @since 3.5
*
*/
@@ -54,7 +55,9 @@ public abstract class ResolutionStatusPage extends ProvisioningWizardPage {
/**
* Update the caches associated with this page.
- * @param root the new root, or <code>null</code> if the root should not be updated.
+ *
+ * @param root the new root, or <code>null</code> if the root
+ * should not be updated.
* @param resolvedOperation the new operation
*/
protected abstract void updateCaches(IUElementListRoot root, ProfileChangeOperation resolvedOperation);
@@ -69,11 +72,12 @@ public abstract class ResolutionStatusPage extends ProvisioningWizardPage {
/**
* Update the status area of the wizard to report the results of the operation.
- *
- * @param newRoot the root that describes the root IUs involved in creating the plan.
- * This can be <code>null</code> if the root should not be updated.
- *
- * @param op the ProfileChangeOperation that describes the operation
+ *
+ * @param newRoot the root that describes the root IUs involved in creating the
+ * plan. This can be <code>null</code> if the root should not be
+ * updated.
+ *
+ * @param op the ProfileChangeOperation that describes the operation
*/
public void updateStatus(IUElementListRoot newRoot, ProfileChangeOperation op) {
IStatus currentStatus = getProvisioningWizard().getCurrentStatus();
@@ -156,12 +160,15 @@ public abstract class ResolutionStatusPage extends ProvisioningWizardPage {
IUDetailsGroup detailsGroup = getDetailsGroup();
// We either haven't resolved, or we failed to resolve and reported some error
- // while doing so.
- if (resolvedOperation == null || !resolvedOperation.hasResolved() || getProvisioningWizard().statusOverridesOperation()) {
+ // while doing so.
+ if (resolvedOperation == null || !resolvedOperation.hasResolved()
+ || getProvisioningWizard().statusOverridesOperation()) {
// See if the wizard status knows something more about it.
IStatus currentStatus = getProvisioningWizard().getCurrentStatus();
if (!currentStatus.isOK()) {
- detail = currentStatus.getMessage();
+ ResolutionResult result = new ResolutionResult();
+ result.addSummaryStatus(currentStatus);
+ detail = result.getSummaryReport();
detailsGroup.enablePropertyLink(false);
} else if (selectedIU != null) {
detail = getIUDescription(selectedElement);
@@ -174,7 +181,8 @@ public abstract class ResolutionStatusPage extends ProvisioningWizardPage {
return;
}
- // An IU is selected and we have resolved. Look for information about the specific IU.
+ // An IU is selected and we have resolved. Look for information about the
+ // specific IU.
if (selectedIU != null) {
detail = resolvedOperation.getResolutionDetails(selectedIU);
if (detail != null) {
@@ -182,7 +190,7 @@ public abstract class ResolutionStatusPage extends ProvisioningWizardPage {
detailsGroup.setDetailText(detail);
return;
}
- // No specific error about this IU. Show the overall error if it is in error.
+ // No specific error about this IU. Show the overall error if it is in error.
if (resolvedOperation.getResolutionResult().getSeverity() == IStatus.ERROR) {
detail = resolvedOperation.getResolutionDetails();
if (detail != null) {
@@ -192,14 +200,14 @@ public abstract class ResolutionStatusPage extends ProvisioningWizardPage {
}
}
- // The overall status is not an error, or else there was no explanatory text for an error.
+ // The overall status is not an error, or else there was no explanatory text for
+ // an error.
// We may as well just show info about this iu.
detailsGroup.enablePropertyLink(true);
detailsGroup.setDetailText(getIUDescription(selectedElement));
return;
}
-
- //No IU is selected, give the overall report
+ // No IU is selected, give the overall report
detail = resolvedOperation.getResolutionDetails();
detailsGroup.enablePropertyLink(false);
if (detail == null)
@@ -258,7 +266,7 @@ public abstract class ResolutionStatusPage extends ProvisioningWizardPage {
}
}
} catch (NumberFormatException e) {
- // Ignore if there actually was a value that didn't parse.
+ // Ignore if there actually was a value that didn't parse.
}
}
return ILayoutConstants.IUS_TO_DETAILS_WEIGHTS;
@@ -276,7 +284,7 @@ public abstract class ResolutionStatusPage extends ProvisioningWizardPage {
if (section.get(ID_COLUMN_WIDTH) != null)
getIdColumn().setWidthInPixels(section.getInt(ID_COLUMN_WIDTH));
} catch (NumberFormatException e) {
- // Ignore if there actually was a value that didn't parse.
+ // Ignore if there actually was a value that didn't parse.
}
}
}
@@ -301,11 +309,14 @@ public abstract class ResolutionStatusPage extends ProvisioningWizardPage {
protected IUColumnConfig[] getColumnConfig() {
// We intentionally use the IU's id as one of the columns, because
// resolution errors are reported by ID.
- nameColumn = new IUColumnConfig(ProvUIMessages.ProvUI_NameColumnTitle, IUColumnConfig.COLUMN_NAME, ILayoutConstants.DEFAULT_PRIMARY_COLUMN_WIDTH);
- versionColumn = new IUColumnConfig(ProvUIMessages.ProvUI_VersionColumnTitle, IUColumnConfig.COLUMN_VERSION, ILayoutConstants.DEFAULT_SMALL_COLUMN_WIDTH);
- idColumn = new IUColumnConfig(ProvUIMessages.ProvUI_IdColumnTitle, IUColumnConfig.COLUMN_ID, ILayoutConstants.DEFAULT_COLUMN_WIDTH);
+ nameColumn = new IUColumnConfig(ProvUIMessages.ProvUI_NameColumnTitle, IUColumnConfig.COLUMN_NAME,
+ ILayoutConstants.DEFAULT_PRIMARY_COLUMN_WIDTH);
+ versionColumn = new IUColumnConfig(ProvUIMessages.ProvUI_VersionColumnTitle, IUColumnConfig.COLUMN_VERSION,
+ ILayoutConstants.DEFAULT_SMALL_COLUMN_WIDTH);
+ idColumn = new IUColumnConfig(ProvUIMessages.ProvUI_IdColumnTitle, IUColumnConfig.COLUMN_ID,
+ ILayoutConstants.DEFAULT_COLUMN_WIDTH);
getColumnWidthsFromSettings();
- return new IUColumnConfig[] {nameColumn, versionColumn, idColumn};
+ return new IUColumnConfig[] { nameColumn, versionColumn, idColumn };
}
private boolean isLocked(AvailableIUElement elementToBeUpdated) {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/SizeComputingWizardPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/SizeComputingWizardPage.java
index 2a05e4e39..5aadf1a8f 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/SizeComputingWizardPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/SizeComputingWizardPage.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -33,7 +33,7 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
/**
- *
+ *
* @since 3.5
*/
public abstract class SizeComputingWizardPage extends ResolutionResultsWizardPage {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/StructuredIUGroup.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/StructuredIUGroup.java
index 1d0d5f170..6d80bd348 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/StructuredIUGroup.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/StructuredIUGroup.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Sonatype, Inc. - ongoing development
@@ -33,7 +33,7 @@ import org.eclipse.swt.widgets.*;
/**
* A StructuredIUGroup is a reusable UI component that displays a
* structured view of IU's driven by some queries.
- *
+ *
* @since 3.4
*/
public abstract class StructuredIUGroup {
@@ -46,7 +46,7 @@ public abstract class StructuredIUGroup {
/**
* Create a group that represents the available IU's.
- *
+ *
* @param ui The application policy to use in the group
* @param parent the parent composite for the group
* to retrieve elements in the viewer.
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/TrustCertificateDialog.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/TrustCertificateDialog.java
index c27c327e8..2d6cc8237 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/TrustCertificateDialog.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/TrustCertificateDialog.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Fabian Steeg <steeg@hbz-nrw.de> - Bug 474099 - Require certificate selection to confirm dialog
@@ -16,100 +16,204 @@ package org.eclipse.equinox.internal.p2.ui.dialogs;
import static org.eclipse.swt.events.SelectionListener.widgetSelectedAdapter;
-import java.security.cert.X509Certificate;
-import java.util.ArrayList;
-import java.util.Iterator;
-import org.eclipse.equinox.internal.p2.ui.ProvUIMessages;
+import java.io.*;
+import java.security.cert.*;
+import java.time.Instant;
+import java.time.temporal.ChronoUnit;
+import java.util.*;
+import java.util.List;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import org.bouncycastle.bcpg.ArmoredOutputStream;
+import org.bouncycastle.openpgp.PGPPublicKey;
+import org.eclipse.core.runtime.*;
+import org.eclipse.equinox.internal.p2.ui.*;
import org.eclipse.equinox.internal.p2.ui.viewers.CertificateLabelProvider;
-import org.eclipse.equinox.internal.provisional.security.ui.X509CertificateViewDialog;
+import org.eclipse.equinox.internal.provisional.security.ui.X500PrincipalHelper;
+import org.eclipse.equinox.p2.metadata.IArtifactKey;
+import org.eclipse.equinox.p2.repository.spi.PGPPublicKeyService;
+import org.eclipse.jface.dialogs.*;
import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.layout.TableColumnLayout;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.util.Policy;
import org.eclipse.jface.viewers.*;
+import org.eclipse.jface.widgets.LabelFactory;
+import org.eclipse.jface.widgets.WidgetFactory;
+import org.eclipse.jface.window.Window;
+import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.dnd.*;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.graphics.*;
+import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.SelectionDialog;
/**
- * A dialog that displays a certificate chain and asks the user if they
- * trust the certificate providers.
+ * A dialog that displays a certificate chain and asks the user if they trust
+ * the certificate providers. It also supports prompting about unsigned content.
*/
public class TrustCertificateDialog extends SelectionDialog {
+ private static final String EXPORT_FILTER_PATH = "exportFilterPath"; //$NON-NLS-1$
- private Object inputElement;
- private IStructuredContentProvider contentProvider;
- private ILabelProvider labelProvider;
+ private CheckboxTableViewer certifcateViewer;
- private final static int SIZING_SELECTION_WIDGET_HEIGHT = 250;
- private final static int SIZING_SELECTION_WIDGET_WIDTH = 300;
+ private TreeViewer certificateChainViewer;
- CheckboxTableViewer listViewer;
+ private CheckboxTableViewer artifactViewer;
- private TreeViewer certificateChainViewer;
private Button detailsButton;
- protected TreeNode parentElement;
- protected Object selectedCertificate;
- public TrustCertificateDialog(Shell parentShell, Object input, ILabelProvider labelProvider, ITreeContentProvider contentProvider) {
+ private Button exportButton;
+
+ private boolean rememberSelectedSigners = true;
+
+ private boolean trustAlways;
+
+ private final Map<TreeNode, List<IArtifactKey>> artifactMap = new LinkedHashMap<>();
+
+ public TrustCertificateDialog(Shell parentShell, Object input) {
super(parentShell);
- inputElement = input;
- this.contentProvider = contentProvider;
- this.labelProvider = labelProvider;
+
+ setShellStyle(SWT.DIALOG_TRIM | SWT.MODELESS | SWT.RESIZE | SWT.MAX | getDefaultOrientation());
+
+ if (input instanceof TreeNode[]) {
+ for (TreeNode node : (TreeNode[]) input) {
+ IArtifactKey[] associatedArtifacts = null;
+ if (node instanceof IAdaptable) {
+ associatedArtifacts = ((IAdaptable) node).getAdapter(IArtifactKey[].class);
+ }
+ artifactMap.put(node, associatedArtifacts == null ? List.of() : Arrays.asList(associatedArtifacts));
+ }
+ }
+
setTitle(ProvUIMessages.TrustCertificateDialog_Title);
- setMessage(ProvUIMessages.TrustCertificateDialog_Message);
- setShellStyle(SWT.DIALOG_TRIM | SWT.MODELESS | SWT.RESIZE | getDefaultOrientation());
+
+ boolean unsignedContent = artifactMap.keySet().stream().map(TreeNode::getValue).anyMatch(Objects::isNull);
+ boolean pgpContent = containsInstance(input, PGPPublicKey.class);
+ boolean certifcateContent = containsInstance(input, Certificate.class);
+
+ List<String> messages = new ArrayList<>();
+ if (certifcateContent || pgpContent) {
+ messages.add(ProvUIMessages.TrustCertificateDialog_Message);
+ }
+ if (unsignedContent) {
+ messages.add(ProvUIMessages.TrustCertificateDialog_MessageUnsigned);
+ }
+ if (certifcateContent || pgpContent) {
+ messages.add(ProvUIMessages.TrustCertificateDialog_MessageNameWarning);
+ }
+ if (pgpContent) {
+ messages.add(ProvUIMessages.TrustCertificateDialog_MessagePGP);
+ }
+ setMessage(String.join(" ", messages)); //$NON-NLS-1$
+
+ if (PlatformUI.isWorkbenchRunning()) {
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(parentShell, IProvHelpContextIds.TRUST_DIALOG);
+ }
+ }
+
+ public boolean isRememberSelectedSigners() {
+ return rememberSelectedSigners;
+ }
+
+ public boolean isTrustAlways() {
+ return trustAlways;
+ }
+
+ @Override
+ protected Label createMessageArea(Composite composite) {
+ // Ensure that the message supports wrapping for a long text message.
+ GridData data = new GridData(SWT.FILL, SWT.FILL, true, false);
+ data.widthHint = convertWidthInCharsToPixels(120);
+ LabelFactory factory = WidgetFactory.label(SWT.WRAP).font(composite.getFont()).layoutData(data);
+ if (getMessage() != null) {
+ factory.text(getMessage());
+ }
+ return factory.create(composite);
}
@Override
protected Control createDialogArea(Composite parent) {
- Composite composite = createUpperDialogArea(parent);
- certificateChainViewer = new TreeViewer(composite, SWT.BORDER);
- GridLayout layout = new GridLayout();
- certificateChainViewer.getTree().setLayout(layout);
- GridData data = new GridData(GridData.FILL_BOTH);
- data.grabExcessHorizontalSpace = true;
- certificateChainViewer.getTree().setLayoutData(data);
- certificateChainViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
- certificateChainViewer.setContentProvider(new TreeNodeContentProvider());
- certificateChainViewer.setLabelProvider(new CertificateLabelProvider());
- certificateChainViewer.addSelectionChangedListener(getChainSelectionListener());
- if (inputElement instanceof Object[]) {
- ISelection selection = null;
- Object[] nodes = (Object[]) inputElement;
- if (nodes.length > 0) {
- selection = new StructuredSelection(nodes[0]);
- certificateChainViewer.setInput(new TreeNode[] {(TreeNode) nodes[0]});
- selectedCertificate = nodes[0];
- }
- listViewer.setSelection(selection);
- }
- listViewer.addDoubleClickListener(getDoubleClickListener());
- listViewer.addSelectionChangedListener(getParentSelectionListener());
- createButtons(composite);
- return composite;
+ Composite mainComposite = (Composite) super.createDialogArea(parent);
+ Dialog.applyDialogFont(mainComposite);
+ initializeDialogUnits(mainComposite);
+
+ createMessageArea(mainComposite);
+
+ SashForm sashForm = new SashForm(mainComposite, SWT.VERTICAL);
+ sashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ createCertificateViewerArea(createSashFormArea(sashForm));
+
+ // Create this area only if we have keys or certificates.
+ boolean containsCertificates = containsInstance(artifactMap.keySet(), PGPPublicKey.class)
+ || containsInstance(artifactMap.keySet(), Certificate.class);
+ if (containsCertificates) {
+ createCertficateChainViewerArea(createSashFormArea(sashForm));
+ }
+
+ // Sort the set of all artifacts and create the lower area only if there are
+ // artifacts.
+ Comparator<Object> comparator = Policy.getComparator();
+ Set<IArtifactKey> artifacts = artifactMap.values().stream().flatMap(Collection::stream)
+ .collect(Collectors.toCollection(() -> new TreeSet<>((a1, a2) -> {
+ int result = comparator.compare(a1.getId(), a2.getId());
+ if (result == 0) {
+ result = a1.getVersion().compareTo(a2.getVersion());
+ if (result == 0) {
+ result = a1.getClassifier().compareTo(a2.getClassifier());
+ }
+ }
+ return result;
+ })));
+ if (!artifacts.isEmpty()) {
+ crreateArtifactViewerArea(createSashFormArea(sashForm), artifacts);
+ }
+
+ // Set weights based on the children's preferred size.
+ Control[] children = sashForm.getChildren();
+ int[] weights = new int[children.length];
+ for (int i = 0; i < children.length; ++i) {
+ weights[i] = children[i].computeSize(SWT.DEFAULT, SWT.DEFAULT, false).y;
+ }
+ sashForm.setWeights(weights);
+
+ if (!getInitialElementSelections().isEmpty()) {
+ checkInitialSelections();
+ }
+
+ if (!artifactMap.isEmpty()) {
+ certifcateViewer.setSelection(new StructuredSelection(artifactMap.keySet().iterator().next()));
+ }
+
+ return mainComposite;
}
@Override
protected void createButtonsForButtonBar(Composite parent) {
- createButton(parent, IDialogConstants.OK_ID, ProvUIMessages.TrustCertificateDialog_AcceptSelectedButtonLabel, true);
+ createButton(parent, IDialogConstants.OK_ID, ProvUIMessages.TrustCertificateDialog_AcceptSelectedButtonLabel,
+ true);
createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
- super.getOkButton().setEnabled(false);
+ updateOkButton();
}
private void createButtons(Composite composite) {
- // Details button to view certificate chain
- detailsButton = new Button(composite, SWT.NONE);
+ Composite buttonComposite = new Composite(composite, SWT.NONE);
+ buttonComposite.setLayout(new RowLayout());
+
+ detailsButton = new Button(buttonComposite, SWT.NONE);
detailsButton.setText(ProvUIMessages.TrustCertificateDialog_Details);
detailsButton.addSelectionListener(new SelectionListener() {
@Override
public void widgetDefaultSelected(SelectionEvent e) {
- if (selectedCertificate != null) {
- X509Certificate cert = (X509Certificate) ((TreeNode) selectedCertificate).getValue();
- X509CertificateViewDialog certificateDialog = new X509CertificateViewDialog(getShell(), cert);
- certificateDialog.open();
+ X509Certificate cert = getInstance(certificateChainViewer.getSelection(), X509Certificate.class);
+ if (cert != null) {
+ CertificateLabelProvider.openDialog(getShell(), cert);
}
}
@@ -118,33 +222,328 @@ public class TrustCertificateDialog extends SelectionDialog {
widgetDefaultSelected(e);
}
});
+
+ exportButton = new Button(buttonComposite, SWT.NONE);
+ exportButton.setText(ProvUIMessages.TrustCertificateDialog_Export);
+ exportButton.addSelectionListener(new SelectionListener() {
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ ISelection selection = certificateChainViewer.getSelection();
+ X509Certificate cert = getInstance(selection, X509Certificate.class);
+ PGPPublicKey key = getInstance(selection, PGPPublicKey.class);
+ if (cert != null || key != null) {
+ FileDialog destination = new FileDialog(exportButton.getShell(), SWT.SAVE);
+ destination.setFilterPath(getFilterPath(EXPORT_FILTER_PATH));
+ destination.setText(ProvUIMessages.TrustCertificateDialog_Export);
+ if (cert != null) {
+ destination.setFilterExtensions(new String[] { "*.der" }); //$NON-NLS-1$
+ destination.setFileName(cert.getSerialNumber().toString() + ".der"); //$NON-NLS-1$
+ String path = destination.open();
+ setFilterPath(EXPORT_FILTER_PATH, destination.getFilterPath());
+ if (path == null) {
+ return;
+ }
+ File destinationFile = new File(path);
+ try (FileOutputStream output = new FileOutputStream(destinationFile)) {
+ output.write(cert.getEncoded());
+ } catch (IOException | CertificateEncodingException ex) {
+ ProvUIActivator.getDefault().getLog()
+ .log(new Status(IStatus.ERROR, ProvUIActivator.PLUGIN_ID, ex.getMessage(), ex));
+ }
+ } else {
+ destination.setFilterExtensions(new String[] { "*.asc" }); //$NON-NLS-1$
+ destination.setFileName(userFriendlyFingerPrint(key) + ".asc"); //$NON-NLS-1$
+ String path = destination.open();
+ setFilterPath(EXPORT_FILTER_PATH, destination.getFilterPath());
+ if (path == null) {
+ return;
+ }
+ File destinationFile = new File(path);
+ try (OutputStream output = new ArmoredOutputStream(new FileOutputStream(destinationFile))) {
+ key.encode(output);
+ } catch (IOException ex) {
+ ProvUIActivator.getDefault().getLog()
+ .log(new Status(IStatus.ERROR, ProvUIActivator.PLUGIN_ID, ex.getMessage(), ex));
+ }
+ }
+ }
+ }
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ widgetDefaultSelected(e);
+ }
+ });
+ }
+
+ private Composite createSashFormArea(SashForm sashForm) {
+ Composite composite = new Composite(sashForm, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
+ layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
+ composite.setLayout(layout);
+ return composite;
}
- private Composite createUpperDialogArea(Composite parent) {
- Composite composite = (Composite) super.createDialogArea(parent);
- initializeDialogUnits(composite);
- createMessageArea(composite);
+ private void createCertificateViewerArea(Composite composite) {
- listViewer = CheckboxTableViewer.newCheckList(composite, SWT.BORDER);
- GridData data = new GridData(GridData.FILL_BOTH);
- data.heightHint = SIZING_SELECTION_WIDGET_HEIGHT;
- data.widthHint = SIZING_SELECTION_WIDGET_WIDTH;
- listViewer.getTable().setLayoutData(data);
+ TableColumnLayout tableColumnLayout = new TableColumnLayout(true);
+ Composite tableComposite = WidgetFactory.composite(SWT.NONE)
+ .layoutData(new GridData(SWT.FILL, SWT.FILL, true, true)).layout(tableColumnLayout).create(composite);
+ Table table = WidgetFactory
+ .table(SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION | SWT.CHECK)
+ .headerVisible(true).linesVisible(true).font(composite.getFont()).create(tableComposite);
+ certifcateViewer = new CheckboxTableViewer(table);
+ certifcateViewer.setContentProvider(new TreeNodeContentProvider());
- listViewer.setLabelProvider(labelProvider);
- listViewer.setContentProvider(contentProvider);
+ GridData data = new GridData(GridData.FILL_BOTH);
+ data.heightHint = convertHeightInCharsToPixels(Math.min(artifactMap.keySet().size() + 1, 6)) * 3 / 2;
+ data.widthHint = convertWidthInCharsToPixels(120);
+ tableComposite.setLayoutData(data);
+
+ // This column is packed later.
+ TableViewerColumn typeColumn = createColumn(certifcateViewer, ProvUIMessages.TrustCertificateDialog_ObjectType,
+ new PGPOrX509ColumnLabelProvider(key -> "PGP", cert -> "x509", //$NON-NLS-1$ //$NON-NLS-2$
+ ProvUIMessages.TrustCertificateDialog_Unsigned),
+ tableColumnLayout, 1);
+
+ createColumn(certifcateViewer, ProvUIMessages.TrustCertificateDialog_Id,
+ new PGPOrX509ColumnLabelProvider(TrustCertificateDialog::userFriendlyFingerPrint,
+ cert -> cert.getSerialNumber().toString(), ProvUIMessages.TrustCertificateDialog_NotApplicable),
+ tableColumnLayout, 10);
+
+ createColumn(certifcateViewer, ProvUIMessages.TrustCertificateDialog_Name,
+ new PGPOrX509ColumnLabelProvider(pgp -> {
+ java.util.List<String> users = new ArrayList<>();
+ pgp.getUserIDs().forEachRemaining(users::add);
+ return String.join(", ", users); //$NON-NLS-1$
+ }, x509 -> {
+ X500PrincipalHelper principalHelper = new X500PrincipalHelper(x509.getSubjectX500Principal());
+ return principalHelper.getCN() + "; " + principalHelper.getOU() + "; " //$NON-NLS-1$ //$NON-NLS-2$
+ + principalHelper.getO();
+ }, ProvUIMessages.TrustCertificateDialog_Unknown), tableColumnLayout, 15);
+
+ createColumn(certifcateViewer, ProvUIMessages.TrustCertificateDialog_dates,
+ new PGPOrX509ColumnLabelProvider(pgp -> {
+ if (pgp.getCreationTime().after(Date.from(Instant.now()))) {
+ return NLS.bind(ProvUIMessages.TrustCertificateDialog_NotYetValidStartDate,
+ pgp.getCreationTime());
+ }
+ long validSeconds = pgp.getValidSeconds();
+ if (validSeconds == 0) {
+ return ProvUIMessages.TrustCertificateDialog_valid;
+ }
+ Instant expires = pgp.getCreationTime().toInstant().plus(validSeconds, ChronoUnit.SECONDS);
+ return expires.isBefore(Instant.now())
+ ? NLS.bind(ProvUIMessages.TrustCertificateDialog_expiredSince, expires)
+ : NLS.bind(ProvUIMessages.TrustCertificateDialog_validExpires, expires);
+ }, x509 -> {
+ try {
+ x509.checkValidity();
+ return ProvUIMessages.TrustCertificateDialog_valid;
+ } catch (CertificateExpiredException expired) {
+ return ProvUIMessages.TrustCertificateDialog_expired;
+ } catch (CertificateNotYetValidException notYetValid) {
+ return ProvUIMessages.TrustCertificateDialog_notYetValid;
+ }
+ }, ProvUIMessages.TrustCertificateDialog_NotApplicable), tableColumnLayout, 10);
+
+ createMenu(certifcateViewer);
addSelectionButtons(composite);
- listViewer.setInput(inputElement);
+ certifcateViewer.addDoubleClickListener(e -> {
+ StructuredSelection selection = (StructuredSelection) e.getSelection();
+ X509Certificate cert = getInstance(selection, X509Certificate.class);
+ if (cert != null) {
+ // create and open dialog for certificate chain
+ CertificateLabelProvider.openDialog(getShell(), cert);
+ }
+ });
+
+ certifcateViewer.addSelectionChangedListener(e -> {
+ if (certificateChainViewer != null) {
+ TreeNode treeNode = getInstance(e.getSelection(), TreeNode.class);
+ if (treeNode != null) {
+ certificateChainViewer.setInput(new TreeNode[] { treeNode });
+ certificateChainViewer.setSelection(new StructuredSelection(treeNode));
+ } else {
+ certificateChainViewer.setInput(new TreeNode[] {});
+ }
+ }
- if (!getInitialElementSelections().isEmpty()) {
- checkInitialSelections();
+ updateOkButton();
+ });
+
+ certifcateViewer.setInput(artifactMap.keySet().toArray(TreeNode[]::new));
+
+ typeColumn.getColumn().pack();
+ }
+
+ private void createCertficateChainViewerArea(Composite composite) {
+ certificateChainViewer = new TreeViewer(composite, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
+ GridData data = new GridData(GridData.FILL_BOTH);
+ int treeSize = artifactMap.keySet().stream().map(TrustCertificateDialog::computeTreeSize)
+ .max(Integer::compareTo).orElse(0);
+ data.heightHint = convertHeightInCharsToPixels(Math.min(treeSize, 5));
+ data.widthHint = convertWidthInCharsToPixels(120);
+ certificateChainViewer.getTree().setLayoutData(data);
+
+ certificateChainViewer.setAutoExpandLevel(3);
+ certificateChainViewer.setContentProvider(new TreeNodeContentProvider());
+ certificateChainViewer.setLabelProvider(new CertificateLabelProvider() {
+ @Override
+ public String getText(Object element) {
+ if (element instanceof TreeNode) {
+ Object o = ((TreeNode) element).getValue();
+ if (o instanceof PGPPublicKey) {
+ PGPPublicKey key = (PGPPublicKey) o;
+ String userFriendlyFingerPrint = userFriendlyFingerPrint(key);
+ java.util.List<String> users = new ArrayList<>();
+ key.getUserIDs().forEachRemaining(users::add);
+ String userIDs = String.join(", ", users); //$NON-NLS-1$
+ if (!userIDs.isEmpty()) {
+ return userFriendlyFingerPrint + " [" + userIDs + "]"; //$NON-NLS-1$//$NON-NLS-2$
+ }
+ return userFriendlyFingerPrint;
+ } else if (o == null) {
+ return ProvUIMessages.TrustCertificateDialog_Unsigned;
+ }
+ }
+
+ return super.getText(element);
+ }
+ });
+
+ certificateChainViewer.addSelectionChangedListener(event -> {
+ ISelection selection = event.getSelection();
+ boolean containsCertificate = containsInstance(selection, X509Certificate.class);
+ detailsButton.setEnabled(containsCertificate);
+ exportButton.setEnabled(containsCertificate || containsInstance(selection, PGPPublicKey.class));
+ });
+
+ createMenu(certificateChainViewer);
+
+ createButtons(composite);
+ }
+
+ private void crreateArtifactViewerArea(Composite composite, Set<IArtifactKey> artifacts) {
+ TableColumnLayout tableColumnLayout = new TableColumnLayout(true);
+ Composite tableComposite = WidgetFactory.composite(SWT.NONE)
+ .layoutData(new GridData(SWT.FILL, SWT.FILL, true, true)).layout(tableColumnLayout).create(composite);
+ Table table = WidgetFactory.table(SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION)
+ .headerVisible(true).linesVisible(true).font(composite.getFont()).create(tableComposite);
+ artifactViewer = new CheckboxTableViewer(table);
+ artifactViewer.setContentProvider(ArrayContentProvider.getInstance());
+
+ GridData data = new GridData(GridData.FILL_BOTH);
+ data.heightHint = convertHeightInCharsToPixels(Math.min(artifacts.size() + 1, 10)) * 3 / 2;
+ data.widthHint = convertWidthInCharsToPixels(120);
+ tableComposite.setLayoutData(data);
+
+ Font font = table.getFont();
+ FontData[] fontDatas = font.getFontData();
+ for (FontData fontData : fontDatas) {
+ fontData.setStyle(fontData.getStyle() | SWT.BOLD);
}
+ Font boldFont = new Font(table.getDisplay(), fontDatas);
+ composite.addDisposeListener(e -> boldFont.dispose());
+
+ Function<IArtifactKey, Font> fontProvider = e -> {
+ for (Object object : certifcateViewer.getCheckedElements()) {
+ List<IArtifactKey> list = artifactMap.get(object);
+ if (list != null && list.contains(e)) {
+ return boldFont;
+ }
+ }
+ return null;
+ };
- Dialog.applyDialogFont(composite);
+ certifcateViewer.addCheckStateListener(e -> artifactViewer.refresh(true));
+
+ artifactViewer.addPostSelectionChangedListener(e -> {
+ if (table.isFocusControl()) {
+ List<?> selection = e.getStructuredSelection().toList();
+ List<TreeNode> newSelection = new ArrayList<>();
+ LOOP: for (Map.Entry<TreeNode, List<IArtifactKey>> entry : artifactMap.entrySet()) {
+ List<IArtifactKey> value = entry.getValue();
+ if (value != null) {
+ for (IArtifactKey key : value) {
+ if (selection.contains(key)) {
+ newSelection.add(entry.getKey());
+ continue LOOP;
+ }
+ }
+ }
+ }
- return composite;
+ certifcateViewer.setSelection(new StructuredSelection(newSelection), true);
+ }
+ });
+
+ certifcateViewer.addPostSelectionChangedListener(e -> {
+ if (!table.isFocusControl()) {
+ Set<IArtifactKey> associatedArtifacts = new LinkedHashSet<>();
+ for (Object object : e.getStructuredSelection()) {
+ List<IArtifactKey> list = artifactMap.get(object);
+ if (list != null) {
+ associatedArtifacts.addAll(list);
+ }
+ }
+
+ artifactViewer.setSelection(new StructuredSelection(associatedArtifacts.toArray()), true);
+
+ // Reorder the artifacts so that the selected ones are first.
+ LinkedHashSet<IArtifactKey> newInput = new LinkedHashSet<>(artifacts);
+ newInput.retainAll(associatedArtifacts);
+ newInput.addAll(artifacts);
+ artifactViewer.setInput(newInput);
+
+ artifactViewer.setSelection(new StructuredSelection(associatedArtifacts.toArray()), true);
+ }
+ });
+
+ TableViewerColumn classifierColumn = createColumn(artifactViewer,
+ ProvUIMessages.TrustCertificateDialog_Classifier,
+ new ArtifactLabelProvider(a -> a.getClassifier(), fontProvider), tableColumnLayout, 1);
+ createColumn(artifactViewer, ProvUIMessages.TrustCertificateDialog_ArtifactId,
+ new ArtifactLabelProvider(a -> a.getId(), fontProvider), tableColumnLayout, 10);
+ createColumn(artifactViewer, ProvUIMessages.TrustCertificateDialog_Version,
+ new ArtifactLabelProvider(a -> a.getVersion().toString(), fontProvider), tableColumnLayout, 10);
+
+ artifactViewer.setInput(artifacts);
+
+ classifierColumn.getColumn().pack();
+ }
+
+ private void createMenu(StructuredViewer viewer) {
+ Control control = viewer.getControl();
+ Menu menu = new Menu(control);
+ control.setMenu(menu);
+ MenuItem item = new MenuItem(menu, SWT.PUSH);
+ item.setText(ProvUIMessages.TrustCertificateDialog_CopyFingerprint);
+ item.addSelectionListener(widgetSelectedAdapter(e -> {
+ PGPPublicKey key = getInstance(viewer.getSelection(), PGPPublicKey.class);
+ if (key != null) {
+ Clipboard clipboard = new Clipboard(getShell().getDisplay());
+ clipboard.setContents(new Object[] { userFriendlyFingerPrint(key) },
+ new Transfer[] { TextTransfer.getInstance() });
+ clipboard.dispose();
+ }
+ }));
+ viewer.addSelectionChangedListener(
+ e -> item.setEnabled(containsInstance(e.getSelection(), PGPPublicKey.class)));
+ }
+
+ private TableViewerColumn createColumn(TableViewer tableViewer, String text, ColumnLabelProvider labelProvider,
+ TableColumnLayout tableColumnLayout, int columnWeight) {
+ TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE);
+ column.getColumn().setText(text);
+ column.setLabelProvider(labelProvider);
+ tableColumnLayout.setColumnData(column.getColumn(), new ColumnWeightData(columnWeight));
+ return column;
}
/**
@@ -154,98 +553,252 @@ public class TrustCertificateDialog extends SelectionDialog {
private void checkInitialSelections() {
Iterator<?> itemsToCheck = getInitialElementSelections().iterator();
while (itemsToCheck.hasNext()) {
- listViewer.setChecked(itemsToCheck.next(), true);
+ certifcateViewer.setChecked(itemsToCheck.next(), true);
+ if (artifactViewer != null) {
+ artifactViewer.refresh(true);
+ }
}
}
/**
* Add the selection and deselection buttons to the dialog.
+ *
* @param composite org.eclipse.swt.widgets.Composite
*/
private void addSelectionButtons(Composite composite) {
- Composite buttonComposite = new Composite(composite, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.numColumns = 0;
- layout.marginWidth = 0;
- layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
- buttonComposite.setLayout(layout);
- buttonComposite.setLayoutData(new GridData(SWT.END, SWT.TOP, true, false));
+ int horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
+
+ Composite buttonArea = new Composite(composite, SWT.NONE);
+ GridLayout buttonAreaLayout = new GridLayout();
+ buttonAreaLayout.numColumns = 2;
+ buttonAreaLayout.marginWidth = 0;
+ buttonAreaLayout.horizontalSpacing = horizontalSpacing;
+ buttonArea.setLayout(buttonAreaLayout);
+ buttonArea.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ Composite leftButtonArea = new Composite(buttonArea, SWT.NONE);
+ GridLayout leftButtonAreaLayout = new GridLayout();
+ leftButtonAreaLayout.numColumns = 0;
+ leftButtonAreaLayout.marginWidth = 0;
+ leftButtonAreaLayout.horizontalSpacing = horizontalSpacing;
+ leftButtonArea.setLayout(leftButtonAreaLayout);
+ leftButtonArea.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, true, false));
+
+ if (containsInstance(artifactMap.keySet(), PGPPublicKey.class)
+ || containsInstance(artifactMap.keySet(), Certificate.class)) {
+ Button rememberSelectionButton = createCheckButton(leftButtonArea,
+ ProvUIMessages.TrustCertificateDialog_RememberSigners);
+ rememberSelectionButton.setSelection(rememberSelectedSigners);
+ rememberSelectionButton.addSelectionListener(widgetSelectedAdapter(e -> {
+ rememberSelectedSigners = rememberSelectionButton.getSelection();
+ }));
+ }
- Button selectButton = createButton(buttonComposite, IDialogConstants.SELECT_ALL_ID, ProvUIMessages.TrustCertificateDialog_SelectAll, false);
+ Button trustAlwaysButton = createCheckButton(leftButtonArea, ProvUIMessages.TrustCertificateDialog_AlwaysTrust);
+ trustAlwaysButton.addSelectionListener(widgetSelectedAdapter(e -> {
+ if (trustAlwaysButton.getSelection()) {
+ // Prompt the user to ensure they really understand what they've chosen, the
+ // risk, and where the preference is stored if they wish to change it in the
+ // future. Also ensure that the default button is no so that they must
+ // explicitly click the yes button, not just hit enter.
+ MessageDialog messageDialog = new MessageDialog(getShell(),
+ ProvUIMessages.TrustCertificateDialog_AlwaysTrustConfirmationTitle, null,
+ ProvUIMessages.TrustCertificateDialog_AlwaysTrustConfirmationMessage, MessageDialog.QUESTION,
+ new String[] { ProvUIMessages.TrustCertificateDialog_AlwaysTrustYes,
+ ProvUIMessages.TrustCertificateDialog_AlwaysTrustNo },
+ 1) {
+ @Override
+ public Image getImage() {
+ return getWarningImage();
+ }
+ };
+ int result = messageDialog.open();
+ if (result != Window.OK) {
+ // Restore the checkbox state.
+ trustAlwaysButton.setSelection(false);
+ } else {
+ certifcateViewer.setAllChecked(true);
+ if (artifactViewer != null) {
+ artifactViewer.refresh(true);
+ }
+ updateOkButton();
+ }
+ }
+ trustAlways = trustAlwaysButton.getSelection();
+ }));
+
+ Composite rightButtonArea = new Composite(buttonArea, SWT.NONE);
+ GridLayout rightButtonAreaLayout = new GridLayout();
+ rightButtonAreaLayout.numColumns = 0;
+ rightButtonAreaLayout.marginWidth = 0;
+ rightButtonAreaLayout.horizontalSpacing = horizontalSpacing;
+ rightButtonArea.setLayout(rightButtonAreaLayout);
+ rightButtonArea.setLayoutData(new GridData(SWT.END, SWT.TOP, true, false));
+
+ Button selectButton = createButton(rightButtonArea, IDialogConstants.SELECT_ALL_ID,
+ ProvUIMessages.TrustCertificateDialog_SelectAll, false);
+ selectButton.addSelectionListener(widgetSelectedAdapter(e -> {
+ certifcateViewer.setAllChecked(true);
+ if (artifactViewer != null) {
+ artifactViewer.refresh(true);
+ }
+ updateOkButton();
+ }));
+
+ Button deselectButton = createButton(rightButtonArea, IDialogConstants.DESELECT_ALL_ID,
+ ProvUIMessages.TrustCertificateDialog_DeselectAll, false);
+ deselectButton.addSelectionListener(widgetSelectedAdapter(e -> {
+ certifcateViewer.setAllChecked(false);
+ if (artifactViewer != null) {
+ artifactViewer.refresh(true);
+ }
+ updateOkButton();
+ }));
+ }
- SelectionListener listener = widgetSelectedAdapter(e -> {
- listViewer.setAllChecked(true);
- getOkButton().setEnabled(true);
- });
- selectButton.addSelectionListener(listener);
+ protected Button createCheckButton(Composite parent, String label) {
+ ((GridLayout) parent.getLayout()).numColumns++;
+ Button button = WidgetFactory.button(SWT.CHECK).text(label).font(JFaceResources.getDialogFont()).create(parent);
+ setButtonLayoutData(button);
+ return button;
+ }
- Button deselectButton = createButton(buttonComposite, IDialogConstants.DESELECT_ALL_ID, ProvUIMessages.TrustCertificateDialog_DeselectAll, false);
+ private String getFilterPath(String key) {
+ IDialogSettings dialogSettings = DialogSettings
+ .getOrCreateSection(ProvUIActivator.getDefault().getDialogSettings(), getClass().getName());
+ String filterPath = dialogSettings.get(key);
+ if (filterPath == null) {
+ filterPath = System.getProperty("user.home"); //$NON-NLS-1$
+ }
+ return filterPath;
+ }
- listener = widgetSelectedAdapter(e -> {
- listViewer.setAllChecked(false);
- getOkButton().setEnabled(false);
- });
- deselectButton.addSelectionListener(listener);
+ private void setFilterPath(String key, String filterPath) {
+ if (filterPath != null) {
+ IDialogSettings dialogSettings = DialogSettings
+ .getOrCreateSection(ProvUIActivator.getDefault().getDialogSettings(), getClass().getName());
+ dialogSettings.put(key, filterPath);
+ }
}
- private ISelectionChangedListener getChainSelectionListener() {
- return event -> {
- ISelection selection = event.getSelection();
- if (selection instanceof StructuredSelection) {
- selectedCertificate = ((StructuredSelection) selection).getFirstElement();
+ private void updateOkButton() {
+ Button okButton = getOkButton();
+ if (okButton != null) {
+ certifcateViewer.getCheckedElements();
+ Object[] checkedElements = certifcateViewer.getCheckedElements();
+ Set<IArtifactKey> artifacts = artifactMap.values().stream().flatMap(Collection::stream)
+ .collect(Collectors.toSet());
+ if (artifacts.isEmpty()) {
+ okButton.setEnabled(checkedElements.length > 0);
+ } else {
+ for (Object checkElement : checkedElements) {
+ artifacts.removeAll(artifactMap.get(checkElement));
+ }
+ okButton.setEnabled(artifacts.isEmpty());
}
- };
+ }
}
- public TreeViewer getCertificateChainViewer() {
- return certificateChainViewer;
+ @Override
+ protected void okPressed() {
+ setResult(Arrays.asList(certifcateViewer.getCheckedElements()));
+ super.okPressed();
}
- private IDoubleClickListener getDoubleClickListener() {
- return event -> {
- StructuredSelection selection = (StructuredSelection) event.getSelection();
- Object selectedElement = selection.getFirstElement();
- if (selectedElement instanceof TreeNode) {
- TreeNode treeNode = (TreeNode) selectedElement;
- // create and open dialog for certificate chain
- X509CertificateViewDialog certificateViewDialog = new X509CertificateViewDialog(getShell(), (X509Certificate) treeNode.getValue());
- certificateViewDialog.open();
+ private static class PGPOrX509ColumnLabelProvider extends ColumnLabelProvider {
+ private Function<PGPPublicKey, String> pgpMap;
+ private Function<X509Certificate, String> x509map;
+ private String unsignedValue;
+
+ public PGPOrX509ColumnLabelProvider(Function<PGPPublicKey, String> pgpMap,
+ Function<X509Certificate, String> x509map, String unsignedValue) {
+ this.pgpMap = pgpMap;
+ this.x509map = x509map;
+ this.unsignedValue = unsignedValue;
+ }
+
+ @Override
+ public String getText(Object element) {
+ if (element instanceof TreeNode) {
+ element = ((TreeNode) element).getValue();
+ }
+ if (element instanceof PGPPublicKey) {
+ return pgpMap.apply((PGPPublicKey) element);
+ }
+ if (element instanceof X509Certificate) {
+ return x509map.apply((X509Certificate) element);
}
- };
- }
- private ISelectionChangedListener getParentSelectionListener() {
- return event -> {
- ISelection selection = event.getSelection();
- if (selection instanceof StructuredSelection) {
- TreeNode firstElement = (TreeNode) ((StructuredSelection) selection).getFirstElement();
- getCertificateChainViewer().setInput(new TreeNode[] {firstElement});
- getOkButton().setEnabled(listViewer.getChecked(firstElement));
- getCertificateChainViewer().refresh();
+ if (element == null) {
+ return unsignedValue;
}
- };
+ return super.getText(element);
+ }
}
- /**
- * The <code>ListSelectionDialog</code> implementation of this
- * <code>Dialog</code> method builds a list of the selected elements for later
- * retrieval by the client and closes this dialog.
- */
- @Override
- protected void okPressed() {
- // Get the input children.
- Object[] children = contentProvider.getElements(inputElement);
+ private static class ArtifactLabelProvider extends ColumnLabelProvider {
+ private Function<IArtifactKey, String> labelProvider;
+ private Function<IArtifactKey, Font> fontProvider;
+
+ public ArtifactLabelProvider(Function<IArtifactKey, String> labelProvider,
+ Function<IArtifactKey, Font> fontProvider) {
+ this.labelProvider = labelProvider;
+ this.fontProvider = fontProvider;
+ }
- // Build a list of selected children.
+ @Override
+ public String getText(Object element) {
+ return labelProvider.apply((IArtifactKey) element);
+ }
+
+ @Override
+ public Font getFont(Object element) {
+ return fontProvider.apply((IArtifactKey) element);
+ }
+ }
+
+ private static int computeTreeSize(TreeNode node) {
+ int count = 1;
+ TreeNode[] children = node.getChildren();
if (children != null) {
- ArrayList<Object> list = new ArrayList<>();
- for (Object element : children) {
- if (listViewer.getChecked(element)) {
- list.add(element);
+ for (TreeNode child : children) {
+ count += computeTreeSize(child);
+ }
+ }
+ return count;
+ }
+
+ private static <T> T getInstance(Object element, Class<T> type) {
+ if (type.isInstance(element)) {
+ return type.cast(element);
+ } else if (element instanceof Iterable) {
+ for (Object object : ((Iterable<?>) element)) {
+ T instance = getInstance(object, type);
+ if (instance != null) {
+ return instance;
+ }
+ }
+ } else if (element instanceof TreeNode) {
+ return getInstance(((TreeNode) element).getValue(), type);
+ } else if (element instanceof TreeNode[]) {
+ for (TreeNode child : (TreeNode[]) element) {
+ T instance = getInstance(child, type);
+ if (instance != null) {
+ return instance;
}
}
- setResult(list);
}
- super.okPressed();
+ return null;
+ }
+
+ private static boolean containsInstance(Object element, Class<?> type) {
+ return getInstance(element, type) != null;
+ }
+
+ private static String userFriendlyFingerPrint(PGPPublicKey key) {
+ if (key == null) {
+ return null;
+ }
+ return PGPPublicKeyService.toHexFingerprint(key);
}
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/URLDropAdapter.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/URLDropAdapter.java
index 9f02b04ad..7ab2c95a2 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/URLDropAdapter.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/URLDropAdapter.java
@@ -25,8 +25,8 @@ import org.eclipse.swt.dnd.*;
/**
* URLDropAdapter can receive URL text from a drop.
* The URLDropAdapter should only be used with
- * the URLTransfer mechanism unless otherwise stated.
- *
+ * the URLTransfer mechanism unless otherwise stated.
+ *
* @since 3.4
*
*/
@@ -102,7 +102,7 @@ public abstract class URLDropAdapter extends DropTargetAdapter {
}
/**
- * Determine whether the drop target data is valid. On some platforms this cannot be detected,
+ * Determine whether the drop target data is valid. On some platforms this cannot be detected,
* in which which case we return true.
* @param event the drop target event
* @return <code>true</code> if data is valid, (or can not be determined), <code>false</code> otherwise.
@@ -114,9 +114,9 @@ public abstract class URLDropAdapter extends DropTargetAdapter {
}
/**
- * Handle the drop with the given text as the URL.
+ * Handle the drop with the given text as the URL.
* @param urlText The url text specified by the drop. It is never <code>null</code>.
- * @param event the originating drop target event.
+ * @param event the originating drop target event.
*/
protected abstract void handleDrop(String urlText, DropTargetEvent event);
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/UninstallWizardPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/UninstallWizardPage.java
index e7d46eece..8f9d100e9 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/UninstallWizardPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/UninstallWizardPage.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/UpdateWizardPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/UpdateWizardPage.java
index f3b29cc2c..6e9c44594 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/UpdateWizardPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/UpdateWizardPage.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/UserValidationDialog.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/UserValidationDialog.java
index 5d37182e7..f5bf68c21 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/UserValidationDialog.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/UserValidationDialog.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -44,7 +44,7 @@ public class UserValidationDialog extends Dialog {
/**
* Creates a new validation dialog that prompts the user for login credentials.
- *
+ *
* @param parentShell the parent shell of this dialog
* @param titleMessage the message to be displayed by this dialog's window
* @param titleImage the image of this shell, may be <code>null</code>
@@ -56,7 +56,7 @@ public class UserValidationDialog extends Dialog {
/**
* Creates a new validation dialog that prompts the user for login credentials.
- *
+ *
* @param lastUsed the authentication information that was originally as an attempt to login
* @param parentShell the parent shell of this dialog
* @param titleMessage the message to be displayed by this dialog's window
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties
index 89b982f00..1d574dc40 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties
@@ -12,6 +12,7 @@
# IBM Corporation - initial API and implementation
###############################################################################
+PGPPublicKeyViewDialog_Title=PGP Public Key Properties
ProfileModificationAction_InvalidSelections=Problem determining user request. Profile id: {0}, Selection count: {1}
ProfileModificationWizardPage_DetailsLabel=Details
ProfileSnapshots_Label=Installation History
@@ -35,7 +36,7 @@ UninstallWizardPage_Description=Review and confirm the items to be uninstalled.
UninstallWizardPage_Title=Uninstall Details
ServiceUI_LoginDetails=Please provide login details for {0}
ServiceUI_LoginRequired=Login required
-ServiceUI_unsigned_message=Warning: You are installing software that contains unsigned content. The authenticity or validity of this software cannot be established. Do you want to continue with the installation?
+ServiceUI_unsigned_message=Warning: Installing unsigned software for which the authenticity or validity cannot be established. Continue with the installation?
ServiceUI_warning_title=Security Warning
ServiceUI_InstallAnywayAction_Label=&Install anyway
UpdateIUOperationLabel=Update
@@ -257,6 +258,10 @@ RepositoryElement_NotFound=This repository is currently not available.
RepositoryTracker_DuplicateLocation=Duplicate location
MetadataRepositoryElement_RepositoryLoadError=Error loading repository {0}
IUViewQueryContext_NoCategorizedItemsDescription=You can uncheck the 'Group items by category' check box to see items without categories.
+KeySigningInfoFactory_FingerprintItem=Fingerprint=
+KeySigningInfoFactory_KeySignersSection=Key Signers:
+KeySigningInfoFactory_PGPSigningType=PGP Public Key
+KeySigningInfoFactory_UserIDItem=UserID=
QueriedElementWrapper_NoCategorizedItemsExplanation=There are no categorized items
QueriedElementWrapper_NoItemsExplanation=There are no items available
QueriedElementWrapper_SiteNotFound=Could not find {0}
@@ -276,9 +281,38 @@ RevertDialog_CancelButtonLabel=Cancel
RollbackProfileElement_CurrentInstallation=Current Installation
-TrustCertificateDialog_Details=Details
-TrustCertificateDialog_Title=Certificates
-TrustCertificateDialog_Message=Do you trust these certificates?
-TrustCertificateDialog_AcceptSelectedButtonLabel=&Accept selected
+TrustCertificateDialog_Details=\uD83D\uDD0D D&etails...
+TrustCertificateDialog_Export=\uD83D\uDCE5 E&xport...
+TrustCertificateDialog_Title=Trust
+TrustCertificateDialog_Message=Do you trust these signers?
+TrustCertificateDialog_MessageUnsigned=\u26A0\uFE0F\u00A0Do you trust unsigned content of unknown origin?
+TrustCertificateDialog_MessageNameWarning=\u26A0\uFE0F\u00A0The displayed originator names are not necessarily a reliable certification of origin.
+TrustCertificateDialog_MessagePGP=For PG keys, verification is typically achieved by querying the key\'s fingerprint against a trusted key server.
+TrustCertificateDialog_AcceptSelectedButtonLabel=&Trust Selected
+TrustCertificateDialog_AlwaysTrust=Always trust all content
+TrustCertificateDialog_AlwaysTrustConfirmationMessage=Are you certain you wish to accept all content, including unsigned content of unknown origin, with no further confirmation now and for all future operations?\n\n\
+Use the 'Select All' button to trust all content just for this operation.\n\n\
+This preference choice will be stored on the 'Install/Update > Trust' preference page.
+TrustCertificateDialog_AlwaysTrustConfirmationTitle=Always Trust Everything Confirmation
+TrustCertificateDialog_AlwaysTrustNo=No, Prompt Me Instead
+TrustCertificateDialog_AlwaysTrustYes=Yes, I Accept the Risk
+TrustCertificateDialog_ArtifactId=Id
TrustCertificateDialog_SelectAll=&Select All
TrustCertificateDialog_DeselectAll=&Deselect All
+TrustCertificateDialog_ObjectType=Type
+TrustCertificateDialog_Id=Id/Fingerprint
+TrustCertificateDialog_Name=Name
+TrustCertificateDialog_Classifier=Classifier
+TrustCertificateDialog_CopyFingerprint=Copy Fingerprint
+TrustCertificateDialog_dates=Validity Dates
+TrustCertificateDialog_NotApplicable=n/a
+TrustCertificateDialog_NotYetValidStartDate=\u274C Not yet valid, starts {0}
+TrustCertificateDialog_expiredSince=\u274C Expired since {0}
+TrustCertificateDialog_validExpires=\u2714\uFE0F Valid, expires {0}
+TrustCertificateDialog_valid=\u2714\uFE0F Valid
+TrustCertificateDialog_expired=\u274C Expired
+TrustCertificateDialog_notYetValid=\u274C Not yet valid
+TrustCertificateDialog_RememberSigners=Remember selected signers
+TrustCertificateDialog_Unknown=Unknown
+TrustCertificateDialog_Unsigned=Unsigned
+TrustCertificateDialog_Version=Version
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/misc/StringMatcher.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/misc/StringMatcher.java
deleted file mode 100644
index 990bb9e83..000000000
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/misc/StringMatcher.java
+++ /dev/null
@@ -1,449 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2018 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.equinox.internal.p2.ui.misc;
-
-import java.util.Vector;
-
-/**
- * A string pattern matcher, suppporting "*" and "?" wildcards.
- * Copied from the 1.14 CVS Revision of org.eclipse.ui.internal.misc.StringMatcher
- * The only changes made were to fix javadoc warnings, so any future fixes should
- * be able to be directly copied over.
- *
- * @since 2.3
- */
-public class StringMatcher {
- protected String fPattern;
-
- protected int fLength; // pattern length
-
- protected boolean fIgnoreWildCards;
-
- protected boolean fIgnoreCase;
-
- protected boolean fHasLeadingStar;
-
- protected boolean fHasTrailingStar;
-
- protected String fSegments[]; //the given pattern is split into * separated segments
-
- /* boundary value beyond which we don't need to search in the text */
- protected int fBound = 0;
-
- protected static final char fSingleWildCard = '\u0000';
-
- public static class Position {
- int start; //inclusive
-
- int end; //exclusive
-
- public Position(int start, int end) {
- this.start = start;
- this.end = end;
- }
-
- public int getStart() {
- return start;
- }
-
- public int getEnd() {
- return end;
- }
- }
-
- /**
- * StringMatcher constructor takes in a String object that is a simple
- * pattern which may contain '*' for 0 and many characters and
- * '?' for exactly one character.
- *
- * Literal '*' and '?' characters must be escaped in the pattern
- * e.g., "\*" means literal "*", etc.
- *
- * Escaping any other character (including the escape character itself),
- * just results in that character in the pattern.
- * e.g., "\a" means "a" and "\\" means "\"
- *
- * If invoking the StringMatcher with string literals in Java, don't forget
- * escape characters are represented by "\\".
- *
- * @param pattern the pattern to match text against
- * @param ignoreCase if true, case is ignored
- * @param ignoreWildCards if true, wild cards and their escape sequences are ignored
- * (everything is taken literally).
- */
- public StringMatcher(String pattern, boolean ignoreCase, boolean ignoreWildCards) {
- if (pattern == null) {
- throw new IllegalArgumentException();
- }
- fIgnoreCase = ignoreCase;
- fIgnoreWildCards = ignoreWildCards;
- fPattern = pattern;
- fLength = pattern.length();
-
- if (fIgnoreWildCards) {
- parseNoWildCards();
- } else {
- parseWildCards();
- }
- }
-
- /**
- * Find the first occurrence of the pattern between <code>start</code)(inclusive)
- * and <code>end</code>(exclusive).
- * @param text the String object to search in
- * @param start the starting index of the search range, inclusive
- * @param end the ending index of the search range, exclusive
- * @return an <code>StringMatcher.Position</code> object that keeps the starting
- * (inclusive) and ending positions (exclusive) of the first occurrence of the
- * pattern in the specified range of the text; return null if not found or subtext
- * is empty (start==end). A pair of zeros is returned if pattern is empty string
- * Note that for pattern like "*abc*" with leading and trailing stars, position of "abc"
- * is returned. For a pattern like"*??*" in text "abcdf", (1,3) is returned
- */
- public StringMatcher.Position find(String text, int start, int end) {
- if (text == null) {
- throw new IllegalArgumentException();
- }
-
- int tlen = text.length();
- if (start < 0) {
- start = 0;
- }
- if (end > tlen) {
- end = tlen;
- }
- if (end < 0 || start >= end) {
- return null;
- }
- if (fLength == 0) {
- return new Position(start, start);
- }
- if (fIgnoreWildCards) {
- int x = posIn(text, start, end);
- if (x < 0) {
- return null;
- }
- return new Position(x, x + fLength);
- }
-
- int segCount = fSegments.length;
- if (segCount == 0) {
- return new Position(start, end);
- }
-
- int curPos = start;
- int matchStart = -1;
- int i;
- for (i = 0; i < segCount && curPos < end; ++i) {
- String current = fSegments[i];
- int nextMatch = regExpPosIn(text, curPos, end, current);
- if (nextMatch < 0) {
- return null;
- }
- if (i == 0) {
- matchStart = nextMatch;
- }
- curPos = nextMatch + current.length();
- }
- if (i < segCount) {
- return null;
- }
- return new Position(matchStart, curPos);
- }
-
- /**
- * match the given <code>text</code> with the pattern
- * @return true if matched otherwise false
- * @param text a String object
- */
- public boolean match(String text) {
- if (text == null) {
- return false;
- }
- return match(text, 0, text.length());
- }
-
- /**
- * Given the starting (inclusive) and the ending (exclusive) positions in the
- * <code>text</code>, determine if the given substring matches with aPattern
- * @return true if the specified portion of the text matches the pattern
- * @param text a String object that contains the substring to match
- * @param start marks the starting position (inclusive) of the substring
- * @param end marks the ending index (exclusive) of the substring
- */
- public boolean match(String text, int start, int end) {
- if (null == text) {
- throw new IllegalArgumentException();
- }
-
- if (start > end) {
- return false;
- }
-
- if (fIgnoreWildCards) {
- return (end - start == fLength) && fPattern.regionMatches(fIgnoreCase, 0, text, start, fLength);
- }
- int segCount = fSegments.length;
- if (segCount == 0 && (fHasLeadingStar || fHasTrailingStar)) {
- return true;
- }
- if (start == end) {
- return fLength == 0;
- }
- if (fLength == 0) {
- return start == end;
- }
-
- int tlen = text.length();
- if (start < 0) {
- start = 0;
- }
- if (end > tlen) {
- end = tlen;
- }
-
- int tCurPos = start;
- int bound = end - fBound;
- if (bound < 0) {
- return false;
- }
- int i = 0;
- String current = fSegments[i];
- int segLength = current.length();
-
- /* process first segment */
- if (!fHasLeadingStar) {
- if (!regExpRegionMatches(text, start, current, 0, segLength)) {
- return false;
- }
- ++i;
- tCurPos = tCurPos + segLength;
- }
- if ((fSegments.length == 1) && (!fHasLeadingStar) && (!fHasTrailingStar)) {
- // only one segment to match, no wildcards specified
- return tCurPos == end;
- }
- /* process middle segments */
- while (i < segCount) {
- current = fSegments[i];
- int currentMatch;
- int k = current.indexOf(fSingleWildCard);
- if (k < 0) {
- currentMatch = textPosIn(text, tCurPos, end, current);
- if (currentMatch < 0) {
- return false;
- }
- } else {
- currentMatch = regExpPosIn(text, tCurPos, end, current);
- if (currentMatch < 0) {
- return false;
- }
- }
- tCurPos = currentMatch + current.length();
- i++;
- }
-
- /* process final segment */
- if (!fHasTrailingStar && tCurPos != end) {
- int clen = current.length();
- return regExpRegionMatches(text, end - clen, current, 0, clen);
- }
- return i == segCount;
- }
-
- /**
- * This method parses the given pattern into segments seperated by wildcard '*' characters.
- * Since wildcards are not being used in this case, the pattern consists of a single segment.
- */
- private void parseNoWildCards() {
- fSegments = new String[1];
- fSegments[0] = fPattern;
- fBound = fLength;
- }
-
- /**
- * Parses the given pattern into segments seperated by wildcard '*' characters.
- */
- private void parseWildCards() {
- if (fPattern.startsWith("*")) { //$NON-NLS-1$
- fHasLeadingStar = true;
- }
- if (fPattern.endsWith("*")) {//$NON-NLS-1$
- /* make sure it's not an escaped wildcard */
- if (fLength > 1 && fPattern.charAt(fLength - 2) != '\\') {
- fHasTrailingStar = true;
- }
- }
-
- Vector<String> temp = new Vector<>();
-
- int pos = 0;
- StringBuilder buf = new StringBuilder();
- while (pos < fLength) {
- char c = fPattern.charAt(pos++);
- switch (c) {
- case '\\' :
- if (pos >= fLength) {
- buf.append(c);
- } else {
- char next = fPattern.charAt(pos++);
- /* if it's an escape sequence */
- if (next == '*' || next == '?' || next == '\\') {
- buf.append(next);
- } else {
- /* not an escape sequence, just insert literally */
- buf.append(c);
- buf.append(next);
- }
- }
- break;
- case '*' :
- if (buf.length() > 0) {
- /* new segment */
- temp.addElement(buf.toString());
- fBound += buf.length();
- buf.setLength(0);
- }
- break;
- case '?' :
- /* append special character representing single match wildcard */
- buf.append(fSingleWildCard);
- break;
- default :
- buf.append(c);
- }
- }
-
- /* add last buffer to segment list */
- if (buf.length() > 0) {
- temp.addElement(buf.toString());
- fBound += buf.length();
- }
-
- fSegments = new String[temp.size()];
- temp.copyInto(fSegments);
- }
-
- /**
- * @param text a string which contains no wildcard
- * @param start the starting index in the text for search, inclusive
- * @param end the stopping point of search, exclusive
- * @return the starting index in the text of the pattern , or -1 if not found
- */
- protected int posIn(String text, int start, int end) {//no wild card in pattern
- int max = end - fLength;
-
- if (!fIgnoreCase) {
- int i = text.indexOf(fPattern, start);
- if (i == -1 || i > max) {
- return -1;
- }
- return i;
- }
-
- for (int i = start; i <= max; ++i) {
- if (text.regionMatches(true, i, fPattern, 0, fLength)) {
- return i;
- }
- }
-
- return -1;
- }
-
- /**
- * @param text a simple regular expression that may only contain '?'(s)
- * @param start the starting index in the text for search, inclusive
- * @param end the stopping point of search, exclusive
- * @param p a simple regular expression that may contains '?'
- * @return the starting index in the text of the pattern , or -1 if not found
- */
- protected int regExpPosIn(String text, int start, int end, String p) {
- int plen = p.length();
-
- int max = end - plen;
- for (int i = start; i <= max; ++i) {
- if (regExpRegionMatches(text, i, p, 0, plen)) {
- return i;
- }
- }
- return -1;
- }
-
- /**
- *
- * @return boolean
- * @param text a String to match
- * @param tStart int that indicates the starting index of match, inclusive
- * @param p String, String, a simple regular expression that may contain '?'
- * @param plen length of string
- */
- protected boolean regExpRegionMatches(String text, int tStart, String p, int pStart, int plen) {
- while (plen-- > 0) {
- char tchar = text.charAt(tStart++);
- char pchar = p.charAt(pStart++);
-
- /* process wild cards */
- if (!fIgnoreWildCards) {
- /* skip single wild cards */
- if (pchar == fSingleWildCard) {
- continue;
- }
- }
- if (pchar == tchar) {
- continue;
- }
- if (fIgnoreCase) {
- if (Character.toUpperCase(tchar) == Character.toUpperCase(pchar)) {
- continue;
- }
- // comparing after converting to upper case doesn't handle all cases;
- // also compare after converting to lower case
- if (Character.toLowerCase(tchar) == Character.toLowerCase(pchar)) {
- continue;
- }
- }
- return false;
- }
- return true;
- }
-
- /**
- * @param text the string to match
- * @param start the starting index in the text for search, inclusive
- * @param end the stopping point of search, exclusive
- * @param p a pattern string that has no wildcard
- * @return the starting index in the text of the pattern , or -1 if not found
- */
- protected int textPosIn(String text, int start, int end, String p) {
-
- int plen = p.length();
- int max = end - plen;
-
- if (!fIgnoreCase) {
- int i = text.indexOf(p, start);
- if (i == -1 || i > max) {
- return -1;
- }
- return i;
- }
-
- for (int i = start; i <= max; ++i) {
- if (text.regionMatches(true, i, p, 0, plen)) {
- return i;
- }
- }
-
- return -1;
- }
-} \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/ElementUtils.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/ElementUtils.java
index 93d64c234..278462b6f 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/ElementUtils.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/ElementUtils.java
@@ -30,7 +30,7 @@ import org.eclipse.equinox.p2.ui.ProvisioningUI;
/**
* Utility methods for manipulating model elements.
- *
+ *
* @since 3.4
*
*/
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/EmptyElementExplanation.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/EmptyElementExplanation.java
index 412dc2e69..53aba52ab 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/EmptyElementExplanation.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/EmptyElementExplanation.java
@@ -30,7 +30,7 @@ public class EmptyElementExplanation extends ProvElement {
/**
* Create an empty element explanation
- *
+ *
* @param parent the parent of this element
* @param severity the severity of the explanation {@link IStatus#INFO},
* @param explanation
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/IIUElement.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/IIUElement.java
index 57398a885..5e366d45f 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/IIUElement.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/IIUElement.java
@@ -20,7 +20,7 @@ import org.eclipse.equinox.p2.metadata.IRequirement;
/**
* Interface for elements that represent IU's.
- *
+ *
* @since 3.4
*/
public interface IIUElement {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/IRepositoryElement.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/IRepositoryElement.java
index da3596b70..3a6dee516 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/IRepositoryElement.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/IRepositoryElement.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -19,7 +19,7 @@ import org.eclipse.equinox.p2.repository.IRepository;
/**
* Interface for elements that represent repositories.
- *
+ *
* @since 3.4
*/
public interface IRepositoryElement<T> {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/InstalledIUElement.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/InstalledIUElement.java
index 615480202..3fb7146f8 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/InstalledIUElement.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/InstalledIUElement.java
@@ -15,6 +15,7 @@
package org.eclipse.equinox.internal.p2.ui.model;
import java.util.Collection;
+import java.util.Objects;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.equinox.internal.p2.ui.*;
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
@@ -101,10 +102,37 @@ public class InstalledIUElement extends QueriedElement implements IIUElement {
@Override
public boolean shouldShowChildren() {
+ // Check that no parent has the same IU as this parent.
+ // That would lead to a cycle and induce an infinite tree.
+ // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=550265
+ for (Object parent = getParent(this); parent instanceof InstalledIUElement;) {
+ InstalledIUElement installedIUElement = (InstalledIUElement) parent;
+ if (Objects.equals(iu, installedIUElement.getIU())) {
+ return false;
+ }
+ parent = installedIUElement.getParent(installedIUElement);
+ }
return true;
}
@Override
+ public Object[] getChildren(Object o) {
+ if (shouldShowChildren()) {
+ // Only show children if that would not induce a cycle.
+ return super.getChildren(o);
+ }
+
+ return new Object[0];
+ }
+
+ @Override
+ protected Object[] getFilteredChildren(Collection<?> results) {
+ // Given the equality definition, a child cannot be equal to a sibling of this
+ // because the child has a different parent.
+ return results.toArray();
+ }
+
+ @Override
public boolean equals(Object obj) {
if (this == obj)
return true;
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/QueriedElement.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/QueriedElement.java
index 4b31689e3..e729c58ad 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/QueriedElement.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/QueriedElement.java
@@ -81,7 +81,7 @@ public abstract class QueriedElement extends ProvElement {
/**
* Return the query type that is appropriate for this element when there is no
* query context.
- *
+ *
* @return The integer query type
*/
protected abstract int getDefaultQueryType();
@@ -91,7 +91,7 @@ public abstract class QueriedElement extends ProvElement {
* element, the query type may take the query context into account. Subclasses
* should override this method if there are context-dependent decisions to be
* made to determine the query.
- *
+ *
* @return The integer query type
*/
public int getQueryType() {
@@ -107,17 +107,21 @@ public abstract class QueriedElement extends ProvElement {
Collection<?> results = queryDescriptor.performQuery(monitor);
cachedChildren = Collections.unmodifiableCollection(results);
if (results.size() > 0) {
- Collection<Object> returnedChildren = new HashSet<>();
- returnedChildren.addAll(results);
- Object[] siblings = getSiblings();
- for (Object sibling : siblings) {
- returnedChildren.remove(sibling);
- }
- return returnedChildren.toArray();
+ return getFilteredChildren(results);
}
return new Object[0];
}
+ protected Object[] getFilteredChildren(Collection<?> results) {
+ Collection<Object> returnedChildren = new HashSet<>();
+ returnedChildren.addAll(results);
+ Object[] siblings = getSiblings();
+ for (Object sibling : siblings) {
+ returnedChildren.remove(sibling);
+ }
+ return returnedChildren.toArray();
+ }
+
public void setQueryable(IQueryable<?> queryable) {
this.queryable = queryable;
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/QueriedElementWrapper.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/QueriedElementWrapper.java
index 8ea123228..9c3136446 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/QueriedElementWrapper.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/QueriedElementWrapper.java
@@ -28,7 +28,7 @@ import org.eclipse.osgi.util.NLS;
* A wrapper that assigns a query provider and the queryable
* who was performing the query to the wrapped elements
* as they are accepted.
- *
+ *
* @since 3.4
*/
public abstract class QueriedElementWrapper extends ElementWrapper {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/RemedyElementCategory.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/RemedyElementCategory.java
index 50ab0d744..f93807ddd 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/RemedyElementCategory.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/RemedyElementCategory.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* Red Hat, Inc. - initial API and implementation
*******************************************************************************/
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/RollbackProfileElement.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/RollbackProfileElement.java
index e4a8ffb3a..f167a1406 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/RollbackProfileElement.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/RollbackProfileElement.java
@@ -14,7 +14,7 @@
*******************************************************************************/
package org.eclipse.equinox.internal.p2.ui.model;
-import com.ibm.icu.text.DateFormat;
+import java.text.DateFormat;
import java.util.Date;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/RootElement.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/RootElement.java
index fdb8a9f7a..29fa1ecd3 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/RootElement.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/RootElement.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -21,7 +21,7 @@ import org.eclipse.equinox.p2.ui.ProvisioningUI;
/**
* Element class that represents the root of a viewer. It can be configured
* with its own ui and query context.
- *
+ *
* @since 3.5
*
*/
@@ -49,7 +49,7 @@ public abstract class RootElement extends RemoteQueriedElement {
/**
* Set the query context that is used when querying the receiver.
- *
+ *
* @param context the query context to use
*/
public void setQueryContext(IUViewQueryContext context) {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/ArtifactKeyWrapper.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/ArtifactKeyWrapper.java
index 6a8e0c0c9..e33b0c50a 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/ArtifactKeyWrapper.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/ArtifactKeyWrapper.java
@@ -21,7 +21,7 @@ import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
/**
* Wrapper that accepts artifact keys and wraps them in an ArtifactKeyElement.
- *
+ *
* @since 3.6
*/
public class ArtifactKeyWrapper extends QueriedElementWrapper {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/ArtifactRepositoryElementWrapper.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/ArtifactRepositoryElementWrapper.java
index 3e0f103bd..5cf73e094 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/ArtifactRepositoryElementWrapper.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/ArtifactRepositoryElementWrapper.java
@@ -22,7 +22,7 @@ import org.eclipse.equinox.p2.query.IQueryable;
/**
* ElementWrapper that wraps a URI with an ArtifactRepositoryElement.
- *
+ *
* @since 3.4
*/
public class ArtifactRepositoryElementWrapper extends QueriedElementWrapper {
@@ -33,7 +33,7 @@ public class ArtifactRepositoryElementWrapper extends QueriedElementWrapper {
/**
* Accepts a result that matches the query criteria.
- *
+ *
* @param match an object matching the query
* @return <code>true</code> if the query should continue,
* or <code>false</code> to indicate the query should stop.
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/AvailableIUWrapper.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/AvailableIUWrapper.java
index 048dd3e9c..217ac6722 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/AvailableIUWrapper.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/AvailableIUWrapper.java
@@ -29,7 +29,7 @@ import org.eclipse.equinox.p2.query.QueryUtil;
/**
* A wrapper that examines available IU's and wraps them in an
* element representing either a category or a regular IU.
- *
+ *
* @since 3.4
*/
public class AvailableIUWrapper extends QueriedElementWrapper {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/CategoryElementWrapper.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/CategoryElementWrapper.java
index 46c407772..7331c77b1 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/CategoryElementWrapper.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/CategoryElementWrapper.java
@@ -26,7 +26,7 @@ import org.eclipse.equinox.p2.query.IQueryable;
/**
* A collector that converts IU's to category elements as it accepts them.
* It can be configured so that it is never empty.
- *
+ *
* @since 3.4
*/
public class CategoryElementWrapper extends QueriedElementWrapper {
@@ -52,7 +52,7 @@ public class CategoryElementWrapper extends QueriedElementWrapper {
}
Iterator<?> iter = super.getCollection().iterator();
- // Don't add the same category IU twice.
+ // Don't add the same category IU twice.
while (iter.hasNext()) {
CategoryElement element = (CategoryElement) iter.next();
if (element.shouldMerge(iu)) {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/InstalledIUElementWrapper.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/InstalledIUElementWrapper.java
index f58912d21..6b0578d1f 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/InstalledIUElementWrapper.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/InstalledIUElementWrapper.java
@@ -23,7 +23,7 @@ import org.eclipse.equinox.p2.query.IQueryable;
/**
* ElementWrapper that accepts the matched IU's and
* wraps them in an InstalledIUElement.
- *
+ *
* @since 3.4
*/
public class InstalledIUElementWrapper extends QueriedElementWrapper {
@@ -34,7 +34,7 @@ public class InstalledIUElementWrapper extends QueriedElementWrapper {
/**
* Accepts a result that matches the query criteria.
- *
+ *
* @param match an object matching the query
* @return <code>true</code> if the query should continue,
* or <code>false</code> to indicate the query should stop.
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/MetadataRepositoryElementWrapper.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/MetadataRepositoryElementWrapper.java
index bd5099bbe..98d1bb313 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/MetadataRepositoryElementWrapper.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/MetadataRepositoryElementWrapper.java
@@ -24,7 +24,7 @@ import org.eclipse.equinox.p2.ui.ProvisioningUI;
/**
* ElementWrapper that accepts the matched repo URLs and
* wraps them in a MetadataRepositoryElement.
- *
+ *
* @since 3.4
*/
public class MetadataRepositoryElementWrapper extends QueriedElementWrapper {
@@ -35,7 +35,7 @@ public class MetadataRepositoryElementWrapper extends QueriedElementWrapper {
/**
* Accepts a result that matches the query criteria.
- *
+ *
* @param match an object matching the query
* @return <code>true</code> if the query should continue,
* or <code>false</code> to indicate the query should stop.
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/ProfileElementWrapper.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/ProfileElementWrapper.java
index d3339634b..ee703eb8f 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/ProfileElementWrapper.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/ProfileElementWrapper.java
@@ -21,7 +21,7 @@ import org.eclipse.equinox.p2.engine.IProfile;
/**
* Collector that accepts the matched Profiles and
* wraps them in a ProfileElement.
- *
+ *
* @since 3.4
*/
public class ProfileElementWrapper extends QueriedElementWrapper {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/RequiredIUsQuery.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/RequiredIUsQuery.java
index b5e87de48..6d7e34d71 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/RequiredIUsQuery.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/query/RequiredIUsQuery.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Cloudsmith Inc. - converted into expression based query
@@ -29,8 +29,8 @@ import org.eclipse.equinox.p2.metadata.expression.IExpression;
* plan that are required by this IU. This is usually used in combination with
* other queries (such as show all Required IUs which also are visible to
* the user as available).
- *
- * @since 2.0
+ *
+ * @since 2.0
*/
public class RequiredIUsQuery extends ExpressionMatchQuery<IInstallableUnit> {
@@ -38,8 +38,8 @@ public class RequiredIUsQuery extends ExpressionMatchQuery<IInstallableUnit> {
/**
* Creates a new query that will return any IU that meets any
- * one of the requirements of the specified IU.
- *
+ * one of the requirements of the specified IU.
+ *
* @param iu The IU whose requirements are to be checked
*/
public RequiredIUsQuery(IInstallableUnit iu) {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/CertificateLabelProvider.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/CertificateLabelProvider.java
index 16246ed34..39cc991d8 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/CertificateLabelProvider.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/CertificateLabelProvider.java
@@ -13,11 +13,12 @@
*******************************************************************************/
package org.eclipse.equinox.internal.p2.ui.viewers;
-import java.security.cert.Certificate;
import java.security.cert.X509Certificate;
import org.eclipse.equinox.internal.provisional.security.ui.X500PrincipalHelper;
+import org.eclipse.equinox.internal.provisional.security.ui.X509CertificateViewDialog;
import org.eclipse.jface.viewers.*;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Shell;
/**
* A label provider that displays X509 certificates.
@@ -31,13 +32,12 @@ public class CertificateLabelProvider implements ILabelProvider {
@Override
public String getText(Object element) {
- Certificate cert = null;
if (element instanceof TreeNode) {
- cert = (Certificate) ((TreeNode) element).getValue();
- }
- if (cert != null) {
- X500PrincipalHelper principalHelper = new X500PrincipalHelper(((X509Certificate) cert).getSubjectX500Principal());
- return principalHelper.getCN() + "; " + principalHelper.getOU() + "; " + principalHelper.getO(); //$NON-NLS-1$ //$NON-NLS-2$
+ Object o = ((TreeNode) element).getValue();
+ if (o instanceof X509Certificate) {
+ X509Certificate cert = (X509Certificate) o;
+ return getText(cert);
+ }
}
return ""; //$NON-NLS-1$
}
@@ -62,4 +62,23 @@ public class CertificateLabelProvider implements ILabelProvider {
// do nothing
}
+ /**
+ * Returns a string that can be used as readable label for a certificate. This
+ * hides the internal implementation classes needed to produce this label.
+ */
+ public static String getText(X509Certificate cert) {
+ X500PrincipalHelper principalHelper = new X500PrincipalHelper(cert.getSubjectX500Principal());
+ return principalHelper.getCN() + "; " + principalHelper.getOU() + "; " //$NON-NLS-1$ //$NON-NLS-2$
+ + principalHelper.getO();
+ }
+
+ /**
+ * Opens a dialog to present detailed information about a certificate. This
+ * hides the internal implementation classes needed open this dialog.
+ */
+ public static void openDialog(Shell shell, X509Certificate cert) {
+ // create and open dialog for certificate chain
+ X509CertificateViewDialog certificateViewDialog = new X509CertificateViewDialog(shell, cert);
+ certificateViewDialog.open();
+ }
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/DeferredQueryContentProvider.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/DeferredQueryContentProvider.java
index 27cff298c..75b8b61c0 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/DeferredQueryContentProvider.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/DeferredQueryContentProvider.java
@@ -25,9 +25,9 @@ import org.eclipse.jface.viewers.Viewer;
* Content provider that retrieves children asynchronously where
* possible using the IDeferredWorkbenchAdapter and provisioning
* query mechanisms.
- *
+ *
* @since 3.4
- *
+ *
*/
public class DeferredQueryContentProvider extends ProvElementContentProvider {
@@ -41,7 +41,7 @@ public class DeferredQueryContentProvider extends ProvElementContentProvider {
IDeferredQueryTreeListener onFetchingActionListener;
/**
- *
+ *
*/
public DeferredQueryContentProvider() {
// Default constructor
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IDeferredQueryTreeListener.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IDeferredQueryTreeListener.java
index 5e7dc3ea1..9c559d069 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IDeferredQueryTreeListener.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IDeferredQueryTreeListener.java
@@ -20,7 +20,7 @@ import java.util.EventListener;
* A listening interface used to signal when fetching begins and
* ends. Used by clients who wish to coordinate fetching with other
* capabilities of the viewer.
- *
+ *
* @since 3.4
*
*/
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IInputChangeListener.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IInputChangeListener.java
index 85b7f0b57..4a422300e 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IInputChangeListener.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IInputChangeListener.java
@@ -20,7 +20,7 @@ import org.eclipse.jface.viewers.Viewer;
/**
* A listening interface used to signal clients when input changes
* in a viewer.
- *
+ *
* @since 3.4
*
*/
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IUColumnConfig.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IUColumnConfig.java
index 91cccf749..d915bb990 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IUColumnConfig.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IUColumnConfig.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -20,9 +20,9 @@ import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.widgets.Control;
/**
- * An IUColumnConfig describes a column in a viewer that is showing
- * information about an IIInstallableUnit.
- *
+ * An IUColumnConfig describes a column in a viewer that is showing
+ * information about an IIInstallableUnit.
+ *
* @since 3.4
*/
public class IUColumnConfig {
@@ -64,11 +64,11 @@ public class IUColumnConfig {
/**
* Create an IUColumnConfig describing a column with the specified title, type, and
* default width.
- *
+ *
* @param title the title that should appear for the column
* @param columnType the type of column represented. The type may be used to determine
* appropriate size or formatting of the column's content.
- * @param columnWidthInChars the width (in characters) that should be used for the column if no
+ * @param columnWidthInChars the width (in characters) that should be used for the column if no
* other width is specified by the client.
*/
@@ -82,7 +82,7 @@ public class IUColumnConfig {
/**
* Return the title of the column.
* @return the title that should be used for the column.
- *
+ *
* @since 3.6
*/
public String getColumnTitle() {
@@ -92,7 +92,7 @@ public class IUColumnConfig {
/**
* Set the title of the column
* @param title the String that should be used when the column's title is shown
- *
+ *
* @since 3.6
*/
public void setColumnTitle(String title) {
@@ -102,7 +102,7 @@ public class IUColumnConfig {
/**
* Return the width of the column in character width units
* @return the width (in characters) of the column
- *
+ *
* @since 3.6
*/
public int getWidthInChars() {
@@ -112,7 +112,7 @@ public class IUColumnConfig {
/**
* Set the width of the column in character width units
* @param columnWidth the width (in characters) of the column
- *
+ *
* @since 3.6
*/
public void setWidthInChars(int columnWidth) {
@@ -126,9 +126,9 @@ public class IUColumnConfig {
* width specified for the column.
* @param control
* @return the width in pixels that should be used for the column
- *
+ *
* @since 3.6
- *
+ *
* @see #setWidthInPixels(int)
*/
public int getWidthInPixels(Control control) {
@@ -146,9 +146,9 @@ public class IUColumnConfig {
* Set the width in pixels that should be used for this column. This width overrides
* any character width that has been specified. This method is useful when the column width
* is determined by user action.
- *
+ *
* @param width
- *
+ *
* @since 3.6
*/
public void setWidthInPixels(int width) {
@@ -158,7 +158,7 @@ public class IUColumnConfig {
/**
* Return the type of column.
* @return an Integer constant specifying the type of data being shown in the column.
- *
+ *
* @since 3.6
* @see #COLUMN_ID
* @see #COLUMN_NAME
@@ -172,9 +172,9 @@ public class IUColumnConfig {
/**
* Set the type of column.
* @param type an Integer constant specifying the type of data being shown in the column.
- *
+ *
* @since 3.6
- *
+ *
* @see #COLUMN_ID
* @see #COLUMN_NAME
* @see #COLUMN_SIZE
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IUComparator.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IUComparator.java
index 944dec2d3..aa78321ea 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IUComparator.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IUComparator.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -30,18 +30,18 @@ public class IUComparator extends ViewerComparator {
}
/**
- * Use the specified column config to determine
- * whether the id should be used in lieu of an empty name
- * when sorting.
- *
- * @param columnConfig
+ * Use the specified column config to determine whether the id should be used in
+ * lieu of an empty name when sorting.
+ *
+ * @param columnConfigs
*/
- public void useColumnConfig(IUColumnConfig[] columnConfig) {
- for (int i = 0; i < columnConfig.length; i++)
- if (columnConfig[i].getColumnType() == IUColumnConfig.COLUMN_ID) {
+ public void useColumnConfig(IUColumnConfig[] columnConfigs) {
+ for (IUColumnConfig columnConfig : columnConfigs) {
+ if (columnConfig.getColumnType() == IUColumnConfig.COLUMN_ID) {
showingId = true;
break;
}
+ }
}
@Override
@@ -56,7 +56,7 @@ public class IUComparator extends ViewerComparator {
if (key == IU_NAME) {
// Compare the iu names in the default locale.
// If a name is not defined, we use blank if we know the id is shown in another
- // column. If the id is not shown elsewhere, then we are displaying it, so use
+ // column. If the id is not shown elsewhere, then we are displaying it, so use
// the id instead.
key1 = iu1.getProperty(IInstallableUnit.PROP_NAME, null);
if (key1 == null)
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IUDetailsLabelProvider.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IUDetailsLabelProvider.java
index 588cbba71..6e704c726 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IUDetailsLabelProvider.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IUDetailsLabelProvider.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -32,7 +32,7 @@ import org.eclipse.ui.dialogs.FilteredTree;
/**
* Label provider for showing IU's in a table. Clients can configure
* what is shown in each column.
- *
+ *
* @since 3.4
*/
public class IUDetailsLabelProvider extends ColumnLabelProvider implements ITableLabelProvider, IFontProvider {
@@ -102,7 +102,7 @@ public class IUDetailsLabelProvider extends ColumnLabelProvider implements ITabl
return name;
// If the iu name is not available, we return blank if we know know we are
// showing id in another column. Otherwise we return id so the user doesn't
- // see blank iu's.
+ // see blank iu's.
if (showingId)
return BLANK;
return iu.getId();
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IUDragAdapter.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IUDragAdapter.java
index cc071c6ef..c01e92ec8 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IUDragAdapter.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/IUDragAdapter.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -23,7 +23,7 @@ import org.eclipse.swt.widgets.Control;
/**
* Implements drag behaviour when IU items are dragged from a repository view.
- *
+ *
* @since 3.4
*/
public class IUDragAdapter extends DragSourceAdapter {
@@ -32,7 +32,7 @@ public class IUDragAdapter extends DragSourceAdapter {
/**
* Constructs a new drag adapter.
- *
+ *
* @param provider
* The selection provider
*/
@@ -65,8 +65,8 @@ public class IUDragAdapter extends DragSourceAdapter {
// Get a text description of each IU and set as the drag data
final StringBuilder buffer = new StringBuilder();
- for (int i = 0; i < ius.length; i++) {
- buffer.append(ius[i].toString());
+ for (IInstallableUnit iu : ius) {
+ buffer.append(iu.toString());
buffer.append('\n');
}
event.data = buffer.toString();
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/MetadataRepositoryElementComparator.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/MetadataRepositoryElementComparator.java
index bde96da77..ae16909bd 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/MetadataRepositoryElementComparator.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/MetadataRepositoryElementComparator.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -19,7 +19,7 @@ import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerComparator;
/**
- *
+ *
* @since 3.5
*/
public class MetadataRepositoryElementComparator extends ViewerComparator {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/ProvElementContentProvider.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/ProvElementContentProvider.java
index 9ef83636d..fb4504a66 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/ProvElementContentProvider.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/ProvElementContentProvider.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -25,9 +25,9 @@ import org.eclipse.ui.progress.*;
/**
* Content provider that retrieves children of a ProvElement.
- *
+ *
* @since 3.5
- *
+ *
*/
public class ProvElementContentProvider implements ITreeContentProvider {
@@ -38,7 +38,7 @@ public class ProvElementContentProvider implements ITreeContentProvider {
Object fetchFamily = new Object();
/**
- *
+ *
*/
public ProvElementContentProvider() {
// Default constructor
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/ProvElementLabelProvider.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/ProvElementLabelProvider.java
index 10242d11e..4f3a346ea 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/ProvElementLabelProvider.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/ProvElementLabelProvider.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -34,9 +34,9 @@ import org.eclipse.ui.PlatformUI;
/**
* Label provider for provisioning elements. Some provisioning objects are
* wrapped by ProvElements and some are not. This is the most generic of the
- * provisioning label providers. A two-column format for elements is
+ * provisioning label providers. A two-column format for elements is
* supported, with the content of the columns dependent on the type of object.
- *
+ *
* @since 3.4
*/
public class ProvElementLabelProvider extends LabelProvider implements ITableLabelProvider {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/RepositoryContentProvider.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/RepositoryContentProvider.java
index c372c01bf..5c849597e 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/RepositoryContentProvider.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/RepositoryContentProvider.java
@@ -20,9 +20,9 @@ import org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor;
* Content provider for provisioning repositories. The repositories are the
* elements and the repository children are retrieved asynchronously
* using the IDeferredWorkbenchAdapter mechanism.
- *
+ *
* @since 3.4
- *
+ *
*/
public class RepositoryContentProvider extends DeferredQueryContentProvider {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/RepositoryDetailsLabelProvider.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/RepositoryDetailsLabelProvider.java
index 959799bc6..a64f1355a 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/RepositoryDetailsLabelProvider.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/RepositoryDetailsLabelProvider.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -29,7 +29,7 @@ import org.eclipse.swt.graphics.Image;
/**
* Label provider for repository elements. The column structure is
* assumed to be known by the caller who sets up the columns
- *
+ *
* @since 3.5
*/
public class RepositoryDetailsLabelProvider extends LabelProvider implements ITableLabelProvider {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/StructuredViewerProvisioningListener.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/StructuredViewerProvisioningListener.java
index b76c8d460..3e0f749f3 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/StructuredViewerProvisioningListener.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/StructuredViewerProvisioningListener.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -29,7 +29,7 @@ import org.eclipse.ui.PlatformUI;
* model elements or the entire viewer based on the nature of the change and the
* changes that the client is interested in. Subclasses typically only need
* override when there is additional, specialized behavior required.
- *
+ *
* @since 3.4
*/
public class StructuredViewerProvisioningListener extends ProvUIProvisioningListener {
@@ -47,7 +47,7 @@ public class StructuredViewerProvisioningListener extends ProvUIProvisioningList
* A repository has been added. The default behavior is to
* refresh the viewer. Subclasses may override. May be called
* from a non-UI thread.
- *
+ *
* @param event the RepositoryEvent describing the details
*/
@Override
@@ -59,7 +59,7 @@ public class StructuredViewerProvisioningListener extends ProvUIProvisioningList
* A repository has been removed. The default behavior is to
* refresh the viewer. Subclasses may override. May be called
* from a non-UI thread.
- *
+ *
* @param event the RepositoryEvent describing the details
*/
@Override
@@ -70,7 +70,7 @@ public class StructuredViewerProvisioningListener extends ProvUIProvisioningList
/**
* A repository has been discovered. Subclasses may override. May be called
* from a non-UI thread.
- *
+ *
* @param event the RepositoryEvent describing the details
*/
@Override
@@ -81,7 +81,7 @@ public class StructuredViewerProvisioningListener extends ProvUIProvisioningList
/**
* A repository has changed. Subclasses may override. May be called
* from a non-UI thread.
- *
+ *
* @param event the RepositoryEvent describing the details
*/
@Override
@@ -95,7 +95,7 @@ public class StructuredViewerProvisioningListener extends ProvUIProvisioningList
* The specified profile has changed. The default behavior is to refresh the viewer
* with a profile element of the matching id. Subclasses may override. May be called
* from a non-UI thread.
- *
+ *
* @param profileId the id of the profile that changed.
*/
@Override
@@ -114,7 +114,7 @@ public class StructuredViewerProvisioningListener extends ProvUIProvisioningList
* The specified profile has been added. The default behavior is to fully
* refresh the associated viewer. Subclasses may override. May be called
* from a non-UI thread.
- *
+ *
* @param profileId the id of the profile that has been added.
*/
@Override
@@ -126,7 +126,7 @@ public class StructuredViewerProvisioningListener extends ProvUIProvisioningList
* The specified profile has been removed. The default behavior is to fully
* refresh the associated viewer. Subclasses may override. May be called
* from a non-UI thread.
- *
+ *
* @param profileId the id of the profile that has been removed.
*/
@Override
@@ -155,7 +155,7 @@ public class StructuredViewerProvisioningListener extends ProvUIProvisioningList
/**
* Refresh the entire structure of the viewer. Subclasses may
* override to ensure that any caching done in content providers or
- * model elements is refreshed before the viewer is refreshed. This will
+ * model elements is refreshed before the viewer is refreshed. This will
* always be called from the UI thread.
*/
protected void refreshViewer() {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/AcceptLicensesWizardPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/AcceptLicensesWizardPage.java
index 011e4d59e..4dfe9186c 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/AcceptLicensesWizardPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/AcceptLicensesWizardPage.java
@@ -43,7 +43,7 @@ import org.eclipse.swt.widgets.*;
* AcceptLicensesWizardPage shows a list of the IU's that have
* licenses that have not been approved by the user, and allows the
* user to approve them.
- *
+ *
* @since 2.0
* @noextend This class is not intended to be subclassed by clients.
*/
@@ -168,7 +168,7 @@ public class AcceptLicensesWizardPage extends WizardPage {
/**
* Create a license acceptance page for showing licenses to the user.
- *
+ *
* @param manager the license manager that should be used to check for already accepted licenses. May be <code>null</code>.
* @param ius the IInstallableUnits for which licenses should be checked
* @param operation the provisioning operation describing what changes are to take place on the profile
@@ -230,7 +230,7 @@ public class AcceptLicensesWizardPage extends WizardPage {
private void createLicenseAcceptSection(Composite parent, boolean multiple) {
// Buttons for accepting licenses
Composite buttonContainer = new Composite(parent, SWT.NULL);
- GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ GridData gd = new GridData(SWT.FILL, SWT.TOP, true, false);
buttonContainer.setLayout(new GridLayout());
buttonContainer.setLayoutData(gd);
@@ -301,8 +301,8 @@ public class AcceptLicensesWizardPage extends WizardPage {
/**
* The wizard is finishing. Perform any necessary processing.
- *
- * @return <code>true</code> if the finish can proceed,
+ *
+ * @return <code>true</code> if the finish can proceed,
* <code>false</code> if it should not.
*/
public boolean performFinish() {
@@ -313,7 +313,7 @@ public class AcceptLicensesWizardPage extends WizardPage {
/**
* Return a boolean indicating whether there are licenses that must be accepted
* by the user.
- *
+ *
* @return <code>true</code> if there are licenses that must be accepted, and
* <code>false</code> if there are no licenses that must be accepted.
*/
@@ -323,16 +323,16 @@ public class AcceptLicensesWizardPage extends WizardPage {
/**
* Update the current page to show the licenses that must be approved for the
- * selected IUs and the provisioning plan.
- *
+ * selected IUs and the provisioning plan.
+ *
* Clients using this page in conjunction with a {@link ProfileChangeOperation} should
- * instead use {@link #update(IInstallableUnit[], ProfileChangeOperation)}. This
+ * instead use {@link #update(IInstallableUnit[], ProfileChangeOperation)}. This
* method is intended for clients who are working with a low-level provisioning plan
* rather than an {@link InstallOperation} or {@link UpdateOperation}.
- *
+ *
* @param theIUs the installable units to be installed for which licenses must be checked
* @param plan the provisioning plan that describes a resolved install operation
- *
+ *
* @see #update(IInstallableUnit[], ProfileChangeOperation)
*/
@@ -360,7 +360,7 @@ public class AcceptLicensesWizardPage extends WizardPage {
/**
* Update the page for the specified IInstallableUnits and operation.
- *
+ *
* @param theIUs the IInstallableUnits for which licenses should be checked
* @param operation the operation describing the pending profile change
*/
@@ -384,17 +384,16 @@ public class AcceptLicensesWizardPage extends WizardPage {
// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=218532
// Current metadata generation can result with a feature group IU and the feature jar IU
// having the same name and license. We will weed out duplicates if the license and name are both
- // the same.
+ // the same.
licensesToIUs = new HashMap<>();//map of License->ArrayList of IUs with that license
HashMap<ILicense, HashSet<String>> namesSeen = new HashMap<>(); // map of License->HashSet of names with that license
- for (int i = 0; i < iusToCheck.length; i++) {
- IInstallableUnit iu = iusToCheck[i];
+ for (IInstallableUnit iu : iusToCheck) {
for (ILicense license : iu.getLicenses(null)) {
if (manager != null && !manager.isAccepted(license)) {
String name = iu.getProperty(IInstallableUnit.PROP_NAME, null);
if (name == null)
name = iu.getId();
- // Have we already found this license?
+ // Have we already found this license?
if (licensesToIUs.containsKey(license)) {
HashSet<String> names = namesSeen.get(license);
if (!names.contains(name)) {
@@ -476,7 +475,7 @@ public class AcceptLicensesWizardPage extends WizardPage {
}
}
} catch (NumberFormatException e) {
- // Ignore if there actually was a value that didn't parse.
+ // Ignore if there actually was a value that didn't parse.
}
}
return new int[] {55, 45};
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/ICopyable.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/ICopyable.java
index 2c2924131..8133760fe 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/ICopyable.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/ICopyable.java
@@ -19,14 +19,14 @@ import org.eclipse.swt.widgets.Control;
* ICopyable defines an interface for elements that provide
* copy support in a UI. The active control in the UI determines
* what should be copied.
- *
+ *
* @since 2.0
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface ICopyable {
/**
* Copy text related to the active control to the clipboard.
- *
+ *
* @param activeControl the active control
*/
public void copyToClipboard(Control activeControl);
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/InstalledSoftwarePage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/InstalledSoftwarePage.java
index 16da6c9aa..1f01b21cd 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/InstalledSoftwarePage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/InstalledSoftwarePage.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2018 IBM Corporation and others.
+ * Copyright (c) 2008, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Sonatype, Inc. - ongoing development
@@ -17,10 +17,10 @@
package org.eclipse.equinox.p2.ui;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.text.StringMatcher;
import org.eclipse.equinox.internal.p2.ui.*;
import org.eclipse.equinox.internal.p2.ui.actions.*;
import org.eclipse.equinox.internal.p2.ui.dialogs.*;
-import org.eclipse.equinox.internal.p2.ui.misc.StringMatcher;
import org.eclipse.equinox.internal.p2.ui.model.InstalledIUElement;
import org.eclipse.equinox.internal.p2.ui.viewers.IUColumnConfig;
import org.eclipse.equinox.internal.p2.ui.viewers.IUDetailsLabelProvider;
@@ -45,9 +45,9 @@ import org.eclipse.ui.statushandlers.StatusManager;
* InstalledSoftwarePage displays a profile's IInstallableUnits in
* an Installation Page. Clients can use this class as the implementation
* class for an installationPages extension.
- *
+ *
* @see InstallationPage
- *
+ *
* @noextend This class is not intended to be subclassed by clients.
* @noinstantiate This class is not intended to be instantiated by clients.
* @since 2.0
@@ -267,7 +267,7 @@ public class InstalledSoftwarePage extends InstallationPage implements ICopyable
/**
* Set the provisioning UI to use with this page
- *
+ *
* @param value the provisioning ui to use
* @since 2.1
*/
@@ -276,14 +276,14 @@ public class InstalledSoftwarePage extends InstallationPage implements ICopyable
}
/**
- * Filters {@link InstalledIUElement}s from a viewer using a String pattern.
+ * Filters {@link InstalledIUElement}s from a viewer using a String pattern.
* Filtering is dependent on a given array of {@link IUColumnConfig}s :
* <ul>
* <li>if {@link IUColumnConfig#COLUMN_ID} is present, filters on the Installable Unit's id;</li>
* <li>if {@link IUColumnConfig#COLUMN_NAME} is present, filters on the Installable Unit's name;</li>
* <li>if {@link IUColumnConfig#COLUMN_PROVIDER} is present, filters on the Installable Unit's provider;</li>
- * </ul>
- *
+ * </ul>
+ *
* @since 2.3
*/
class IUPatternFilter extends ViewerFilter {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/LicenseManager.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/LicenseManager.java
index b7ab8805c..288290edf 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/LicenseManager.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/LicenseManager.java
@@ -20,49 +20,49 @@ import org.eclipse.equinox.p2.metadata.ILicense;
* accepted in the course of installing or updating software. It can be used to determine
* whether a particular license should be presented to a user for acceptance, and
* to record the user's decision.
- *
+ *
* @since 2.0
*/
public abstract class LicenseManager {
/**
* Record the acceptance of the specified license.
- *
+ *
* @param license the license to be accepted
- *
+ *
* @return <code>true</code> if the license was recorded as accepted, <code>false</code> if
* it was not.
- *
+ *
*/
public abstract boolean accept(ILicense license);
/**
* Record the rejection of the specified license.
- *
+ *
* @param license the license to be rejected
- *
+ *
* @return <code>true</code> if the license was recorded as rejected, <code>false</code> if
* it was not.
- *
+ *
*/
public abstract boolean reject(ILicense license);
/**
* Return a boolean indicating whether a particular license has previously
* been accepted.
- *
+ *
* @param license the license in question
- *
+ *
* @return <code>true</code> if the license has previously been accepted,
* <code>false</code> if it has not been accepted before.
- *
+ *
*/
public abstract boolean isAccepted(ILicense license);
/**
* Return a boolean indicating whether any licenses have been
* accepted.
- *
+ *
* @return <code>true</code> if accepted licenses have been recorded,
* <code>false</code> if there have been no licenses accepted.
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/Policy.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/Policy.java
index e70403ec5..8f0d82c1c 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/Policy.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/Policy.java
@@ -28,71 +28,70 @@ import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.statushandlers.StatusManager;
/**
- * The Policy class is used to specify application specific policies that
- * should be used in the standard p2 UI class libraries. The default policy
- * is acquired using the OSGi service model.
- *
- * Policy allows clients to specify things such as how repositories
- * are manipulated in the standard wizards and dialogs, and how the repositories
- * or the installation itself should be traversed when displaying content.
- *
- * In some cases, the Policy is used only to define a default value that can
- * be overridden by user choice and subsequently stored in dialog settings.
- *
- * Client applications should ensure that their Policy is registered before
- * any of the p2 UI objects access the default Policy.
- *
+ * The Policy class is used to specify application specific policies that should
+ * be used in the standard p2 UI class libraries. The default policy is acquired
+ * using the OSGi service model.
+ *
+ * Policy allows clients to specify things such as how repositories are
+ * manipulated in the standard wizards and dialogs, and how the repositories or
+ * the installation itself should be traversed when displaying content.
+ *
+ * In some cases, the Policy is used only to define a default value that can be
+ * overridden by user choice and subsequently stored in dialog settings.
+ *
+ * Client applications should ensure that their Policy is registered before any
+ * of the p2 UI objects access the default Policy.
+ *
* @since 2.0
*/
public class Policy {
/**
- * A constant indicating that restart should be forced (without
- * confirmation) immediately after completion of a provisioning operation.
- *
+ * A constant indicating that restart should be forced (without confirmation)
+ * immediately after completion of a provisioning operation.
+ *
*/
public static final int RESTART_POLICY_FORCE = 1;
/**
- * A constant indicating that the changes should be applied dynamically
- * to the profile (without confirmation) immediately after completion of
- * a provisioning operation.
+ * A constant indicating that the changes should be applied dynamically to the
+ * profile (without confirmation) immediately after completion of a provisioning
+ * operation.
*/
public static final int RESTART_POLICY_FORCE_APPLY = 2;
/**
- * A constant indicating that the user should be prompted to
- * restart after completion of a provisioning operation.
+ * A constant indicating that the user should be prompted to restart after
+ * completion of a provisioning operation.
*/
public static final int RESTART_POLICY_PROMPT = 3;
/**
- * A constant indicating that, where possible, the user should
- * be given the option to restart or dynamically apply the changes
- * after completion of a provisioning operation.
+ * A constant indicating that, where possible, the user should be given the
+ * option to restart or dynamically apply the changes after completion of a
+ * provisioning operation.
*/
public static final int RESTART_POLICY_PROMPT_RESTART_OR_APPLY = 4;
/**
- * A constant indicating that the user should be presented with an
- * update wizard that shows a list of IUs that can be updated.
- * Even when only one update is available, a list showing the single
- * update will be used. This option is recommended when the user's view
- * of the system is a set of component updates and the user is expected
- * to have knowledge of the composition of the system.
- *
+ * A constant indicating that the user should be presented with an update wizard
+ * that shows a list of IUs that can be updated. Even when only one update is
+ * available, a list showing the single update will be used. This option is
+ * recommended when the user's view of the system is a set of component updates
+ * and the user is expected to have knowledge of the composition of the system.
+ *
* @since 2.1
*/
public static final int UPDATE_STYLE_MULTIPLE_IUS = 1;
/**
- * A constant indicating that the user should be presented with an
- * update wizard that shows detail about a single IU that can be
- * updated. If more than one IU can be updated, the user will be shown
- * a list; however, this option is recommended to be used only when
- * the user's view of the system is a single application that can be
- * updated, and only one IU is expected to be available for update.
- *
+ * A constant indicating that the user should be presented with an update wizard
+ * that shows detail about a single IU that can be updated. If more than one IU
+ * can be updated, the user will be shown a list; however, this option is
+ * recommended to be used only when the user's view of the system is a single
+ * application that can be updated, and only one IU is expected to be available
+ * for update.
+ *
* @since 2.1
*/
public static final int UPDATE_STYLE_SINGLE_IUS = 2;
@@ -111,16 +110,18 @@ public class Policy {
private boolean filterOnEnv = false;
private int updateWizardStyle = UPDATE_STYLE_MULTIPLE_IUS;
private Point wizardDetailsPreferredSize = null;
+ private boolean checkAgainstCurrentExecutionEnvironment;
/**
- * Answer a boolean indicating whether the caller should continue to work with the
- * specified operation. This method is used when an operation has been resolved, but
- * the UI may have further restrictions on continuing with it.
- *
- * @param operation the operation in question. It must already be resolved.
- * @param shell the shell to use for any interaction with the user
- * @return <code>true</code> if processing of the operation should continue, <code>false</code> if
- * not. It is up to the implementor to report any errors to the user when answering <code>false</code>.
+ * Answer a boolean indicating whether the caller should continue to work with
+ * the specified operation. This method is used when an operation has been
+ * resolved, but the UI may have further restrictions on continuing with it.
+ *
+ * @param operation the operation in question. It must already be resolved.
+ * @param shell the shell to use for any interaction with the user
+ * @return <code>true</code> if processing of the operation should continue,
+ * <code>false</code> if not. It is up to the implementor to report any
+ * errors to the user when answering <code>false</code>.
*/
public boolean continueWorkingWithOperation(ProfileChangeOperation operation, Shell shell) {
Assert.isTrue(operation.getResolutionResult() != null);
@@ -135,7 +136,7 @@ public class Policy {
return false;
}
- // there is no plan, so we can't continue. Report any reason found
+ // there is no plan, so we can't continue. Report any reason found
if (operation.getProvisioningPlan() == null && !status.isOK()) {
StatusManager.getManager().handle(status, StatusManager.LOG | StatusManager.SHOW);
return false;
@@ -146,19 +147,20 @@ public class Policy {
}
/**
- * Return a status that can be used to describe the failure to
- * retrieve a profile.
- * @return a status describing a failure to retrieve a profile,
- * or <code>null</code> if there is no such status.
+ * Return a status that can be used to describe the failure to retrieve a
+ * profile.
+ *
+ * @return a status describing a failure to retrieve a profile, or
+ * <code>null</code> if there is no such status.
*/
public IStatus getNoProfileChosenStatus() {
return null;
}
/**
- * Return a query that can be used to obtain the IInstallableUnits that
- * should be presented to the user from the software repositories.
- *
+ * Return a query that can be used to obtain the IInstallableUnits that should
+ * be presented to the user from the software repositories.
+ *
* @return the query used to retrieve user visible available IUs
*/
public IQuery<IInstallableUnit> getVisibleAvailableIUQuery() {
@@ -166,9 +168,9 @@ public class Policy {
}
/**
- * Set the query that can be used to obtain the IInstallableUnits that
- * should be presented to the user.
- *
+ * Set the query that can be used to obtain the IInstallableUnits that should be
+ * presented to the user.
+ *
* @param query the query used to retrieve user visible available IUs
*/
public void setVisibleAvailableIUQuery(IQuery<IInstallableUnit> query) {
@@ -176,9 +178,9 @@ public class Policy {
}
/**
- * Return a query that can be used to obtain the IInstallableUnits in
- * the profile that should be presented to the user.
- *
+ * Return a query that can be used to obtain the IInstallableUnits in the
+ * profile that should be presented to the user.
+ *
* @return the query used to retrieve user visible installed IUs
*/
public IQuery<IInstallableUnit> getVisibleInstalledIUQuery() {
@@ -186,9 +188,9 @@ public class Policy {
}
/**
- * Set the query that can be used to obtain the IInstallableUnits in
- * the profile that should be presented to the user.
- *
+ * Set the query that can be used to obtain the IInstallableUnits in the profile
+ * that should be presented to the user.
+ *
* @param query the query used to retrieve user visible installed IUs
*/
public void setVisibleInstalledIUQuery(IQuery<IInstallableUnit> query) {
@@ -198,9 +200,9 @@ public class Policy {
/**
* Get the restart policy that should be used when the provisioning UI
* determines that a restart is required.
- *
+ *
* @return an integer constant describing the restart policy
- *
+ *
* @see #RESTART_POLICY_FORCE
* @see #RESTART_POLICY_FORCE_APPLY
* @see #RESTART_POLICY_PROMPT
@@ -213,9 +215,9 @@ public class Policy {
/**
* Set the restart policy that should be used when the provisioning UI
* determines that a restart is required.
- *
+ *
* @param restartPolicy an integer constant describing the restart policy
- *
+ *
* @see #RESTART_POLICY_FORCE
* @see #RESTART_POLICY_FORCE_APPLY
* @see #RESTART_POLICY_PROMPT
@@ -226,68 +228,68 @@ public class Policy {
}
/**
- * Return a boolean indicating whether the repositories should
- * be visible to the user, such that the user can add, remove, and
- * otherwise manipulate the software site list.
- *
- * @return <code>true</code> if repositories are visible to the end
- * user, <code>false</code> if they are not.
+ * Return a boolean indicating whether the repositories should be visible to the
+ * user, such that the user can add, remove, and otherwise manipulate the
+ * software site list.
+ *
+ * @return <code>true</code> if repositories are visible to the end user,
+ * <code>false</code> if they are not.
*/
public boolean getRepositoriesVisible() {
return repositoriesVisible;
}
/**
- * Set a boolean indicating whether the repositories should
- * be visible to the user, such that the user can add, remove, and
- * otherwise manipulate the software site list.
- *
- * @param visible <code>true</code> if repositories are visible to the end
- * user, <code>false</code> if they are not.
+ * Set a boolean indicating whether the repositories should be visible to the
+ * user, such that the user can add, remove, and otherwise manipulate the
+ * software site list.
+ *
+ * @param visible <code>true</code> if repositories are visible to the end user,
+ * <code>false</code> if they are not.
*/
public void setRepositoriesVisible(boolean visible) {
this.repositoriesVisible = visible;
}
/**
- * Return a boolean indicating whether only the latest versions of
- * updates and available software should be shown to the user.
- *
+ * Return a boolean indicating whether only the latest versions of updates and
+ * available software should be shown to the user.
+ *
* @return <code>true</code> if only the latest versions are shown,
- * <code>false</code> if all versions should be shown.
+ * <code>false</code> if all versions should be shown.
*/
public boolean getShowLatestVersionsOnly() {
return showLatestVersionsOnly;
}
/**
- * Set a boolean indicating whether only the latest versions of
- * updates and available software should be shown to the user.
- *
+ * Set a boolean indicating whether only the latest versions of updates and
+ * available software should be shown to the user.
+ *
* @param showLatest <code>true</code> if only the latest versions are shown,
- * <code>false</code> if all versions should be shown.
+ * <code>false</code> if all versions should be shown.
*/
public void setShowLatestVersionsOnly(boolean showLatest) {
this.showLatestVersionsOnly = showLatest;
}
/**
- * Return a boolean indicating whether the user should be allowed drill
- * down from a visible update or installed item into the requirements.
- *
- * @return <code>true</code> if drilldown is allowed,
- * <code>false</code> if it is not.
+ * Return a boolean indicating whether the user should be allowed drill down
+ * from a visible update or installed item into the requirements.
+ *
+ * @return <code>true</code> if drilldown is allowed, <code>false</code> if it
+ * is not.
*/
public boolean getShowDrilldownRequirements() {
return allowDrilldown;
}
/**
- * Set a boolean indicating whether the user should be allowed drill
- * down from a visible update or installed item into the requirements.
- *
+ * Set a boolean indicating whether the user should be allowed drill down from a
+ * visible update or installed item into the requirements.
+ *
* @param drilldown <code>true</code> if drilldown is allowed,
- * <code>false</code> if it is not.
+ * <code>false</code> if it is not.
*/
public void setShowDrilldownRequirements(boolean drilldown) {
this.allowDrilldown = drilldown;
@@ -296,9 +298,9 @@ public class Policy {
/**
* Return a boolean value indicating whether or not the list of available
* software should be filtered based on the environment settings of the profile.
- *
- * @return <code>true</code> if the results should be filtered
- * and <code>false</code> otherwise.
+ *
+ * @return <code>true</code> if the results should be filtered and
+ * <code>false</code> otherwise.
* @since 2.1
*/
public boolean getFilterOnEnv() {
@@ -306,11 +308,11 @@ public class Policy {
}
/**
- * Set a boolean value indicating whether or not the list of available
- * software should be filtered based on the environment settings of the profile.
- *
- * @param filterOnEnv <code>true</code> if the results should be filtered
- * and <code>false</code> otherwise.
+ * Set a boolean value indicating whether or not the list of available software
+ * should be filtered based on the environment settings of the profile.
+ *
+ * @param filterOnEnv <code>true</code> if the results should be filtered and
+ * <code>false</code> otherwise.
* @since 2.1
*/
public void setFilterOnEnv(boolean filterOnEnv) {
@@ -318,44 +320,44 @@ public class Policy {
}
/**
- * Return a boolean indicating whether available software should be
- * grouped by category.
- *
+ * Return a boolean indicating whether available software should be grouped by
+ * category.
+ *
* @return <code>true</code> if items should be grouped by category,
- * <code>false</code> if categories should not be shown.
+ * <code>false</code> if categories should not be shown.
*/
public boolean getGroupByCategory() {
return groupByCategory;
}
/**
- * Set a boolean indicating whether available software should be
- * grouped by category.
- *
+ * Set a boolean indicating whether available software should be grouped by
+ * category.
+ *
* @param group <code>true</code> if items should be grouped by category,
- * <code>false</code> if categories should not be shown.
+ * <code>false</code> if categories should not be shown.
*/
public void setGroupByCategory(boolean group) {
this.groupByCategory = group;
}
/**
- * Get the id of the preference page that should be used to link to the
- * software sites page.
- *
+ * Get the id of the preference page that should be used to link to the software
+ * sites page.
+ *
* @return the preference page id, or <code>null</code> if there is no
- * preference page id showing the software sites.
+ * preference page id showing the software sites.
*/
public String getRepositoryPreferencePageId() {
return repoPrefPageId;
}
/**
- * Set the id of the preference page that should be used to link to the
- * software sites page.
- *
+ * Set the id of the preference page that should be used to link to the software
+ * sites page.
+ *
* @param id the preference page id, or <code>null</code> if there is no
- * preference page id showing the software sites.
+ * preference page id showing the software sites.
*/
public void setRepositoryPreferencePageId(String id) {
@@ -365,9 +367,9 @@ public class Policy {
/**
* Get the localized name of the preference page that should be displayed in
* links to the software sites page.
- *
+ *
* @return the preference page name, or <code>null</code> if there is no
- * preference page.
+ * preference page.
*/
public String getRepositoryPreferencePageName() {
return repoPrefPageName;
@@ -375,12 +377,12 @@ public class Policy {
/**
* Set the localized name of the preference page that should be displayed in
- * links to the software sites page. This name is ignored if no id is specified
+ * links to the software sites page. This name is ignored if no id is specified
* for the preference page.
- *
+ *
* @param name the preference page name, or <code>null</code> if there is no
- * preference page.
- *
+ * preference page.
+ *
* @see Policy#setRepositoryPreferencePageId(String)
*/
@@ -389,14 +391,14 @@ public class Policy {
}
/**
- * Get the update wizard style that should be used to determine
- * what to show the user when updates are available.
- *
+ * Get the update wizard style that should be used to determine what to show the
+ * user when updates are available.
+ *
* @return an integer constant describing the update wizard style
- *
+ *
* @see #UPDATE_STYLE_SINGLE_IUS
* @see #UPDATE_STYLE_MULTIPLE_IUS
- *
+ *
* @since 2.1
*/
@@ -405,14 +407,15 @@ public class Policy {
}
/**
- * Get the update wizard style that should be used to determine
- * what to show the user when updates are available.
- *
- * @param updateWizardStyle an integer constant describing the update wizard style
- *
+ * Get the update wizard style that should be used to determine what to show the
+ * user when updates are available.
+ *
+ * @param updateWizardStyle an integer constant describing the update wizard
+ * style
+ *
* @see #UPDATE_STYLE_SINGLE_IUS
* @see #UPDATE_STYLE_MULTIPLE_IUS
- *
+ *
* @since 2.1
*/
@@ -421,12 +424,13 @@ public class Policy {
}
/**
- * Get a point describing the preferred size of the details area
- * shown in single IU update wizards. This value may be null, in which case
- * the wizard may compute a default size.
- *
- * @return a Point describing the preferred size of the update wizard details area.
- *
+ * Get a point describing the preferred size of the details area shown in single
+ * IU update wizards. This value may be null, in which case the wizard may
+ * compute a default size.
+ *
+ * @return a Point describing the preferred size of the update wizard details
+ * area.
+ *
* @see #UPDATE_STYLE_SINGLE_IUS
*
* @since 2.1
@@ -438,14 +442,13 @@ public class Policy {
/**
* Set the preferred size of the details area shown in update wizards which
- * notify the user of a single update. Clients can use this value to ensure
- * that their product's branded update notifier is sized to fit the expected
- * content.
- *
+ * notify the user of a single update. Clients can use this value to ensure that
+ * their product's branded update notifier is sized to fit the expected content.
+ *
* @param preferredSize a Point describing the preferred size
- *
+ *
* @see #UPDATE_STYLE_SINGLE_IUS
- *
+ *
* @since 2.1
*/
@@ -454,10 +457,10 @@ public class Policy {
}
/**
- * Get a boolean value indicating whether to contact all sites.
- *
+ * Get a boolean value indicating whether to contact all sites.
+ *
* @return <code>true</code> true if all sites need to be contacted,
- * <code>false</code> otherwise.
+ * <code>false</code> otherwise.
*
* @since 2.3
*/
@@ -467,9 +470,9 @@ public class Policy {
/**
* Set a boolean indicating whether all sites need to be contacted.
- *
+ *
* @param contactAll <code>true</code> if all sites need to be contacted,
- * <code>false</code> otherwise.
+ * <code>false</code> otherwise.
*
* @since 2.3
*/
@@ -479,9 +482,9 @@ public class Policy {
/**
* Get a boolean value indicating whether to hide already installed units.
- *
+ *
* @return <code>true</code> if already installed units are to be hidden,
- * <code>false</code> otherwise.
+ * <code>false</code> otherwise.
*
* @since 2.3
*/
@@ -493,11 +496,37 @@ public class Policy {
* Set a boolean indicating whether to hide already installed units.
*
* @param hide <code>true</code> if already installed units need to be hidden,
- * <code>false</code> otherwise.
+ * <code>false</code> otherwise.
*
* @since 2.3
*/
public void setHideAlreadyInstalled(boolean hide) {
this.hideAlreadyInstalled = hide;
}
+
+ /**
+ * Get a boolean value indicating whether the provisioning operation should
+ * check compatibility with current execution environment
+ *
+ * @return <code>true</code> if operation should check compatibility with
+ * current execution environment, <code>false</code> otherwise.
+ *
+ * @since 2.6
+ */
+ public boolean getCheckAgainstCurrentExecutionEnvironment() {
+ return this.checkAgainstCurrentExecutionEnvironment;
+ }
+
+ /**
+ * Set a boolean indicating whether the provisioning operation should check
+ * compatibility with current execution environment.
+ *
+ * @param check <code>true</code> if operation should check compatibility with
+ * current execution environment, <code>false</code> otherwise.
+ *
+ * @since 2.6
+ */
+ public void setCheckAgainstCurrentExecutionEnvironment(boolean check) {
+ this.checkAgainstCurrentExecutionEnvironment = check;
+ }
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/ProvisioningUI.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/ProvisioningUI.java
index 3827456a1..36f2bde62 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/ProvisioningUI.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/ProvisioningUI.java
@@ -106,7 +106,7 @@ public class ProvisioningUI {
/**
* Return the license manager that should be used to remember accepted user
* licenses.
- *
+ *
* @return the license manager. May be <code>null</code> if licenses are not to
* be remembered.
*/
@@ -346,7 +346,7 @@ public class ProvisioningUI {
/**
* Open a UI that allows the user to manipulate the repositories.
- *
+ *
* @param shell the shell that should parent the UI
*/
public void manipulateRepositories(Shell shell) {
@@ -437,7 +437,7 @@ public class ProvisioningUI {
/**
* This method is for automated testing only.
- *
+ *
* @return the provisioning operation that can suppress restart for automated
* testing.
* @noreference This method is not intended to be referenced by clients.
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java
index 8955bf7ff..78fb5398e 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Ericsson AB (Pascal Rapicault) - bug 398539
@@ -52,10 +52,10 @@ import org.eclipse.ui.statushandlers.StatusManager;
/**
* Page that allows users to update, add, remove, import, and
* export repositories. This page can be hosted inside a preference
- * dialog or inside its own dialog.
- *
- * When hosting this page inside a non-preference dialog, some of the
- * dialog methods will likely have to call page methods. The following
+ * dialog or inside its own dialog.
+ *
+ * When hosting this page inside a non-preference dialog, some of the
+ * dialog methods will likely have to call page methods. The following
* snippet shows how to host this page inside a TitleAreaDialog.
* <pre>
* TitleAreaDialog dialog = new TitleAreaDialog(shell) {
@@ -83,9 +83,9 @@ import org.eclipse.ui.statushandlers.StatusManager;
* };
* dialog.open();
* </pre>
- *
+ *
* @noextend This class is not intended to be subclassed by clients.
- *
+ *
* @since 2.0
*/
public class RepositoryManipulationPage extends PreferencePage implements IWorkbenchPreferencePage, ICopyable {
@@ -133,9 +133,9 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
if (cachedElements == null) {
Object[] children = super.fetchChildren(o, monitor);
cachedElements = new Hashtable<>(children.length);
- for (int i = 0; i < children.length; i++) {
- if (children[i] instanceof MetadataRepositoryElement) {
- put((MetadataRepositoryElement) children[i]);
+ for (Object element : children) {
+ if (element instanceof MetadataRepositoryElement) {
+ put((MetadataRepositoryElement) element);
}
}
}
@@ -193,9 +193,9 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
/**
* Set the provisioning UI that provides the session, policy, and other
- * services for the UI. This method must be called before the contents are
+ * services for the UI. This method must be called before the contents are
* created or it will have no effect.
- *
+ *
* @param ui the provisioning UI to use for this page.
*/
public void setProvisioningUI(ProvisioningUI ui) {
@@ -520,9 +520,9 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
MetadataRepositoryElement[] getSelectedElements() {
Object[] items = repositoryViewer.getStructuredSelection().toArray();
ArrayList<Object> list = new ArrayList<>(items.length);
- for (int i = 0; i < items.length; i++) {
- if (items[i] instanceof MetadataRepositoryElement)
- list.add(items[i]);
+ for (Object item : items) {
+ if (item instanceof MetadataRepositoryElement)
+ list.add(item);
}
return list.toArray(new MetadataRepositoryElement[list.size()]);
}
@@ -641,8 +641,8 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
}
boolean includesRepo(URI[] repos, URI repo) {
- for (int i = 0; i < repos.length; i++)
- if (repos[i].equals(repo))
+ for (URI repo2 : repos)
+ if (repo2.equals(repo))
return true;
return false;
}
diff --git a/bundles/org.eclipse.equinox.p2.updatechecker/.classpath b/bundles/org.eclipse.equinox.p2.updatechecker/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.updatechecker/.classpath
+++ b/bundles/org.eclipse.equinox.p2.updatechecker/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.updatechecker/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.updatechecker/.settings/org.eclipse.jdt.core.prefs
index 20e4f5fe2..3c15076cc 100644
--- a/bundles/org.eclipse.equinox.p2.updatechecker/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.updatechecker/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -127,8 +127,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -142,7 +142,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -263,7 +262,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -334,7 +332,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -479,7 +476,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.updatechecker/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.updatechecker/META-INF/MANIFEST.MF
index dd4f2d261..42bc89ee1 100644
--- a/bundles/org.eclipse.equinox.p2.updatechecker/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.updatechecker/META-INF/MANIFEST.MF
@@ -2,14 +2,14 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.updatechecker;singleton:=true
-Bundle-Version: 1.2.200.qualifier
+Bundle-Version: 1.3.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package: org.eclipse.equinox.internal.p2.updatechecker;x-internal:=true,
org.eclipse.equinox.internal.provisional.p2.updatechecker;x-friends:="org.eclipse.equinox.p2.ui.sdk.scheduler"
Require-Bundle: org.eclipse.equinox.common;bundle-version="[3.3.0,4.0)"
Service-Component: OSGI-INF/updatechecker.xml
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Import-Package: org.eclipse.equinox.internal.p2.core.helpers,
org.eclipse.equinox.p2.core;version="[2.0.0,3.0.0)",
diff --git a/bundles/org.eclipse.equinox.p2.updatechecker/pom.xml b/bundles/org.eclipse.equinox.p2.updatechecker/pom.xml
index 1c726442d..49d08db7f 100644
--- a/bundles/org.eclipse.equinox.p2.updatechecker/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.updatechecker/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.updatechecker</artifactId>
- <version>1.2.200-SNAPSHOT</version>
+ <version>1.3.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.updatechecker/src/org/eclipse/equinox/internal/p2/updatechecker/UpdateChecker.java b/bundles/org.eclipse.equinox.p2.updatechecker/src/org/eclipse/equinox/internal/p2/updatechecker/UpdateChecker.java
index 96e6f36a0..a7203231c 100644
--- a/bundles/org.eclipse.equinox.p2.updatechecker/src/org/eclipse/equinox/internal/p2/updatechecker/UpdateChecker.java
+++ b/bundles/org.eclipse.equinox.p2.updatechecker/src/org/eclipse/equinox/internal/p2/updatechecker/UpdateChecker.java
@@ -84,7 +84,7 @@ public class UpdateChecker implements IUpdateChecker {
} else {
trace("No updates were available"); //$NON-NLS-1$
}
- if (delay == ONE_TIME_CHECK || delay <= 0) {
+ if (delay == ONE_TIME_CHECK || delay <= 0 || poll <= 0) {
done = true;
} else {
Thread.sleep(poll);
diff --git a/bundles/org.eclipse.equinox.p2.updatesite/.classpath b/bundles/org.eclipse.equinox.p2.updatesite/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.p2.updatesite/.classpath
+++ b/bundles/org.eclipse.equinox.p2.updatesite/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.p2.updatesite/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.updatesite/.settings/org.eclipse.jdt.core.prefs
index bf073244e..d3f0b63c3 100644
--- a/bundles/org.eclipse.equinox.p2.updatesite/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.updatesite/.settings/org.eclipse.jdt.core.prefs
@@ -17,9 +17,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -35,6 +35,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -92,6 +93,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -127,7 +129,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -141,7 +144,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -262,7 +264,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -333,7 +334,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -478,7 +478,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.p2.updatesite/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.updatesite/META-INF/MANIFEST.MF
index f5b96e0c4..c20fed2b9 100644
--- a/bundles/org.eclipse.equinox.p2.updatesite/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.updatesite/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.equinox.p2.updatesite;singleton:=true
-Bundle-Version: 1.1.300.qualifier
+Bundle-Version: 1.2.200.qualifier
Bundle-Activator: org.eclipse.equinox.internal.p2.updatesite.Activator
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -12,7 +12,7 @@ Export-Package: org.eclipse.equinox.internal.p2.updatesite;x-friends:="org.eclip
Require-Bundle: org.eclipse.equinox.common;bundle-version="[3.7.0,4.0.0)",
org.eclipse.equinox.p2.metadata.repository;bundle-version="0.1.0",
org.eclipse.equinox.p2.artifact.repository;bundle-version="0.1.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Import-Package: javax.xml.parsers,
org.eclipse.equinox.app;version="1.1.0",
diff --git a/bundles/org.eclipse.equinox.p2.updatesite/build.properties b/bundles/org.eclipse.equinox.p2.updatesite/build.properties
index a62667f6e..5ca611c37 100644
--- a/bundles/org.eclipse.equinox.p2.updatesite/build.properties
+++ b/bundles/org.eclipse.equinox.p2.updatesite/build.properties
@@ -19,4 +19,3 @@ bin.includes = META-INF/,\
plugin.properties,\
about.html
src.includes = about.html
-javacWarnings..=+unusedAllocation,unusedImport,unusedLocal,unusedPrivate \ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.updatesite/pom.xml b/bundles/org.eclipse.equinox.p2.updatesite/pom.xml
index 0149e22ef..1f7c8c962 100644
--- a/bundles/org.eclipse.equinox.p2.updatesite/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.updatesite/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.p2.updatesite</artifactId>
- <version>1.1.300-SNAPSHOT</version>
+ <version>1.2.200-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/DefaultSiteParser.java b/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/DefaultSiteParser.java
index 4d299ce2c..f533dd7c5 100644
--- a/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/DefaultSiteParser.java
+++ b/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/DefaultSiteParser.java
@@ -27,8 +27,8 @@ import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
/**
- * Parses a site.xml file.
- * This class was initially copied from org.eclipse.update.core.model.DefaultSiteParser.
+ * Parses a site.xml file. This class was initially copied from
+ * org.eclipse.update.core.model.DefaultSiteParser.
*/
public class DefaultSiteParser extends DefaultHandler {
@@ -155,13 +155,14 @@ public class DefaultSiteParser extends DefaultHandler {
/**
* Handle character text
+ *
* @see DefaultHandler#characters(char[], int, int)
* @since 2.0
*/
@Override
public void characters(char[] ch, int start, int length) {
String text = new String(ch, start, length);
- //only push if description
+ // only push if description
int state = stateStack.peek().intValue();
if (state == STATE_DESCRIPTION_SITE || state == STATE_DESCRIPTION_CATEGORY_DEF)
objectStack.push(text);
@@ -170,6 +171,7 @@ public class DefaultSiteParser extends DefaultHandler {
/**
* Handle end of element tags
+ *
* @see DefaultHandler#endElement(String, String, String)
* @since 2.0
*/
@@ -181,108 +183,109 @@ public class DefaultSiteParser extends DefaultHandler {
int state = stateStack.peek().intValue();
switch (state) {
- case STATE_IGNORED_ELEMENT :
- case STATE_ARCHIVE :
- case STATE_CATEGORY :
- stateStack.pop();
- break;
-
- case STATE_INITIAL :
- internalError(Messages.DefaultSiteParser_ParsingStackBackToInitialState);
- break;
-
- case STATE_SITE :
- stateStack.pop();
- if (objectStack.peek() instanceof String) {
- text = (String) objectStack.pop();
- SiteModel site = (SiteModel) objectStack.peek();
- site.getDescription().setAnnotation(text);
- }
- //do not pop the object
- break;
-
- case STATE_FEATURE :
- stateStack.pop();
- objectStack.pop();
- break;
-
- case STATE_BUNDLE :
- stateStack.pop();
- objectStack.pop();
- break;
-
- case STATE_CATEGORY_DEF :
- stateStack.pop();
- if (objectStack.peek() instanceof String) {
- text = (String) objectStack.pop();
- SiteCategory category = (SiteCategory) objectStack.peek();
- category.setDescription(text);
+ case STATE_IGNORED_ELEMENT:
+ case STATE_ARCHIVE:
+ case STATE_CATEGORY:
+ stateStack.pop();
+ break;
+
+ case STATE_INITIAL:
+ internalError(Messages.DefaultSiteParser_ParsingStackBackToInitialState);
+ break;
+
+ case STATE_SITE:
+ stateStack.pop();
+ if (objectStack.peek() instanceof String) {
+ text = (String) objectStack.pop();
+ SiteModel site = (SiteModel) objectStack.peek();
+ site.getDescription().setAnnotation(text);
+ }
+ // do not pop the object
+ break;
+
+ case STATE_FEATURE:
+ stateStack.pop();
+ objectStack.pop();
+ break;
+
+ case STATE_BUNDLE:
+ stateStack.pop();
+ objectStack.pop();
+ break;
+
+ case STATE_CATEGORY_DEF:
+ stateStack.pop();
+ if (objectStack.peek() instanceof String) {
+ text = (String) objectStack.pop();
+ SiteCategory category = (SiteCategory) objectStack.peek();
+ category.setDescription(text);
+ }
+ objectStack.pop();
+ break;
+
+ case STATE_DESCRIPTION_SITE:
+ stateStack.pop();
+ text = ""; //$NON-NLS-1$
+ while (objectStack.peek() instanceof String) {
+ // add text, preserving at most one space between text fragments
+ String newText = (String) objectStack.pop();
+ if (trailingSpace(newText) && !leadingSpace(text)) {
+ text = " " + text; //$NON-NLS-1$
}
- objectStack.pop();
- break;
-
- case STATE_DESCRIPTION_SITE :
- stateStack.pop();
- text = ""; //$NON-NLS-1$
- while (objectStack.peek() instanceof String) {
- // add text, preserving at most one space between text fragments
- String newText = (String) objectStack.pop();
- if (trailingSpace(newText) && !leadingSpace(text)) {
- text = " " + text; //$NON-NLS-1$
- }
- text = newText.trim() + text;
- if (leadingSpace(newText) && !leadingSpace(text)) {
- text = " " + text; //$NON-NLS-1$
- }
+ text = newText.trim() + text;
+ if (leadingSpace(newText) && !leadingSpace(text)) {
+ text = " " + text; //$NON-NLS-1$
}
- text = text.trim();
-
- info = (URLEntry) objectStack.pop();
- if (text != null)
- info.setAnnotation(text);
-
- SiteModel siteModel = (SiteModel) objectStack.peek();
- // override description.
- // do not raise error as previous description may be default one
- // when parsing site tag
- if (DESCRIPTION_SITE_ALREADY_SEEN)
- debug(NLS.bind(Messages.DefaultSiteParser_ElementAlreadySet, (new String[] {getState(state)})));
- siteModel.setDescription(info);
- DESCRIPTION_SITE_ALREADY_SEEN = true;
- break;
-
- case STATE_DESCRIPTION_CATEGORY_DEF :
- stateStack.pop();
- text = ""; //$NON-NLS-1$
- while (objectStack.peek() instanceof String) {
- // add text, preserving at most one space between text fragments
- String newText = (String) objectStack.pop();
- if (trailingSpace(newText) && !leadingSpace(text)) {
- text = " " + text; //$NON-NLS-1$
- }
- text = newText.trim() + text;
- if (leadingSpace(newText) && !leadingSpace(text)) {
- text = " " + text; //$NON-NLS-1$
- }
+ }
+ text = text.trim();
+
+ info = (URLEntry) objectStack.pop();
+ if (text != null)
+ info.setAnnotation(text);
+
+ SiteModel siteModel = (SiteModel) objectStack.peek();
+ // override description.
+ // do not raise error as previous description may be default one
+ // when parsing site tag
+ if (DESCRIPTION_SITE_ALREADY_SEEN)
+ debug(NLS.bind(Messages.DefaultSiteParser_ElementAlreadySet, (new String[] { getState(state) })));
+ siteModel.setDescription(info);
+ DESCRIPTION_SITE_ALREADY_SEEN = true;
+ break;
+
+ case STATE_DESCRIPTION_CATEGORY_DEF:
+ stateStack.pop();
+ text = ""; //$NON-NLS-1$
+ while (objectStack.peek() instanceof String) {
+ // add text, preserving at most one space between text fragments
+ String newText = (String) objectStack.pop();
+ if (trailingSpace(newText) && !leadingSpace(text)) {
+ text = " " + text; //$NON-NLS-1$
}
- text = text.trim();
-
- info = (URLEntry) objectStack.pop();
- if (text != null)
- info.setAnnotation(text);
-
- SiteCategory category = (SiteCategory) objectStack.peek();
- if (category.getDescription() != null)
- internalError(NLS.bind(Messages.DefaultSiteParser_ElementAlreadySet, (new String[] {getState(state), category.getLabel()})));
- else {
- checkTranslated(info.getAnnotation());
- category.setDescription(info.getAnnotation());
+ text = newText.trim() + text;
+ if (leadingSpace(newText) && !leadingSpace(text)) {
+ text = " " + text; //$NON-NLS-1$
}
- break;
+ }
+ text = text.trim();
+
+ info = (URLEntry) objectStack.pop();
+ if (text != null)
+ info.setAnnotation(text);
+
+ SiteCategory category = (SiteCategory) objectStack.peek();
+ if (category.getDescription() != null)
+ internalError(NLS.bind(Messages.DefaultSiteParser_ElementAlreadySet,
+ (new String[] { getState(state), category.getLabel() })));
+ else {
+ checkTranslated(info.getAnnotation());
+ category.setDescription(info.getAnnotation());
+ }
+ break;
- default :
- internalError(NLS.bind(Messages.DefaultSiteParser_UnknownEndState, (new String[] {getState(state)})));
- break;
+ default:
+ internalError(NLS.bind(Messages.DefaultSiteParser_UnknownEndState, (new String[] { getState(state) })));
+ break;
}
if (Tracing.DEBUG_GENERATOR_PARSING)
@@ -290,8 +293,8 @@ public class DefaultSiteParser extends DefaultHandler {
}
/*
- * Handles an error state specified by the status. The collection of all logged status
- * objects can be accessed using <code>getStatus()</code>.
+ * Handles an error state specified by the status. The collection of all logged
+ * status objects can be accessed using <code>getStatus()</code>.
*
* @param error a status detailing the error condition
*/
@@ -308,6 +311,7 @@ public class DefaultSiteParser extends DefaultHandler {
/**
* Handle errors
+ *
* @see DefaultHandler#error(SAXParseException)
* @since 2.0
*/
@@ -318,6 +322,7 @@ public class DefaultSiteParser extends DefaultHandler {
/**
* Handle fatal errors
+ *
* @see DefaultHandler#fatalError(SAXParseException)
* @exception SAXException
* @since 2.0
@@ -334,38 +339,38 @@ public class DefaultSiteParser extends DefaultHandler {
private String getState(int state) {
switch (state) {
- case STATE_IGNORED_ELEMENT :
- return "Ignored"; //$NON-NLS-1$
+ case STATE_IGNORED_ELEMENT:
+ return "Ignored"; //$NON-NLS-1$
- case STATE_INITIAL :
- return "Initial"; //$NON-NLS-1$
+ case STATE_INITIAL:
+ return "Initial"; //$NON-NLS-1$
- case STATE_SITE :
- return "Site"; //$NON-NLS-1$
+ case STATE_SITE:
+ return "Site"; //$NON-NLS-1$
- case STATE_FEATURE :
- return "Feature"; //$NON-NLS-1$
+ case STATE_FEATURE:
+ return "Feature"; //$NON-NLS-1$
- case STATE_BUNDLE :
- return "Bundle"; //$NON-NLS-1$
+ case STATE_BUNDLE:
+ return "Bundle"; //$NON-NLS-1$
- case STATE_ARCHIVE :
- return "Archive"; //$NON-NLS-1$
+ case STATE_ARCHIVE:
+ return "Archive"; //$NON-NLS-1$
- case STATE_CATEGORY :
- return "Category"; //$NON-NLS-1$
+ case STATE_CATEGORY:
+ return "Category"; //$NON-NLS-1$
- case STATE_CATEGORY_DEF :
- return "Category Def"; //$NON-NLS-1$
+ case STATE_CATEGORY_DEF:
+ return "Category Def"; //$NON-NLS-1$
- case STATE_DESCRIPTION_CATEGORY_DEF :
- return "Description / Category Def"; //$NON-NLS-1$
+ case STATE_DESCRIPTION_CATEGORY_DEF:
+ return "Description / Category Def"; //$NON-NLS-1$
- case STATE_DESCRIPTION_SITE :
- return "Description / Site"; //$NON-NLS-1$
+ case STATE_DESCRIPTION_SITE:
+ return "Description / Site"; //$NON-NLS-1$
- default :
- return Messages.DefaultSiteParser_UnknownState;
+ default:
+ return Messages.DefaultSiteParser_UnknownState;
}
}
@@ -381,113 +386,117 @@ public class DefaultSiteParser extends DefaultHandler {
private void handleCategoryDefState(String elementName, Attributes attributes) {
switch (elementName) {
- case FEATURE:
- stateStack.push(Integer.valueOf(STATE_FEATURE));
- processFeature(attributes);
- break;
- case BUNDLE:
- stateStack.push(Integer.valueOf(STATE_BUNDLE));
- processBundle(attributes);
- break;
- case ARCHIVE:
- stateStack.push(Integer.valueOf(STATE_ARCHIVE));
- processArchive(attributes);
- break;
- case CATEGORY_DEF:
- stateStack.push(Integer.valueOf(STATE_CATEGORY_DEF));
- processCategoryDef(attributes);
- break;
- case DESCRIPTION:
- stateStack.push(Integer.valueOf(STATE_DESCRIPTION_CATEGORY_DEF));
- processInfo(attributes);
- break;
- default:
- internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownElement, (new String[] {elementName, getState(currentState)})));
- break;
+ case FEATURE:
+ stateStack.push(Integer.valueOf(STATE_FEATURE));
+ processFeature(attributes);
+ break;
+ case BUNDLE:
+ stateStack.push(Integer.valueOf(STATE_BUNDLE));
+ processBundle(attributes);
+ break;
+ case ARCHIVE:
+ stateStack.push(Integer.valueOf(STATE_ARCHIVE));
+ processArchive(attributes);
+ break;
+ case CATEGORY_DEF:
+ stateStack.push(Integer.valueOf(STATE_CATEGORY_DEF));
+ processCategoryDef(attributes);
+ break;
+ case DESCRIPTION:
+ stateStack.push(Integer.valueOf(STATE_DESCRIPTION_CATEGORY_DEF));
+ processInfo(attributes);
+ break;
+ default:
+ internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownElement,
+ (new String[] { elementName, getState(currentState) })));
+ break;
}
}
private void handleCategoryState(String elementName, Attributes attributes) {
switch (elementName) {
- case DESCRIPTION:
- stateStack.push(Integer.valueOf(STATE_DESCRIPTION_SITE));
- processInfo(attributes);
- break;
- case FEATURE:
- stateStack.push(Integer.valueOf(STATE_FEATURE));
- processFeature(attributes);
- break;
- case BUNDLE:
- stateStack.push(Integer.valueOf(STATE_BUNDLE));
- processBundle(attributes);
- break;
- case ARCHIVE:
- stateStack.push(Integer.valueOf(STATE_ARCHIVE));
- processArchive(attributes);
- break;
- case CATEGORY_DEF:
- stateStack.push(Integer.valueOf(STATE_CATEGORY_DEF));
- processCategoryDef(attributes);
- break;
- case CATEGORY:
- stateStack.push(Integer.valueOf(STATE_CATEGORY));
- processCategory(attributes);
- break;
- default:
- internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownElement, (new String[] {elementName, getState(currentState)})));
- break;
+ case DESCRIPTION:
+ stateStack.push(Integer.valueOf(STATE_DESCRIPTION_SITE));
+ processInfo(attributes);
+ break;
+ case FEATURE:
+ stateStack.push(Integer.valueOf(STATE_FEATURE));
+ processFeature(attributes);
+ break;
+ case BUNDLE:
+ stateStack.push(Integer.valueOf(STATE_BUNDLE));
+ processBundle(attributes);
+ break;
+ case ARCHIVE:
+ stateStack.push(Integer.valueOf(STATE_ARCHIVE));
+ processArchive(attributes);
+ break;
+ case CATEGORY_DEF:
+ stateStack.push(Integer.valueOf(STATE_CATEGORY_DEF));
+ processCategoryDef(attributes);
+ break;
+ case CATEGORY:
+ stateStack.push(Integer.valueOf(STATE_CATEGORY));
+ processCategory(attributes);
+ break;
+ default:
+ internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownElement,
+ (new String[] { elementName, getState(currentState) })));
+ break;
}
}
private void handleFeatureState(String elementName, Attributes attributes) {
switch (elementName) {
- case DESCRIPTION:
- stateStack.push(Integer.valueOf(STATE_DESCRIPTION_SITE));
- processInfo(attributes);
- break;
- case FEATURE:
- stateStack.push(Integer.valueOf(STATE_FEATURE));
- processFeature(attributes);
- break;
- case ARCHIVE:
- stateStack.push(Integer.valueOf(STATE_ARCHIVE));
- processArchive(attributes);
- break;
- case CATEGORY_DEF:
- stateStack.push(Integer.valueOf(STATE_CATEGORY_DEF));
- processCategoryDef(attributes);
- break;
- case CATEGORY:
- stateStack.push(Integer.valueOf(STATE_CATEGORY));
- processCategory(attributes);
- break;
- default:
- internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownElement, (new String[] {elementName, getState(currentState)})));
- break;
+ case DESCRIPTION:
+ stateStack.push(Integer.valueOf(STATE_DESCRIPTION_SITE));
+ processInfo(attributes);
+ break;
+ case FEATURE:
+ stateStack.push(Integer.valueOf(STATE_FEATURE));
+ processFeature(attributes);
+ break;
+ case ARCHIVE:
+ stateStack.push(Integer.valueOf(STATE_ARCHIVE));
+ processArchive(attributes);
+ break;
+ case CATEGORY_DEF:
+ stateStack.push(Integer.valueOf(STATE_CATEGORY_DEF));
+ processCategoryDef(attributes);
+ break;
+ case CATEGORY:
+ stateStack.push(Integer.valueOf(STATE_CATEGORY));
+ processCategory(attributes);
+ break;
+ default:
+ internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownElement,
+ (new String[] { elementName, getState(currentState) })));
+ break;
}
}
private void handleBundleState(String elementName, Attributes attributes) {
switch (elementName) {
- case DESCRIPTION:
- stateStack.push(Integer.valueOf(STATE_DESCRIPTION_SITE));
- processInfo(attributes);
- break;
- case ARCHIVE:
- stateStack.push(Integer.valueOf(STATE_ARCHIVE));
- processArchive(attributes);
- break;
- case CATEGORY_DEF:
- stateStack.push(Integer.valueOf(STATE_CATEGORY_DEF));
- processCategoryDef(attributes);
- break;
- case CATEGORY:
- stateStack.push(Integer.valueOf(STATE_CATEGORY));
- processCategory(attributes);
- break;
- default:
- internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownElement, (new String[] {elementName, getState(currentState)})));
- break;
+ case DESCRIPTION:
+ stateStack.push(Integer.valueOf(STATE_DESCRIPTION_SITE));
+ processInfo(attributes);
+ break;
+ case ARCHIVE:
+ stateStack.push(Integer.valueOf(STATE_ARCHIVE));
+ processArchive(attributes);
+ break;
+ case CATEGORY_DEF:
+ stateStack.push(Integer.valueOf(STATE_CATEGORY_DEF));
+ processCategoryDef(attributes);
+ break;
+ case CATEGORY:
+ stateStack.push(Integer.valueOf(STATE_CATEGORY));
+ processCategory(attributes);
+ break;
+ default:
+ internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownElement,
+ (new String[] { elementName, getState(currentState) })));
+ break;
}
}
@@ -496,7 +505,8 @@ public class DefaultSiteParser extends DefaultHandler {
stateStack.push(Integer.valueOf(STATE_SITE));
processSite(attributes);
} else {
- internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownElement, (new String[] {elementName, getState(currentState)})));
+ internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownElement,
+ (new String[] { elementName, getState(currentState) })));
// what we received was not a site.xml, no need to continue
throw new SAXException(Messages.DefaultSiteParser_InvalidXMLStream);
}
@@ -505,29 +515,30 @@ public class DefaultSiteParser extends DefaultHandler {
private void handleSiteState(String elementName, Attributes attributes) {
switch (elementName) {
- case DESCRIPTION:
- stateStack.push(Integer.valueOf(STATE_DESCRIPTION_SITE));
- processInfo(attributes);
- break;
- case FEATURE:
- stateStack.push(Integer.valueOf(STATE_FEATURE));
- processFeature(attributes);
- break;
- case BUNDLE:
- stateStack.push(Integer.valueOf(STATE_BUNDLE));
- processBundle(attributes);
- break;
- case ARCHIVE:
- stateStack.push(Integer.valueOf(STATE_ARCHIVE));
- processArchive(attributes);
- break;
- case CATEGORY_DEF:
- stateStack.push(Integer.valueOf(STATE_CATEGORY_DEF));
- processCategoryDef(attributes);
- break;
- default:
- internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownElement, (new String[] {elementName, getState(currentState)})));
- break;
+ case DESCRIPTION:
+ stateStack.push(Integer.valueOf(STATE_DESCRIPTION_SITE));
+ processInfo(attributes);
+ break;
+ case FEATURE:
+ stateStack.push(Integer.valueOf(STATE_FEATURE));
+ processFeature(attributes);
+ break;
+ case BUNDLE:
+ stateStack.push(Integer.valueOf(STATE_BUNDLE));
+ processBundle(attributes);
+ break;
+ case ARCHIVE:
+ stateStack.push(Integer.valueOf(STATE_ARCHIVE));
+ processArchive(attributes);
+ break;
+ case CATEGORY_DEF:
+ stateStack.push(Integer.valueOf(STATE_CATEGORY_DEF));
+ processCategoryDef(attributes);
+ break;
+ default:
+ internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownElement,
+ (new String[] { elementName, getState(currentState) })));
+ break;
}
}
@@ -566,14 +577,15 @@ public class DefaultSiteParser extends DefaultHandler {
String msg;
if (name.equals("")) //$NON-NLS-1$
name = siteLocation.toString();
- String[] values = new String[] {name, Integer.toString(ex.getLineNumber()), Integer.toString(ex.getColumnNumber()), ex.getMessage()};
+ String[] values = new String[] { name, Integer.toString(ex.getLineNumber()),
+ Integer.toString(ex.getColumnNumber()), ex.getMessage() };
msg = NLS.bind(Messages.DefaultSiteParser_ErrorlineColumnMessage, values);
error(new Status(IStatus.ERROR, PLUGIN_ID, msg, ex));
}
/**
- * Parses the specified input steam and constructs a site model.
- * The input stream is not closed as part of this operation.
+ * Parses the specified input steam and constructs a site model. The input
+ * stream is not closed as part of this operation.
*
* @param in input stream
* @return site model
@@ -597,24 +609,26 @@ public class DefaultSiteParser extends DefaultHandler {
while (iter.hasNext()) {
stack = stack + iter.next().toString() + "\r\n"; //$NON-NLS-1$
}
- throw new SAXException(NLS.bind(Messages.DefaultSiteParser_WrongParsingStack, (new String[] {stack})));
+ throw new SAXException(NLS.bind(Messages.DefaultSiteParser_WrongParsingStack, (new String[] { stack })));
}
- /*
+ /*
* process archive info
*/
private void processArchive(Attributes attributes) {
URLEntry archive = new URLEntry();
String id = attributes.getValue("path"); //$NON-NLS-1$
if (id == null || id.trim().equals("")) { //$NON-NLS-1$
- internalError(NLS.bind(Messages.DefaultSiteParser_Missing, (new String[] {"path", getState(currentState)}))); //$NON-NLS-1$
+ internalError(
+ NLS.bind(Messages.DefaultSiteParser_Missing, (new String[] { "path", getState(currentState) }))); //$NON-NLS-1$
}
archive.setAnnotation(id);
String url = attributes.getValue("url"); //$NON-NLS-1$
if (url == null || url.trim().equals("")) { //$NON-NLS-1$
- internalError(NLS.bind(Messages.DefaultSiteParser_Missing, (new String[] {"archive", getState(currentState)}))); //$NON-NLS-1$
+ internalError(
+ NLS.bind(Messages.DefaultSiteParser_Missing, (new String[] { "archive", getState(currentState) }))); //$NON-NLS-1$
} else {
archive.setURL(url);
@@ -626,8 +640,8 @@ public class DefaultSiteParser extends DefaultHandler {
}
- /*
- * process the Category info
+ /*
+ * process the Category info
*/
private void processCategory(Attributes attributes) {
String category = attributes.getValue("name"); //$NON-NLS-1$
@@ -644,7 +658,7 @@ public class DefaultSiteParser extends DefaultHandler {
debug("End processing Category: name:" + category); //$NON-NLS-1$
}
- /*
+ /*
* process category def info
*/
private void processCategoryDef(Attributes attributes) {
@@ -663,7 +677,7 @@ public class DefaultSiteParser extends DefaultHandler {
debug("End processing CategoryDef: name:" + name + " label:" + label); //$NON-NLS-1$ //$NON-NLS-2$
}
- /*
+ /*
* process feature info
*/
private void processFeature(Attributes attributes) {
@@ -682,10 +696,11 @@ public class DefaultSiteParser extends DefaultHandler {
// We need to have id and version, or the url, or both.
if (noURL) {
if (noId || noVersion)
- internalError(NLS.bind(Messages.DefaultSiteParser_Missing, (new String[] {"url", getState(currentState)}))); //$NON-NLS-1$
+ internalError(
+ NLS.bind(Messages.DefaultSiteParser_Missing, (new String[] { "url", getState(currentState) }))); //$NON-NLS-1$
else
// default url
- urlInfo = FEATURES + id + '_' + ver; //
+ urlInfo = FEATURES + id + '_' + ver; //
}
feature.setURLString(urlInfo);
@@ -695,7 +710,7 @@ public class DefaultSiteParser extends DefaultHandler {
// if one is null, and not the other
if (noId ^ noVersion) {
- String[] values = new String[] {id, ver, getState(currentState)};
+ String[] values = new String[] { id, ver, getState(currentState) };
log(NLS.bind(Messages.DefaultFeatureParser_IdOrVersionInvalid, values));
} else {
feature.setFeatureIdentifier(id);
@@ -727,7 +742,7 @@ public class DefaultSiteParser extends DefaultHandler {
String arch = attributes.getValue("arch"); //$NON-NLS-1$
feature.setArch(arch);
- //patch
+ // patch
String patch = attributes.getValue("patch"); //$NON-NLS-1$
feature.setPatch(patch);
@@ -742,7 +757,7 @@ public class DefaultSiteParser extends DefaultHandler {
}
- /*
+ /*
* process feature info
*/
private void processBundle(Attributes attributes) {
@@ -761,10 +776,11 @@ public class DefaultSiteParser extends DefaultHandler {
// We need to have id and version, or the url, or both.
if (noURL) {
if (noId || noVersion)
- internalError(NLS.bind(Messages.DefaultSiteParser_Missing, (new String[] {"url", getState(currentState)}))); //$NON-NLS-1$
+ internalError(
+ NLS.bind(Messages.DefaultSiteParser_Missing, (new String[] { "url", getState(currentState) }))); //$NON-NLS-1$
else
// default url
- urlInfo = PLUGINS + id + '_' + ver; //
+ urlInfo = PLUGINS + id + '_' + ver; //
}
bundle.setURLString(urlInfo);
@@ -774,7 +790,7 @@ public class DefaultSiteParser extends DefaultHandler {
// if one is null, and not the other
if (noId ^ noVersion) {
- String[] values = new String[] {id, ver, getState(currentState)};
+ String[] values = new String[] { id, ver, getState(currentState) };
log(NLS.bind(Messages.DefaultFeatureParser_IdOrVersionInvalid, values));
} else {
bundle.setBundleIdentifier(id);
@@ -806,7 +822,7 @@ public class DefaultSiteParser extends DefaultHandler {
String arch = attributes.getValue("arch"); //$NON-NLS-1$
bundle.setArch(arch);
- //patch
+ // patch
String patch = attributes.getValue("patch"); //$NON-NLS-1$
bundle.setPatch(patch);
@@ -821,7 +837,7 @@ public class DefaultSiteParser extends DefaultHandler {
}
- /*
+ /*
* process URL info with element text
*/
private void processInfo(Attributes attributes) {
@@ -835,9 +851,10 @@ public class DefaultSiteParser extends DefaultHandler {
objectStack.push(inf);
}
- /*
+ /*
* process site info
*/
+ @SuppressWarnings("removal")
private void processSite(Attributes attributes) {
// create site map
SiteModel site = new SiteModel();
@@ -853,7 +870,7 @@ public class DefaultSiteParser extends DefaultHandler {
}
// provide default description URL
- // If <description> is specified, for the site, it takes precedence
+ // If <description> is specified, for the site, it takes precedence
URLEntry description = new URLEntry();
description.setURL(DEFAULT_INFO_URL);
site.setDescription(description);
@@ -867,13 +884,13 @@ public class DefaultSiteParser extends DefaultHandler {
// get mirrors, if any
String mirrorsURL = attributes.getValue("mirrorsURL"); //$NON-NLS-1$
if (mirrorsURL != null && mirrorsURL.trim().length() > 0) {
- // URLEntry[] mirrors = getMirrors(mirrorsURL);
- // if (mirrors != null)
- // site.setMirrors(mirrors);
- // else
+ // URLEntry[] mirrors = getMirrors(mirrorsURL);
+ // if (mirrors != null)
+ // site.setMirrors(mirrors);
+ // else
- //Since we are parsing the site at p2 generation time and the
- //mirrors may change, there is no point doing the mirror expansion now
+ // Since we are parsing the site at p2 generation time and the
+ // mirrors may change, there is no point doing the mirror expansion now
site.setMirrorsURIString(mirrorsURL);
}
@@ -887,20 +904,24 @@ public class DefaultSiteParser extends DefaultHandler {
site.setDigestURIString(digestURL);
// TODO: Digest locales
- // if ((attributes.getValue("availableLocales") != null) && (!attributes.getValue("availableLocales").trim().equals(""))) { //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
- // StringTokenizer locals = new StringTokenizer(attributes.getValue("availableLocales"), ","); //$NON-NLS-1$//$NON-NLS-2$
- // String[] availableLocals = new String[locals.countTokens()];
- // int i = 0;
- // while (locals.hasMoreTokens()) {
- // availableLocals[i++] = locals.nextToken();
- // }
- // extendedSite.setAvailableLocals(availableLocals);
- // }
- // }
+ // if ((attributes.getValue("availableLocales") != null) &&
+ // (!attributes.getValue("availableLocales").trim().equals(""))) {
+ // //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
+ // StringTokenizer locals = new
+ // StringTokenizer(attributes.getValue("availableLocales"), ",");
+ // //$NON-NLS-1$//$NON-NLS-2$
+ // String[] availableLocals = new String[locals.countTokens()];
+ // int i = 0;
+ // while (locals.hasMoreTokens()) {
+ // availableLocals[i++] = locals.nextToken();
+ // }
+ // extendedSite.setAvailableLocals(availableLocals);
+ // }
+ // }
//
final String associateURL = attributes.getValue(ASSOCIATE_SITES_URL);
if (associateURL != null) {
- //resolve the URI relative to the site location
+ // resolve the URI relative to the site location
URI resolvedLocation = siteLocation.resolve(associateURL);
site.setAssociateSites(getAssociateSites(resolvedLocation.toString()));
}
@@ -914,6 +935,7 @@ public class DefaultSiteParser extends DefaultHandler {
/**
* Handle start of element tags
+ *
* @see DefaultHandler#startElement(String, String, String, Attributes)
* @since 2.0
*/
@@ -926,48 +948,50 @@ public class DefaultSiteParser extends DefaultHandler {
}
switch (currentState) {
- case STATE_IGNORED_ELEMENT :
- internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownElement, (new String[] {localName, getState(currentState)})));
- break;
- case STATE_INITIAL :
- handleInitialState(localName, attributes);
- break;
-
- case STATE_SITE :
- handleSiteState(localName, attributes);
- break;
-
- case STATE_FEATURE :
- handleFeatureState(localName, attributes);
- break;
-
- case STATE_BUNDLE :
- handleBundleState(localName, attributes);
- break;
-
- case STATE_ARCHIVE :
- handleSiteState(localName, attributes);
- break;
-
- case STATE_CATEGORY :
- handleCategoryState(localName, attributes);
- break;
-
- case STATE_CATEGORY_DEF :
- handleCategoryDefState(localName, attributes);
- break;
-
- case STATE_DESCRIPTION_SITE :
- handleSiteState(localName, attributes);
- break;
-
- case STATE_DESCRIPTION_CATEGORY_DEF :
- handleSiteState(localName, attributes);
- break;
-
- default :
- internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownStartState, (new String[] {getState(currentState)})));
- break;
+ case STATE_IGNORED_ELEMENT:
+ internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownElement,
+ (new String[] { localName, getState(currentState) })));
+ break;
+ case STATE_INITIAL:
+ handleInitialState(localName, attributes);
+ break;
+
+ case STATE_SITE:
+ handleSiteState(localName, attributes);
+ break;
+
+ case STATE_FEATURE:
+ handleFeatureState(localName, attributes);
+ break;
+
+ case STATE_BUNDLE:
+ handleBundleState(localName, attributes);
+ break;
+
+ case STATE_ARCHIVE:
+ handleSiteState(localName, attributes);
+ break;
+
+ case STATE_CATEGORY:
+ handleCategoryState(localName, attributes);
+ break;
+
+ case STATE_CATEGORY_DEF:
+ handleCategoryDefState(localName, attributes);
+ break;
+
+ case STATE_DESCRIPTION_SITE:
+ handleSiteState(localName, attributes);
+ break;
+
+ case STATE_DESCRIPTION_CATEGORY_DEF:
+ handleSiteState(localName, attributes);
+ break;
+
+ default:
+ internalErrorUnknownTag(
+ NLS.bind(Messages.DefaultSiteParser_UnknownStartState, (new String[] { getState(currentState) })));
+ break;
}
int newState = stateStack.peek().intValue();
if (newState != STATE_IGNORED_ELEMENT)
diff --git a/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/SiteBundle.java b/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/SiteBundle.java
index 944754e37..e783dd074 100644
--- a/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/SiteBundle.java
+++ b/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/SiteBundle.java
@@ -438,7 +438,7 @@ public class SiteBundle {
*/
@Override
public String toString() {
- StringBuffer buffer = new StringBuffer();
+ StringBuilder buffer = new StringBuilder();
buffer.append(getClass().toString() + " :"); //$NON-NLS-1$
buffer.append(" at "); //$NON-NLS-1$
if (url != null)
diff --git a/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/SiteModel.java b/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/SiteModel.java
index 03eb0405d..5e2b6f56f 100644
--- a/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/SiteModel.java
+++ b/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/SiteModel.java
@@ -62,8 +62,8 @@ public class SiteModel {
}
/**
- * Adds an archive reference model to site.
- * Throws a runtime exception if this object is marked read-only.
+ * Adds an archive reference model to site. Throws a runtime exception if this
+ * object is marked read-only.
*
* @param archiveReference archive reference model
* @since 2.0
@@ -157,11 +157,11 @@ public class SiteModel {
}
/**
- * Returns an array of plug-in and non-plug-in archive reference models
- * on this site
+ * Returns an array of plug-in and non-plug-in archive reference models on this
+ * site
*
* @return an array of archive reference models, or an empty array if there are
- * no archives known to this site.
+ * no archives known to this site.
* @since 2.0
*/
public URLEntry[] getArchives() {
@@ -189,6 +189,7 @@ public class SiteModel {
/**
* Returns the category with the given name.
+ *
* @return the category with the given name, or <code>null</code>
*/
public SiteCategory getCategory(String name) {
@@ -280,8 +281,8 @@ public class SiteModel {
}
/**
- * Gets the localizations for the site as a map from locale
- * to the set of translated properties for that locale.
+ * Gets the localizations for the site as a map from locale to the set of
+ * translated properties for that locale.
*
* @return a map from locale to property set
* @since 3.4
@@ -300,7 +301,7 @@ public class SiteModel {
try {
locationURI = new URI(locationURIString);
} catch (URISyntaxException e) {
- //ignore and return null
+ // ignore and return null
}
}
return locationURI;
@@ -333,7 +334,7 @@ public class SiteModel {
return mirrorsURIString;
}
- /**
+ /**
* Returns the site type.
*
* @return site type, or <code>null</code>.
@@ -343,6 +344,11 @@ public class SiteModel {
return type;
}
+ /**
+ * @noreference This method is not intended to be referenced by clients.
+ * @deprecated See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=572043">bug</a> for details.
+ */
+ @Deprecated(forRemoval = true, since = "1.2.0")
public boolean isPack200Supported() {
return supportsPack200;
}
@@ -358,8 +364,8 @@ public class SiteModel {
}
/**
- * Sets the localizations for the site as a map from locale
- * to the set of translated properties for that locale.
+ * Sets the localizations for the site as a map from locale to the set of
+ * translated properties for that locale.
*
* @param localizations as a map from locale to property set
* @since 3.4
@@ -395,9 +401,9 @@ public class SiteModel {
}
/**
- * Sets the mirrors url. Mirror sites will then be obtained from this mirror url later.
- * This method is complementary to setMirrorsiteEntryModels(), and only one of these
- * methods should be called.
+ * Sets the mirrors url. Mirror sites will then be obtained from this mirror url
+ * later. This method is complementary to setMirrorsiteEntryModels(), and only
+ * one of these methods should be called.
*
* @param mirrorsURI additional update site mirrors
* @since 3.1
@@ -406,13 +412,14 @@ public class SiteModel {
this.mirrorsURIString = mirrorsURI;
}
+ @Deprecated(forRemoval = true, since = "1.2.0")
public void setSupportsPack200(boolean value) {
this.supportsPack200 = value;
}
/**
- * Sets the site type.
- * Throws a runtime exception if this object is marked read-only.
+ * Sets the site type. Throws a runtime exception if this object is marked
+ * read-only.
*
* @param type site type
* @since 2.0
@@ -439,7 +446,7 @@ public class SiteModel {
}
/**
- * Sets the URI of the stats repository used to track downloads.
+ * Sets the URI of the stats repository used to track downloads.
*
* @param statsURI a String describing the stats URI
*/
diff --git a/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/SiteXMLAction.java b/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/SiteXMLAction.java
index 5b443c686..0f36feaba 100644
--- a/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/SiteXMLAction.java
+++ b/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/SiteXMLAction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2018 Code 9 and others.
+ * Copyright (c) 2008, 2020 Code 9 and others.
*
* This
* program and the accompanying materials are made available under the terms of
@@ -511,9 +511,9 @@ public class SiteXMLAction extends AbstractPublisherAction {
URI associateLocation = new URI(siteLocation);
String label = associatedSite.getAnnotation();
refs.add(new RepositoryReference(associateLocation, label, IRepository.TYPE_METADATA,
- IRepository.ENABLED));
+ IRepository.ENABLED));
refs.add(new RepositoryReference(associateLocation, label, IRepository.TYPE_ARTIFACT,
- IRepository.ENABLED));
+ IRepository.ENABLED));
} catch (URISyntaxException e) {
String message = "Invalid site reference: " + siteLocation; //$NON-NLS-1$
LogHelper.log(new Status(IStatus.ERROR, Activator.ID, message));
@@ -580,7 +580,7 @@ public class SiteXMLAction extends AbstractPublisherAction {
categories.add(this.defaultCategory);
// sort category so they are processed in reverse order of dependency
// (Nested categories go first)
- Comparator<SiteCategory> isNestedCategoryComparator = new Comparator<SiteCategory>() {
+ Comparator<SiteCategory> isNestedCategoryComparator = new Comparator<>() {
@Override
public int compare(SiteCategory category1, SiteCategory category2) {
Set<SiteCategory> childrenOfCategory1 = categoryToNestedCategories.get(category1);
@@ -613,7 +613,7 @@ public class SiteXMLAction extends AbstractPublisherAction {
return 0;
}
};
- Collections.sort(categories, isNestedCategoryComparator);
+ categories.sort(isNestedCategoryComparator);
// Then create categories in the right order
Map<String, IInstallableUnit> nameToCategoryIU = new HashMap<>();
diff --git a/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/artifact/UpdateSiteArtifactRepositoryFactory.java b/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/artifact/UpdateSiteArtifactRepositoryFactory.java
index 9e5eacb11..b364ab14f 100644
--- a/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/artifact/UpdateSiteArtifactRepositoryFactory.java
+++ b/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/artifact/UpdateSiteArtifactRepositoryFactory.java
@@ -114,6 +114,7 @@ public class UpdateSiteArtifactRepositoryFactory extends ArtifactRepositoryFacto
generateArtifactDescriptors(updateSite, repository, monitor);
}
+ @SuppressWarnings("removal")
private void generateArtifactDescriptors(UpdateSite updateSite, IArtifactRepository repository,
IProgressMonitor monitor) throws ProvisionException {
final String PACK_EXT = ".pack.gz"; //$NON-NLS-1$
@@ -123,7 +124,7 @@ public class UpdateSiteArtifactRepositoryFactory extends ArtifactRepositoryFacto
Feature[] features = updateSite.loadFeatures(monitor);
for (Feature feature : features) {
IArtifactKey featureKey = FeaturesAction.createFeatureArtifactKey(feature.getId(),
- feature.getVersion());
+ feature.getVersion());
SimpleArtifactDescriptor featureArtifactDescriptor = new SimpleArtifactDescriptor(featureKey);
URI featureURL = updateSite.getFeatureURI(feature.getId(), feature.getVersion());
featureArtifactDescriptor.setRepositoryProperty(PROP_ARTIFACT_REFERENCE, featureURL.toString());
@@ -133,12 +134,12 @@ public class UpdateSiteArtifactRepositoryFactory extends ArtifactRepositoryFacto
featureArtifactDescriptor = new SimpleArtifactDescriptor(featureKey);
featureURL = updateSite.getFeatureURI(feature.getId(), feature.getVersion());
featureArtifactDescriptor.setRepositoryProperty(PROP_ARTIFACT_REFERENCE,
- featureURL.toString() + PACK_EXT);
+ featureURL.toString() + PACK_EXT);
IProcessingStepDescriptor[] steps = new IProcessingStepDescriptor[] { new ProcessingStepDescriptor(
- "org.eclipse.equinox.p2.processing.Pack200Unpacker", null, true) }; //$NON-NLS-1$
+ "org.eclipse.equinox.p2.processing.Pack200Unpacker", null, true) }; //$NON-NLS-1$
featureArtifactDescriptor.setProcessingSteps(steps);
featureArtifactDescriptor.setProperty(IArtifactDescriptor.FORMAT,
- IArtifactDescriptor.FORMAT_PACKED);
+ IArtifactDescriptor.FORMAT_PACKED);
allSiteArtifacts.add(featureArtifactDescriptor);
}
FeatureEntry[] featureEntries = feature.getEntries();
@@ -156,13 +157,13 @@ public class UpdateSiteArtifactRepositoryFactory extends ArtifactRepositoryFacto
artifactDescriptor = new SimpleArtifactDescriptor(key);
pluginURL = updateSite.getPluginURI(entry);
artifactDescriptor.setRepositoryProperty(PROP_ARTIFACT_REFERENCE,
- pluginURL.toString() + PACK_EXT);
+ pluginURL.toString() + PACK_EXT);
IProcessingStepDescriptor[] steps = new IProcessingStepDescriptor[] {
- new ProcessingStepDescriptor("org.eclipse.equinox.p2.processing.Pack200Unpacker", //$NON-NLS-1$
- null, true) };
+ new ProcessingStepDescriptor("org.eclipse.equinox.p2.processing.Pack200Unpacker", //$NON-NLS-1$
+ null, true) };
artifactDescriptor.setProcessingSteps(steps);
artifactDescriptor.setProperty(IArtifactDescriptor.FORMAT,
- IArtifactDescriptor.FORMAT_PACKED);
+ IArtifactDescriptor.FORMAT_PACKED);
allSiteArtifacts.add(artifactDescriptor);
}
}
@@ -173,7 +174,7 @@ public class UpdateSiteArtifactRepositoryFactory extends ArtifactRepositoryFacto
BundleDescription[] bundles = updateSite.loadBundles(monitor);
for (BundleDescription bundle : bundles) {
IArtifactKey bundleKey = BundlesAction.createBundleArtifactKey(bundle.getSymbolicName(),
- bundle.getVersion().toString());
+ bundle.getVersion().toString());
SimpleArtifactDescriptor bundleArtifactDescriptor = new SimpleArtifactDescriptor(bundleKey);
URI bundleURI = updateSite.getBundleURI(bundle.getSymbolicName(), bundle.getVersion().toString());
bundleArtifactDescriptor.setRepositoryProperty(PROP_ARTIFACT_REFERENCE, bundleURI.toString());
@@ -184,9 +185,9 @@ public class UpdateSiteArtifactRepositoryFactory extends ArtifactRepositoryFacto
bundleArtifactDescriptor = new SimpleArtifactDescriptor(bundleKey);
bundleURI = updateSite.getBundleURI(bundle.getSymbolicName(), bundle.getVersion().toString());
bundleArtifactDescriptor.setRepositoryProperty(PROP_ARTIFACT_REFERENCE,
- bundleURI.toString() + PACK_EXT);
+ bundleURI.toString() + PACK_EXT);
IProcessingStepDescriptor[] steps = new IProcessingStepDescriptor[] { new ProcessingStepDescriptor(
- "org.eclipse.equinox.p2.processing.Pack200Unpacker", null, true) }; //$NON-NLS-1$
+ "org.eclipse.equinox.p2.processing.Pack200Unpacker", null, true) }; //$NON-NLS-1$
bundleArtifactDescriptor.setProcessingSteps(steps);
bundleArtifactDescriptor.setProperty(IArtifactDescriptor.FORMAT, IArtifactDescriptor.FORMAT_PACKED);
allSiteArtifacts.add(bundleArtifactDescriptor);
diff --git a/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/metadata/UpdateSiteMetadataRepositoryFactory.java b/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/metadata/UpdateSiteMetadataRepositoryFactory.java
index 815d8baa6..97f805994 100644
--- a/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/metadata/UpdateSiteMetadataRepositoryFactory.java
+++ b/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/metadata/UpdateSiteMetadataRepositoryFactory.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2017 IBM Corporation and others.
+ * Copyright (c) 2008, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -13,6 +13,7 @@
* Ray Braithwood (ray@genuitec.com) - fix for bug 220605
* Code 9 - ongoing development
* Sonatype, Inc. - transport split
+ * Christoph Läubrich - Bug 481443 - CLassCastException While Downloading Repository that loads fine in RCP target
*******************************************************************************/
package org.eclipse.equinox.internal.p2.updatesite.metadata;
@@ -60,7 +61,11 @@ public class UpdateSiteMetadataRepositoryFactory extends MetadataRepositoryFacto
try {
initializeRepository(repository, location, monitor);
} catch (Exception e) {
- resetCache(repository);
+ try {
+ resetCache(repository);
+ } catch (RuntimeException rte) {
+ e.addSuppressed(rte);
+ }
if (e instanceof ProvisionException)
throw (ProvisionException) e;
if (e instanceof OperationCanceledException)
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/.classpath b/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/.classpath
+++ b/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/.settings/org.eclipse.jdt.core.prefs
index c75992293..0e7287cf7 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/.settings/org.eclipse.jdt.core.prefs
@@ -9,9 +9,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -27,6 +27,7 @@ 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.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -84,6 +85,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -120,7 +122,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -134,7 +137,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -255,7 +257,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -326,7 +327,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -471,7 +471,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=false
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/META-INF/MANIFEST.MF
index 1a4fc4d5e..ce94697f1 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %bundleName
Bundle-SymbolicName: org.eclipse.equinox.simpleconfigurator.manipulator;singleton:=true
-Bundle-Version: 2.1.400.qualifier
+Bundle-Version: 2.2.0.qualifier
Bundle-Localization: plugin
Bundle-ActivationPolicy: lazy
Import-Package: org.eclipse.equinox.frameworkadmin;version="[2.0.0,3.0.0)",
@@ -16,7 +16,7 @@ Import-Package: org.eclipse.equinox.frameworkadmin;version="[2.0.0,3.0.0)",
Bundle-Vendor: %providerName
Export-Package: org.eclipse.equinox.internal.simpleconfigurator.manipulator;x-friends:="org.eclipse.equinox.p2.touchpoint.eclipse",
org.eclipse.equinox.simpleconfigurator.manipulator;version="2.0.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.equinox.common;bundle-version="3.5.0"
Service-Component: OSGI-INF/configurator.xml
Automatic-Module-Name: org.eclipse.equinox.simpleconfigurator.manipulator
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/pom.xml b/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/pom.xml
index 8dab23d57..43581bbeb 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/pom.xml
+++ b/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.simpleconfigurator.manipulator</artifactId>
- <version>2.1.400-SNAPSHOT</version>
+ <version>2.2.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/src/org/eclipse/equinox/internal/simpleconfigurator/manipulator/SimpleConfiguratorManipulatorImpl.java b/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/src/org/eclipse/equinox/internal/simpleconfigurator/manipulator/SimpleConfiguratorManipulatorImpl.java
index 2013ac8af..9ae44275f 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/src/org/eclipse/equinox/internal/simpleconfigurator/manipulator/SimpleConfiguratorManipulatorImpl.java
+++ b/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/src/org/eclipse/equinox/internal/simpleconfigurator/manipulator/SimpleConfiguratorManipulatorImpl.java
@@ -5,15 +5,15 @@
* and is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors: IBM Corporation - initial API and implementation
- *
+ *
* Ericsson AB (Pascal Rapicault) - Bug 397216 -[Shared] Better shared
* configuration change discovery
- *
+ *
* Red Hat, Inc (Krzysztof Daniel) - Bug 421935: Extend simpleconfigurator to
* read .info files from many locations
- *
+ *
*******************************************************************************/
package org.eclipse.equinox.internal.simpleconfigurator.manipulator;
@@ -57,7 +57,7 @@ public class SimpleConfiguratorManipulatorImpl implements SimpleConfiguratorMani
/**
* Return the ConfiguratorConfigFile which is determined by the parameters set
* in Manipulator.
- *
+ *
* @param manipulator
* @return File
*/
@@ -156,8 +156,7 @@ public class SimpleConfiguratorManipulatorImpl implements SimpleConfiguratorMani
Integer sL0 = bslToList.keySet().iterator().next();// StartLevel == 0;
List<BundleInfo> list0 = bslToList.get(sL0);
if (sL0.intValue() == 0)
- for (Iterator<BundleInfo> ite2 = list0.iterator(); ite2.hasNext();) {
- BundleInfo bInfo = ite2.next();
+ for (BundleInfo bInfo : list0) {
if (isSystemBundle(bInfo.getLocation(), info)) {
setToSimpleConfig.add(bInfo);
break;
@@ -168,28 +167,25 @@ public class SimpleConfiguratorManipulatorImpl implements SimpleConfiguratorMani
List<BundleInfo> list = bslToList.get(sL);
if (sL.intValue() < configuratorSL) {
- for (Iterator<BundleInfo> ite2 = list.iterator(); ite2.hasNext();) {
- BundleInfo bInfo = ite2.next();
+ for (BundleInfo bInfo : list) {
if (!isSystemBundle(bInfo.getLocation(), info))
setToInitialConfig.add(bInfo);
}
} else if (sL.intValue() > configuratorSL) {
- for (Iterator<BundleInfo> ite2 = list.iterator(); ite2.hasNext();) {
- BundleInfo bInfo = ite2.next();
+ for (BundleInfo bInfo : list) {
if (isPrerequisiteBundles(bInfo.getLocation(), info)
- || isSystemFragmentBundle(bInfo.getLocation(), info))
+ || isSystemFragmentBundle(bInfo.getLocation(), info))
if (!isSystemBundle(bInfo.getLocation(), info))
setToInitialConfig.add(bInfo);
setToSimpleConfig.add(bInfo);
}
} else {
boolean found = false;
- for (Iterator<BundleInfo> ite2 = list.iterator(); ite2.hasNext();) {
- BundleInfo bInfo = ite2.next();
+ for (BundleInfo bInfo : list) {
if (found) {
if (!isSystemBundle(bInfo.getLocation(), info))
if (isPrerequisiteBundles(bInfo.getLocation(), info)
- || isSystemFragmentBundle(bInfo.getLocation(), info))
+ || isSystemFragmentBundle(bInfo.getLocation(), info))
setToInitialConfig.add(bInfo);
setToSimpleConfig.add(bInfo);
continue;
@@ -283,8 +279,7 @@ public class SimpleConfiguratorManipulatorImpl implements SimpleConfiguratorMani
private BundleInfo[] orderingInitialConfig(List<BundleInfo> setToInitialConfig) {
List<BundleInfo> notToBeStarted = new LinkedList<>();
List<BundleInfo> toBeStarted = new LinkedList<>();
- for (Iterator<BundleInfo> ite2 = setToInitialConfig.iterator(); ite2.hasNext();) {
- BundleInfo bInfo = ite2.next();
+ for (BundleInfo bInfo : setToInitialConfig) {
if (bInfo.isMarkedAsStarted())
toBeStarted.add(bInfo);
else
@@ -397,9 +392,7 @@ public class SimpleConfiguratorManipulatorImpl implements SimpleConfiguratorMani
// convert to FrameworkAdmin BundleInfo Type
BundleInfo[] result = new BundleInfo[simpleBundles.size()];
int i = 0;
- for (Iterator<org.eclipse.equinox.internal.simpleconfigurator.utils.BundleInfo> iterator = simpleBundles
- .iterator(); iterator.hasNext();) {
- org.eclipse.equinox.internal.simpleconfigurator.utils.BundleInfo simpleInfo = iterator.next();
+ for (org.eclipse.equinox.internal.simpleconfigurator.utils.BundleInfo simpleInfo : simpleBundles) {
URI location = simpleInfo.getLocation();
if (!location.isAbsolute() && simpleInfo.getBaseLocation() != null)
location = URIUtil.makeAbsolute(location, simpleInfo.getBaseLocation());
@@ -573,7 +566,7 @@ public class SimpleConfiguratorManipulatorImpl implements SimpleConfiguratorMani
String[] jvmArgs = manipulator.getLauncherData().getJvmArgs();
for (String jvmArg : jvmArgs) {
if (jvmArg.startsWith("-D")) {
- //$NON-NLS-1$
+ // $NON-NLS-1$
int index = jvmArg.indexOf("="); //$NON-NLS-1$
if (index > 0 && jvmArg.length() > 2) {
String key = jvmArg.substring(2, index);
@@ -607,27 +600,26 @@ public class SimpleConfiguratorManipulatorImpl implements SimpleConfiguratorMani
if (exclusiveInstallation)
for (BundleInfo currentBInfo : currentBInfos) {
boolean install = false;
- for (BundleInfo toInstall1 : toInstall) {
- if (currentBInfo.getLocation().equals(toInstall1.getLocation())) {
- install = true;
- break;
+ for (BundleInfo toInstall1 : toInstall) {
+ if (currentBInfo.getLocation().equals(toInstall1.getLocation())) {
+ install = true;
+ break;
+ }
+ }
+ if (!install) {
+ toUninstall.add(currentBInfo);
}
}
- if (!install) {
- toUninstall.add(currentBInfo);
- }
- }
for (BundleInfo toInstall1 : toInstall) {
try {
bundleState.installBundle(toInstall1);
- }catch (RuntimeException e) {
+ } catch (RuntimeException e) {
// Ignore
}
}
if (exclusiveInstallation)
- for (Iterator<BundleInfo> ite = toUninstall.iterator(); ite.hasNext();) {
- BundleInfo bInfo = ite.next();
+ for (BundleInfo bInfo : toUninstall) {
bundleState.uninstallBundle(bInfo);
}
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/src/org/eclipse/equinox/internal/simpleconfigurator/manipulator/SimpleConfiguratorManipulatorUtils.java b/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/src/org/eclipse/equinox/internal/simpleconfigurator/manipulator/SimpleConfiguratorManipulatorUtils.java
index f258560cb..144787417 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/src/org/eclipse/equinox/internal/simpleconfigurator/manipulator/SimpleConfiguratorManipulatorUtils.java
+++ b/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/src/org/eclipse/equinox/internal/simpleconfigurator/manipulator/SimpleConfiguratorManipulatorUtils.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors: IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.internal.simpleconfigurator.manipulator;
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/src/org/eclipse/equinox/simpleconfigurator/manipulator/SimpleConfiguratorManipulator.java b/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/src/org/eclipse/equinox/simpleconfigurator/manipulator/SimpleConfiguratorManipulator.java
index 87de0616f..b8bc1a165 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/src/org/eclipse/equinox/simpleconfigurator/manipulator/SimpleConfiguratorManipulator.java
+++ b/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/src/org/eclipse/equinox/simpleconfigurator/manipulator/SimpleConfiguratorManipulator.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors: IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -40,7 +40,7 @@ public interface SimpleConfiguratorManipulator {
public static final String SOURCE_INFO = new String("source.info"); //$NON-NLS-1$
/**
- * An instance of an ISimpleConfiguratorManipulator is registered as a ConfiguratorManipulator
+ * An instance of an ISimpleConfiguratorManipulator is registered as a ConfiguratorManipulator
* service with ConfiguratorManipulator.SERVICE_PROP_KEY_CONFIGURATOR_BUNDLESYMBOLICNAME =
* SERVICE_PROP_VALUE_CONFIGURATOR_SYMBOLICNAME.
*/
@@ -49,7 +49,7 @@ public interface SimpleConfiguratorManipulator {
/**
* Load the configuration file for the currently running system.
* <p>
- * Pass null for bundleInfoPath to read the bundle configuration file for the running system as
+ * Pass null for bundleInfoPath to read the bundle configuration file for the running system as
* specified by the "org.eclipse.equinox.simpleconfigurator.configUrl" system property.
* </p>
* <p>If bundleInfoPath == {@link #SOURCE_INFO} the default source configuration file for the running
@@ -66,7 +66,7 @@ public interface SimpleConfiguratorManipulator {
/**
* Load the configuration from the given input stream
* The supplied input stream is consumed by this method and will be closed.
- *
+ *
* @param configuration - the input stream to read the configuration from. The stream will be closed even if an exception is thrown
* @param installArea - Relative URIs from the configuration file will be resolved relative to here
* @return The loaded configuration. Bundles will have at least symbolic name, version and location information.
@@ -78,7 +78,7 @@ public interface SimpleConfiguratorManipulator {
* Save the configuration to the given output stream
* The output stream is flushed and left open.
* To be persisted, bundles are required to have at least a symbolic name, version and location.
- *
+ *
* @param configuration - bundle information to save
* @param outputStream - the output stream to write to. Stream is not closed
* @param installArea - bundle locations are written as relative to this URI
@@ -89,11 +89,11 @@ public interface SimpleConfiguratorManipulator {
/**
* Save the configuration to the specified file
* To be persisted, bundles are required to have at least a symbolic name, version and location.
- *
+ *
* @param configuration - bundle information to save
* @param configurationFile - file to save the configuration in
* @param installArea - bundle locations are written as relative to this URI
- *
+ *
* @throws IOException
*/
public void saveConfiguration(BundleInfo[] configuration, File configurationFile, URI installArea) throws IOException;
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator/.classpath b/bundles/org.eclipse.equinox.simpleconfigurator/.classpath
index eca7bdba8..e801ebfb4 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator/.classpath
+++ b/bundles/org.eclipse.equinox.simpleconfigurator/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.simpleconfigurator/.settings/org.eclipse.jdt.core.prefs
index c92cf7ace..f27603dba 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.simpleconfigurator/.settings/org.eclipse.jdt.core.prefs
@@ -10,9 +10,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -28,6 +28,7 @@ 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=ignore
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -85,6 +86,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warn
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
@@ -121,7 +123,8 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
@@ -135,7 +138,6 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
@@ -256,7 +258,6 @@ org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
@@ -327,7 +328,6 @@ org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
@@ -472,7 +472,6 @@ org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.simpleconfigurator/META-INF/MANIFEST.MF
index 48b84986d..de39e26b8 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.simpleconfigurator/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.equinox.simpleconfigurator;singleton:=true
-Bundle-Version: 1.3.400.qualifier
+Bundle-Version: 1.4.0.qualifier
Bundle-Name: %bundleName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -11,6 +11,7 @@ Import-Package: org.eclipse.osgi.framework.console;version="1.0.0";resolution:=o
org.eclipse.osgi.service.datalocation;version="1.0.0";resolution:=optional,
org.osgi.framework;version="1.3.0",
org.osgi.framework.namespace;version="1.0.0",
+ org.osgi.framework.startlevel;version="1.0.0",
org.osgi.framework.wiring;version="1.2.0",
org.osgi.resource;version="1.0.0",
org.osgi.service.packageadmin;version="1.2.0",
@@ -25,5 +26,5 @@ Export-Package: org.eclipse.equinox.internal.provisional.configurator;
org.eclipse.equinox.internal.simpleconfigurator;x-friends:="org.eclipse.equinox.simpleconfigurator.manipulator",
org.eclipse.equinox.internal.simpleconfigurator.console;x-internal:=true,
org.eclipse.equinox.internal.simpleconfigurator.utils;x-friends:="org.eclipse.equinox.simpleconfigurator.manipulator"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.eclipse.equinox.simpleconfigurator
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator/pom.xml b/bundles/org.eclipse.equinox.simpleconfigurator/pom.xml
index ba3d418cc..5a9a88217 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator/pom.xml
+++ b/bundles/org.eclipse.equinox.simpleconfigurator/pom.xml
@@ -4,11 +4,11 @@
<parent>
<groupId>org.eclipse.equinox.p2</groupId>
<artifactId>rt.equinox.p2</artifactId>
- <version>4.14.0-SNAPSHOT</version>
+ <version>4.24.0-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.simpleconfigurator</artifactId>
- <version>1.3.400-SNAPSHOT</version>
+ <version>1.4.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/provisional/configurator/Configurator.java b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/provisional/configurator/Configurator.java
index b7f497d73..a083707de 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/provisional/configurator/Configurator.java
+++ b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/provisional/configurator/Configurator.java
@@ -19,52 +19,52 @@ import java.net.URL;
/**
* The implementation of this interface will be registered into a service registry
* by a Configurator Bundle.
- *
+ *
* The client bundle can apply configuration which can be interpreted by referring
- * the specified location to the current running OSGi environment. In addition,
- * the client can expect bundle state in advance .
- *
+ * the specified location to the current running OSGi environment. In addition,
+ * the client can expect bundle state in advance .
+ *
* TODO: this interface might not be required to be defined.
- *
- *
+ *
+ *
* **********************************************
- * Current Definition of Configurator Bundle:
- *
+ * Current Definition of Configurator Bundle:
+ *
* Configurator Bundle will do the following operation at its startup.
- *
+ *
* 1. Create a Configurator object.
* 2. Register it as a service to the service registry.
* 3. Get where to read for knowing what kinds of bundles in its implementation dependent way.
* 4. Call {@link Configurator#applyConfiguration(URL)} with the URL.
- *
+ *
* At its stopping, the service registered will be unregistered.
- *
+ *
* see org.eclipse.equinox.internal.provisional.configuratormanipulato.ConfiguratorManipulator
*
*/
public interface Configurator {
/**
- * Apply configuration read from the specified url to the OSGi
+ * Apply configuration read from the specified url to the OSGi
* environment currently running.
- *
+ *
* @param url URL to be read.
- * @throws IOException - If reading information from the specified url fails.
+ * @throws IOException - If reading information from the specified url fails.
*/
void applyConfiguration(URL url) throws IOException;
/**
- * Apply configuration read from the previously used url to the OSGi
+ * Apply configuration read from the previously used url to the OSGi
* environment currently running. If it is never used, do nothing.
- *
- * @throws IOException - If reading information from the specified url fails.
+ *
+ * @throws IOException - If reading information from the specified url fails.
*/
void applyConfiguration() throws IOException;
/**
* Return the url in use.
* If it is never used, return null.
- *
+ *
* @return URL
*/
URL getUrlInUse();
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/Activator.java b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/Activator.java
index 8832c3007..69c35058b 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/Activator.java
+++ b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/Activator.java
@@ -24,32 +24,32 @@ import org.osgi.framework.*;
/**
* At its start, SimpleConfigurator bundle does the followings.
- *
- * 1. A value will be gotten by @{link BundleContext#getProperty(key)} with
+ *
+ * 1. A value will be gotten by @{link BundleContext#getProperty(key)} with
* {@link SimpleConfiguratorConstants#PROP_KEY_CONFIGURL} as a key.
- * The value will be used for the referal URL. Under the url, there must be a simple
+ * The value will be used for the referal URL. Under the url, there must be a simple
* bundles list file to be installed with thier start level and flag of marked as started.
- *
+ *
* 2. If the value is null, do nothing any more.
* 3. Otherwise, retrieve the bundles list from the url and install,
* set start level of and start bundles, as specified.
- *
- * 4. A value will be gotten by @{link BundleContext#getProperty(key)} with
+ *
+ * 4. A value will be gotten by @{link BundleContext#getProperty(key)} with
* {@link SimpleConfiguratorConstants#PROP_KEY_EXCLUSIVE_INSTALLATION} as a key.
- *
- * 5. If it equals "false", it will do exclusive installation, which means that
+ *
+ * 5. If it equals "false", it will do exclusive installation, which means that
* the bundles will not be listed in the specified url but installed at the time
- * of the method call except SystemBundle will be uninstalled.
+ * of the method call except SystemBundle will be uninstalled.
* Otherwise, no uninstallation will not be done.
- *
+ *
*/
public class Activator implements BundleActivator {
public final static boolean DEBUG = false;
/**
- * If this property is set to true, simpleconfigurator will attempt to read
+ * If this property is set to true, simpleconfigurator will attempt to read
* multiple *.info files.
- *
+ *
* This field is writable only for test purposes.
*/
public static String EXTENSIONS = System.getProperty("p2.fragments");
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/ConfigApplier.java b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/ConfigApplier.java
index 61999ce0b..9bed80fc7 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/ConfigApplier.java
+++ b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/ConfigApplier.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2018 IBM Corporation and others.
+ * Copyright (c) 2007, 2020 IBM Corporation and others.
* All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which accompanies this distribution,
@@ -7,8 +7,8 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
+ *
+ * Contributors:
* IBM Corporation - initial API and implementation
* Red Hat, Inc (Krzysztof Daniel) - Bug 421935: Extend simpleconfigurator to
* read .info files from many locations, Bug 460967
@@ -22,11 +22,11 @@ import java.util.concurrent.CountDownLatch;
import org.eclipse.equinox.internal.simpleconfigurator.utils.*;
import org.osgi.framework.*;
import org.osgi.framework.namespace.*;
+import org.osgi.framework.startlevel.BundleStartLevel;
import org.osgi.framework.wiring.*;
import org.osgi.resource.Namespace;
import org.osgi.resource.Requirement;
import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.service.startlevel.StartLevel;
class ConfigApplier {
private static final String LAST_BUNDLES_INFO = "last.bundles.info"; //$NON-NLS-1$
@@ -34,7 +34,6 @@ class ConfigApplier {
private final BundleContext manipulatingContext;
private final PackageAdmin packageAdminService;
- private final StartLevel startLevelService;
private final FrameworkWiring frameworkWiring;
private final boolean runningOnEquinox;
private final boolean inDevMode;
@@ -54,11 +53,6 @@ class ConfigApplier {
throw new IllegalStateException("No PackageAdmin service is available."); //$NON-NLS-1$
packageAdminService = manipulatingContext.getService(packageAdminRef);
- ServiceReference<StartLevel> startLevelRef = manipulatingContext.getServiceReference(StartLevel.class);
- if (startLevelRef == null)
- throw new IllegalStateException("No StartLevelService service is available."); //$NON-NLS-1$
- startLevelService = manipulatingContext.getService(startLevelRef);
-
frameworkWiring = manipulatingContext.getBundle(Constants.SYSTEM_BUNDLE_LOCATION).adapt(FrameworkWiring.class);
}
@@ -107,12 +101,24 @@ class ConfigApplier {
if (toUninstall != null)
toRefresh.addAll(uninstallBundles(toUninstall));
}
- refreshPackages(toRefresh.toArray(new Bundle[toRefresh.size()]), manipulatingContext);
- if (toRefresh.size() > 0) {
- Bundle[] additionalRefresh = getAdditionalRefresh(prevouslyResolved, toRefresh);
- if (additionalRefresh.length > 0)
- refreshPackages(additionalRefresh, manipulatingContext);
+ if (!toRefresh.isEmpty()) {
+ if (manipulatingContext.getBundle().getState() == Bundle.STARTING) {
+ // This is the startup of simple configurator.
+ // Do the full refresh of all bundles to force re-resolve
+ refreshAllBundles();
+ } else {
+ // In this case the platform is up, we should try to do an incremental resolve
+ // TODO consider removing this case because it can cause inconsistent results.
+ refreshPackages(toRefresh.toArray(new Bundle[toRefresh.size()]), manipulatingContext);
+ if (toRefresh.size() > 0) {
+ Bundle[] additionalRefresh = getAdditionalRefresh(prevouslyResolved, toRefresh);
+ if (additionalRefresh.length > 0)
+ refreshPackages(additionalRefresh, manipulatingContext);
+ }
+ }
+
}
+
startBundles(toStart.toArray(new Bundle[toStart.size()]));
}
@@ -221,6 +227,47 @@ class ConfigApplier {
return resolved;
}
+ private void refreshAllBundles() {
+ Set<Bundle> toRefresh = new HashSet<>(frameworkWiring.getRemovalPendingBundles());
+ Set<Bundle> doNotRefresh = getDoNotRefresh();
+ for (Bundle bundle : manipulatingContext.getBundles()) {
+ if (!doNotRefresh.contains(bundle)) {
+ toRefresh.add(bundle);
+ }
+ }
+
+ CountDownLatch latch = new CountDownLatch(1);
+ FrameworkListener listener = event -> {
+ if (event.getType() == FrameworkEvent.PACKAGES_REFRESHED) {
+ latch.countDown();
+ }
+ };
+ frameworkWiring.refreshBundles(toRefresh, listener);
+ try {
+ latch.await();
+ } catch (InterruptedException e) {
+ // ignore
+ }
+ }
+
+ private Set<Bundle> getDoNotRefresh() {
+ Set<Bundle> doNotRefresh = new HashSet<>();
+ doNotRefresh.add(manipulatingContext.getBundle());
+ Bundle systemBundle = manipulatingContext.getBundle(Constants.SYSTEM_BUNDLE_LOCATION);
+ doNotRefresh.add(systemBundle);
+ BundleWiring systemWiring = systemBundle.adapt(BundleWiring.class);
+ if (systemWiring != null) {
+ for (BundleWire hostWire : systemWiring.getProvidedWires(HostNamespace.HOST_NAMESPACE)) {
+ Bundle systemFragment = hostWire.getRequirer().getBundle();
+ if (systemFragment.getState() != Bundle.UNINSTALLED
+ && systemFragment.adapt(BundleWiring.class) != null) {
+ doNotRefresh.add(systemFragment);
+ }
+ }
+ }
+ return doNotRefresh;
+ }
+
private Collection<Bundle> uninstallBundles(HashSet<BundleInfo> toUninstall) {
Collection<Bundle> removedBundles = new ArrayList<>(toUninstall.size());
for (BundleInfo current : toUninstall) {
@@ -245,8 +292,8 @@ class ConfigApplier {
List<InputStream> sourceStreams = new ArrayList<>(sourcesLocation.size() + 1);
sourceStreams.add(url.openStream());
if (Activator.EXTENDED) {
- for (int i = 0; i < sourcesLocation.size(); i++) {
- sourceStreams.add(new FileInputStream(sourcesLocation.get(i)));
+ for (File source : sourcesLocation) {
+ sourceStreams.add(new FileInputStream(source));
}
}
SimpleConfiguratorUtils.transferStreams(sourceStreams, destinationStream);
@@ -361,13 +408,13 @@ class ConfigApplier {
continue;
if (current.getBundleId() == 0)
continue;
- if (packageAdminService.getBundleType(current) == PackageAdmin.BUNDLE_TYPE_FRAGMENT)
+ if (isFragment(current))
continue;
if (SimpleConfiguratorConstants.TARGET_CONFIGURATOR_NAME.equals(current.getSymbolicName()))
continue;
try {
- startLevelService.setBundleStartLevel(current, startLevel);
+ current.adapt(BundleStartLevel.class).setStartLevel(startLevel);
} catch (IllegalArgumentException ex) {
Utils.log(4, null, null, "Failed to set start level of Bundle:" + element, ex); //$NON-NLS-1$
}
@@ -375,6 +422,11 @@ class ConfigApplier {
return toRefresh;
}
+ private boolean isFragment(Bundle current) {
+ BundleRevision revision = current.adapt(BundleRevision.class);
+ return (revision != null) && ((revision.getTypes() & BundleRevision.TYPE_FRAGMENT) != 0);
+ }
+
private void refreshPackages(Bundle[] bundles, BundleContext context) {
if (bundles.length == 0 || packageAdminService == null)
return;
@@ -428,7 +480,7 @@ class ConfigApplier {
}
if (bundle.getState() == Bundle.STARTING && (bundle == callingBundle || bundle == manipulatingContext.getBundle()))
continue;
- if (packageAdminService.getBundleType(bundle) == PackageAdmin.BUNDLE_TYPE_FRAGMENT)
+ if (isFragment(bundle))
continue;
if (bundle.getBundleId() == 0)
continue;
@@ -446,8 +498,8 @@ class ConfigApplier {
}
/**
- * Uninstall bundles which are not listed on finalList.
- *
+ * Uninstall bundles which are not listed on finalList.
+ *
* @param finalList bundles list not to be uninstalled.
* @param packageAdmin package admin service.
* @return Collection HashSet of bundles finally installed.
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/SimpleConfiguratorImpl.java b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/SimpleConfiguratorImpl.java
index 292de22d2..4994ab718 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/SimpleConfiguratorImpl.java
+++ b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/SimpleConfiguratorImpl.java
@@ -7,12 +7,12 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Ericsson AB (Pascal Rapicault) - Bug 397216 -[Shared] Better shared configuration change discovery
* Red Hat, Inc (Krzysztof Daniel) - Bug 421935: Extend simpleconfigurator to
- * read .info files from many locations
+ * read .info files from many locations
*******************************************************************************/
package org.eclipse.equinox.internal.simpleconfigurator;
@@ -29,9 +29,9 @@ import org.osgi.framework.BundleContext;
* SimpleConfigurator provides ways to install bundles listed in a file
* accessible by the specified URL and expect states for it in advance without
* actual application.
- *
+ *
* In every methods of SimpleConfiguration object,
- *
+ *
* 1. A value will be gotten by @{link BundleContext#getProperty(key) with
* {@link SimpleConfiguratorConstants#PROP_KEY_EXCLUSIVE_INSTALLATION} as a key.
* 2. If it equals "true", it will do exclusive installation, which means that
@@ -115,7 +115,7 @@ public class SimpleConfiguratorImpl implements Configurator {
/**
* This method is public for testing purposes only.
* @param relativeURL - a relative URL of the configuration
- * @param configURL - an array of parent config URLs to which relativeURL can be appended.
+ * @param configURL - an array of parent config URLs to which relativeURL can be appended.
*/
public URL chooseConfigurationURL(URL relativeURL, URL[] configURL) throws MalformedURLException {
if (configURL != null) {
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/console/ConfiguratorCommandProvider.java b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/console/ConfiguratorCommandProvider.java
index a6763deac..a674e2288 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/console/ConfiguratorCommandProvider.java
+++ b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/console/ConfiguratorCommandProvider.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -44,7 +44,7 @@ public class ConfiguratorCommandProvider implements CommandProvider {
/**
* Apply the current configuration
- * @param interpreter
+ * @param interpreter
*/
public void _confapply(CommandInterpreter interpreter) {
String parameter = interpreter.nextArgument();
@@ -57,7 +57,7 @@ public class ConfiguratorCommandProvider implements CommandProvider {
/**
* Handles the help command
- *
+ *
* @param intp
* @return description for a particular command or false if there is no command with the specified name
*/
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/BundleInfo.java b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/BundleInfo.java
index c5a7499e6..2c9e3201e 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/BundleInfo.java
+++ b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/BundleInfo.java
@@ -8,7 +8,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/
package org.eclipse.equinox.internal.simpleconfigurator.utils;
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/EquinoxUtils.java b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/EquinoxUtils.java
index 7524a22e0..6fb494cee 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/EquinoxUtils.java
+++ b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/EquinoxUtils.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/
package org.eclipse.equinox.internal.simpleconfigurator.utils;
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorConstants.java b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorConstants.java
index bc5a3fb4c..99ebd58f6 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorConstants.java
+++ b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorConstants.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -15,20 +15,20 @@ package org.eclipse.equinox.internal.simpleconfigurator.utils;
public class SimpleConfiguratorConstants {
/**
- * If BundleContext#getProperty(PROP_KEY_EXCLUSIVE_INSTALLATION) equals "true" ignoring case,
- * Configurator.applyConfiguration(url) will uninstall the installed bundles which are not
+ * If BundleContext#getProperty(PROP_KEY_EXCLUSIVE_INSTALLATION) equals "true" ignoring case,
+ * Configurator.applyConfiguration(url) will uninstall the installed bundles which are not
* listed in the simpleconfigurator config file after install bundles listed.
- * Otherwise, it never uninstall any bundles.
- *
+ * Otherwise, it never uninstall any bundles.
+ *
* Default: true
*/
public static final String PROP_KEY_EXCLUSIVE_INSTALLATION = "org.eclipse.equinox.simpleconfigurator.exclusiveInstallation"; //$NON-NLS-1$
/**
- * If BundleContext#getProperty(PROP_KEY_USE_REFERENCE) does not equal "false" ignoring case,
+ * If BundleContext#getProperty(PROP_KEY_USE_REFERENCE) does not equal "false" ignoring case,
* when a SimpleConfigurator installs a bundle, "reference:" is added to its bundle location in order to avoid
* caching its bundle jar. Otherwise, it will add nothing to any bundle location.
- *
+ *
* Default: true
*/
public static final String PROP_KEY_USE_REFERENCE = "org.eclipse.equinox.simpleconfigurator.useReference"; //$NON-NLS-1$
@@ -37,7 +37,7 @@ public class SimpleConfiguratorConstants {
* BundleContext#getProperty(PROP_KEY_CONFIGURL) is used for SimpleConfigurator to do life cycle control of bundles.
* The file specified by the returned url is read by SimpleConfigurator and do life cycle control according to it.
* If improper value or null is returned, SimpleConfigurator doesn't do it.
- *
+ *
* Default: null
*/
public static final String PROP_KEY_CONFIGURL = "org.eclipse.equinox.simpleconfigurator.configUrl"; //$NON-NLS-1$
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java
index dfd9496fe..3fdde1880 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java
+++ b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java
@@ -7,8 +7,8 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
+ *
+ * Contributors:
* IBM Corporation - initial API and implementation
* Red Hat, Inc (Krzysztof Daniel) - Bug 421935: Extend simpleconfigurator to
* read .info files from many locations
@@ -200,8 +200,8 @@ public class SimpleConfiguratorUtils {
/**
* Read the configuration from the given InputStream
- *
- * @param stream - the stream is always closed
+ *
+ * @param stream - the stream is always closed
* @param base
* @return List of {@link BundleInfo}
* @throws IOException
@@ -234,9 +234,9 @@ public class SimpleConfiguratorUtils {
}
/*
- * We expect the first line of the bundles.info to be
+ * We expect the first line of the bundles.info to be
* #encoding=UTF-8
- * if it isn't, then it is an older bundles.info and should be
+ * if it isn't, then it is an older bundles.info and should be
* read with the default encoding
*/
private static String determineEncoding(BufferedInputStream stream) {
@@ -333,12 +333,12 @@ public class SimpleConfiguratorUtils {
public static void transferStreams(List<InputStream> sources, OutputStream destination) throws IOException {
destination = new BufferedOutputStream(destination);
try {
- for (int i = 0; i < sources.size(); i++) {
- try (InputStream source = new BufferedInputStream(sources.get(i))) {
+ for (InputStream source : sources) {
+ try (InputStream bufferedSource = new BufferedInputStream(source)) {
byte[] buffer = new byte[8192];
while (true) {
int bytesRead = -1;
- if ((bytesRead = source.read(buffer)) == -1)
+ if ((bytesRead = bufferedSource.read(buffer)) == -1)
break;
destination.write(buffer, 0, bytesRead);
}
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/URIUtil.java b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/URIUtil.java
index e7c945452..43ac01db5 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/URIUtil.java
+++ b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/URIUtil.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors: IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.internal.simpleconfigurator.utils;
@@ -180,8 +180,8 @@ public class URIUtil {
/**
* Returns a URI as a URL.
- *
- * @throws MalformedURLException
+ *
+ * @throws MalformedURLException
*/
public static URL toURL(URI uri) throws MalformedURLException {
return new URL(uri.toString());
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/Utils.java b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/Utils.java
index c925546bf..0ca249a43 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/Utils.java
+++ b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/Utils.java
@@ -7,7 +7,7 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors: IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.internal.simpleconfigurator.utils;
@@ -21,7 +21,7 @@ import java.util.List;
/*
* This class was copied from org.eclipse.equinox.internal.frameworkadmin.utils
* package of org.eclipse.equinox.frameworkadmin plugin on March 3 2007.
- *
+ *
* The reason why it was copied is to make simpleconfigurator dependent on any
* bundles(org.eclipse.equinox.framework).
*/

Back to the top