|
Re: Web editor unable to generate with inferrer [message #1729553 is a reply to message #1729495] |
Fri, 15 April 2016 12:49 |
|
HI,
this generator is bound by default - it is not the problem.
the problem is the impl of the generator service.
it asumes the generated file to have a certain name.
thus it wont wont this way.
have a look at
org.eclipse.xtext.web.server.generator.GeneratorService.getArtifact(XtextWebDocumentAccess, String)
with
public static val DEFAULT_ARTIFACT = IFileSystemAccess.DEFAULT_OUTPUT + '/DEFAULT_ARTIFACT'
Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
|
|
|
|
|
|
Re: Web editor unable to generate with inferrer [message #1729581 is a reply to message #1729578] |
Fri, 15 April 2016 16:03 |
|
yes and no. what about having your own service
class MyDslWebModule extends AbstractMyDslWebModule {
def Class<? extends XtextServiceDispatcher> bindXtextServiceDispatcher() {
return MyDslXtextServiceDispatcher
}
}
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 MyDslXtextServiceDispatcher 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)
}
]
]
}
}
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Language" content="en-us">
<title>Example Web Editor</title>
<link rel="stylesheet" type="text/css" href="xtext/2.9.2/xtext-ace.css"/>
<link rel="stylesheet" type="text/css" href="style.css"/>
<script src="webjars/requirejs/2.1.20/require.min.js"></script>
<script type="text/javascript">
var baseUrl = window.location.pathname;
var fileIndex = baseUrl.indexOf("index.html");
if (fileIndex > 0)
baseUrl = baseUrl.slice(0, fileIndex);
require.config({
baseUrl: baseUrl,
paths: {
"jquery": "webjars/jquery/2.1.4/jquery.min",
"ace/ext/language_tools": "webjars/ace/1.2.0/src/ext-language_tools",
"xtext/xtext-ace": "xtext/2.9.2/xtext-ace"
}
});
require(["webjars/ace/1.2.0/src/ace"], function() {
require(["xtext/xtext-ace"], function(xtext) {
xtext.createEditor({
baseUrl: baseUrl,
syntaxDefinition: "xtext-resources/generated/mode-mydsl7"
});
jQuery('#generate-button').bind("click", function(e){
jQuery('#generator-result').html('<iframe src="http://' + location.host + '/xtext-service/generate-all?resource=example1.mydsl7"></iframe>');
e.preventDefault();
});
});
});
</script>
</head>
<body>
<div class="container">
<div class="header">
<h1>Example MyDsl Web Editor2</h1>
</div>
<div class="content">
<div id="xtext-editor" data-editor-xtext-lang="mydsl7" data-editor-resource-id="example1.mydsl7"></div>
</div>
<div class="button-wrapper">
<button id="generate-button" value="Generate" title="Generate">Generate</button>
<div id="generator-result">
Result
</div>
</div>
</div>
</body>
</html>
Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
|
|
|
|
Powered by
FUDForum. Page generated in 0.01926 seconds