in lib/client_generator.js [58:115]
codegen(level = 0) {
const nonStaticWraps = this.ast.moduleBody.nodes.filter((item) => { return item.type === 'function' && !item.isStatic; });
const apis = this.ast.moduleBody.nodes.filter((item) => { return item.type === 'api'; });
const models = this.ast.moduleBody.nodes.filter((item) => { return item.type === 'model'; });
const types = this.ast.moduleBody.nodes.filter((item) => { return item.type === 'type'; });
const init = this.ast.moduleBody.nodes.filter((item) => { return item.type === 'init'; });
const functions = this.ast.moduleBody.nodes.filter((item) => { return item.type === 'function'; });
if (nonStaticWraps.length > 0 || apis.length > 0) {
this.ctx.extendParam.writeConstruct = true;
}
if (models.length > 0) {
this.ctx.extendParam.writeImport = true;
}
if (this.ast.extends) {
this.ctx.extendsName = _name(this.ast.extends);
this.ctx.extendsClass.className = this.ctx.imports[this.ctx.extendsName].className;
this.ctx.extendsClass.package = this.ctx.imports[this.ctx.extendsName].package;
}
this.emitHeader(level);
this.emitln();
types.forEach(type => { this.emitEachType(type, level + 1); });
this.emitln();
if (this.ctx.exec) {
init.forEach(i => { this.emitEachInit(i, level + 1); });
} else if (init.length === 1) {
init.forEach(i => { this.emitConstructor(i, level + 1); });
}
// this.emitln();
// apis.forEach(api => { this.emitEachAPI(api, level + 1); });
functions.forEach(func => {
if (_name(func.functionName) === 'close' && !this.ctx.exec && this.ctx.implements) {
this.ctx.closable = true;
}
this.emitln();
this.emitEachFunction(func, level + 1);
});
this.emitln();
this.emitFooter(level);
const sseIterators = this.ctx.iterators.filter((item) => {
return item.iteratorStyle === SSE;
});
if (sseIterators.length <= 0) {
this.output = this.output.replace('import darabonba.core.sse.SSEHttpResponseHandler;\n', '');
}
if (!this.ctx.exec && init.length === 1) {
const builder = new BuilderGenerator(this.ast, this.ctx);
builder.codegen(level);
save(path.join(this.ctx.outputDir, `${this.ctx.className}Builder.java`), builder.output);
}
if (!this.ctx.exec && this.ctx.implements) {
const inter = new InterfaceGenerator(this.ast, this.ctx);
inter.emitInterface(nonStaticWraps, apis, level);
save(path.join(this.ctx.outputDir, `${this.ctx.implements}.java`), inter.output);
}
}