diff options
| author | Jessy Mallet | 2014-09-30 12:40:09 +0000 |
|---|---|---|
| committer | Laurent Redor | 2014-11-13 10:49:26 +0000 |
| commit | b8054650f683fe0972ac5418ccf4954fe83b1b13 (patch) | |
| tree | 61618b10866a6518ef1e33ababd8b693b646847a | |
| parent | 54ab91e123c75d5fe28c2470069f3a20f031aaca (diff) | |
| download | org.eclipse.sirius-b8054650f683fe0972ac5418ccf4954fe83b1b13.tar.gz org.eclipse.sirius-b8054650f683fe0972ac5418ccf4954fe83b1b13.tar.xz org.eclipse.sirius-b8054650f683fe0972ac5418ccf4954fe83b1b13.zip | |
[444578] Fix Manifest file generated by VSP wizard
Modification of the specified execution environment in Manifest content
(generated by VSP wizard) should be the default one.
Bug: 444578
Change-Id: I407183a2cd6091748ec5ebeaa3de704898927f54
Signed-off-by: Jessy Mallet <jessy.mallet@obeo.fr>
5 files changed, 69 insertions, 4 deletions
diff --git a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/editor/vsm/ViewpointSpecificationProjectCreationTest.java b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/editor/vsm/ViewpointSpecificationProjectCreationTest.java index cd81152b36..c1b741eaf8 100644 --- a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/editor/vsm/ViewpointSpecificationProjectCreationTest.java +++ b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/editor/vsm/ViewpointSpecificationProjectCreationTest.java @@ -10,6 +10,11 @@ *******************************************************************************/ package org.eclipse.sirius.tests.swtbot.editor.vsm; +import java.io.IOException; +import java.io.InputStream; +import java.util.jar.Attributes; +import java.util.jar.Manifest; + import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProjectNature; @@ -23,6 +28,7 @@ import org.eclipse.sirius.tests.support.api.TestsUtil; import org.eclipse.sirius.tests.swtbot.support.api.AbstractSiriusSwtBotGefTestCase; import org.eclipse.sirius.tests.swtbot.support.api.condition.ItemEnabledCondition; import org.eclipse.sirius.tests.swtbot.support.utils.SWTBotUtils; +import org.eclipse.sirius.ui.tools.api.project.ViewpointSpecificationProject; import org.eclipse.swtbot.eclipse.gef.finder.SWTGefBot; import org.eclipse.swtbot.swt.finder.waits.Conditions; import org.eclipse.swtbot.swt.finder.waits.DefaultCondition; @@ -105,6 +111,14 @@ public class ViewpointSpecificationProjectCreationTest extends AbstractSiriusSwt assertNotNull(VSP_SHOULD_CONTAIN + ".project file.", project.getFile(".project")); assertNotNull(VSP_SHOULD_CONTAIN + "MANIFEST.MF file.", project.getFile("META-INF/MANIFEST.MF")); + // Check that the created Manifest contains the default environment + // execution of the user + try { + checkManifestContent(project); + } catch (IOException e1) { + fail("Cannot read the Manifest"); + } + // Check that the created odesign does not need migration (version tag // must be initialized) VSMVersionSAXParser parser = new VSMVersionSAXParser(URI.createPlatformResourceURI(vsm.getFullPath().toOSString())); @@ -122,6 +136,26 @@ public class ViewpointSpecificationProjectCreationTest extends AbstractSiriusSwt } + private void checkManifestContent(IProject project) throws IOException { + // Check the Manifest contents about environment execution + InputStream is = null; + try { + is = project.getFile("META-INF/MANIFEST.MF").getContents(); + try { + Manifest manifest = new Manifest(is); + Attributes attributes = manifest.getMainAttributes(); + String currentJseId = attributes.getValue("Bundle-RequiredExecutionEnvironment"); + assertEquals("The JSE name should be the name of the default environment execution.", ViewpointSpecificationProject.getDefaultJseId(), currentJseId); + } catch (IOException ex) { + fail("Error while reading Bundle-RequiredExecutionEnvironment: " + ex.getMessage()); + } + } catch (CoreException e) { + fail("Cannot read the Manifest content"); + } finally { + is.close(); + } + } + private void checkNatures(IProject project) { // Check the natures IProjectNature nature = null; diff --git a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/suite/AllTestSuite.java b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/suite/AllTestSuite.java index 6895c3febb..5f1440e279 100644 --- a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/suite/AllTestSuite.java +++ b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/suite/AllTestSuite.java @@ -82,8 +82,8 @@ public class AllTestSuite extends TestCase { public static Test suite() { final TestSuite suite = new TestSuite("Sirius SwtBot tests"); - // TheViepointProjectCreationTest shud be done before the others ones : - // to verifiy the behavior when a specifier first launches the product. + // TheViepointProjectCreationTest should be done before the others ones: + // to verify the behavior when a specifier first launches the product. suite.addTestSuite(ViewpointSpecificationProjectCreationTest.class); suite.addTestSuite(ContentAssistTest.class); diff --git a/plugins/org.eclipse.sirius.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.sirius.ui/META-INF/MANIFEST.MF index e4db4d4ca0..0cbaed6364 100644 --- a/plugins/org.eclipse.sirius.ui/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.sirius.ui/META-INF/MANIFEST.MF @@ -110,7 +110,8 @@ Require-Bundle: com.google.guava;bundle-version="[11.0.2,16.0)", org.eclipse.ui.navigator;bundle-version="3.5.200", org.eclipse.ui.views.properties.tabbed;bundle-version="3.5.300", org.eclipse.core.expressions;bundle-version="3.4.400", - org.eclipse.ui.editors;bundle-version="3.8.0" + org.eclipse.ui.editors;bundle-version="3.8.0", + org.eclipse.jdt.launching;bundle-version="3.6.101" Eclipse-LazyStart: true Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-ActivationPolicy: lazy diff --git a/plugins/org.eclipse.sirius.ui/resources/MANIFEST.MF b/plugins/org.eclipse.sirius.ui/resources/MANIFEST.MF index 9a693f81a4..95be991852 100644 --- a/plugins/org.eclipse.sirius.ui/resources/MANIFEST.MF +++ b/plugins/org.eclipse.sirius.ui/resources/MANIFEST.MF @@ -10,4 +10,4 @@ Require-Bundle: org.eclipse.ui, org.eclipse.sirius, org.eclipse.sirius.common.acceleo.mtl Bundle-ActivationPolicy: lazy -Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Bundle-RequiredExecutionEnvironment: %jseId diff --git a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/project/ViewpointSpecificationProject.java b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/project/ViewpointSpecificationProject.java index 88e0120d00..67da3ad025 100644 --- a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/project/ViewpointSpecificationProject.java +++ b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/project/ViewpointSpecificationProject.java @@ -50,6 +50,10 @@ import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.emf.ecore.xmi.XMLResource; +import org.eclipse.jdt.launching.IVMInstall; +import org.eclipse.jdt.launching.JavaRuntime; +import org.eclipse.jdt.launching.environments.IExecutionEnvironment; +import org.eclipse.jdt.launching.environments.IExecutionEnvironmentsManager; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.dialogs.ProgressMonitorDialog; import org.eclipse.jface.operation.IRunnableContext; @@ -205,6 +209,31 @@ public final class ViewpointSpecificationProject { } /** + * Get default execution environment based on strict match to default VM. + * This code is based on {@link + * org.eclipse.pde.internal.ui.wizards.plugin.PluginContentPage. + * createExecutionEnvironmentControls(Composite)}. + * + * @return The default execution environment. + */ + public static String getDefaultJseId() { + String result = null; + IVMInstall defaultVM = JavaRuntime.getDefaultVMInstall(); + IExecutionEnvironmentsManager manager = JavaRuntime.getExecutionEnvironmentsManager(); + for (IExecutionEnvironment executionEnvironment : manager.getExecutionEnvironments()) { + if (executionEnvironment.isStrictlyCompatible(defaultVM)) { + result = executionEnvironment.getId(); + break; + } + } + if (result == null) { + // Use java.version property to set the execution environment. + result = "JavaSE-" + System.getProperty("java.version").substring(0, 3); + } + return result; + } + + /** * Create a new folder in a project. * * @param prj @@ -345,6 +374,7 @@ public final class ViewpointSpecificationProject { replacements.put("projectName", projectName); //$NON-NLS-1$ replacements.put("modelName", modelNameWithoutExtension); //$NON-NLS-1$ replacements.put("packageName", packageName); + replacements.put("jseId", getDefaultJseId()); ViewpointSpecificationProject.createFileFromTemplate(prj, "build.properties", "resources/build.properties", replacements, monitor); //$NON-NLS-1$ $NON-NLS-2$ ViewpointSpecificationProject.createFileFromTemplate(prj, "src/" + packageName.replaceAll("\\.", "/") + "/Activator.java", "resources/Activator.java_", replacements, monitor); |
