From be4f78978faba3d3ceb88df02a7f93a2e09ff1e0 Mon Sep 17 00:00:00 2001 From: Kenji Hosokawa Date: Tue, 3 Aug 2021 18:42:39 +0900 Subject: Initial commit Bug-AGL: SPEC-4033 Signed-off-by: Kenji Hosokawa --- .../rba/tool/editor/endpoint/RBAModelServlet.xtend | 68 ++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 rba.tool.editor.endpoint/src/rba/tool/editor/endpoint/RBAModelServlet.xtend (limited to 'rba.tool.editor.endpoint/src/rba/tool/editor/endpoint/RBAModelServlet.xtend') diff --git a/rba.tool.editor.endpoint/src/rba/tool/editor/endpoint/RBAModelServlet.xtend b/rba.tool.editor.endpoint/src/rba/tool/editor/endpoint/RBAModelServlet.xtend new file mode 100644 index 0000000..b543381 --- /dev/null +++ b/rba.tool.editor.endpoint/src/rba/tool/editor/endpoint/RBAModelServlet.xtend @@ -0,0 +1,68 @@ +/* + * generated by Xtext 2.13.0 + */ +package rba.tool.editor.endpoint + +import com.google.inject.Injector +import javax.servlet.annotation.WebServlet +import org.eclipse.emf.common.util.URI +import org.eclipse.xtext.resource.IResourceServiceProvider +import org.eclipse.xtext.util.DisposableRegistry +import org.eclipse.xtext.web.server.InvalidRequestException.UnknownLanguageException +import org.eclipse.xtext.web.servlet.HttpServiceContext +import org.eclipse.xtext.web.servlet.XtextServlet +import rba.tool.editor.endpoint.server.persistence.RBAModelResourceBaseProviderImpl +import org.eclipse.xtext.web.server.XtextServiceDispatcher.ServiceDescriptor +import org.eclipse.xtext.web.server.IServiceResult + +/** + * Deploy this class into a servlet container to enable DSL-specific services. + */ +@WebServlet(name='XtextServices', urlPatterns='/xtext-service/*') +class RBAModelServlet extends XtextServlet { + + val serviceProviderRegistry = IResourceServiceProvider.Registry.INSTANCE + + DisposableRegistry disposableRegistry + + override init() { + super.init() + val resourceBaseProvider = new RBAModelResourceBaseProviderImpl('') + new RBAModelWebSetup(resourceBaseProvider).createInjectorAndDoEMFRegistration + } + + override protected getInjector(HttpServiceContext serviceContext) throws UnknownLanguageException { + var IResourceServiceProvider resourceServiceProvider + + val emfURI = URI.createURI('./sample.rba') + val contentType = serviceContext.getParameter('contentType') + if (contentType.nullOrEmpty) { + + resourceServiceProvider = serviceProviderRegistry.getResourceServiceProvider(emfURI) + if (resourceServiceProvider === null) { + if (emfURI.toString.empty) + throw new UnknownLanguageException('''Unable to identify the Xtext language: missing parameter 'resource' or 'contentType'.''') + else + throw new UnknownLanguageException('''Unable to identify the Xtext language for resource emfURI.''') + } + } else { + resourceServiceProvider = serviceProviderRegistry.getResourceServiceProvider(emfURI, contentType) + if (resourceServiceProvider === null) + throw new UnknownLanguageException('''Unable to identify the Xtext language for contentType contentType.''') + } + return resourceServiceProvider.get(Injector) + } + + override protected getEncoding(ServiceDescriptor service, IServiceResult result) { + 'Shift_JIS' + } + + override destroy() { + if (disposableRegistry !== null) { + disposableRegistry.dispose() + disposableRegistry = null + } + super.destroy() + } + +} -- cgit 1.2.3-korg