diff options
Diffstat (limited to 'rba.tool.editor.endpoint/src/rba/tool/editor/endpoint/RBAModelServiceDispatcher.xtend')
-rw-r--r-- | rba.tool.editor.endpoint/src/rba/tool/editor/endpoint/RBAModelServiceDispatcher.xtend | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/rba.tool.editor.endpoint/src/rba/tool/editor/endpoint/RBAModelServiceDispatcher.xtend b/rba.tool.editor.endpoint/src/rba/tool/editor/endpoint/RBAModelServiceDispatcher.xtend new file mode 100644 index 0000000..067a03b --- /dev/null +++ b/rba.tool.editor.endpoint/src/rba/tool/editor/endpoint/RBAModelServiceDispatcher.xtend @@ -0,0 +1,37 @@ +package rba.tool.editor.endpoint + +import com.google.inject.Inject +import javax.inject.Singleton +import org.eclipse.xtext.util.internal.Log +import org.eclipse.xtext.web.server.IServiceContext +import org.eclipse.xtext.web.server.InvalidRequestException +import org.eclipse.xtext.web.server.XtextServiceDispatcher +import org.eclipse.xtext.web.server.generator.GeneratorService + +@Log +@Singleton +class RBAModelServiceDispatcher extends XtextServiceDispatcher { + + @Inject + private GeneratorService generatorService; + + override protected createServiceDescriptor(String serviceType, IServiceContext context) { + if (serviceType == "generate-all") { + return getGeneratorAllService(context) + } + super.createServiceDescriptor(serviceType, context) + } + + protected def getGeneratorAllService(IServiceContext context) throws InvalidRequestException { + val document = getDocumentAccess(context) + new ServiceDescriptor => [ + service = [ + try { + generatorService.getResult(document) + } catch (Throwable throwable) { + handleError(throwable) + } + ] + ] + } +} |