aboutsummaryrefslogtreecommitdiffstats
path: root/ncomp-sirius-manager-generator/src/main/templates/Client.java
blob: 4b38e94839044aef0710dc85c7e7408fec9f7723 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/*-
 * ============LICENSE_START==========================================
 * OPENECOMP - DCAE
 * ===================================================================
 * Copyright (c) 2017 AT&T Intellectual Property. All rights reserved.
 * ===================================================================
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0 
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * ============LICENSE_END============================================
 */
	
<% 
import org.openecomp.ncomp.utils.StringUtil
%>// Autogenerated
// Do not edit. No need to extend this class.
package $packageName;

import org.openecomp.ncomp.sirius.manager.AbstractClient;
import org.openecomp.ncomp.sirius.manager.HighAvailabilityClient;
import org.openecomp.ncomp.sirius.manager.GenericHttpClient;

import org.apache.log4j.Logger;

import org.openecomp.logger.EcompLogger;

import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;

import ${p.nsURI}.impl.${name}Impl;
import ${p.nsURI}.${g.packageName2()};
import ${packageName}.logging.${name}OperationEnum;
import ${packageName}.logging.${name}MessageEnum;

<% if (sPackage != "") { %>
import ${sPackage}.${prefix}${g.root.o.eClass().name}; <% } %>



 
@SuppressWarnings("unchecked")
public class ${cName} extends ${name}Impl {
	public static final Logger logger = Logger.getLogger(${cName}.class);
	static final EcompLogger ecomplogger = EcompLogger.getEcompLogger();
	public AbstractClient client;

	public ${cName}(String file, String name) {
		${prefix}${g.root.o.eClass().name}.ecoreSetup(); 
		client = new GenericHttpClient(file,name);
		client.add("/$path", this);
	}

	public ${cName}(String file, String name1, String name2) {
		HighAvailabilityClient client1 = new HighAvailabilityClient(file,name1,name2);
		client = client1.all; // requests should be forwarded to all.
		client.add("/$path", this);
	}
	
	public ${cName}(AbstractClient c) {
		client = c;
		client.add("/resources", this);
	}


<% g.operations().each { op -> 
  def decl = []
  def vars = []
  def timeout = "null"
  if (op.getEParameters().find { it.name == "cx" }) {
	 decl += "org.json.JSONObject cx"
	 vars += "cx"
	 timeout = 'cx != null && cx.has("timeout") ? cx.getLong("timeout") : null'
  }
  def override = "@Override"
  def path1 = g.subName == null ? "\"/$path\"" : "\"/$g.subName\""
  if (g.root != g && g.root.o.eClass().EPackage == o.eClass().EPackage) {
    decl += "String path"
	override = ""	
	path1 = "path"
  }
  op.getEParameters().each  { p ->
  if (p.name == "cx") return
    vars += p.name
    if (p.isMany()) 
    	decl += "EList<${p.getEType().getInstanceClassName()}> $p.name"
    else {
    	if (p.getEType()==null) System.err.println "$op.name $p.name $p"
    	decl += "${p.getEType().getInstanceClassName()} $p.name"
    }
  }

  
  def rType = op.getEType() == null ? "void" : op.getEType().getInstanceClassName()
  if (op.isMany()) rType = "EList<$rType>"
  def ret = rType == "void" ? "" : "return res;"
  def decl1 = rType == "void" ? "" : "${rType} res;"
  def decl2 = rType == "void" ? "" : "res = ($rType) "
%>
	$override
	public ${rType} ${op.name}(${StringUtil.join(decl, ", ")}) {
		EClass c = ${g.packageName2()}.eINSTANCE.get${g.o.eClass().name}(); //foo
		ecomplogger.recordMetricEventStart();
		ecomplogger.setOperation(${name}OperationEnum.REMOTE_${op.name});
		$decl1
		try {
		  ${decl2}client.operationPath($path1, c, "${op.name}", $timeout<% if (vars.size()>0) {%>, <%}%>${StringUtil.join(vars,",")});
		}
		catch (Exception e) {
			ecomplogger.warn(${name}MessageEnum.REMOTE_${op.name}, e.toString());
			throw new RuntimeException("remote call failed: " + client.getRemote() + "@$op.name: " + e);
		}
		ecomplogger.recordMetricEventEnd();
		${ret}
	}
<% } %>
}