import { BroadcastService } from '../../../services/broadcast.service';
import { WorkflowConfigService } from '../../../services/workflow-config.service';
import { Microservice } from "../../../model/workflow/microservice";
+import { WorkflowUtil } from "../../../util/workflow-util";
+import { RestParameter } from "../../../model/workflow/rest-parameter";
@Component({
selector: 'b4t-rest-task',
}
private updateMethodInfo() {
- // TODO update parameters
- console.log('rest task updated');
+ if (this.node.method) {
+ const path: any = this.swagger.paths[this.node.url];
+ const method: SwaggerMethod = path[this.node.method];
+
+ this.node.consumes = WorkflowUtil.deepClone(method.consumes);
+ this.node.produces = WorkflowUtil.deepClone(method.produces);
+
+ // request parameters
+ method.parameters.forEach(param => {
+ const nodeParam = new RestParameter(param.name, '', ValueSource[ValueSource.String],
+ param.type, param.position, param.schema);
+ this.node.parameters.push(nodeParam);
+ });
+
+ // response parameters
+ const responseParams = this.getResponseParameters(method.responses);
+ this.node.responses = responseParams.map(param => WorkflowUtil.deepClone(param));
+ }
+ }
+
+ private getResponseParameters(responses: any) {
+ let response: SwaggerResponse = null;
+
+ for (const key of Object.keys(responses)) {
+ if (key.startsWith('20')) {
+ response = responses[key];
+ }
+ }
+
+ return [response];
}
}
--- /dev/null
+/**\r
+ * Copyright (c) 2017 ZTE Corporation.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * and the Apache License 2.0 which both accompany this distribution,\r
+ * and are available at http://www.eclipse.org/legal/epl-v10.html\r
+ * and http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Contributors:\r
+ * ZTE - initial API and implementation and/or initial documentation\r
+ */\r
+export class WorkflowUtil {\r
+ public static deepClone(source: any) {\r
+ if (source === null || typeof source !== 'object') {\r
+ return source;\r
+ } else {\r
+ if (source instanceof Array) {\r
+ const target = [];\r
+ source.forEach(item => target.push(WorkflowUtil.deepClone(item)));\r
+ return target;\r
+ } else {\r
+ const target = {};\r
+ for (const key in source) {\r
+ target[key] = WorkflowUtil.deepClone(source[key]);\r
+ }\r
+ return target;\r
+ }\r
+ }\r
+ }\r
+}\r