use of com.twinsoft.convertigo.beans.transactions.JsonHttpTransaction in project convertigo by convertigo.
the class SwaggerUtils method createRestConnector.
@SuppressWarnings("unused")
private static HttpConnector createRestConnector(JSONObject json) throws Exception {
try {
HttpConnector httpConnector = new HttpConnector();
httpConnector.bNew = true;
JSONObject info = json.getJSONObject("info");
httpConnector.setName(StringUtils.normalize(info.getString("title")));
String host = json.getString("host");
int index = host.indexOf(":");
String server = index == -1 ? host : host.substring(0, index);
int port = index == -1 ? 0 : Integer.parseInt(host.substring(index + 1, 10));
httpConnector.setServer(server);
httpConnector.setPort(port <= 0 ? 80 : port);
String basePath = json.getString("basePath");
httpConnector.setBaseDir(basePath);
JSONArray _consumes = new JSONArray();
if (json.has("consumes")) {
_consumes = json.getJSONArray("consumes");
}
JSONArray _produces = new JSONArray();
if (json.has("produces")) {
_produces = json.getJSONArray("produces");
}
Map<String, JSONObject> models = new HashMap<String, JSONObject>();
JSONObject definitions = new JSONObject();
if (json.has("definitions")) {
definitions = json.getJSONObject("definitions");
for (Iterator<String> i = GenericUtils.cast(definitions.keys()); i.hasNext(); ) {
String key = i.next();
JSONObject model = definitions.getJSONObject(key);
models.put(key, model);
}
}
JSONObject paths = json.getJSONObject("paths");
for (Iterator<String> i1 = GenericUtils.cast(paths.keys()); i1.hasNext(); ) {
String subDir = i1.next();
JSONObject path = paths.getJSONObject(subDir);
for (Iterator<String> i2 = GenericUtils.cast(path.keys()); i2.hasNext(); ) {
String httpVerb = i2.next();
JSONObject verb = path.getJSONObject(httpVerb);
XMLVector<XMLVector<String>> httpParameters = new XMLVector<XMLVector<String>>();
AbstractHttpTransaction transaction = new HttpTransaction();
JSONArray consumes = verb.has("consumes") ? verb.getJSONArray("consumes") : _consumes;
List<String> consumeList = new ArrayList<String>();
for (int i = 0; i < consumes.length(); i++) {
consumeList.add(consumes.getString(i));
}
String h_ContentType = null;
if (consumeList.contains(MimeType.Xml.value())) {
h_ContentType = MimeType.Xml.value();
} else if (consumeList.contains(MimeType.Json.value())) {
h_ContentType = MimeType.Json.value();
} else {
h_ContentType = consumeList.size() > 0 ? consumeList.get(0) : MimeType.WwwForm.value();
}
JSONArray produces = verb.has("produces") ? verb.getJSONArray("produces") : _produces;
List<String> produceList = new ArrayList<String>();
for (int i = 0; i < produces.length(); i++) {
produceList.add(produces.getString(i));
}
String h_Accept = null;
if (produceList.contains(h_ContentType)) {
h_Accept = h_ContentType;
} else {
if (produceList.contains(MimeType.Xml.value())) {
h_Accept = MimeType.Xml.value();
} else if (produceList.contains(MimeType.Json.value())) {
h_Accept = MimeType.Json.value();
}
}
if (h_Accept != null) {
XMLVector<String> xmlv = new XMLVector<String>();
xmlv.add("Accept");
xmlv.add(h_Accept);
httpParameters.add(xmlv);
if (h_Accept.equals(MimeType.Xml.value())) {
transaction = new XmlHttpTransaction();
((XmlHttpTransaction) transaction).setXmlEncoding("UTF-8");
} else if (h_Accept.equals(MimeType.Json.value())) {
transaction = new JsonHttpTransaction();
((JsonHttpTransaction) transaction).setIncludeDataType(false);
}
}
if (h_ContentType != null) {
XMLVector<String> xmlv = new XMLVector<String>();
xmlv.add(HeaderName.ContentType.value());
xmlv.add(h_ContentType);
httpParameters.add(xmlv);
}
String operationId = "";
if (verb.has("operationId")) {
operationId = verb.getString("operationId");
}
String summary = "";
if (verb.has("summary")) {
summary = verb.getString("summary");
}
String description = "";
if (verb.has("description")) {
description = verb.getString("description");
}
String name = StringUtils.normalize(operationId);
if (name.isEmpty()) {
name = StringUtils.normalize(summary);
if (name.isEmpty()) {
name = "operation";
}
}
String comment = summary;
if (comment.isEmpty()) {
comment = description;
}
JSONArray parameters = new JSONArray();
if (verb.has("parameters")) {
parameters = verb.getJSONArray("parameters");
for (int i = 0; i < parameters.length(); i++) {
JSONObject parameter = (JSONObject) parameters.get(i);
String type = "string";
if (parameter.has("collectionFormat")) {
type = parameter.getString("type");
}
String collectionFormat = "csv";
if (parameter.has("collectionFormat")) {
collectionFormat = parameter.getString("collectionFormat");
}
boolean isMultiValued = type.equalsIgnoreCase("array") && collectionFormat.equals("multi");
RequestableHttpVariable httpVariable = isMultiValued ? new RequestableHttpMultiValuedVariable() : new RequestableHttpVariable();
httpVariable.bNew = true;
httpVariable.setName(parameter.getString("name"));
httpVariable.setHttpName(parameter.getString("name"));
String in = parameter.getString("in");
if (in.equals("query") || in.equals("path") || in.equals("header")) {
httpVariable.setHttpMethod(HttpMethodType.GET.name());
if (in.equals("header")) {
// overrides variable's name : will be treated as dynamic header
httpVariable.setName(com.twinsoft.convertigo.engine.enums.Parameter.HttpHeader.getName() + parameter.getString("name"));
// do not post on target server
httpVariable.setHttpName("");
}
} else if (in.equals("formData") || in.equals("body")) {
httpVariable.setHttpMethod(HttpMethodType.POST.name());
if (in.equals("body")) {
// overrides variable's name for internal use
httpVariable.setName(com.twinsoft.convertigo.engine.enums.Parameter.HttpBody.getName());
// add internal __contentType variable
RequestableHttpVariable ct = new RequestableHttpVariable();
ct.setName(com.twinsoft.convertigo.engine.enums.Parameter.HttpContentType.getName());
// do not post on target server
ct.setHttpName("");
ct.setHttpMethod(HttpMethodType.POST.name());
ct.setValueOrNull(null);
ct.bNew = true;
transaction.addVariable(ct);
//
if (parameter.has("schema")) {
// String schema = parameter.getString("schema");
}
}
} else {
httpVariable.setHttpMethod("");
}
Object defaultValue = null;
if (parameter.has("default")) {
defaultValue = parameter.get("default");
}
if (defaultValue == null && type.equalsIgnoreCase("array")) {
JSONObject items = parameter.getJSONObject("items");
if (items.has("default")) {
defaultValue = items.get("default");
}
}
httpVariable.setValueOrNull(defaultValue);
if (parameter.has("description")) {
httpVariable.setDescription(parameter.getString("description"));
}
transaction.addVariable(httpVariable);
}
}
transaction.bNew = true;
transaction.setName(name);
transaction.setComment(comment);
transaction.setSubDir(subDir);
transaction.setHttpVerb(HttpMethodType.valueOf(httpVerb.toUpperCase()));
transaction.setHttpParameters(httpParameters);
transaction.setHttpInfo(true);
httpConnector.add(transaction);
}
}
return httpConnector;
} catch (Throwable t) {
System.out.println(t);
throw new Exception("Invalid Swagger format", t);
}
}
use of com.twinsoft.convertigo.beans.transactions.JsonHttpTransaction in project convertigo by convertigo.
the class SwaggerUtils method createRestConnector.
public static HttpConnector createRestConnector(Swagger swagger) throws Exception {
try {
HttpConnector httpConnector = new HttpConnector();
httpConnector.bNew = true;
Info info = swagger.getInfo();
String title = info != null ? info.getTitle() : "";
title = title == null || title.isEmpty() ? "RestConnector" : title;
httpConnector.setName(StringUtils.normalize(title));
boolean isHttps = false;
for (Scheme scheme : swagger.getSchemes()) {
if (scheme.equals(Scheme.HTTPS)) {
isHttps = true;
}
}
String host = swagger.getHost();
int index = host.indexOf(":");
String server = index == -1 ? host : host.substring(0, index);
int port = index == -1 ? 0 : Integer.parseInt(host.substring(index + 1), 10);
httpConnector.setHttps(isHttps);
httpConnector.setServer(server);
httpConnector.setPort(port <= 0 ? (isHttps ? 443 : 80) : port);
String basePath = swagger.getBasePath();
httpConnector.setBaseDir(basePath);
Map<String, SecuritySchemeDefinition> securityMap = swagger.getSecurityDefinitions();
if (securityMap != null && securityMap.size() > 0) {
for (String securityName : securityMap.keySet()) {
SecuritySchemeDefinition securityScheme = securityMap.get(securityName);
if (securityScheme != null) {
boolean isBasicScheme = securityScheme.getType().toLowerCase().equals("basic");
if (isBasicScheme) {
httpConnector.setAuthenticationType(AuthenticationMode.Basic);
break;
}
}
}
}
List<String> _consumeList = swagger.getConsumes();
List<String> _produceList = swagger.getProduces();
// Map<String, Model> models = swagger.getDefinitions();
Map<String, Path> paths = swagger.getPaths();
for (String subDir : paths.keySet()) {
Path path = paths.get(subDir);
// Add transactions
List<Operation> operations = path.getOperations();
for (Operation operation : operations) {
HttpMethodType httpMethodType = null;
if (operation.equals(path.getGet())) {
httpMethodType = HttpMethodType.GET;
} else if (operation.equals(path.getPost())) {
httpMethodType = HttpMethodType.POST;
} else if (operation.equals(path.getPut())) {
httpMethodType = HttpMethodType.PUT;
} else if (operation.equals(path.getDelete())) {
httpMethodType = HttpMethodType.DELETE;
} else if (operation.equals(path.getHead())) {
httpMethodType = HttpMethodType.HEAD;
} else if (operation.equals(path.getOptions())) {
httpMethodType = HttpMethodType.OPTIONS;
} else {
httpMethodType = null;
}
if (httpMethodType != null) {
List<String> consumeList = operation.getConsumes();
consumeList = consumeList == null || consumeList.isEmpty() ? _consumeList : consumeList;
List<String> produceList = operation.getProduces();
produceList = produceList == null || produceList.isEmpty() ? _produceList : produceList;
String operationId = operation.getOperationId();
String description = operation.getDescription();
String summary = operation.getSummary();
String name = StringUtils.normalize(subDir + ":" + httpMethodType.toString());
if (name.isEmpty()) {
name = StringUtils.normalize(operationId);
if (name.isEmpty()) {
name = StringUtils.normalize(summary);
if (name.isEmpty()) {
name = "operation";
}
}
}
String comment = summary;
if (comment == null)
comment = "";
if (comment.isEmpty()) {
comment = description;
}
XMLVector<XMLVector<String>> httpParameters = new XMLVector<XMLVector<String>>();
AbstractHttpTransaction transaction = new HttpTransaction();
String h_ContentType = MimeType.WwwForm.value();
if (consumeList != null) {
if (consumeList.contains(MimeType.Json.value())) {
h_ContentType = MimeType.Json.value();
} else if (consumeList.contains(MimeType.Xml.value())) {
h_ContentType = MimeType.Xml.value();
} else {
h_ContentType = consumeList.size() > 0 ? consumeList.get(0) : MimeType.WwwForm.value();
}
}
String h_Accept = MimeType.Json.value();
if (produceList != null) {
if (produceList.contains(h_ContentType)) {
h_Accept = h_ContentType;
} else {
if (produceList.contains(MimeType.Json.value())) {
h_Accept = MimeType.Json.value();
} else if (produceList.contains(MimeType.Xml.value())) {
h_Accept = MimeType.Xml.value();
}
}
if (consumeList == null && h_Accept != null) {
h_ContentType = h_Accept;
}
}
if (h_Accept != null) {
XMLVector<String> xmlv = new XMLVector<String>();
xmlv.add("Accept");
xmlv.add(h_Accept);
httpParameters.add(xmlv);
if (h_Accept.equals(MimeType.Xml.value())) {
transaction = new XmlHttpTransaction();
((XmlHttpTransaction) transaction).setXmlEncoding("UTF-8");
} else if (h_Accept.equals(MimeType.Json.value())) {
transaction = new JsonHttpTransaction();
((JsonHttpTransaction) transaction).setIncludeDataType(false);
}
}
// Add variables
boolean hasBodyVariable = false;
List<io.swagger.models.parameters.Parameter> parameters = operation.getParameters();
for (io.swagger.models.parameters.Parameter parameter : parameters) {
// String p_access = parameter.getAccess();
String p_description = parameter.getDescription();
// String p_in = parameter.getIn();
String p_name = parameter.getName();
// String p_pattern = parameter.getPattern();
boolean p_required = parameter.getRequired();
// Map<String,Object> p_extensions = parameter.getVendorExtensions();
boolean isMultiValued = false;
if (parameter instanceof SerializableParameter) {
SerializableParameter serializable = (SerializableParameter) parameter;
if (serializable.getType().equalsIgnoreCase("array")) {
if (serializable.getCollectionFormat().equalsIgnoreCase("multi")) {
isMultiValued = true;
}
}
}
RequestableHttpVariable httpVariable = isMultiValued ? new RequestableHttpMultiValuedVariable() : new RequestableHttpVariable();
httpVariable.bNew = true;
httpVariable.setName(p_name);
httpVariable.setHttpName(p_name);
httpVariable.setRequired(p_required);
if (parameter instanceof QueryParameter || parameter instanceof PathParameter || parameter instanceof HeaderParameter) {
httpVariable.setHttpMethod(HttpMethodType.GET.name());
if (parameter instanceof HeaderParameter) {
// overrides variable's name : will be treated as dynamic header
httpVariable.setName(com.twinsoft.convertigo.engine.enums.Parameter.HttpHeader.getName() + p_name);
// do not post on target server
httpVariable.setHttpName("");
}
if (parameter instanceof PathParameter) {
// do not post on target server
httpVariable.setHttpName("");
}
} else if (parameter instanceof FormParameter || parameter instanceof BodyParameter) {
httpVariable.setHttpMethod(HttpMethodType.POST.name());
if (parameter instanceof FormParameter) {
FormParameter formParameter = (FormParameter) parameter;
if (formParameter.getType().equalsIgnoreCase("file")) {
httpVariable.setDoFileUploadMode(DoFileUploadMode.multipartFormData);
}
} else if (parameter instanceof BodyParameter) {
hasBodyVariable = true;
// overrides variable's name for internal use
httpVariable.setName(com.twinsoft.convertigo.engine.enums.Parameter.HttpBody.getName());
// add internal __contentType variable
/*RequestableHttpVariable ct = new RequestableHttpVariable();
ct.setName(Parameter.HttpContentType.getName());
ct.setHttpMethod(HttpMethodType.POST.name());
ct.setValueOrNull(null);
ct.bNew = true;
transaction.addVariable(ct);*/
BodyParameter bodyParameter = (BodyParameter) parameter;
Model model = bodyParameter.getSchema();
if (model != null) {
}
}
} else {
httpVariable.setHttpMethod("");
}
Object defaultValue = null;
if (parameter instanceof AbstractSerializableParameter<?>) {
defaultValue = ((AbstractSerializableParameter<?>) parameter).getDefaultValue();
}
if (defaultValue == null && parameter instanceof SerializableParameter) {
SerializableParameter serializable = (SerializableParameter) parameter;
if (serializable.getType().equalsIgnoreCase("array")) {
Property items = serializable.getItems();
try {
Class<?> c = items.getClass();
defaultValue = c.getMethod("getDefault").invoke(items);
} catch (Exception e) {
}
}
}
if (defaultValue == null && p_required) {
defaultValue = "";
}
httpVariable.setValueOrNull(defaultValue);
if (p_description != null) {
httpVariable.setDescription(p_description);
httpVariable.setComment(p_description);
}
transaction.addVariable(httpVariable);
}
// Set Content-Type
if (h_ContentType != null) {
XMLVector<String> xmlv = new XMLVector<String>();
xmlv.add(HeaderName.ContentType.value());
xmlv.add(hasBodyVariable ? h_ContentType : MimeType.WwwForm.value());
httpParameters.add(xmlv);
}
transaction.bNew = true;
transaction.setName(name);
transaction.setComment(comment);
transaction.setSubDir(subDir);
transaction.setHttpVerb(httpMethodType);
transaction.setHttpParameters(httpParameters);
transaction.setHttpInfo(true);
httpConnector.add(transaction);
}
}
}
return httpConnector;
} catch (Throwable t) {
Engine.logEngine.error("Unable to create connector", t);
throw new Exception("Unable to create connector", t);
}
}
use of com.twinsoft.convertigo.beans.transactions.JsonHttpTransaction in project convertigo by convertigo.
the class ProjectUtils method getStatByProject.
public static Map<String, String> getStatByProject(Project project) throws Exception {
final Map<String, String> result = new HashMap<String, String>();
try {
if (project != null) {
try {
new WalkHelper() {
String displayString = "";
@SuppressWarnings("unused")
int depth = 0;
int sequenceJavascriptLines;
int sequenceJavascriptFunction;
int connectorCount = 0;
int httpConnectorCount = 0;
int httpsConnectorCount = 0;
int htmlConnectorCount = 0;
int cicsConnectorCount = 0;
int siteClipperConnectorCount = 0;
int sqlConnectorCount = 0;
int javelinConnectorCount = 0;
int htmlScreenclassCount = 0;
int htmlCriteriaCount = 0;
int siteClipperScreenclassCount = 0;
int siteClipperCriteriaCount = 0;
int htmlExtractionRuleCount = 0;
int htmlTransactionVariableCount = 0;
int sqlTransactionVariableCount = 0;
int javelinTransactionVariableCount = 0;
int javelinScreenclassCount = 0;
int javelinCriteriaCount = 0;
int javelinExtractionRuleCount = 0;
int javelinEntryHandlerCount = 0;
int javelinExitHandlerCount = 0;
int javelinHandlerCount = 0;
int javelinJavascriptLines = 0;
int statementCount = 0;
int poolCount = 0;
int handlerstatementCount = 0;
@SuppressWarnings("unused")
int reqVariableCount = 0;
int sequenceVariableCount = 0;
@SuppressWarnings("unused")
int transactionVariableCount = 0;
int testcaseVariableCount = 0;
int testcaseCount = 0;
int sequenceCount = 0;
int stepCount = 0;
int sheetCount = 0;
int referenceCount = 0;
int selectInQueryCount = 0;
/*
* transaction counters
*/
@SuppressWarnings("unused")
int transactionCount = 0;
@SuppressWarnings("unused")
int transactionWithVariablesCount = 0;
int htmltransactionCount = 0;
int httpTransactionCount = 0;
int httpsTransactionCount = 0;
int xmlHttpTransactionCount = 0;
int xmlHttpsTransactionCount = 0;
int jsonHttpTransactionCount = 0;
int jsonHttpsTransactionCount = 0;
int proxyTransactionCount = 0;
int siteClipperTransactionCount = 0;
int javelinTransactionCount = 0;
int sqlTransactionCount = 0;
int totalC8oObjects = 0;
public void go(DatabaseObject project) {
try {
String projectName = project.getName();
init(project);
connectorCount = htmlConnectorCount + httpConnectorCount + httpsConnectorCount + cicsConnectorCount + siteClipperConnectorCount + sqlConnectorCount + javelinConnectorCount;
totalC8oObjects = 1 + // connectors
connectorCount + htmlScreenclassCount + htmlCriteriaCount + htmlExtractionRuleCount + htmlTransactionVariableCount + handlerstatementCount + statementCount + javelinScreenclassCount + javelinCriteriaCount + javelinExtractionRuleCount + javelinTransactionCount + javelinEntryHandlerCount + javelinExitHandlerCount + javelinHandlerCount + javelinTransactionVariableCount + sqlTransactionCount + sqlTransactionVariableCount + sheetCount + jsonHttpTransactionCount + jsonHttpsTransactionCount + xmlHttpTransactionCount + xmlHttpsTransactionCount + httpTransactionCount + httpsTransactionCount + proxyTransactionCount + siteClipperTransactionCount + siteClipperScreenclassCount + siteClipperCriteriaCount + sequenceCount + stepCount + sequenceVariableCount + sequenceJavascriptFunction + poolCount + referenceCount + testcaseCount + testcaseVariableCount;
displayString = // ok
totalC8oObjects + " object(s)<br/>" + connectorCount + // ok
" connector(s)";
result.put(projectName, displayString);
if (htmltransactionCount > 0) {
displayString = // ok
(htmlScreenclassCount > 0 ? " screenclassCount = " + htmlScreenclassCount + "<br/>" : "") + (htmlCriteriaCount > 0 ? " criteriaCount = " + htmlCriteriaCount + "<br/>" : "") + (htmlExtractionRuleCount > 0 ? " extractionRuleCount = " + htmlExtractionRuleCount + "<br/>" : "") + " transactionCount = " + htmltransactionCount + // ok
"<br/>" + (htmlTransactionVariableCount > 0 ? " transactionVariableCount = " + htmlTransactionVariableCount + "<br/>" : "") + " statementCount (handlers=" + handlerstatementCount + ", statements=" + statementCount + ", total=" + (int) (handlerstatementCount + statementCount) + ")";
result.put("HTML connector", displayString);
}
/*
* javelin connector
*/
if (javelinScreenclassCount > 0) {
displayString = // ok
" screenclassCount = " + javelinScreenclassCount + "<br/>" + (javelinCriteriaCount > 0 ? " criteriaCount = " + javelinCriteriaCount + "<br/>" : "") + (javelinExtractionRuleCount > 0 ? " extractionRuleCount = " + javelinExtractionRuleCount + "<br/>" : "") + // ok
(javelinTransactionCount > 0 ? " transactionCount = " + javelinTransactionCount + "<br/>" : "") + " handlerCount (Entry = " + javelinEntryHandlerCount + ", Exit = " + javelinExitHandlerCount + ", Screenclass = " + javelinHandlerCount + "), total = " + (int) (javelinEntryHandlerCount + javelinExitHandlerCount + javelinHandlerCount) + " in " + javelinJavascriptLines + " lines<br/>" + (javelinTransactionVariableCount > 0 ? " variableCount = " + javelinTransactionVariableCount : "");
result.put("Javelin connector", displayString);
}
/*
* SQL connector
*/
if (sqlTransactionCount > 0) {
displayString = // ok
" sqltransactionCount = " + sqlTransactionCount + "<br/>" + // ok
(selectInQueryCount > 0 ? " selectInQueryCount = " + selectInQueryCount + "<br/>" : "") + (sqlTransactionVariableCount > 0 ? " transactionVariableCount = " + sqlTransactionVariableCount : "");
if (sheetCount > 0) {
displayString += "<br/>Sheets<br/>" + " sheetCount = " + sheetCount;
}
result.put("SQL connector", displayString);
}
/*
* Http connector
*/
if (httpConnectorCount > 0) {
displayString = " connectorCount = " + httpConnectorCount + "<br/>";
}
if (jsonHttpTransactionCount > 0) {
displayString += // ok
" JSONTransactionCount = " + jsonHttpTransactionCount + "<br/>" + // ok
(xmlHttpTransactionCount > 0 ? " XmlTransactionCount = " + xmlHttpTransactionCount + "<br/>" : "") + (httpTransactionCount > 0 ? " HTTPtransactionCount = " + httpTransactionCount : "");
result.put("HTTP connector", displayString);
}
/*
* Https connector
*/
if (httpsConnectorCount > 0) {
displayString = " connectorCount = " + httpsConnectorCount + "<br/>" + // ok
(jsonHttpsTransactionCount > 0 ? " JSONTransactionCount = " + jsonHttpsTransactionCount + "<br/>" : "") + // ok
(xmlHttpsTransactionCount > 0 ? " XmlTransactionCount = " + xmlHttpsTransactionCount + "<br/>" : "") + // ok
(httpsTransactionCount > 0 ? " HTTPStransactionCount = " + httpsTransactionCount : "");
result.put("HTTPS connector", displayString);
}
/*
* Proxy connector
*/
if (proxyTransactionCount > 0) {
displayString = " TransactionCount = " + proxyTransactionCount;
result.put("Proxy connector", displayString);
}
/*
* Siteclipper connector
*/
if (siteClipperTransactionCount > 0) {
displayString = // ok
" TransactionCount = " + siteClipperTransactionCount + "<br/>" + // ok
(siteClipperScreenclassCount > 0 ? " screenclassCount = " + siteClipperScreenclassCount + "<br/>" : "") + (siteClipperCriteriaCount > 0 ? " criteriaCount = " + siteClipperCriteriaCount : "");
result.put("SiteClipper connector", displayString);
}
/*
* Sequencer
*/
if (sequenceCount > 0) {
displayString = // ok
" sequenceCount = " + sequenceCount + "<br/>" + // ok
(stepCount > 0 ? " stepCount = " + stepCount + "<br/>" : "") + (sequenceVariableCount > 0 ? " variableCount = " + sequenceVariableCount + "<br/>" : "") + " javascriptCode = " + sequenceJavascriptFunction + " functions in " + sequenceJavascriptLines + " lines" + ((boolean) (sequenceJavascriptFunction == 0) ? " (declarations or so)" : "");
result.put("Sequencer", displayString);
}
if (poolCount > 0) {
displayString = " poolCount = " + poolCount;
result.put("Pools", displayString);
}
if (referenceCount > 0) {
displayString = " referenceCount = " + referenceCount;
result.put("References", displayString);
}
if (testcaseCount > 0) {
displayString = " testcaseCount = " + testcaseCount + "<br/>" + (testcaseVariableCount > 0 ? " testcaseVariableCount = " + testcaseVariableCount : "");
result.put("Test cases", displayString);
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void walk(DatabaseObject databaseObject) throws Exception {
depth++;
// deal with connectors
if (databaseObject instanceof Connector) {
if (databaseObject instanceof HtmlConnector) {
htmlConnectorCount++;
} else if (databaseObject instanceof HttpConnector) {
if (((HttpConnector) databaseObject).isHttps())
httpsConnectorCount++;
else
httpConnectorCount++;
} else if (databaseObject instanceof CicsConnector) {
cicsConnectorCount++;
} else if (databaseObject instanceof SiteClipperConnector) {
siteClipperConnectorCount++;
} else if (databaseObject instanceof SqlConnector) {
sqlConnectorCount++;
} else if (databaseObject instanceof JavelinConnector) {
javelinConnectorCount++;
}
} else // deal with screenclasses
if (databaseObject instanceof ScreenClass) {
if (databaseObject instanceof JavelinScreenClass) {
// deal with javelinScreenClasses
javelinScreenclassCount++;
} else if (databaseObject instanceof SiteClipperScreenClass) {
// deal with siteClipperScreenClasses
siteClipperScreenclassCount++;
} else {
// deal with html ScreenClasses
htmlScreenclassCount++;
}
} else if (databaseObject instanceof Criteria) {
if (databaseObject.getParent() instanceof JavelinScreenClass) {
javelinCriteriaCount++;
} else if (databaseObject.getParent() instanceof SiteClipperScreenClass) {
siteClipperCriteriaCount++;
} else {
htmlCriteriaCount++;
}
} else if (databaseObject instanceof ExtractionRule) {
if (databaseObject.getParent() instanceof JavelinScreenClass) {
javelinExtractionRuleCount++;
} else {
htmlExtractionRuleCount++;
}
} else if (databaseObject instanceof Transaction) {
if (databaseObject instanceof TransactionWithVariables) {
if (databaseObject instanceof HtmlTransaction) {
htmltransactionCount++;
} else if (databaseObject instanceof JsonHttpTransaction) {
if (((HttpConnector) databaseObject.getParent()).isHttps())
jsonHttpsTransactionCount++;
else
jsonHttpTransactionCount++;
} else if (databaseObject instanceof HttpTransaction) {
if (((HttpConnector) databaseObject.getParent()).isHttps())
httpsTransactionCount++;
else
httpTransactionCount++;
} else if (databaseObject instanceof XmlHttpTransaction) {
if (((HttpConnector) databaseObject.getParent()).isHttps())
xmlHttpsTransactionCount++;
else
xmlHttpTransactionCount++;
} else if (databaseObject instanceof ProxyTransaction) {
proxyTransactionCount++;
} else if (databaseObject instanceof SiteClipperTransaction) {
siteClipperTransactionCount++;
} else if (databaseObject instanceof JavelinTransaction) {
JavelinTransaction javelinTransaction = (JavelinTransaction) databaseObject;
// Functions
String line;
int lineNumber = 0;
BufferedReader br = new BufferedReader(new StringReader(javelinTransaction.handlers));
while ((line = br.readLine()) != null) {
line = line.trim();
lineNumber++;
if (line.startsWith("function ")) {
try {
String functionName = line.substring(9, line.indexOf(')') + 1);
if (functionName.endsWith(JavelinTransaction.EVENT_ENTRY_HANDLER + "()")) {
// TYPE_FUNCTION_SCREEN_CLASS_ENTRY
javelinEntryHandlerCount++;
} else if (functionName.endsWith(JavelinTransaction.EVENT_EXIT_HANDLER + "()")) {
// TYPE_FUNCTION_SCREEN_CLASS_EXIT
javelinExitHandlerCount++;
} else {
// TYPE_OTHER
javelinHandlerCount++;
}
} catch (StringIndexOutOfBoundsException e) {
// Ignore
}
}
}
// compute total number of lines of javascript
javelinJavascriptLines += lineNumber;
javelinTransactionCount++;
} else if (databaseObject instanceof SqlTransaction) {
SqlTransaction sqlTransaction = (SqlTransaction) databaseObject;
/*
* count the number of SELECT
*/
String query = sqlTransaction.getSqlQuery();
if (query != null) {
query = query.toLowerCase();
String pattern = "select";
int lastIndex = 0;
while (lastIndex != -1) {
lastIndex = query.indexOf(pattern, lastIndex);
if (lastIndex != -1) {
selectInQueryCount++;
lastIndex += pattern.length();
}
}
}
sqlTransactionCount++;
}
transactionWithVariablesCount++;
} else {
// transaction with no variables
transactionCount++;
}
} else // deal with statements
if (databaseObject instanceof Statement) {
// System.out.println(databaseObject.getClass().getName() + "\r\n");
if (databaseObject instanceof HandlerStatement) {
handlerstatementCount++;
} else {
statementCount++;
}
} else // deal with variables
if (databaseObject instanceof Variable) {
if (databaseObject.getParent() instanceof Transaction) {
if (databaseObject.getParent() instanceof JavelinTransaction) {
javelinTransactionVariableCount++;
} else if (databaseObject.getParent() instanceof HtmlTransaction) {
htmlTransactionVariableCount++;
} else if (databaseObject.getParent() instanceof SqlTransaction) {
sqlTransactionVariableCount++;
} else {
// should be zero
transactionVariableCount++;
}
} else if (databaseObject.getParent() instanceof Sequence) {
sequenceVariableCount++;
} else if (databaseObject.getParent() instanceof TestCase) {
testcaseVariableCount++;
}
} else if (databaseObject instanceof TestCase) {
testcaseCount++;
} else if (databaseObject instanceof Sequence) {
sequenceCount++;
} else if (databaseObject instanceof Step) {
if (databaseObject instanceof SimpleStep) {
SimpleStep simpleStep = (SimpleStep) databaseObject;
// Functions
String line;
int lineNumber = 0;
BufferedReader br = new BufferedReader(new StringReader(simpleStep.getExpression()));
while ((line = br.readLine()) != null) {
line = line.trim();
lineNumber++;
if (line.startsWith("function ")) {
try {
sequenceJavascriptFunction++;
} catch (StringIndexOutOfBoundsException e) {
// Ignore
}
}
}
sequenceJavascriptLines += lineNumber;
stepCount++;
} else
stepCount++;
} else if (databaseObject instanceof Sheet) {
sheetCount++;
} else if (databaseObject instanceof Pool) {
poolCount++;
}
super.walk(databaseObject);
}
}.go(project);
} catch (Exception e) {
// Just ignore, should never happen
}
}
} catch (Throwable e) {
throw new Exception("Unable to compute statistics of the project!: \n" + e.getMessage());
} finally {
}
return result;
}
use of com.twinsoft.convertigo.beans.transactions.JsonHttpTransaction in project convertigo by convertigo.
the class OpenApiUtils method createRestConnector.
public static HttpConnector createRestConnector(OpenAPI openApi) throws Exception {
try {
HttpConnector httpConnector = new HttpConnector();
httpConnector.bNew = true;
Info info = openApi.getInfo();
String title = info != null ? info.getTitle() : "";
title = title == null || title.isEmpty() ? "RestConnector" : title;
String description = info != null ? info.getDescription() : "";
description = description == null || description.isEmpty() ? "" : description;
httpConnector.setName(StringUtils.normalize(title));
httpConnector.setComment(description);
String httpUrl = "";
List<Server> servers = openApi.getServers();
if (servers.size() > 0) {
httpUrl = servers.get(0).getUrl();
}
httpUrl = httpUrl.isEmpty() ? getConvertigoServeurUrl() : httpUrl;
UrlFields urlFields = UrlParser.parse(httpUrl);
if (urlFields != null) {
String scheme = urlFields.getScheme();
String host = urlFields.getHost();
String port = urlFields.getPort();
String basePath = urlFields.getPath();
boolean isHttps = "https".equals(scheme);
httpConnector.setHttps(isHttps);
httpConnector.setServer(host);
httpConnector.setPort(port == null ? (isHttps ? 443 : 80) : Integer.valueOf(port));
httpConnector.setBaseDir(basePath);
}
httpConnector.setBaseUrl(httpUrl);
List<SecurityRequirement> securityRequirements = openApi.getSecurity();
if (securityRequirements != null && securityRequirements.size() > 0) {
Map<String, SecurityScheme> securitySchemes = openApi.getComponents().getSecuritySchemes();
for (SecurityRequirement sr : securityRequirements) {
for (String s_name : sr.keySet()) {
SecurityScheme securityScheme = securitySchemes.get(s_name);
if (securityScheme != null) {
String scheme = securityScheme.getScheme() == null ? "" : securityScheme.getScheme();
boolean isBasicScheme = scheme.toLowerCase().equals("basic");
boolean isHttpType = securityScheme.getType().equals(SecurityScheme.Type.HTTP);
if (isHttpType && isBasicScheme) {
httpConnector.setAuthenticationType(AuthenticationMode.Basic);
break;
}
}
}
}
}
Paths paths = openApi.getPaths();
if (paths != null) {
for (Entry<String, PathItem> entry : paths.entrySet()) {
HttpMethodType httpMethodType = null;
Operation operation = null;
String customHttpVerb = "";
String subDir = entry.getKey();
PathItem pathItem = entry.getValue();
Map<HttpMethod, Operation> operationMap = pathItem.readOperationsMap();
for (HttpMethod httpMethod : operationMap.keySet()) {
operation = operationMap.get(httpMethod);
if (httpMethod.equals(HttpMethod.GET)) {
httpMethodType = HttpMethodType.GET;
} else if (httpMethod.equals(HttpMethod.POST)) {
httpMethodType = HttpMethodType.POST;
} else if (httpMethod.equals(HttpMethod.PUT)) {
httpMethodType = HttpMethodType.PUT;
} else if (httpMethod.equals(HttpMethod.PATCH)) {
httpMethodType = HttpMethodType.PUT;
customHttpVerb = "PATCH";
} else if (httpMethod.equals(HttpMethod.DELETE)) {
httpMethodType = HttpMethodType.DELETE;
} else if (httpMethod.equals(HttpMethod.HEAD)) {
httpMethodType = HttpMethodType.HEAD;
} else if (httpMethod.equals(HttpMethod.TRACE)) {
httpMethodType = HttpMethodType.TRACE;
} else if (httpMethod.equals(HttpMethod.OPTIONS)) {
httpMethodType = HttpMethodType.OPTIONS;
} else {
httpMethodType = null;
}
if (operation != null && httpMethodType != null) {
String operationId = operation.getOperationId();
String operationDesc = operation.getDescription();
String summary = operation.getSummary();
String name = StringUtils.normalize(subDir + ":" + (customHttpVerb.isEmpty() ? httpMethodType.toString() : customHttpVerb));
if (name.isEmpty()) {
name = StringUtils.normalize(operationId);
if (name.isEmpty()) {
name = StringUtils.normalize(summary);
if (name.isEmpty()) {
name = "operation";
}
}
}
String comment = org.apache.commons.lang3.StringUtils.isNotBlank(summary) && !"null".equals(summary) ? summary : (org.apache.commons.lang3.StringUtils.isNotBlank(operationDesc) && !"null".equals(operationDesc) ? operationDesc : "");
XMLVector<XMLVector<String>> httpParameters = new XMLVector<XMLVector<String>>();
AbstractHttpTransaction transaction = new HttpTransaction();
String h_ContentType = MimeType.WwwForm.value();
/*if (consumeList != null) {
if (consumeList.contains(MimeType.Json.value())) {
h_ContentType = MimeType.Json.value();
}
else if (consumeList.contains(MimeType.Xml.value())) {
h_ContentType = MimeType.Xml.value();
}
else {
h_ContentType = consumeList.size() > 0 ?
consumeList.get(0) : MimeType.WwwForm.value();
}
}*/
String h_Accept = MimeType.Json.value();
if (h_Accept != null) {
XMLVector<String> xmlv = new XMLVector<String>();
xmlv.add("Accept");
xmlv.add(h_Accept);
httpParameters.add(xmlv);
if (h_Accept.equals(MimeType.Xml.value())) {
transaction = new XmlHttpTransaction();
((XmlHttpTransaction) transaction).setXmlEncoding("UTF-8");
} else if (h_Accept.equals(MimeType.Json.value())) {
transaction = new JsonHttpTransaction();
((JsonHttpTransaction) transaction).setIncludeDataType(false);
}
}
// Add variables
boolean hasBodyVariable = false;
RequestBody body = operation.getRequestBody();
if (body != null) {
Map<String, MediaType> medias = body.getContent();
for (String contentType : medias.keySet()) {
MediaType mediaType = medias.get(contentType);
Schema<?> mediaSchema = mediaType.getSchema();
List<String> requiredList = mediaSchema.getRequired();
if (contentType.equals("application/x-www-form-urlencoded")) {
@SuppressWarnings("rawtypes") Map<String, Schema> properties = mediaSchema.getProperties();
if (properties != null) {
for (String p_name : properties.keySet()) {
Schema<?> schema = properties.get(p_name);
String p_description = schema.getDescription();
boolean p_required = requiredList == null ? false : requiredList.contains(p_name);
boolean isMultiValued = false;
if (schema instanceof ArraySchema) {
isMultiValued = true;
}
RequestableHttpVariable httpVariable = isMultiValued ? new RequestableHttpMultiValuedVariable() : new RequestableHttpVariable();
httpVariable.bNew = true;
httpVariable.setHttpMethod(HttpMethodType.POST.name());
httpVariable.setName(p_name);
httpVariable.setDescription(p_name);
httpVariable.setHttpName(p_name);
httpVariable.setRequired(p_required);
httpVariable.setComment(p_description == null ? "" : p_description);
if (schema instanceof FileSchema) {
httpVariable.setDoFileUploadMode(DoFileUploadMode.multipartFormData);
}
Object defaultValue = schema.getDefault();
if (defaultValue == null && p_required) {
defaultValue = "";
}
httpVariable.setValueOrNull(defaultValue);
transaction.addVariable(httpVariable);
}
}
} else if (!hasBodyVariable) {
RequestableHttpVariable httpVariable = new RequestableHttpVariable();
httpVariable.bNew = true;
httpVariable.setHttpMethod(HttpMethodType.POST.name());
httpVariable.setRequired(true);
// overrides variable's name for internal use
httpVariable.setName(com.twinsoft.convertigo.engine.enums.Parameter.HttpBody.getName());
Object defaultValue = null;
httpVariable.setValueOrNull(defaultValue);
transaction.addVariable(httpVariable);
h_ContentType = contentType;
hasBodyVariable = true;
}
}
}
List<Parameter> parameters = operation.getParameters();
if (parameters != null) {
for (Parameter parameter : parameters) {
String p_name = parameter.getName();
String p_description = parameter.getDescription();
boolean p_required = parameter.getRequired();
boolean isMultiValued = false;
Schema<?> schema = parameter.getSchema();
if (schema instanceof ArraySchema) {
isMultiValued = true;
}
RequestableHttpVariable httpVariable = isMultiValued ? new RequestableHttpMultiValuedVariable() : new RequestableHttpVariable();
httpVariable.bNew = true;
httpVariable.setName(p_name);
httpVariable.setDescription(p_name);
httpVariable.setHttpName(p_name);
httpVariable.setRequired(p_required);
httpVariable.setComment(p_description == null ? "" : p_description);
if (parameter instanceof QueryParameter || parameter instanceof PathParameter || parameter instanceof HeaderParameter) {
httpVariable.setHttpMethod(HttpMethodType.GET.name());
if (parameter instanceof HeaderParameter) {
// overrides variable's name : will be treated as dynamic header
httpVariable.setName(com.twinsoft.convertigo.engine.enums.Parameter.HttpHeader.getName() + p_name);
// do not post on target server
httpVariable.setHttpName("");
}
if (parameter instanceof PathParameter) {
// do not post on target server
httpVariable.setHttpName("");
}
} else {
httpVariable.setHttpMethod("");
}
Object defaultValue = schema.getDefault();
if (defaultValue == null && p_required) {
defaultValue = "";
}
httpVariable.setValueOrNull(defaultValue);
transaction.addVariable(httpVariable);
}
}
// Set Content-Type
if (h_ContentType != null) {
XMLVector<String> xmlv = new XMLVector<String>();
xmlv.add(HeaderName.ContentType.value());
xmlv.add(hasBodyVariable ? h_ContentType : MimeType.WwwForm.value());
httpParameters.add(xmlv);
}
transaction.bNew = true;
transaction.setName(name);
transaction.setComment(comment);
transaction.setSubDir(subDir);
transaction.setHttpVerb(httpMethodType);
transaction.setCustomHttpVerb(customHttpVerb);
transaction.setHttpParameters(httpParameters);
transaction.setHttpInfo(true);
httpConnector.add(transaction);
}
}
}
}
return httpConnector;
} catch (Throwable t) {
Engine.logEngine.error("Unable to create connector", t);
throw new Exception("Unable to create connector", t);
}
}
Aggregations