summaryrefslogtreecommitdiffstats
path: root/rba.tool.editor.endpoint/src/rba/tool/editor/endpoint/RBAModelServlet.xtend
diff options
context:
space:
mode:
authorKenji Hosokawa <khosokawa@jp.adit-jv.com>2021-08-03 18:42:39 +0900
committerKenji Hosokawa <khosokawa@jp.adit-jv.com>2021-08-06 19:32:38 +0900
commitbe4f78978faba3d3ceb88df02a7f93a2e09ff1e0 (patch)
tree1f3f1a96251ac4f655c8a96fc33d5d4ee779cd06 /rba.tool.editor.endpoint/src/rba/tool/editor/endpoint/RBAModelServlet.xtend
parent71ca7c6cab863767ef30c8bd05b2bbfda8731cb5 (diff)
Initial commit
Bug-AGL: SPEC-4033 Signed-off-by: Kenji Hosokawa <khosokawa@jp.adit-jv.com>
Diffstat (limited to 'rba.tool.editor.endpoint/src/rba/tool/editor/endpoint/RBAModelServlet.xtend')
-rw-r--r--rba.tool.editor.endpoint/src/rba/tool/editor/endpoint/RBAModelServlet.xtend68
1 files changed, 68 insertions, 0 deletions
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()
+ }
+
+}