From fb8f005e069d61046cbd190b85aca4131303f93a Mon Sep 17 00:00:00 2001 From: Lorenzo Bettini Date: Mon, 11 Jul 2016 11:25:09 +0200 Subject: [PATCH 1/3] 30: ui.tests depends on the new testing bundle Task-Url: https://github.com/eclipse/xtext-core/issues/30 Signed-off-by: Lorenzo Bettini --- .../eclipse/xtext/xtext/wizard/UiTestProjectDescriptor.xtend | 2 +- .../org/eclipse/xtext/xtext/wizard/UiTestProjectDescriptor.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/org.eclipse.xtext.xtext.wizard/src/org/eclipse/xtext/xtext/wizard/UiTestProjectDescriptor.xtend b/org.eclipse.xtext.xtext.wizard/src/org/eclipse/xtext/xtext/wizard/UiTestProjectDescriptor.xtend index 9c2422e70..957540d6a 100644 --- a/org.eclipse.xtext.xtext.wizard/src/org/eclipse/xtext/xtext/wizard/UiTestProjectDescriptor.xtend +++ b/org.eclipse.xtext.xtext.wizard/src/org/eclipse/xtext/xtext/wizard/UiTestProjectDescriptor.xtend @@ -17,7 +17,7 @@ class UiTestProjectDescriptor extends TestProjectDescriptor { override getExternalDependencies() { val deps = newLinkedHashSet deps += super.externalDependencies - deps += createXtextDependency("org.eclipse.xtext.junit4") => [maven.scope = Scope.TESTCOMPILE] + deps += createXtextDependency("org.eclipse.xtext.testing") => [maven.scope = Scope.TESTCOMPILE] deps += createXtextDependency("org.eclipse.xtext.xbase.junit") => [maven.scope = Scope.TESTCOMPILE] deps } diff --git a/org.eclipse.xtext.xtext.wizard/xtend-gen/org/eclipse/xtext/xtext/wizard/UiTestProjectDescriptor.java b/org.eclipse.xtext.xtext.wizard/xtend-gen/org/eclipse/xtext/xtext/wizard/UiTestProjectDescriptor.java index 65069d314..92b47daa9 100644 --- a/org.eclipse.xtext.xtext.wizard/xtend-gen/org/eclipse/xtext/xtext/wizard/UiTestProjectDescriptor.java +++ b/org.eclipse.xtext.xtext.wizard/xtend-gen/org/eclipse/xtext/xtext/wizard/UiTestProjectDescriptor.java @@ -29,7 +29,7 @@ public class UiTestProjectDescriptor extends TestProjectDescriptor { final LinkedHashSet deps = CollectionLiterals.newLinkedHashSet(); Set _externalDependencies = super.getExternalDependencies(); Iterables.addAll(deps, _externalDependencies); - ExternalDependency _createXtextDependency = ExternalDependency.createXtextDependency("org.eclipse.xtext.junit4"); + ExternalDependency _createXtextDependency = ExternalDependency.createXtextDependency("org.eclipse.xtext.testing"); final Procedure1 _function = (ExternalDependency it) -> { ExternalDependency.MavenCoordinates _maven = it.getMaven(); _maven.setScope(Scope.TESTCOMPILE); From 3275b7530293fb51f6bef514fc860b4b4c42b647 Mon Sep 17 00:00:00 2001 From: Lorenzo Bettini Date: Mon, 11 Jul 2016 11:26:33 +0200 Subject: [PATCH 2/3] 30: updated CliWizardIntegrationTest expectations Task-Url: https://github.com/eclipse/xtext-core/issues/30 Signed-off-by: Lorenzo Bettini --- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../org.xtext.example.full.ui.tests/META-INF/MANIFEST.MF | 2 +- .../org.xtext.example.mavenTycho.ui.tests/META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/org.eclipse.xtext.tests/testdata/wizard-expectations/org.xtext.example.eclipsePlugin/org.xtext.example.eclipsePlugin.ui.tests/META-INF/MANIFEST.MF b/org.eclipse.xtext.tests/testdata/wizard-expectations/org.xtext.example.eclipsePlugin/org.xtext.example.eclipsePlugin.ui.tests/META-INF/MANIFEST.MF index 71777fc51..0d402b623 100644 --- a/org.eclipse.xtext.tests/testdata/wizard-expectations/org.xtext.example.eclipsePlugin/org.xtext.example.eclipsePlugin.ui.tests/META-INF/MANIFEST.MF +++ b/org.eclipse.xtext.tests/testdata/wizard-expectations/org.xtext.example.eclipsePlugin/org.xtext.example.eclipsePlugin.ui.tests/META-INF/MANIFEST.MF @@ -7,6 +7,6 @@ Bundle-SymbolicName: org.xtext.example.eclipsePlugin.ui.tests; singleton:=true Bundle-ActivationPolicy: lazy Require-Bundle: org.xtext.example.eclipsePlugin.ui, org.junit;bundle-version="4.7.0", - org.eclipse.xtext.junit4, + org.eclipse.xtext.testing, org.eclipse.xtext.xbase.junit Bundle-RequiredExecutionEnvironment: JavaSE-1.8 diff --git a/org.eclipse.xtext.tests/testdata/wizard-expectations/org.xtext.example.eclipsePluginP2/org.xtext.example.eclipsePluginP2.ui.tests/META-INF/MANIFEST.MF b/org.eclipse.xtext.tests/testdata/wizard-expectations/org.xtext.example.eclipsePluginP2/org.xtext.example.eclipsePluginP2.ui.tests/META-INF/MANIFEST.MF index 8673cb9c7..bfde5c8d0 100644 --- a/org.eclipse.xtext.tests/testdata/wizard-expectations/org.xtext.example.eclipsePluginP2/org.xtext.example.eclipsePluginP2.ui.tests/META-INF/MANIFEST.MF +++ b/org.eclipse.xtext.tests/testdata/wizard-expectations/org.xtext.example.eclipsePluginP2/org.xtext.example.eclipsePluginP2.ui.tests/META-INF/MANIFEST.MF @@ -7,6 +7,6 @@ Bundle-SymbolicName: org.xtext.example.eclipsePluginP2.ui.tests; singleton:=true Bundle-ActivationPolicy: lazy Require-Bundle: org.xtext.example.eclipsePluginP2.ui, org.junit;bundle-version="4.7.0", - org.eclipse.xtext.junit4, + org.eclipse.xtext.testing, org.eclipse.xtext.xbase.junit Bundle-RequiredExecutionEnvironment: JavaSE-1.8 diff --git a/org.eclipse.xtext.tests/testdata/wizard-expectations/org.xtext.example.full/org.xtext.example.full.parent/org.xtext.example.full.ui.tests/META-INF/MANIFEST.MF b/org.eclipse.xtext.tests/testdata/wizard-expectations/org.xtext.example.full/org.xtext.example.full.parent/org.xtext.example.full.ui.tests/META-INF/MANIFEST.MF index f7c1c9dd4..a819f678f 100644 --- a/org.eclipse.xtext.tests/testdata/wizard-expectations/org.xtext.example.full/org.xtext.example.full.parent/org.xtext.example.full.ui.tests/META-INF/MANIFEST.MF +++ b/org.eclipse.xtext.tests/testdata/wizard-expectations/org.xtext.example.full/org.xtext.example.full.parent/org.xtext.example.full.ui.tests/META-INF/MANIFEST.MF @@ -7,6 +7,6 @@ Bundle-SymbolicName: org.xtext.example.full.ui.tests; singleton:=true Bundle-ActivationPolicy: lazy Require-Bundle: org.xtext.example.full.ui, org.junit;bundle-version="4.7.0", - org.eclipse.xtext.junit4, + org.eclipse.xtext.testing, org.eclipse.xtext.xbase.junit Bundle-RequiredExecutionEnvironment: JavaSE-1.8 diff --git a/org.eclipse.xtext.tests/testdata/wizard-expectations/org.xtext.example.mavenTycho/org.xtext.example.mavenTycho.parent/org.xtext.example.mavenTycho.ui.tests/META-INF/MANIFEST.MF b/org.eclipse.xtext.tests/testdata/wizard-expectations/org.xtext.example.mavenTycho/org.xtext.example.mavenTycho.parent/org.xtext.example.mavenTycho.ui.tests/META-INF/MANIFEST.MF index a40929fd3..ecd565233 100644 --- a/org.eclipse.xtext.tests/testdata/wizard-expectations/org.xtext.example.mavenTycho/org.xtext.example.mavenTycho.parent/org.xtext.example.mavenTycho.ui.tests/META-INF/MANIFEST.MF +++ b/org.eclipse.xtext.tests/testdata/wizard-expectations/org.xtext.example.mavenTycho/org.xtext.example.mavenTycho.parent/org.xtext.example.mavenTycho.ui.tests/META-INF/MANIFEST.MF @@ -7,6 +7,6 @@ Bundle-SymbolicName: org.xtext.example.mavenTycho.ui.tests; singleton:=true Bundle-ActivationPolicy: lazy Require-Bundle: org.xtext.example.mavenTycho.ui, org.junit;bundle-version="4.7.0", - org.eclipse.xtext.junit4, + org.eclipse.xtext.testing, org.eclipse.xtext.xbase.junit Bundle-RequiredExecutionEnvironment: JavaSE-1.8 diff --git a/org.eclipse.xtext.tests/testdata/wizard-expectations/org.xtext.example.mavenTychoP2/org.xtext.example.mavenTychoP2.parent/org.xtext.example.mavenTychoP2.ui.tests/META-INF/MANIFEST.MF b/org.eclipse.xtext.tests/testdata/wizard-expectations/org.xtext.example.mavenTychoP2/org.xtext.example.mavenTychoP2.parent/org.xtext.example.mavenTychoP2.ui.tests/META-INF/MANIFEST.MF index 30b06b3d9..6267b3b26 100644 --- a/org.eclipse.xtext.tests/testdata/wizard-expectations/org.xtext.example.mavenTychoP2/org.xtext.example.mavenTychoP2.parent/org.xtext.example.mavenTychoP2.ui.tests/META-INF/MANIFEST.MF +++ b/org.eclipse.xtext.tests/testdata/wizard-expectations/org.xtext.example.mavenTychoP2/org.xtext.example.mavenTychoP2.parent/org.xtext.example.mavenTychoP2.ui.tests/META-INF/MANIFEST.MF @@ -7,6 +7,6 @@ Bundle-SymbolicName: org.xtext.example.mavenTychoP2.ui.tests; singleton:=true Bundle-ActivationPolicy: lazy Require-Bundle: org.xtext.example.mavenTychoP2.ui, org.junit;bundle-version="4.7.0", - org.eclipse.xtext.junit4, + org.eclipse.xtext.testing, org.eclipse.xtext.xbase.junit Bundle-RequiredExecutionEnvironment: JavaSE-1.8 From 0bfd8f296d662cc3d3561b4f2f6246462081aa3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Spo=CC=88nemann?= Date: Tue, 12 Jul 2016 16:00:23 +0200 Subject: [PATCH 3/3] [generator] Added initialization of encoding for the Xtext grammar language --- .../xtext/generator/XtextGenerator.xtend | 33 ++++++++++++- .../xtext/xtext/generator/XtextGenerator.java | 46 +++++++++++++++++++ 2 files changed, 78 insertions(+), 1 deletion(-) diff --git a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/XtextGenerator.xtend b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/XtextGenerator.xtend index 3592e369c..69416024e 100644 --- a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/XtextGenerator.xtend +++ b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/XtextGenerator.xtend @@ -17,6 +17,7 @@ import java.io.IOException import java.io.InputStream import java.util.HashMap import java.util.List +import java.util.Map import org.eclipse.emf.common.util.URI import org.eclipse.emf.mwe.core.WorkflowContext import org.eclipse.emf.mwe.core.issues.Issues @@ -27,15 +28,17 @@ import org.eclipse.xtend.lib.annotations.Accessors import org.eclipse.xtext.GeneratedMetamodel import org.eclipse.xtext.Grammar import org.eclipse.xtext.XtextStandaloneSetup +import org.eclipse.xtext.parser.IEncodingProvider +import org.eclipse.xtext.resource.IResourceServiceProvider import org.eclipse.xtext.util.MergeableManifest import org.eclipse.xtext.util.Tuples import org.eclipse.xtext.util.internal.Log import org.eclipse.xtext.xtext.generator.model.IXtextGeneratorFileSystemAccess import org.eclipse.xtext.xtext.generator.model.ManifestAccess import org.eclipse.xtext.xtext.generator.model.PluginXmlAccess +import org.eclipse.xtext.xtext.generator.model.TextFileAccess import org.eclipse.xtext.xtext.generator.model.project.BundleProjectConfig import org.eclipse.xtext.xtext.generator.model.project.IXtextProjectConfig -import org.eclipse.xtext.xtext.generator.model.TextFileAccess /** * The Xtext language infrastructure generator. Can be configured with {@link IXtextGeneratorFragment} @@ -66,6 +69,9 @@ class XtextGenerator extends AbstractWorkflowComponent2 { @Inject XtextGeneratorNaming naming + @Accessors(PROTECTED_GETTER) + val Map defaultEncodings = newHashMap + new() { new XtextStandaloneSetup().createInjectorAndDoEMFRegistration() } @@ -100,6 +106,7 @@ class XtextGenerator extends AbstractWorkflowComponent2 { if (injector === null) { LOG.info('Initializing Xtext generator') new StandaloneSetup().addRegisterGeneratedEPackage('org.eclipse.xtext.common.types.TypesPackage') + initializeEncoding('xtext') injector = createInjector injector.injectMembers(this) injector.getInstance(CodeConfig) => [initialize(injector)] @@ -113,6 +120,28 @@ class XtextGenerator extends AbstractWorkflowComponent2 { } } + protected def initializeEncoding(String langExtension) { + val serviceProviderRegistry = IResourceServiceProvider.Registry.INSTANCE + val serviceProvider = serviceProviderRegistry.extensionToFactoryMap.get(langExtension) as IResourceServiceProvider + if (serviceProvider !== null) { + val encodingProvider = serviceProvider.get(IEncodingProvider) + if (encodingProvider instanceof IEncodingProvider.Runtime) { + defaultEncodings.put(langExtension, encodingProvider.defaultEncoding) + encodingProvider.defaultEncoding = configuration.code.encoding + } + } + } + + protected def restoreEncoding(String langExtension) { + val serviceProviderRegistry = IResourceServiceProvider.Registry.INSTANCE + val serviceProvider = serviceProviderRegistry.extensionToFactoryMap.get(langExtension) as IResourceServiceProvider + if (serviceProvider !== null && defaultEncodings.containsKey(langExtension)) { + val encodingProvider = serviceProvider.get(IEncodingProvider) + if (encodingProvider instanceof IEncodingProvider.Runtime) + encodingProvider.defaultEncoding = defaultEncodings.get(langExtension) + } + } + protected def Injector createInjector() { Guice.createInjector(configuration) } @@ -143,6 +172,8 @@ class XtextGenerator extends AbstractWorkflowComponent2 { generateServices } catch (Exception e) { handleException(e, issues) + } finally { + restoreEncoding('xtext') } } diff --git a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/XtextGenerator.java b/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/XtextGenerator.java index f045a2dd0..b7b3ce7bd 100644 --- a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/XtextGenerator.java +++ b/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/XtextGenerator.java @@ -20,6 +20,7 @@ import java.io.InputStream; import java.util.HashMap; import java.util.List; import java.util.ListIterator; +import java.util.Map; import java.util.Set; import java.util.function.Consumer; import org.apache.log4j.Logger; @@ -31,12 +32,15 @@ import org.eclipse.emf.mwe.core.issues.Issues; import org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent2; import org.eclipse.emf.mwe.core.monitor.ProgressMonitor; import org.eclipse.emf.mwe.utils.StandaloneSetup; +import org.eclipse.xtend.lib.annotations.AccessorType; import org.eclipse.xtend.lib.annotations.Accessors; import org.eclipse.xtend2.lib.StringConcatenationClient; import org.eclipse.xtext.AbstractMetamodelDeclaration; import org.eclipse.xtext.GeneratedMetamodel; import org.eclipse.xtext.Grammar; import org.eclipse.xtext.XtextStandaloneSetup; +import org.eclipse.xtext.parser.IEncodingProvider; +import org.eclipse.xtext.resource.IResourceServiceProvider; import org.eclipse.xtext.util.MergeableManifest; import org.eclipse.xtext.util.Triple; import org.eclipse.xtext.util.Tuples; @@ -106,6 +110,9 @@ public class XtextGenerator extends AbstractWorkflowComponent2 { @Inject private XtextGeneratorNaming naming; + @Accessors(AccessorType.PROTECTED_GETTER) + private final Map defaultEncodings = CollectionLiterals.newHashMap(); + public XtextGenerator() { XtextStandaloneSetup _xtextStandaloneSetup = new XtextStandaloneSetup(); _xtextStandaloneSetup.createInjectorAndDoEMFRegistration(); @@ -159,6 +166,7 @@ public class XtextGenerator extends AbstractWorkflowComponent2 { XtextGenerator.LOG.info("Initializing Xtext generator"); StandaloneSetup _standaloneSetup = new StandaloneSetup(); _standaloneSetup.addRegisterGeneratedEPackage("org.eclipse.xtext.common.types.TypesPackage"); + this.initializeEncoding("xtext"); Injector _createInjector = this.createInjector(); this.injector = _createInjector; this.injector.injectMembers(this); @@ -179,6 +187,37 @@ public class XtextGenerator extends AbstractWorkflowComponent2 { } } + protected void initializeEncoding(final String langExtension) { + final IResourceServiceProvider.Registry serviceProviderRegistry = IResourceServiceProvider.Registry.INSTANCE; + Map _extensionToFactoryMap = serviceProviderRegistry.getExtensionToFactoryMap(); + Object _get = _extensionToFactoryMap.get(langExtension); + final IResourceServiceProvider serviceProvider = ((IResourceServiceProvider) _get); + if ((serviceProvider != null)) { + final IEncodingProvider encodingProvider = serviceProvider.get(IEncodingProvider.class); + if ((encodingProvider instanceof IEncodingProvider.Runtime)) { + String _defaultEncoding = ((IEncodingProvider.Runtime)encodingProvider).getDefaultEncoding(); + this.defaultEncodings.put(langExtension, _defaultEncoding); + CodeConfig _code = this.configuration.getCode(); + String _encoding = _code.getEncoding(); + ((IEncodingProvider.Runtime)encodingProvider).setDefaultEncoding(_encoding); + } + } + } + + protected void restoreEncoding(final String langExtension) { + final IResourceServiceProvider.Registry serviceProviderRegistry = IResourceServiceProvider.Registry.INSTANCE; + Map _extensionToFactoryMap = serviceProviderRegistry.getExtensionToFactoryMap(); + Object _get = _extensionToFactoryMap.get(langExtension); + final IResourceServiceProvider serviceProvider = ((IResourceServiceProvider) _get); + if (((serviceProvider != null) && this.defaultEncodings.containsKey(langExtension))) { + final IEncodingProvider encodingProvider = serviceProvider.get(IEncodingProvider.class); + if ((encodingProvider instanceof IEncodingProvider.Runtime)) { + String _get_1 = this.defaultEncodings.get(langExtension); + ((IEncodingProvider.Runtime)encodingProvider).setDefaultEncoding(_get_1); + } + } + } + protected Injector createInjector() { return Guice.createInjector(this.configuration); } @@ -224,6 +263,8 @@ public class XtextGenerator extends AbstractWorkflowComponent2 { } else { throw Exceptions.sneakyThrow(_t_1); } + } finally { + this.restoreEncoding("xtext"); } } @@ -546,4 +587,9 @@ public class XtextGenerator extends AbstractWorkflowComponent2 { public void setStandaloneSetup(final XtextGeneratorStandaloneSetup standaloneSetup) { this.standaloneSetup = standaloneSetup; } + + @Pure + protected Map getDefaultEncodings() { + return this.defaultEncodings; + } }