diff --git a/obp-api/src/main/scala/bootstrap/liftweb/Boot.scala b/obp-api/src/main/scala/bootstrap/liftweb/Boot.scala
index 4e207267aa..753f26f4b5 100644
--- a/obp-api/src/main/scala/bootstrap/liftweb/Boot.scala
+++ b/obp-api/src/main/scala/bootstrap/liftweb/Boot.scala
@@ -42,7 +42,6 @@ import code.api.ResourceDocs1_4_0.ResourceDocs300.{ResourceDocs310, ResourceDocs
import code.api.ResourceDocs1_4_0._
import code.api._
import code.api.attributedefinition.AttributeDefinition
-import code.api.builder.APIBuilder_Connector
import code.api.cache.Redis
import code.api.util.APIUtil.{enableVersionIfAllowed, errorJsonResponse, getPropsValue, gitCommit}
import code.api.util._
@@ -454,7 +453,6 @@ class Boot extends MdcLoggable {
enableVersionIfAllowed(ApiVersion.v4_0_0)
enableVersionIfAllowed(ApiVersion.v5_0_0)
enableVersionIfAllowed(ApiVersion.v5_1_0)
- enableVersionIfAllowed(ApiVersion.b1)
enableVersionIfAllowed(ApiVersion.`dynamic-endpoint`)
enableVersionIfAllowed(ApiVersion.`dynamic-entity`)
@@ -1089,7 +1087,7 @@ object ToSchemify {
EndpointTag,
ProductFee,
UserInitAction
- )++ APIBuilder_Connector.allAPIBuilderModels
+ )
// start grpc server
if (APIUtil.getPropsAsBoolValue("grpc.server.enabled", false)) {
diff --git a/obp-api/src/main/scala/code/api/APIBuilder/APIBuilder.scala b/obp-api/src/main/scala/code/api/APIBuilder/APIBuilder.scala
deleted file mode 100644
index 908fd0b4fa..0000000000
--- a/obp-api/src/main/scala/code/api/APIBuilder/APIBuilder.scala
+++ /dev/null
@@ -1,503 +0,0 @@
-/**
-Open Bank Project - API
-Copyright (C) 2011-2019, TESOBE GmbH
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-
-Email: contact@tesobe.com
-TESOBE GmbH
-Osloerstrasse 16/17
-Berlin 13359, Germany
-
- This product includes software developed at
- TESOBE (http://www.tesobe.com/)
- */
-package code.api.APIBuilder
-
-import code.api.APIBuilder.APIBuilderModel._
-import code.api.util.APIUtil
-import scala.meta._
-import net.liftweb.json.JsonAST.{JObject, JString}
-import net.liftweb.json.JValue
-
-object APIBuilder
-{
- //you can modify this json file: OBP-API/obp-api/src/main/resources/apiBuilder/apisResource.json
- def main(args: Array[String]): Unit = overwriteApiCode(apiSource,jsonFactorySource)
-
- val jsonJValueFromFile: JValue = APIUtil.getJValueFromJsonFile("apiBuilder/apisResource.json")
-
- val resourceDocsJObject= jsonJValueFromFile.\("resource_docs").children.asInstanceOf[List[JObject]]
-
- val getMultipleApiJValue = resourceDocsJObject.filter(jObject => jObject.\("request_verb") == JString("GET")&& !jObject.\("request_url").asInstanceOf[JString].values.contains("_ID")).head
- val getSingleApiJValue = resourceDocsJObject.filter(jObject => jObject.\("request_verb") == JString("GET")&& jObject.\("request_url").asInstanceOf[JString].values.contains("_ID")).head
- val createSingleApiJValue = resourceDocsJObject.filter(_.\("request_verb") == JString("POST")).head
- val deleteSingleApiJValue = resourceDocsJObject.filter(_.\("request_verb") == JString("DELETE")).head
-
- val getSingleApiResponseBody: JValue = getSingleApiJValue \ "success_response_body"
- //"template"
- val modelName = getModelName(getSingleApiResponseBody)
- //All the fields in the template object.
- val modelFieldsJValue: JValue = getSingleApiResponseBody \ modelName
-
- //TEMPLATE
- val modelNameUpperCase = modelName.toUpperCase
- //template
- val modelNameLowerCase = modelName.toLowerCase
- //Template
- val modelNameCapitalized = modelNameLowerCase.capitalize
- //MappedTemplate_123123
- val modelMappedName = s"Mapped${modelNameCapitalized}_"+Math.abs(scala.util.Random.nextLong())
- val modelTypeName = Type.Name(modelMappedName)
- val modelTermName = Term.Name(modelMappedName)
- val modelInit =Init.apply(Type.Name(modelMappedName), Term.Name(modelMappedName), Nil)
-
-
- val getMultipleApiSummary: String = (getMultipleApiJValue \ "summary").asInstanceOf[JString].values
- val getSingleApiSummary: String = (getSingleApiJValue \ "summary").asInstanceOf[JString].values
- val createSingleApiSummary: String = (createSingleApiJValue \ "summary").asInstanceOf[JString].values
- val deleteSingleApiSummary: String = (deleteSingleApiJValue \ "summary").asInstanceOf[JString].values
- val getApiSummaryFromJsonFile: String = getMultipleApiSummary +"(from Json File)"
-
- val getApiDescription: String = (getMultipleApiJValue \ "description").asInstanceOf[JString].values
- val getSingleApiDescription: String = (getSingleApiJValue \ "description").asInstanceOf[JString].values
- val createSingleApiDescription: String = (createSingleApiJValue \ "description").asInstanceOf[JString].values
- val deleteSingleApiDescription: String = (deleteSingleApiJValue \ "description").asInstanceOf[JString].values
- val getApiDescriptionFromJsonFile: String = getApiDescription + "(From Json File)"
-
- //TODO, for now this is only in description, could be a single field later.
- val getMultipleApiAuthentication:Boolean = getApiDescriptionFromJsonFile.contains("Authentication is Mandatory")
- val getSingleApiAuthentication:Boolean = getSingleApiDescription.contains("Authentication is Mandatory")
- val createSingleApiAuthentication:Boolean = createSingleApiDescription.contains("Authentication is Mandatory")
- val deleteSingleApiAuthentication:Boolean = deleteSingleApiDescription.contains("Authentication is Mandatory")
-
- val getMultipleAuthenticationStatement: Term.ApplyInfix = getAuthenticationStatement(getMultipleApiAuthentication)
- val getSingleApiAuthenticationStatement: Term.ApplyInfix = getAuthenticationStatement(getSingleApiAuthentication)
- val createSingleApiAuthenticationStatement: Term.ApplyInfix = getAuthenticationStatement(createSingleApiAuthentication)
- val deleteSingleApiAuthenticationStatement: Term.ApplyInfix = getAuthenticationStatement(deleteSingleApiAuthentication)
-
- val getMultipleApiUrl: String = getApiUrl(getMultipleApiJValue)//eg: /my/template
- val getSingleApiUrl: String = getApiUrl(getSingleApiJValue) //eg: /my/template
- val createSingleApiUrl: String = getApiUrl(createSingleApiJValue)//eg: /my/template
- val deleteSingleApiUrl: String = getApiUrl(deleteSingleApiJValue)//eg: /my/template
- val getApiUrlFromJsonFile: String = "/file"+getMultipleApiUrl //eg: /file/my/template
-
- val getMultipleApiUrlVal = Lit.String(s"$getMultipleApiUrl")
- val getSingleApiUrlVal = Lit.String(s"$getSingleApiUrl")
- val createSingleApiUrlVal = Lit.String(s"$createSingleApiUrl")
- val deleteSingleApiUrlVal = Lit.String(s"$deleteSingleApiUrl")
- val getApiUrlFromJsonFileVal = Lit.String(s"$getApiUrlFromJsonFile")
- //TODO, escape issue:return the space, I added quotes in the end: allSourceCode.syntax.replaceAll(""" :: ""","""" :: """")
- //from "/my/template" --> "my :: template"
- val getApiUrlLiftFormat = getMultipleApiUrl.replaceFirst("/", "").split("/").mkString("""""",""" :: ""","""""")
- val createApiUrlLiftFormat = createSingleApiUrl.replaceFirst("/", "").split("/").mkString("""""",""" :: ""","""""")
- val deleteApiUrlLiftFormat = deleteSingleApiUrl.replaceFirst("/", "").split("/").dropRight(1).mkString("""""",""" :: ""","""""")
- val getSingleApiUrlLiftFormat = getSingleApiUrl.replaceFirst("/", "").split("/").dropRight(1).mkString("""""",""" :: ""","""""")
- val getApiUrlLiftweb: Lit.String = Lit.String(getApiUrlLiftFormat)
- val createApiUrlLiftweb: Lit.String = Lit.String(createApiUrlLiftFormat)
- val deleteApiUrlLiftweb: Lit.String = Lit.String(deleteApiUrlLiftFormat)
- val getSingleApiUrlLiftweb: Lit.String = Lit.String(getSingleApiUrlLiftFormat)
-
- val getMultipleApiSummaryVal = Lit.String(s"$getMultipleApiSummary")
- val getSingleApiSummaryVal = Lit.String(s"$getSingleApiSummary")
- val createSingleApiSummaryVal = Lit.String(s"$createSingleApiSummary")
- val deleteSingleApiSummaryVal = Lit.String(s"$deleteSingleApiSummary")
- val getApiSummaryFromJsonFileVal = Lit.String(s"$getApiSummaryFromJsonFile")
-
- val getMultipleApiDescriptionVal = Lit.String(s"$getApiDescription")
- val getSingleApiDescriptionVal = Lit.String(s"$getSingleApiDescription")
- val createSingleApiDescriptionVal = Lit.String(s"$createSingleApiDescription")
- val deleteSingleApiDescriptionVal = Lit.String(s"$deleteSingleApiDescription")
- val getApiDescriptionFromJsonFileVal = Lit.String(s"$getApiDescriptionFromJsonFile")
-
- val errorMessageBody: Lit.String = Lit.String(s"OBP-31001: ${modelNameCapitalized} not found. Please specify a valid value for ${modelNameUpperCase}_ID.")
- val errorMessageName: Pat.Var = Pat.Var(Term.Name(s"${modelNameCapitalized}NotFound"))
- val errorMessageVal: Defn.Val = q"""val TemplateNotFound = $errorMessageBody""".copy(pats = List(errorMessageName))
- val errorMessage: Term.Name = Term.Name(errorMessageVal.pats.head.toString())
-
-
- val getTemplateFromFileResourceCode: Term.ApplyInfix =q"""
- resourceDocs += ResourceDoc(
- getTemplatesFromFile,
- apiVersion,
- "getTemplatesFromFile",
- "GET",
- $getApiUrlFromJsonFileVal,
- $getApiSummaryFromJsonFileVal,
- $getApiDescriptionFromJsonFileVal,
- emptyObjectJson,
- templatesJson,
- List(UserNotLoggedIn, UnknownError),
- apiTagApiBuilder :: Nil
- )"""
- val getTemplatesResourceCode: Term.ApplyInfix =q"""
- resourceDocs += ResourceDoc(
- getTemplates,
- apiVersion,
- "getTemplates",
- "GET",
- $getMultipleApiUrlVal,
- $getMultipleApiSummaryVal,
- $getMultipleApiDescriptionVal,
- emptyObjectJson,
- templatesJson,
- List(UserNotLoggedIn, UnknownError),
- apiTagApiBuilder :: Nil
- )"""
- val getTemplateResourceCode: Term.ApplyInfix =q"""
- resourceDocs += ResourceDoc(
- getTemplate,
- apiVersion,
- "getTemplate",
- "GET",
- $getSingleApiUrlVal,
- $getSingleApiSummaryVal,
- $getSingleApiDescriptionVal,
- emptyObjectJson,
- templateJson,
- List(UserNotLoggedIn, UnknownError),
- apiTagApiBuilder :: Nil
- )"""
- val createTemplateResourceCode: Term.ApplyInfix =q"""
- resourceDocs += ResourceDoc(
- createTemplate,
- apiVersion,
- "createTemplate",
- "POST",
- $createSingleApiUrlVal,
- $createSingleApiSummaryVal,
- $createSingleApiDescriptionVal,
- createTemplateJson,
- templateJson,
- List(UnknownError),
- apiTagApiBuilder :: Nil
- )"""
- val deleteTemplateResourceCode: Term.ApplyInfix = q"""
- resourceDocs += ResourceDoc(
- deleteTemplate,
- apiVersion,
- "deleteTemplate",
- "DELETE",
- $deleteSingleApiUrlVal,
- $deleteSingleApiSummaryVal,
- $deleteSingleApiDescriptionVal,
- emptyObjectJson,
- emptyObjectJson.copy("true"),
- List(UserNotLoggedIn, UnknownError),
- apiTagApiBuilder :: Nil
- )"""
-
-
- val getTemplateFromFilePartialFunction: Defn.Val = q"""
- lazy val getTemplatesFromFile: OBPEndpoint = {
- case ("file" :: $getApiUrlLiftweb :: Nil) JsonGet req =>
- cc => {
- for {
- u <- $getMultipleAuthenticationStatement
- resourceDocsJObject= jsonFromApisResource.\("resource_docs").children.asInstanceOf[List[JObject]]
- getMethodJValue = resourceDocsJObject.filter(jObject => jObject.\("request_verb") == JString("GET")&& !jObject.\("request_url").asInstanceOf[JString].values.contains("_ID")).head
- jsonObject = getMethodJValue \ "success_response_body"
- } yield {
- successJsonResponse(jsonObject)
- }
- }
- }"""
- val getTemplatesPartialFunction: Defn.Val = q"""
- lazy val getTemplates: OBPEndpoint ={
- case ($getApiUrlLiftweb:: Nil) JsonGet req =>
- cc =>
- {
- for{
- u <- $getMultipleAuthenticationStatement
- templates <- APIBuilder_Connector.getTemplates
- templatesJson = JsonFactory_APIBuilder.createTemplates(templates)
- jsonObject:JValue = decompose(templatesJson)
- }yield{
- successJsonResponse(jsonObject)
- }
- }
- }"""
- val getTemplatePartialFunction: Defn.Val = q"""
- lazy val getTemplate: OBPEndpoint ={
- case ($getSingleApiUrlLiftweb :: templateId :: Nil) JsonGet _ => {
- cc =>
- {
- for{
- u <- $getSingleApiAuthenticationStatement
- template <- APIBuilder_Connector.getTemplateById(templateId) ?~! $errorMessage
- templateJson = JsonFactory_APIBuilder.createTemplate(template)
- jsonObject:JValue = decompose(templateJson)
- }yield{
- successJsonResponse(jsonObject)
- }
- }
- }
- }"""
- val createTemplatePartialFunction: Defn.Val = q"""
- lazy val createTemplate: OBPEndpoint ={
- case ($createApiUrlLiftweb:: Nil) JsonPost json -> _ => {
- cc =>
- {
- for{
- createTemplateJson <- tryo(json.extract[CreateTemplateJson]) ?~! InvalidJsonFormat
- u <- $createSingleApiAuthenticationStatement
- template <- APIBuilder_Connector.createTemplate(createTemplateJson)
- templateJson = JsonFactory_APIBuilder.createTemplate(template)
- jsonObject:JValue = decompose(templateJson)
- }yield{
- successJsonResponse(jsonObject)
- }
- }
- }
- }
- """
- val deleteTemplatePartialFunction: Defn.Val = q"""
- lazy val deleteTemplate: OBPEndpoint ={
- case ($deleteApiUrlLiftweb :: templateId :: Nil) JsonDelete _ => {
- cc =>
- {
- for{
- u <- $deleteSingleApiAuthenticationStatement
- template <- APIBuilder_Connector.getTemplateById(templateId) ?~! $errorMessage
- deleted <- APIBuilder_Connector.deleteTemplate(templateId)
- }yield{
- if(deleted)
- noContentJsonResponse
- else
- errorJsonResponse("Delete not completed")
- }
- }
- }
- }
- """
-
- //List(author, pages, points)
- val modelFieldsNames: List[String] = getModelFieldsNames(modelFieldsJValue)
- //List(String, Int, Double)
- val modelFieldsTypes: List[String] = getModelFieldsTypes(modelFieldsNames, modelFieldsJValue)
- //List(Chinua Achebe, 209, 1.3)
- val modelFieldsDefaultValues: List[Any] = getModelFieldDefaultValues(modelFieldsNames, modelFieldsJValue)
-
- //List(author: String = `Chinua Achebe`, tutor: String = `1123123 1312`, pages: Int = 209, points: Double = 1.3)
- val modelCaseClassParams: List[Term.Param] = getModelCaseClassParams(modelFieldsNames, modelFieldsTypes, modelFieldsDefaultValues)
-
- //def createTemplate(createTemplateJson: CreateTemplateJson) = Full(
- // MappedTemplate_6099750036365020434.create
- // .mTemplateId(UUID.randomUUID().toString)
- // .mAuthor(createTemplateJson.author)
- // .mPages(createTemplateJson.pages)
- // .mPoints(createTemplateJson.points)
- // .saveMe())
- val createModelJsonMethod: Defn.Def = generateCreateModelJsonMethod(modelFieldsNames, modelMappedName)
-
- //trait Template { `_` =>
- // def author: String
- // def tutor: String
- // def pages: Int
- // def points: Double
- // def templateId: String
- //}
- val modelTrait: Defn.Trait = getModelTrait(modelFieldsNames, modelFieldsTypes)
-
- //class MappedTemplate extends Template with LongKeyedMapper[MappedTemplate] with IdPK {
- // object mAuthor extends MappedString(this, 100)
- // override def author: String = mAuthor.get
- // object mPages extends MappedInt(this)
- // override def pages: Int = mPages.get
- // object mPoints extends MappedDouble(this)
- // override def points: Double = mPoints.get
- // def getSingleton = MappedTemplate
- // object mTemplateId extends MappedString(this, 100)
- // override def templateId: String = mTemplateId.get
- //}
- val modelClass = getModelClass(modelTypeName, modelTermName, modelFieldsNames, modelFieldsTypes)
-
- val apiSource: Source = source"""
-/**
-Open Bank Project - API
-Copyright (C) 2011-2019, TESOBE GmbH
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-
-Email: contact@tesobe.com
-TESOBE GmbH
-Osloerstrasse 16/17
-Berlin 13359, Germany
-
-This product includes software developed at
-TESOBE (http://www.tesobe.com/)
-*/
-package code.api.builder
-
-import java.util.UUID
-import code.api.builder.JsonFactory_APIBuilder._
-import code.api.util.APIUtil._
-import code.api.util.ApiTag._
-import com.openbankproject.commons.util.ApiVersion
-import code.api.util.ErrorMessages._
-import net.liftweb.common.Full
-import net.liftweb.http.rest.RestHelper
-import net.liftweb.json
-import net.liftweb.json.Extraction._
-import net.liftweb.json._
-import net.liftweb.mapper.By
-import net.liftweb.util.Helpers.tryo
-import scala.collection.immutable.Nil
-import scala.collection.mutable.ArrayBuffer
-
-trait APIMethods_APIBuilder
-{
- self: RestHelper =>
-
- val ImplementationsBuilderAPI = new Object()
- {
- val apiVersion = ApiVersion.apiBuilder
- val resourceDocs = ArrayBuffer[ResourceDoc]()
- val apiRelations = ArrayBuffer[ApiRelation]()
- val codeContext = CodeContext(resourceDocs, apiRelations)
- implicit val formats = code.api.util.CustomJsonFormats.formats
-
- $errorMessageVal;
- def endpointsOfBuilderAPI = getTemplatesFromFile :: getTemplate :: createTemplate :: getTemplates :: deleteTemplate :: Nil
- val jsonFromApisResource: JValue = getJValueFromJsonFile("apiBuilder/apisResource.json")
-
- $getTemplateFromFileResourceCode
- $getTemplateFromFilePartialFunction
-
- $getTemplatesResourceCode
- $getTemplatesPartialFunction
-
- $getTemplateResourceCode
- $getTemplatePartialFunction
-
- $createTemplateResourceCode
- $createTemplatePartialFunction
-
- $deleteTemplateResourceCode
- $deleteTemplatePartialFunction
- }
-}
-
-object APIBuilder_Connector
-{
- val allAPIBuilderModels = List($modelTermName)
-
- $createModelJsonMethod;
-
- def getTemplates()= Full($modelTermName.findAll())
-
- def getTemplateById(templateId: String)= $modelTermName.find(By($modelTermName.mTemplateId, templateId))
-
- def deleteTemplate(templateId: String)= $modelTermName.find(By($modelTermName.mTemplateId, templateId)).map(_.delete_!)
-
-}
-
-import net.liftweb.mapper._
-
-$modelClass
-
-object $modelTermName extends $modelInit with LongKeyedMetaMapper[$modelTypeName] {}
-
-$modelTrait
-"""
-
- /*
- * ######################################JsonFactory_APIBuilder.scala###################################################
- * */
-
- //List(templateId:String = "11231231312" ,author: String = `Chinua Achebe`, tutor: String = `11231231312`, pages: Int = 209, points: Double = 1.3)
- //Added the templatedId to `modelCaseClassParams`
- val templateJsonClassParams = List(APIBuilderModel.templateIdField)++ modelCaseClassParams
-
- //case class TemplateJson(templateId: String = """1123123 1312""", author: String = """Chinua Achebe""", tutor: String = """1123123 1312""", pages: Int = 209, points: Double = 1.3)
- val TemplateJsonClass: Defn.Class = q"""case class TemplateJson(..$templateJsonClassParams) """
-
- //case class Template(author: String = `Chinua Achebe`, pages: Int = 209, points: Double = 1.3)
- //Note: No `templateId` in this class, the bank no need provide it, obp create a uuid for it.
- val createTemplateJsonClass: Defn.Class = q"""case class CreateTemplateJson(..$modelCaseClassParams) """
-
- //TemplateJson(template.templateId, template.author, template.tutor, template.pages, template.points)
- val createTemplateJsonApply: Term.Apply = generateCreateTemplateJsonApply(modelFieldsNames)
-
- //def createTemplate(template: Template) = TemplateJson(template.templateId, template.author, template.tutor, template.pages, template.points)
- val createTemplateDef: Defn.Def =q"""def createTemplate(template: Template) = $createTemplateJsonApply"""
-
- //def createTemplates(templates: List[Template]) = templates.map(template => TemplateJson(template.templateId, template.author, template.tutor, template.pages, template.points))
- val createTemplatesDef: Defn.Def = q"""def createTemplates(templates: List[Template])= templates.map(template => $createTemplateJsonApply)"""
-
- val jsonFactorySource: Source =source"""
-/**
-Open Bank Project - API
-Copyright (C) 2011-2019, TESOBE GmbH
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-
-Email: contact@tesobe.com
-TESOBE GmbH
-Osloerstrasse 16/17
-Berlin 13359, Germany
-
-This product includes software developed at
-TESOBE (http://www.tesobe.com/)
-*/
-package code.api.builder
-import code.api.util.APIUtil
-
-$TemplateJsonClass
-$createTemplateJsonClass
-
-object JsonFactory_APIBuilder{
-
- val templateJson = TemplateJson()
- val templatesJson = List(templateJson)
- val createTemplateJson = CreateTemplateJson()
-
- $createTemplateDef;
- $createTemplatesDef;
-
- val allFields =
- for (
- v <- this.getClass.getDeclaredFields
- //add guard, ignore the SwaggerJSONsV220.this and allFieldsAndValues fields
- if (APIUtil.notExstingBaseClass(v.getName()))
- )
- yield {
- v.setAccessible(true)
- v.get(this)
- }
-}
-"""
-}
diff --git a/obp-api/src/main/scala/code/api/APIBuilder/APIBuilderModel.scala b/obp-api/src/main/scala/code/api/APIBuilder/APIBuilderModel.scala
deleted file mode 100644
index 525d2fa866..0000000000
--- a/obp-api/src/main/scala/code/api/APIBuilder/APIBuilderModel.scala
+++ /dev/null
@@ -1,669 +0,0 @@
-/**
-Open Bank Project - API
-Copyright (C) 2011-2019, TESOBE GmbH
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-
-Email: contact@tesobe.com
-TESOBE GmbH
-Osloerstrasse 16/17
-Berlin 13359, Germany
-
- This product includes software developed at
- TESOBE (http://www.tesobe.com/)
- */
-package code.api.APIBuilder
-
-import java.io.File
-import java.nio.file.Files
-import code.api.util.APIUtil
-import net.liftweb.json.JsonAST.{JField, JObject, JString}
-import net.liftweb.json.JValue
-import scala.meta._
-
-object APIBuilderModel
-{
- // you can modify this json file: OBP-API/obp-api/src/main/resources/apiBuilder/APIModelSource.json
- def main(args: Array[String]) = overwriteApiCode(apiSource, jsonFactorySource)
-
- def createTemplateJsonClass(className: String, templateJsonClassParams: List[Term.Param]) = q"""case class TemplateJson(..$templateJsonClassParams) """.copy(name = Type.Name(className))
-
- def getApiUrl(jsonJValueFromFile: JValue) = {
- val inputUrl = (jsonJValueFromFile \"request_url").asInstanceOf[JString].values
-
- // if input is `my/template` --> `/my/template`
- val checkedStartWith = inputUrl match {
- case inputUrl if (!inputUrl.startsWith("""/""")) =>"""/"""+inputUrl
- case _ => inputUrl
- }
-
- // if input is `/my/template/` --> `/my/template`
- checkedStartWith.endsWith("""/""") match {
- case true => checkedStartWith.dropRight(1)
- case _ => checkedStartWith
- }
-
- } //eg: /my/template
-
- def getModelName(jsonJValueFromFile: JValue) = jsonJValueFromFile.asInstanceOf[JObject].obj.map(_.name).filter(_!="request_url").head
-
- def getModelFieldsNames(modelFieldsJValue: JValue)= modelFieldsJValue.asInstanceOf[JObject].obj.map(_.name)
-
- def getModelFieldsTypes(modelFieldsNames: List[String], modelFieldsJValue: JValue)= modelFieldsNames
- .map(key => modelFieldsJValue.findField{case JField(n, v) => n == key})
- .map(_.get.value.getClass.getSimpleName.replaceFirst("J",""))
-
- def getModelFieldDefaultValues(modelFieldsNames: List[String], modelFieldsJValue: JValue)= modelFieldsNames
- .map(key => modelFieldsJValue.findField{case JField(n, v) => n == key})
- .map(_.get.value.values)
-
- def getModelTrait(modelFieldsNames: List[String], modelFieldTypes: List[String])= {
- val methodStatements = for
- {
- i <- 0 until modelFieldsNames.size
- methodName = Term.Name(modelFieldsNames(i).toLowerCase)
- methodType = Type.Name(s"${modelFieldTypes(i)}")
- } yield
- Decl.Def(Nil, methodName, Nil, Nil, methodType)
-
- //List(def author: String,
- // def tutor: String,
- // def pages: Int,
- // def points: Double,
- // def templateId: String)
- val modelTraitMethods = methodStatements.toList++ List(Decl.Def(Nil, Term.Name("templateId"), Nil, Nil, Type.Name("String")))
-
- val modelTraitSelf: Self = Self.apply(Name("_"), None)
-
- //{
- // `_` => def author: String
- // def pages: Int
- // def points: Double
- // def templateId: String
- //}
- val modelTraitImpl = Template.apply(Nil, Nil, modelTraitSelf, modelTraitMethods)
-
- // trait Template { `_` =>
- // def author: String
- // def tutor: String
- // def pages: Int
- // def points: Double
- // def templateId: String
- // }
- q"""trait Template {}""".copy(templ = modelTraitImpl)
-
- }
-
- def getModelCaseClassParams(modelFieldsNames: List[String], modelFieldTypes: List[String], modelFieldDefaultValues: List[Any]) ={
- val fieldNames = for {
- i <- 0 until modelFieldsNames.size
- modelFieldName = Term.Name(modelFieldsNames(i).toLowerCase)
- modelFieldType = Type.Name(modelFieldTypes(i))
- modelFieldDefaultValue = modelFieldDefaultValues(i) match{
- case inputDefaultValue: String if (!inputDefaultValue.contains(" ")) => Term.Name(s"`$inputDefaultValue`")
- case inputDefaultValue => Term.Name(s"$inputDefaultValue")
- }} yield
- Term.Param(Nil, modelFieldName, Some(modelFieldType), Some(modelFieldDefaultValue))
- fieldNames.toList
- }
-
- def getAuthenticationStatement (needAuthentication: Boolean) = needAuthentication match {
- case true => q"cc.user ?~ UserNotLoggedIn"
- case false => q"Full(1) ?~ UserNotLoggedIn" //This will not throw error, only a placeholder
- }
-
- //object mAuthor extends MappedString(this, 100)
- def stringToMappedObject(objectName: String, objectType: String): Defn.Object = {
- val objectTermName = Term.Name(objectName)
- objectType match {
- case "String" => q"""object $objectTermName extends MappedString(this,100) """
- case "Int" => q"""object $objectTermName extends MappedInt(this) """
- case "Double" => q"""object $objectTermName extends MappedDouble(this) """
- }
- }
-
- //override def author: String = mAuthor.get
- def stringToMappedMethod(methodNameString: String, methodReturnTypeString: String): Defn.Def ={
-
- val methodName = Term.Name(methodNameString)
- val methodReturnType = Type.Name(methodReturnTypeString)
- val mappedObject = Term.Name(s"m${methodNameString.capitalize}")
-
- q"""override def $methodName: $methodReturnType = $mappedObject.get"""
- }
-
- def getModelClassStatements(modelFieldsNames: List[String], modelFieldTypes: List[String]) ={
- val fieldNames = for
- {
- i <- 0 until modelFieldsNames.size
- fieldNameString = modelFieldsNames(i)
- fieldTypeString = modelFieldTypes(i)
- mappedObject = stringToMappedObject(s"m${fieldNameString.capitalize}", fieldTypeString.capitalize)
- mappedMethod = stringToMappedMethod(fieldNameString, fieldTypeString)
- } yield
- (mappedObject,mappedMethod)
- fieldNames.flatMap (x => List(x._1, x._2)).toList
- }
-
- def getModelClass(modelTypeName: Type.Name, modelTermName: Term.Name, modelFieldsNames: List[String], modelFieldTypes: List[String]) ={
- val modelClassStatements = getModelClassStatements(modelFieldsNames, modelFieldTypes)
-
- val modelClassExample: Defn.Class = q"""
- class $modelTypeName extends Template with LongKeyedMapper[$modelTypeName] with IdPK {
- def getSingleton = $modelTermName
- object mTemplateId extends MappedString(this,100)
- override def templateId: String = mTemplateId.get
- }"""
-
- //Template with LongKeyedMapper[MappedTemplate] with IdPK {
- // def getSingleton = MappedTemplate
- // object mTemplateId extends MappedString(this, 100)
- // override def templateId: String = mTemplateId.get
- //}
- val modelClassExampleTempl= modelClassExample.templ
-
- //Template with LongKeyedMapper[MappedTemplate] with IdPK {
- // override def author: String = mAuthor.get
- // object mPages extends MappedInt(this)
- // override def pages: Int = mPages.get
- // object mPoints extends MappedDouble(this)
- // override def points: Double = mPoints.get
- // def getSingleton = MappedTemplate
- // object mTemplateId extends MappedString(this, 100)
- // override def templateId: String = mTemplateId.get
- //}
- val newTempls = modelClassExampleTempl.copy(stats = modelClassStatements++modelClassExampleTempl.stats)
-
- //class MappedTemplate extends Template with LongKeyedMapper[MappedTemplate] with IdPK {
- // object mAuthor extends MappedString(this, 100)
- // override def author: String = mAuthor.get
- // object mPages extends MappedInt(this)
- // override def pages: Int = mPages.get
- // object mPoints extends MappedDouble(this)
- // override def points: Double = mPoints.get
- // def getSingleton = MappedTemplate
- // object mTemplateId extends MappedString(this, 100)
- // override def templateId: String = mTemplateId.get
- //}
- modelClassExample.copy(templ = newTempls)
- }
-
- //def createTemplate(createTemplateJson: CreateTemplateJson) =
- // Full(MappedTemplate_2145180497484573086.create
- // .mTemplateId(UUID.randomUUID().toString)
- // .mAuthor(createTemplateJson.author)
- // .mPages(createTemplateJson.pages)
- // .mPoints(createTemplateJson.points)
- // .saveMe())"
- def generateCreateModelJsonMethod(modelFieldsNames: List[String], modelMappedName: String)= {
- val fieldNames = for {
- i <- 0 until modelFieldsNames.size
- fieldName = modelFieldsNames(i)
- } yield
- Term.Name(s".m${fieldName.capitalize}(createTemplateJson.${fieldName})")
-
- val createModelJsonMethodFields = fieldNames.toList.mkString("")
-
- val createModelJsonMethodBody: Term.Apply = q"""MappedTemplate.create.saveMe()""".copy(fun = Term.Name(s"$modelMappedName.create.mTemplateId(UUID.randomUUID().toString)$createModelJsonMethodFields.saveMe"))
-
- q"""def createTemplate(createTemplateJson: CreateTemplateJson) = Full($createModelJsonMethodBody)"""
- }
-
- // TemplateJson(template.templateId, template.author, template.tutor, template.pages, template.points)
- def generateCreateTemplateJsonApply(modelFieldsNames: List[String]): Term.Apply = {
- val fieldNames = for{
- i <- 0 until modelFieldsNames.size
- } yield
- Term.Name("template." + modelFieldsNames(i))
-
- //List(template.templateId, template.author, template.tutor, template.pages, template.points)
- val createTemplateJsonArgs = List(Term.Name("template.templateId")) ++ (fieldNames.toList)
-
- q"""TemplateJson()""".copy(fun = Term.Name("TemplateJson"), args = createTemplateJsonArgs)
- }
-
- def overwriteCurrentFile(sourceCode: Source, path: String) = {
- val builderAPIMethodsFile = new File(path)
- builderAPIMethodsFile.getParentFile.mkdirs()
- if(path.contains("APIMethods_APIBuilder"))
- Files.write(
- builderAPIMethodsFile.toPath,
- sourceCode.syntax
- //TODO,maybe fix later ! in scalameta, Term.Param(Nil, modelFieldName, Some(modelFieldType), Some(modelFieldDefaultValue)) => the default value should be a string in API code.
- .replaceAll("""`""","")
- .replaceAll("trait Template \\{ _ =>","trait Template \\{ `_` =>")
- .replaceAll(""" :: ""","""" :: """")
- .getBytes("UTF-8")
- )
- else
- Files.write(
- builderAPIMethodsFile.toPath,
- sourceCode.syntax
- //TODO,maybe fix later ! in scalameta, Term.Param(Nil, modelFieldName, Some(modelFieldType), Some(modelFieldDefaultValue)) => the default value should be a string in API code.
- .replaceAll("""`""",""""""""")
- .getBytes("UTF-8")
- )
- }
-
- def overwriteApiCode(apiSource: Source, jsonFactorySource:Source =jsonFactorySource) = {
- //APIMethods_APIBuilder.scala
- overwriteCurrentFile(apiSource,"obp-api/src/main/scala/code/api/builder/APIMethods_APIBuilder.scala")
-
- //JsonFactory_APIBuilder.scala
- overwriteCurrentFile(jsonFactorySource, "obp-api/src/main/scala/code/api/builder/JsonFactory_APIBuilder.scala")
-
- println("Congratulations! You make the new APIs. Please restart OBP-API server!")
- }
-
- val jsonJValueFromFile: JValue = APIUtil.getJValueFromJsonFile("apiBuilder/APIModelSource.json")
-
- //"/templates"
- val apiUrl= getApiUrl(jsonJValueFromFile)
- //"template"
- val modelName = getModelName(jsonJValueFromFile)
- //TEMPLATE
- val modelNameUpperCase = modelName.toUpperCase
- //template
- val modelNameLowerCase = modelName.toLowerCase
- //Template
- val modelNameCapitalized = modelNameLowerCase.capitalize
- val modelFieldsJValue: JValue = jsonJValueFromFile \ modelName
-
- //MappedTemplate_6285959801482269169
- val modelMappedName = s"Mapped${modelNameCapitalized}_"+Math.abs(scala.util.Random.nextLong())
- val modelTypeName: Type.Name = Type.Name(modelMappedName)
- val modelTermName = Term.Name(modelMappedName)
- val modelInit = Init.apply(Type.Name(modelMappedName), Term.Name(modelMappedName), Nil)
-
- //getApiUrlVal: scala.meta.Lit.StrincreateModelJsonMethodField = "/templates"
- val getApiUrlVal: Lit.String = Lit.String(s"$apiUrl")
- //getSingleApiUrlVal: scala.meta.Lit.String = "/templates/TEMPLATE_ID"
- val getSingleApiUrlVal = Lit.String(s"$apiUrl/${modelNameUpperCase}_ID")
- //createSingleApiUrlVal: scala.meta.Lit.String = "/templates"
- val createSingleApiUrlVal = Lit.String(s"$apiUrl")
- //deleteSingleApiUrlVal: scala.meta.Lit.String = "/templates/TEMPLATE_ID"
- val deleteSingleApiUrlVal = Lit.String(s"$apiUrl/${modelNameUpperCase}_ID")
- //TODO, escape issue:return the space, I added quotes in the end: allSourceCode.syntax.replaceAll(""" :: ""","""" :: """")
- //from "/my/template" --> "my :: template"
- val apiUrlLiftFormat = apiUrl.replaceFirst("/", "").split("/").mkString("""""",""" :: ""","""""")
- val apiUrlLiftweb: Lit.String = q""" "templates" """.copy(apiUrlLiftFormat)
-
- val getApiSummaryVal: Lit.String = Lit.String(s"Get ${modelNameCapitalized}s")
- val getSingleApiSummaryVal = Lit.String(s"Get ${modelNameCapitalized}")
- val createSingleApiSummaryVal = Lit.String(s"Create ${modelNameCapitalized}")
- val deleteSingleApiSummaryVal = Lit.String(s"Delete ${modelNameCapitalized}")
-
- val getApiDescriptionVal: Lit.String = Lit.String(s"Return All ${modelNameCapitalized}s")
- val getSingleApiDescriptionVal = Lit.String(s"Return One ${modelNameCapitalized} By Id")
- val createSingleApiDescriptionVal = Lit.String(s"Create One ${modelNameCapitalized}")
- val deleteSingleApiDescriptionVal = Lit.String(s"Delete One ${modelNameCapitalized}")
-
- val errorMessageBody: Lit.String = Lit.String(s"OBP-31001: ${modelNameCapitalized} not found. Please specify a valid value for ${modelNameUpperCase}_ID.")
- val errorMessageName: Pat.Var = Pat.Var(Term.Name(s"${modelNameCapitalized}NotFound"))
- val errorMessageVal: Defn.Val = q"""val TemplateNotFound = $errorMessageBody""".copy(pats = List(errorMessageName))
- val errorMessage: Term.Name = Term.Name(errorMessageVal.pats.head.toString())
-
- val getPartialFuncTermName = Term.Name(s"get${modelNameCapitalized}s")
- val getPartialFuncName = Pat.Var(getPartialFuncTermName)
- val getSinglePartialFuncTermName = Term.Name(s"get${modelNameCapitalized}")
- val getSinglePartialFuncName = Pat.Var(getSinglePartialFuncTermName)
- val createPartialFuncTermName = Term.Name(s"create${modelNameCapitalized}")
- val createPartialFuncName = Pat.Var(createPartialFuncTermName)
- val deletePartialFuncTermName = Term.Name(s"delete${modelNameCapitalized}")
- val deletePartialFuncName = Pat.Var(deletePartialFuncTermName)
-
- //implementedApiDefBody: scala.meta.Term.Name = `getTemplates :: getTemplate :: createTemplate :: deleteTemplate :: Nil`
- val implementedApiDefBody= Term.Name(s"${getPartialFuncTermName.value} :: ${getSinglePartialFuncTermName.value} :: ${createPartialFuncTermName.value} :: ${deletePartialFuncTermName.value} :: Nil")
- //implementedApisDef: scala.meta.Defn.Def = def endpointsOfBuilderAPI = `getTemplates :: getTemplate :: createTemplate :: deleteTemplate :: Nil`
- val implementedApisDef: Defn.Def = q"""def endpointsOfBuilderAPI = $implementedApiDefBody"""
-
- val getTemplatesResourceCode: Term.ApplyInfix =q"""
- resourceDocs += ResourceDoc(
- $getPartialFuncTermName,
- apiVersion,
- ${getPartialFuncTermName.value},
- "GET",
- $getApiUrlVal,
- $getApiSummaryVal,
- $getApiDescriptionVal,
- emptyObjectJson,
- templatesJson,
- List(UserNotLoggedIn, UnknownError),
- apiTagApiBuilder :: Nil
- )"""
- val getTemplateResourceCode: Term.ApplyInfix = q"""
- resourceDocs += ResourceDoc(
- $getSinglePartialFuncTermName,
- apiVersion,
- ${getSinglePartialFuncTermName.value},
- "GET",
- $getSingleApiUrlVal,
- $getSingleApiSummaryVal,
- $getSingleApiDescriptionVal,
- emptyObjectJson,
- templateJson,
- List(UserNotLoggedIn, UnknownError),
- apiTagApiBuilder :: Nil
- )"""
- val createTemplateResourceCode: Term.ApplyInfix = q"""
- resourceDocs += ResourceDoc(
- $createPartialFuncTermName,
- apiVersion,
- ${createPartialFuncTermName.value},
- "POST",
- $createSingleApiUrlVal,
- $createSingleApiSummaryVal,
- $createSingleApiDescriptionVal,
- createTemplateJson,
- templateJson,
- List(UnknownError),
- apiTagApiBuilder :: Nil
- )"""
- val deleteTemplateResourceCode: Term.ApplyInfix = q"""
- resourceDocs += ResourceDoc(
- $deletePartialFuncTermName,
- apiVersion,
- ${deletePartialFuncTermName.value},
- "DELETE",
- $deleteSingleApiUrlVal,
- $deleteSingleApiSummaryVal,
- $deleteSingleApiDescriptionVal,
- emptyObjectJson,
- emptyObjectJson.copy("true"),
- List(UserNotLoggedIn, UnknownError),
- apiTagApiBuilder :: Nil
- )"""
-
- val authenticationStatement: Term.ApplyInfix = getAuthenticationStatement(true)
-
- val getTemplatesPartialFunction: Defn.Val = q"""
- lazy val $getPartialFuncName: OBPEndpoint ={
- case ($apiUrlLiftweb:: Nil) JsonGet req =>
- cc =>
- {
- for{
- u <- $authenticationStatement
- templates <- APIBuilder_Connector.getTemplates
- templatesJson = JsonFactory_APIBuilder.createTemplates(templates)
- jsonObject:JValue = decompose(templatesJson)
- }yield{
- successJsonResponse(jsonObject)
- }
- }
- }"""
- val getTemplatePartialFunction: Defn.Val = q"""
- lazy val $getSinglePartialFuncName: OBPEndpoint ={
- case ($apiUrlLiftweb :: templateId :: Nil) JsonGet _ => {
- cc =>
- {
- for{
- u <- $authenticationStatement
- template <- APIBuilder_Connector.getTemplateById(templateId) ?~! $errorMessage
- templateJson = JsonFactory_APIBuilder.createTemplate(template)
- jsonObject:JValue = decompose(templateJson)
- }yield{
- successJsonResponse(jsonObject)
- }
- }
- }
- }"""
- val createTemplatePartialFunction: Defn.Val = q"""
- lazy val $createPartialFuncName: OBPEndpoint ={
- case ($apiUrlLiftweb:: Nil) JsonPost json -> _ => {
- cc =>
- {
- for{
- createTemplateJson <- tryo(json.extract[CreateTemplateJson]) ?~! InvalidJsonFormat
- u <- $authenticationStatement
- template <- APIBuilder_Connector.createTemplate(createTemplateJson)
- templateJson = JsonFactory_APIBuilder.createTemplate(template)
- jsonObject:JValue = decompose(templateJson)
- }yield{
- successJsonResponse(jsonObject)
- }
- }
- }
- }"""
- val deleteTemplatePartialFunction: Defn.Val = q"""
- lazy val $deletePartialFuncName: OBPEndpoint ={
- case ($apiUrlLiftweb :: templateId :: Nil) JsonDelete _ => {
- cc =>
- {
- for{
- u <- $authenticationStatement
- template <- APIBuilder_Connector.getTemplateById(templateId) ?~! $errorMessage
- deleted <- APIBuilder_Connector.deleteTemplate(templateId)
- }yield{
- if(deleted)
- noContentJsonResponse
- else
- errorJsonResponse("Delete not completed")
- }
- }
- }
- }"""
-
- //List(author, pages, points)
- val modelFieldsNames: List[String] = getModelFieldsNames(modelFieldsJValue)
-
- //List(String, Int, Double)
- val modelFieldsTypes: List[String] = getModelFieldsTypes(modelFieldsNames, modelFieldsJValue)
-
- //List(Chinua Achebe, 209, 1.3)
- val modelFieldsDefaultValues: List[Any] = getModelFieldDefaultValues(modelFieldsNames, modelFieldsJValue)
-
- //List(author: String = `Chinua Achebe`, tutor: String = `1123123 1312`, pages: Int = 209, points: Double = 1.3)
- val modelCaseClassParams: List[Term.Param] = getModelCaseClassParams(modelFieldsNames, modelFieldsTypes, modelFieldsDefaultValues)
-
- // trait Template { `_` =>
- // def author: String
- // def tutor: String
- // def pages: Int
- // def points: Double
- // def templateId: String
- // }
- val modelTrait: Defn.Trait = getModelTrait(modelFieldsNames, modelFieldsTypes)
-
- //class MappedTemplate extends Template with LongKeyedMapper[MappedTemplate] with IdPK {
- // object mAuthor extends MappedString(this, 100)
- // override def author: String = mAuthor.get
- // object mPages extends MappedInt(this)
- // override def pages: Int = mPages.get
- // object mPoints extends MappedDouble(this)
- // override def points: Double = mPoints.get
- // def getSingleton = MappedTemplate
- // object mTemplateId extends MappedString(this, 100)
- // override def templateId: String = mTemplateId.get
- //}
- val modelClass = getModelClass(modelTypeName, modelTermName, modelFieldsNames, modelFieldsTypes)
-
- val createModelJsonMethod: Defn.Def = generateCreateModelJsonMethod(modelFieldsNames, modelMappedName)
-
- val apiSource: Source = source"""
-/**
-Open Bank Project - API
-Copyright (C) 2011-2019, TESOBE GmbH
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-
-Email: contact@tesobe.com
-TESOBE GmbH
-Osloerstrasse 16/17
-Berlin 13359, Germany
-
-This product includes software developed at
-TESOBE (http://www.tesobe.com/)
-*/
-package code.api.builder
-
-import java.util.UUID
-import code.api.builder.JsonFactory_APIBuilder._
-import code.api.util.APIUtil._
-import code.api.util.ApiTag._
-import com.openbankproject.commons.util.ApiVersion
-import code.api.util.ErrorMessages._
-import net.liftweb.common.Full
-import net.liftweb.http.rest.RestHelper
-import net.liftweb.json
-import net.liftweb.json.Extraction._
-import net.liftweb.json._
-import net.liftweb.mapper.By
-import net.liftweb.util.Helpers.tryo
-import scala.collection.immutable.Nil
-import scala.collection.mutable.ArrayBuffer
-
-trait APIMethods_APIBuilder
-{
- self: RestHelper =>
-
- val ImplementationsBuilderAPI = new Object()
- {
- val apiVersion = ApiVersion.apiBuilder
- val resourceDocs = ArrayBuffer[ResourceDoc]()
- val apiRelations = ArrayBuffer[ApiRelation]()
- val codeContext = CodeContext(resourceDocs, apiRelations)
- implicit val formats = code.api.util.CustomJsonFormats.formats
-
- $errorMessageVal
- $implementedApisDef
-
- $getTemplatesResourceCode
- $getTemplatesPartialFunction
-
- $getTemplateResourceCode
- $getTemplatePartialFunction
-
- $createTemplateResourceCode
- $createTemplatePartialFunction
-
- $deleteTemplateResourceCode
- $deleteTemplatePartialFunction
- }
-}
-
-object APIBuilder_Connector
-{
- val allAPIBuilderModels = List($modelTermName)
-
- $createModelJsonMethod;
-
- def getTemplates()= Full($modelTermName.findAll())
-
- def getTemplateById(templateId: String)= $modelTermName.find(By($modelTermName.mTemplateId, templateId))
-
- def deleteTemplate(templateId: String)= $modelTermName.find(By($modelTermName.mTemplateId, templateId)).map(_.delete_!)
-
-}
-
-import net.liftweb.mapper._
-
-$modelClass
-
-object $modelTermName extends $modelInit with LongKeyedMetaMapper[$modelTypeName] {}
-
-$modelTrait
-
-"""
-
- /*
- * ######################################JsonFactory_APIBuilder.scala###################################################
- */
-
- //List(id:String = "11231231312" ,author: String = `Chinua Achebe`, tutor: String = `11231231312`, pages: Int = 209, points: Double = 1.3)
- //Added the id to `modelCaseClassParams`
- val templateIdField: Term.Param = Term.Param(Nil, Term.Name(s"id"), Some(Type.Name("String")), Some(Term.Name("`11231231312`")))
- val templateJsonClassParams: List[Term.Param] = List(templateIdField)++ modelCaseClassParams
-
- //case class TemplateJson(templateId: String = """1123123 1312""", author: String = """Chinua Achebe""", tutor: String = """1123123 1312""", pages: Int = 209, points: Double = 1.3)
- val TemplateJsonClass: Defn.Class = q"""case class TemplateJson(..$templateJsonClassParams) """
-
- //case class Template(author: String = `Chinua Achebe`, pages: Int = 209, points: Double = 1.3)
- //Note: No `templateId` in this class, the bank no need provide it, obp create a uuid for it.
- val createTemplateJsonClass: Defn.Class = q"""case class CreateTemplateJson(..$modelCaseClassParams) """
-
- //TemplateJson(template.templateId, template.author, template.tutor, template.pages, template.points)
- val createTemplateJsonApply: Term.Apply = generateCreateTemplateJsonApply(modelFieldsNames)
-
- //def createTemplate(template: Template) = TemplateJson(template.templateId, template.author, template.tutor, template.pages, template.points)
- val createTemplateDef: Defn.Def =q"""def createTemplate(template: Template) = $createTemplateJsonApply"""
-
- //def createTemplates(templates: List[Template]) = templates.map(template => TemplateJson(template.templateId, template.author, template.tutor, template.pages, template.points))
- val createTemplatesDef: Defn.Def = q"""def createTemplates(templates: List[Template])= templates.map(template => $createTemplateJsonApply)"""
-
- val jsonFactorySource: Source =
-source"""
-/**
-Open Bank Project - API
-Copyright (C) 2011-2019, TESOBE GmbH
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-
-Email: contact@tesobe.com
-TESOBE GmbH
-Osloerstrasse 16/17
-Berlin 13359, Germany
-
-This product includes software developed at
-TESOBE (http://www.tesobe.com/)
-*/
-package code.api.builder
-import code.api.util.APIUtil
-
-$createTemplateJsonClass
-$TemplateJsonClass
-
-object JsonFactory_APIBuilder{
-
- val templateJson = TemplateJson()
- val templatesJson = List(templateJson)
- val createTemplateJson = CreateTemplateJson()
-
- $createTemplateDef;
- $createTemplatesDef;
-
- val allFields =
- for (
- v <- this.getClass.getDeclaredFields
- //add guard, ignore the SwaggerJSONsV220.this and allFieldsAndValues fields
- if (APIUtil.notExstingBaseClass(v.getName()))
- )
- yield {
- v.setAccessible(true)
- v.get(this)
- }
-}
-"""
-}
\ No newline at end of file
diff --git a/obp-api/src/main/scala/code/api/APIBuilder/APIBuilderSwagger.scala b/obp-api/src/main/scala/code/api/APIBuilder/APIBuilderSwagger.scala
deleted file mode 100644
index fcb2aef3cd..0000000000
--- a/obp-api/src/main/scala/code/api/APIBuilder/APIBuilderSwagger.scala
+++ /dev/null
@@ -1,452 +0,0 @@
-/**
-Open Bank Project - API
-Copyright (C) 2011-2019, TESOBE GmbH
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-
-Email: contact@tesobe.com
-TESOBE GmbH
-Osloerstrasse 16/17
-Berlin 13359, Germany
-
- This product includes software developed at
- TESOBE (http://www.tesobe.com/)
- */
-package code.api.APIBuilder
-
-import code.api.APIBuilder.APIBuilderModel._
-import code.api.util.APIUtil
-import net.liftweb.json.JsonAST.{JObject, JString}
-import net.liftweb.json.{JArray, JValue}
-
-import scala.meta._
-
-object APIBuilderSwagger {
- // you can modify this json file: OBP-API/obp-api/src/main/resources/apiBuilder/swaggerResource.json
- def main(args: Array[String]): Unit = overwriteApiCode(apiSource,jsonFactorySource)
- val jsonJValueFromFile: JValue = APIUtil.getJValueFromJsonFile("apiBuilder/swaggerResource.json")
-
- val getSingleApiResponseBody: JValue = jsonJValueFromFile \\("foo")\"foo"\"value"
- //"template"
- val modelName = getModelName(getSingleApiResponseBody)
- //All the fields in the template object.
- val modelFieldsJValue: JValue = (getSingleApiResponseBody \modelName).children.head
-
- //TEMPLATE
- val modelNameUpperCase = modelName.toUpperCase
- //template
- val modelNameLowerCase = modelName.toLowerCase
- //Template
- val modelNameCapitalized = modelNameLowerCase.capitalize
- //MappedTemplate_123123
- val modelMappedName = s"Mapped${modelNameCapitalized}_"+Math.abs(scala.util.Random.nextLong())
- val modelTypeName = Type.Name(modelMappedName)
- val modelTermName = Term.Name(modelMappedName)
- val modelInit =Init.apply(Type.Name(modelMappedName), Term.Name(modelMappedName), Nil)
-
-
- val getMultipleApiSummary: String = ((jsonJValueFromFile \\"get"\\ "summary")\("summary")).asInstanceOf[JArray].children(0).asInstanceOf[JString].values
- val getSingleApiSummary: String = ((jsonJValueFromFile \\"get"\\ "summary")\("summary")).asInstanceOf[JArray].children(1).asInstanceOf[JString].values
- val deleteSingleApiSummary: String = ((jsonJValueFromFile \\"delete"\\ "summary")\("summary")).asInstanceOf[JString].values
- val createSingleApiSummary: String = ((jsonJValueFromFile \\"post"\\ "summary")\("summary")).asInstanceOf[JString].values
-
- val getApiDescription: String = ((jsonJValueFromFile \\"get"\\ "description").obj.head.value).asInstanceOf[JString].values
- val getSingleDescription: String = ((jsonJValueFromFile \\"get"\\ "description").obj(3).value).asInstanceOf[JString].values
- val createApiDescription: String = ((jsonJValueFromFile \\"post"\\ "description").obj.head.value).asInstanceOf[JString].values
- val deleteApiDescription: String = ((jsonJValueFromFile \\"delete"\\ "description").obj.head.value).asInstanceOf[JString].values
-
- val getMultipleApiAuthenticationStatement: Term.ApplyInfix = getAuthenticationStatement(true)
- val getSingleApiAuthenticationStatement: Term.ApplyInfix = getAuthenticationStatement(true)
- val deleteSingleApiAuthenticationStatement: Term.ApplyInfix = getAuthenticationStatement(true)
- val createSingleApiAuthenticationStatement: Term.ApplyInfix = getAuthenticationStatement(true)
-
- val getMultipleApiUrl: String = (jsonJValueFromFile \\("paths")\"paths").asInstanceOf[JObject].obj(0).name
- val getSingleApiUrl: String = (jsonJValueFromFile \\("paths")\"paths").asInstanceOf[JObject].obj(1).name
-
- val getMultipleApiUrlVal = Lit.String(s"$getMultipleApiUrl")
- val createSingleApiUrlVal = getMultipleApiUrl
- val getApiUrlLiftFormat = getMultipleApiUrl.replaceFirst("/", "").split("/").mkString("""""",""" :: ""","""""")
- val getApiUrlLiftweb: Lit.String = Lit.String(getApiUrlLiftFormat)
- val createApiUrlLiftweb: Lit.String = Lit.String(getApiUrlLiftFormat)
-
- val getSingleApiUrlVal = Lit.String(s"$getSingleApiUrl")
- val deleteSingleApiUrlVal = Lit.String(s"$getSingleApiUrl")
- val getSingleApiUrlLiftFormat = getSingleApiUrl.replaceFirst("/", "").split("/").dropRight(1).mkString("""""",""" :: ""","""""")
- val getSingleApiUrlLiftweb: Lit.String = Lit.String(getSingleApiUrlLiftFormat)
- val deleteApiUrlLiftweb: Lit.String = Lit.String(getSingleApiUrlLiftFormat)
-
- val getMultipleApiSummaryVal = Lit.String(s"$getMultipleApiSummary")
- val getSingleApiSummaryVal = Lit.String(s"$getSingleApiSummary")
- val deleteSingleApiSummaryVal = Lit.String(s"$deleteSingleApiSummary")
- val createSingleApiSummaryVal = Lit.String(s"$createSingleApiSummary")
-
- val getMultipleApiDescriptionVal = Lit.String(s"$getApiDescription")
- val createSingleApiDescriptionVal = Lit.String(s"$createApiDescription")
- val getSingleApiDescriptionVal = Lit.String(s"$getSingleDescription")
- val deleteSingleApiDescriptionVal = Lit.String(s"$deleteApiDescription")
-
- val errorMessageBody: Lit.String = Lit.String(s"OBP-31001: ${modelNameCapitalized} not found. Please specify a valid value for ${modelNameUpperCase}_ID.")
- val errorMessageName: Pat.Var = Pat.Var(Term.Name(s"${modelNameCapitalized}NotFound"))
- val errorMessageVal: Defn.Val = q"""val TemplateNotFound = $errorMessageBody""".copy(pats = List(errorMessageName))
- val errorMessage: Term.Name = Term.Name(errorMessageVal.pats.head.toString())
-
- val getTemplatesResourceCode: Term.ApplyInfix =q"""
- resourceDocs += ResourceDoc(
- getTemplates,
- apiVersion,
- "getTemplates",
- "GET",
- $getMultipleApiUrlVal,
- $getMultipleApiSummaryVal,
- $getMultipleApiDescriptionVal,
- emptyObjectJson,
- templatesJson,
- List(UserNotLoggedIn, UnknownError),
- apiTagApiBuilder :: Nil
- )"""
- val getTemplatesPartialFunction: Defn.Val = q"""
- lazy val getTemplates: OBPEndpoint ={
- case ($getApiUrlLiftweb:: Nil) JsonGet req =>
- cc =>
- {
- for{
- u <- $getMultipleApiAuthenticationStatement
- templates <- APIBuilder_Connector.getTemplates
- templatesJson = JsonFactory_APIBuilder.createTemplates(templates)
- jsonObject:JValue = decompose(templatesJson)
- }yield{
- successJsonResponse(jsonObject)
- }
- }
- }"""
-
-
- val createTemplateResourceCode: Term.ApplyInfix =q"""
- resourceDocs += ResourceDoc(
- createTemplate,
- apiVersion,
- "createTemplate",
- "POST",
- $createSingleApiUrlVal,
- $createSingleApiSummaryVal,
- $createSingleApiDescriptionVal,
- createTemplateJson,
- templateJson,
- List(UnknownError),
- apiTagApiBuilder :: Nil
- )"""
-
- val createTemplatePartialFunction: Defn.Val = q"""
- lazy val createTemplate: OBPEndpoint ={
- case ($createApiUrlLiftweb:: Nil) JsonPost json -> _ => {
- cc =>
- {
- for{
- createTemplateJson <- tryo(json.extract[CreateTemplateJson]) ?~! InvalidJsonFormat
- u <- $createSingleApiAuthenticationStatement
- template <- APIBuilder_Connector.createTemplate(createTemplateJson)
- templateJson = JsonFactory_APIBuilder.createTemplate(template)
- jsonObject:JValue = decompose(templateJson)
- }yield{
- successJsonResponse(jsonObject)
- }
- }
- }
- }
- """
-
- val getTemplateResourceCode: Term.ApplyInfix =q"""
- resourceDocs += ResourceDoc(
- getTemplate,
- apiVersion,
- "getTemplate",
- "GET",
- $getSingleApiUrlVal,
- $getSingleApiSummaryVal,
- $getSingleApiDescriptionVal,
- emptyObjectJson,
- templateJson,
- List(UserNotLoggedIn, UnknownError),
- apiTagApiBuilder :: Nil
- )"""
-
- val getTemplatePartialFunction: Defn.Val = q"""
- lazy val getTemplate: OBPEndpoint ={
- case ($getSingleApiUrlLiftweb :: templateId :: Nil) JsonGet _ => {
- cc =>
- {
- for{
- u <- $getSingleApiAuthenticationStatement
- template <- APIBuilder_Connector.getTemplateById(templateId) ?~! $errorMessage
- templateJson = JsonFactory_APIBuilder.createTemplate(template)
- jsonObject:JValue = decompose(templateJson)
- }yield{
- successJsonResponse(jsonObject)
- }
- }
- }
- }"""
-
- val deleteTemplateResourceCode: Term.ApplyInfix = q"""
- resourceDocs += ResourceDoc(
- deleteTemplate,
- apiVersion,
- "deleteTemplate",
- "DELETE",
- $deleteSingleApiUrlVal,
- $deleteSingleApiSummaryVal,
- $deleteSingleApiDescriptionVal,
- emptyObjectJson,
- emptyObjectJson.copy("true"),
- List(UserNotLoggedIn, UnknownError),
- apiTagApiBuilder :: Nil
- )"""
-
- val deleteTemplatePartialFunction: Defn.Val = q"""
- lazy val deleteTemplate: OBPEndpoint ={
- case ($deleteApiUrlLiftweb :: templateId :: Nil) JsonDelete _ => {
- cc =>
- {
- for{
- u <- $deleteSingleApiAuthenticationStatement
- template <- APIBuilder_Connector.getTemplateById(templateId) ?~! $errorMessage
- deleted <- APIBuilder_Connector.deleteTemplate(templateId)
- }yield{
- if(deleted)
- noContentJsonResponse
- else
- errorJsonResponse("Delete not completed")
- }
- }
- }
- }
- """
-
- //List(author, pages, points)
- val modelFieldsNames: List[String] = getModelFieldsNames(modelFieldsJValue)
- //List(String, Int, Double)
- val modelFieldsTypes: List[String] = getModelFieldsTypes(modelFieldsNames, modelFieldsJValue)
- //List(Chinua Achebe, 209, 1.3)
- val modelFieldsDefaultValues: List[Any] = getModelFieldDefaultValues(modelFieldsNames, modelFieldsJValue)
-
- //List(author: String = `Chinua Achebe`, tutor: String = `1123123 1312`, pages: Int = 209, points: Double = 1.3)
- val modelCaseClassParams: List[Term.Param] = getModelCaseClassParams(modelFieldsNames, modelFieldsTypes, modelFieldsDefaultValues)
-
- //def createTemplate(createTemplateJson: CreateTemplateJson) = Full(
- // MappedTemplate_6099750036365020434.create
- // .mTemplateId(UUID.randomUUID().toString)
- // .mAuthor(createTemplateJson.author)
- // .mPages(createTemplateJson.pages)
- // .mPoints(createTemplateJson.points)
- // .saveMe())
- val createModelJsonMethod: Defn.Def = generateCreateModelJsonMethod(modelFieldsNames, modelMappedName)
-
- //trait Template { `_` =>
- // def author: String
- // def tutor: String
- // def pages: Int
- // def points: Double
- // def templateId: String
- //}
- val modelTrait: Defn.Trait = getModelTrait(modelFieldsNames, modelFieldsTypes)
-
- //class MappedTemplate extends Template with LongKeyedMapper[MappedTemplate] with IdPK {
- // object mAuthor extends MappedString(this, 100)
- // override def author: String = mAuthor.get
- // object mPages extends MappedInt(this)
- // override def pages: Int = mPages.get
- // object mPoints extends MappedDouble(this)
- // override def points: Double = mPoints.get
- // def getSingleton = MappedTemplate
- // object mTemplateId extends MappedString(this, 100)
- // override def templateId: String = mTemplateId.get
- //}
- val modelClass = getModelClass(modelTypeName, modelTermName, modelFieldsNames, modelFieldsTypes)
-
- val apiSource: Source = source"""
-/**
-Open Bank Project - API
-Copyright (C) 2011-2019, TESOBE GmbH
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-
-Email: contact@tesobe.com
-TESOBE GmbH
-Osloerstrasse 16/17
-Berlin 13359, Germany
-
-This product includes software developed at
-TESOBE (http://www.tesobe.com/)
-*/
-package code.api.builder
-
-import java.util.UUID
-import code.api.builder.JsonFactory_APIBuilder._
-import code.api.util.APIUtil._
-import code.api.util.ApiTag._
-import com.openbankproject.commons.util.ApiVersion
-import code.api.util.ErrorMessages._
-import net.liftweb.common.Full
-import net.liftweb.http.rest.RestHelper
-import net.liftweb.json
-import net.liftweb.json.Extraction._
-import net.liftweb.json._
-import net.liftweb.mapper.By
-import net.liftweb.util.Helpers.tryo
-import scala.collection.immutable.Nil
-import scala.collection.mutable.ArrayBuffer
-
-trait APIMethods_APIBuilder
-{
- self: RestHelper =>
-
- val ImplementationsBuilderAPI = new Object()
- {
- val apiVersion = ApiVersion.apiBuilder
- val resourceDocs = ArrayBuffer[ResourceDoc]()
- val apiRelations = ArrayBuffer[ApiRelation]()
- val codeContext = CodeContext(resourceDocs, apiRelations)
- implicit val formats = code.api.util.CustomJsonFormats.formats
-
- $errorMessageVal;
- def endpointsOfBuilderAPI = getTemplates :: createTemplate :: getTemplate :: deleteTemplate:: Nil
-
-
- $getTemplatesResourceCode
- $getTemplatesPartialFunction
-
- $createTemplateResourceCode
- $createTemplatePartialFunction
-
- $getTemplateResourceCode
- $getTemplatePartialFunction
-
- $deleteTemplateResourceCode
- $deleteTemplatePartialFunction
-
- }
-}
-
-object APIBuilder_Connector
-{
- val allAPIBuilderModels = List($modelTermName)
-
- $createModelJsonMethod;
-
- def getTemplates()= Full($modelTermName.findAll())
-
- def getTemplateById(templateId: String)= $modelTermName.find(By($modelTermName.mTemplateId, templateId))
-
- def deleteTemplate(templateId: String)= $modelTermName.find(By($modelTermName.mTemplateId, templateId)).map(_.delete_!)
-
-}
-
-import net.liftweb.mapper._
-
-$modelClass
-
-object $modelTermName extends $modelInit with LongKeyedMetaMapper[$modelTypeName] {}
-
-$modelTrait
-"""
-
- /*
- * ######################################JsonFactory_APIBuilder.scala###################################################
- * */
-
- //List(templateId:String = "11231231312" ,author: String = `Chinua Achebe`, tutor: String = `11231231312`, pages: Int = 209, points: Double = 1.3)
- //Added the templatedId to `modelCaseClassParams`
- val templateJsonClassParams = List(APIBuilderModel.templateIdField)++ modelCaseClassParams
-
- //case class TemplateJson(templateId: String = """1123123 1312""", author: String = """Chinua Achebe""", tutor: String = """1123123 1312""", pages: Int = 209, points: Double = 1.3)
- val TemplateJsonClass: Defn.Class = q"""case class TemplateJson(..$templateJsonClassParams) """
-
- //case class Template(author: String = `Chinua Achebe`, pages: Int = 209, points: Double = 1.3)
- //Note: No `templateId` in this class, the bank no need provide it, obp create a uuid for it.
- val createTemplateJsonClass: Defn.Class = q"""case class CreateTemplateJson(..$modelCaseClassParams) """
-
- //TemplateJson(template.templateId, template.author, template.tutor, template.pages, template.points)
- val createTemplateJsonApply: Term.Apply = generateCreateTemplateJsonApply(modelFieldsNames)
-
- //def createTemplate(template: Template) = TemplateJson(template.templateId, template.author, template.tutor, template.pages, template.points)
- val createTemplateDef: Defn.Def =q"""def createTemplate(template: Template) = $createTemplateJsonApply"""
-
- //def createTemplates(templates: List[Template]) = templates.map(template => TemplateJson(template.templateId, template.author, template.tutor, template.pages, template.points))
- val createTemplatesDef: Defn.Def = q"""def createTemplates(templates: List[Template])= templates.map(template => $createTemplateJsonApply)"""
-
- val jsonFactorySource: Source =source"""
-/**
-Open Bank Project - API
-Copyright (C) 2011-2019, TESOBE GmbH
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-
-Email: contact@tesobe.com
-TESOBE GmbH
-Osloerstrasse 16/17
-Berlin 13359, Germany
-
-This product includes software developed at
-TESOBE (http://www.tesobe.com/)
-*/
-package code.api.builder
-import code.api.util.APIUtil
-
-$TemplateJsonClass
-$createTemplateJsonClass
-
-object JsonFactory_APIBuilder{
-
- val templateJson = TemplateJson()
- val templatesJson = List(templateJson)
- val createTemplateJson = CreateTemplateJson()
-
- $createTemplateDef;
- $createTemplatesDef;
-
- val allFields =
- for (
- v <- this.getClass.getDeclaredFields
- //add guard, ignore the SwaggerJSONsV220.this and allFieldsAndValues fields
- if (APIUtil.notExstingBaseClass(v.getName()))
- )
- yield {
- v.setAccessible(true)
- v.get(this)
- }
-}
-"""
-}
diff --git a/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/ResourceDocsAPIMethods.scala b/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/ResourceDocsAPIMethods.scala
index 3608e490ba..529d7c91ae 100644
--- a/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/ResourceDocsAPIMethods.scala
+++ b/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/ResourceDocsAPIMethods.scala
@@ -5,7 +5,6 @@ import java.util.UUID.randomUUID
import code.api.OBPRestHelper
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON.canGetCustomersJson
-import code.api.builder.OBP_APIBuilder
import code.api.cache.Caching
import code.api.dynamic.endpoint.helper.{DynamicEndpointHelper, DynamicEndpoints}
import code.api.dynamic.entity.helper.DynamicEntityHelper
@@ -125,7 +124,6 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
logger.debug(s"getResourceDocsList says requestedApiVersion is $requestedApiVersion")
val resourceDocs = requestedApiVersion match {
- case ApiVersion.`b1` => OBP_APIBuilder.allResourceDocs
case ApiVersion.v5_1_0 => OBPAPI5_1_0.allResourceDocs
case ApiVersion.v5_0_0 => OBPAPI5_0_0.allResourceDocs
case ApiVersion.v4_0_0 => OBPAPI4_0_0.allResourceDocs
@@ -144,7 +142,6 @@ trait ResourceDocsAPIMethods extends MdcLoggable with APIMethods220 with APIMeth
logger.debug(s"There are ${resourceDocs.length} resource docs available to $requestedApiVersion")
val versionRoutes = requestedApiVersion match {
- case ApiVersion.`b1` => OBP_APIBuilder.routes
case ApiVersion.v5_1_0 => OBPAPI5_1_0.routes
case ApiVersion.v5_0_0 => OBPAPI5_0_0.routes
case ApiVersion.v4_0_0 => OBPAPI4_0_0.routes
diff --git a/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/SwaggerDefinitionsJSON.scala b/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/SwaggerDefinitionsJSON.scala
index 5a5f6a8f81..c4e3fd69bb 100644
--- a/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/SwaggerDefinitionsJSON.scala
+++ b/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/SwaggerDefinitionsJSON.scala
@@ -5412,7 +5412,7 @@ object SwaggerDefinitionsJSON {
val allFieldsThisFile = ReflectUtils.getValues(this, List(nameOf(allFields)))
.filter(it => it != null && it.isInstanceOf[AnyRef])
.map(_.asInstanceOf[AnyRef])
- allFieldsThisFile ++ JSONFactoryCustom300.allFields ++ SandboxData.allFields //++ JsonFactory_APIBuilder.allFields
+ allFieldsThisFile ++ JSONFactoryCustom300.allFields ++ SandboxData.allFields
}
}
diff --git a/obp-api/src/main/scala/code/api/builder/APIMethods_APIBuilder.scala b/obp-api/src/main/scala/code/api/builder/APIMethods_APIBuilder.scala
deleted file mode 100644
index fa5a7b9db3..0000000000
--- a/obp-api/src/main/scala/code/api/builder/APIMethods_APIBuilder.scala
+++ /dev/null
@@ -1,89 +0,0 @@
-package code.api.builder
-import java.util.UUID
-import code.api.builder.JsonFactory_APIBuilder._
-import code.api.util.APIUtil._
-import code.api.util.ApiTag._
-import com.openbankproject.commons.util.ApiVersion
-import code.api.util.ErrorMessages._
-import net.liftweb.common.Full
-import net.liftweb.http.rest.RestHelper
-import net.liftweb.json
-import net.liftweb.json.Extraction._
-import net.liftweb.json._
-import net.liftweb.mapper.By
-import net.liftweb.util.Helpers.tryo
-import scala.collection.immutable.Nil
-import scala.collection.mutable.ArrayBuffer
-trait APIMethods_APIBuilder { self: RestHelper =>
- val ImplementationsBuilderAPI = new Object() {
- val apiVersion = ApiVersion.b1
- val resourceDocs = ArrayBuffer[ResourceDoc]()
- val apiRelations = ArrayBuffer[ApiRelation]()
- val codeContext = CodeContext(resourceDocs, apiRelations)
- implicit val formats = code.api.util.CustomJsonFormats.formats
- val TemplateNotFound = "OBP-31001: Template not found. Please specify a valid value for TEMPLATE_ID."
- def endpointsOfBuilderAPI = getTemplates :: getTemplate :: createTemplate :: deleteTemplate :: Nil
- resourceDocs += ResourceDoc(getTemplates, apiVersion, "getTemplates", "GET", "/templates", "Get Templates", "Return All Templates", emptyObjectJson, templatesJson, List(UserNotLoggedIn, UnknownError),apiTagApiBuilder :: Nil)
- lazy val getTemplates: OBPEndpoint = {
- case ("templates" :: Nil) JsonGet req =>
- cc => {
- for (u <- cc.user ?~ UserNotLoggedIn; templates <- APIBuilder_Connector.getTemplates; templatesJson = JsonFactory_APIBuilder.createTemplates(templates); jsonObject: JValue = decompose(templatesJson)) yield {
- successJsonResponse(jsonObject)
- }
- }
- }
- resourceDocs += ResourceDoc(getTemplate, apiVersion, "getTemplate", "GET", "/templates/TEMPLATE_ID", "Get Template", "Return One Template By Id", emptyObjectJson, templateJson, List(UserNotLoggedIn, UnknownError),apiTagApiBuilder :: Nil)
- lazy val getTemplate: OBPEndpoint = {
- case ("templates" :: templateId :: Nil) JsonGet _ =>
- cc => {
- for (u <- cc.user ?~ UserNotLoggedIn; template <- APIBuilder_Connector.getTemplateById(templateId) ?~! TemplateNotFound; templateJson = JsonFactory_APIBuilder.createTemplate(template); jsonObject: JValue = decompose(templateJson)) yield {
- successJsonResponse(jsonObject)
- }
- }
- }
- resourceDocs += ResourceDoc(createTemplate, apiVersion, "createTemplate", "POST", "/templates", "Create Template", "Create One Template", createTemplateJson, templateJson, List(UnknownError),apiTagApiBuilder :: Nil)
- lazy val createTemplate: OBPEndpoint = {
- case ("templates" :: Nil) JsonPost json -> _ =>
- cc => {
- for (createTemplateJson <- tryo(json.extract[CreateTemplateJson]) ?~! InvalidJsonFormat; u <- cc.user ?~ UserNotLoggedIn; template <- APIBuilder_Connector.createTemplate(createTemplateJson); templateJson = JsonFactory_APIBuilder.createTemplate(template); jsonObject: JValue = decompose(templateJson)) yield {
- successJsonResponse(jsonObject)
- }
- }
- }
- resourceDocs += ResourceDoc(deleteTemplate, apiVersion, "deleteTemplate", "DELETE", "/templates/TEMPLATE_ID", "Delete Template", "Delete One Template", emptyObjectJson, emptyObjectJson.copy("true"), List(UserNotLoggedIn, UnknownError),apiTagApiBuilder :: Nil)
- lazy val deleteTemplate: OBPEndpoint = {
- case ("templates" :: templateId :: Nil) JsonDelete _ =>
- cc => {
- for (u <- cc.user ?~ UserNotLoggedIn; template <- APIBuilder_Connector.getTemplateById(templateId) ?~! TemplateNotFound; deleted <- APIBuilder_Connector.deleteTemplate(templateId)) yield {
- if (deleted) noContentJsonResponse else errorJsonResponse("Delete not completed")
- }
- }
- }
- }
-}
-object APIBuilder_Connector {
- val allAPIBuilderModels = List(MappedTemplate_2188356573920200339)
- def createTemplate(createTemplateJson: CreateTemplateJson) = Full(MappedTemplate_2188356573920200339.create.mTemplateId(UUID.randomUUID().toString).mAuthor(createTemplateJson.author).mPages(createTemplateJson.pages).mPoints(createTemplateJson.points).saveMe())
- def getTemplates() = Full(MappedTemplate_2188356573920200339.findAll())
- def getTemplateById(templateId: String) = MappedTemplate_2188356573920200339.find(By(MappedTemplate_2188356573920200339.mTemplateId, templateId))
- def deleteTemplate(templateId: String) = MappedTemplate_2188356573920200339.find(By(MappedTemplate_2188356573920200339.mTemplateId, templateId)).map(_.delete_!)
-}
-import net.liftweb.mapper._
-class MappedTemplate_2188356573920200339 extends Template with LongKeyedMapper[MappedTemplate_2188356573920200339] with IdPK {
- object mAuthor extends MappedString(this, 100)
- override def author: String = mAuthor.get
- object mPages extends MappedInt(this)
- override def pages: Int = mPages.get
- object mPoints extends MappedDouble(this)
- override def points: Double = mPoints.get
- def getSingleton = MappedTemplate_2188356573920200339
- object mTemplateId extends MappedString(this, 100)
- override def templateId: String = mTemplateId.get
-}
-object MappedTemplate_2188356573920200339 extends MappedTemplate_2188356573920200339 with LongKeyedMetaMapper[MappedTemplate_2188356573920200339]
-trait Template { `_` =>
- def author: String
- def pages: Int
- def points: Double
- def templateId: String
-}
\ No newline at end of file
diff --git a/obp-api/src/main/scala/code/api/builder/JsonFactory_APIBuilder.scala b/obp-api/src/main/scala/code/api/builder/JsonFactory_APIBuilder.scala
deleted file mode 100644
index 25cfa0da25..0000000000
--- a/obp-api/src/main/scala/code/api/builder/JsonFactory_APIBuilder.scala
+++ /dev/null
@@ -1,15 +0,0 @@
-package code.api.builder
-import code.api.util.APIUtil
-case class CreateTemplateJson(author: String = """Chinua Achebe""", pages: Int = 209, points: Double = 1.3)
-case class TemplateJson(id: String = """11231231312""", author: String = """Chinua Achebe""", pages: Int = 209, points: Double = 1.3)
-object JsonFactory_APIBuilder {
- val templateJson = TemplateJson()
- val templatesJson = List(templateJson)
- val createTemplateJson = CreateTemplateJson()
- def createTemplate(template: Template) = TemplateJson(template.templateId, template.author, template.pages, template.points)
- def createTemplates(templates: List[Template]) = templates.map(template => TemplateJson(template.templateId, template.author, template.pages, template.points))
- val allFields = for (v <- this.getClass.getDeclaredFields; if APIUtil.notExstingBaseClass(v.getName())) yield {
- v.setAccessible(true)
- v.get(this)
- }
-}
\ No newline at end of file
diff --git a/obp-api/src/main/scala/code/api/builder/OBP_APIBuilder.scala b/obp-api/src/main/scala/code/api/builder/OBP_APIBuilder.scala
deleted file mode 100644
index f6a0095093..0000000000
--- a/obp-api/src/main/scala/code/api/builder/OBP_APIBuilder.scala
+++ /dev/null
@@ -1,26 +0,0 @@
-package code.api.builder
-
-import code.api.OBPRestHelper
-import code.api.util.APIUtil.{OBPEndpoint, getAllowedEndpoints}
-import com.openbankproject.commons.util.{ApiVersion,ApiVersionStatus}
-import code.util.Helper.MdcLoggable
-
-object OBP_APIBuilder extends OBPRestHelper with APIMethods_APIBuilder with MdcLoggable {
-
- val version = ApiVersion.b1
- val versionStatus = ApiVersionStatus.DRAFT.toString
-
- val endpoints = ImplementationsBuilderAPI.endpointsOfBuilderAPI
-
- val allResourceDocs = ImplementationsBuilderAPI.resourceDocs
-
- // Filter the possible endpoints by the disabled / enabled Props settings and add them together
- val routes : List[OBPEndpoint] = getAllowedEndpoints(endpoints, ImplementationsBuilderAPI.resourceDocs)
-
-
- // Make them available for use!
- registerRoutes(routes, allResourceDocs, apiPrefix)
-
- logger.info(s"version $version has been run! There are ${routes.length} routes.")
-
-}
diff --git a/obp-api/src/main/scala/code/api/util/APIUtil.scala b/obp-api/src/main/scala/code/api/util/APIUtil.scala
index 0c1e644459..eb9c718990 100644
--- a/obp-api/src/main/scala/code/api/util/APIUtil.scala
+++ b/obp-api/src/main/scala/code/api/util/APIUtil.scala
@@ -42,7 +42,6 @@ import code.api.OAuthHandshake._
import code.api.UKOpenBanking.v2_0_0.OBP_UKOpenBanking_200
import code.api.UKOpenBanking.v3_1_0.OBP_UKOpenBanking_310
import code.api.berlin.group.v1.OBP_BERLIN_GROUP_1
-import code.api.builder.OBP_APIBuilder
import code.api.dynamic.endpoint.OBPAPIDynamicEndpoint
import code.api.dynamic.endpoint.helper.{DynamicEndpointHelper, DynamicEndpoints}
import code.api.oauth1a.Arithmetics
@@ -2701,7 +2700,6 @@ object APIUtil extends MdcLoggable with CustomJsonFormats{
case ApiVersion.v5_1_0 => LiftRules.statelessDispatch.append(v5_1_0.OBPAPI5_1_0)
case ApiVersion.`dynamic-endpoint` => LiftRules.statelessDispatch.append(OBPAPIDynamicEndpoint)
case ApiVersion.`dynamic-entity` => LiftRules.statelessDispatch.append(OBPAPIDynamicEntity)
- case ApiVersion.`b1` => LiftRules.statelessDispatch.append(OBP_APIBuilder)
case version: ScannedApiVersion => LiftRules.statelessDispatch.append(ScannedApis.versionMapScannedApis(version))
case _ => logger.info(s"There is no ${version.toString}")
}
diff --git a/obp-api/src/main/scala/code/api/util/ApiTag.scala b/obp-api/src/main/scala/code/api/util/ApiTag.scala
index 998109a2ed..ce37df8540 100644
--- a/obp-api/src/main/scala/code/api/util/ApiTag.scala
+++ b/obp-api/src/main/scala/code/api/util/ApiTag.scala
@@ -64,7 +64,6 @@ object ApiTag {
val apiTagSigningBaskets = ResourceDocTag("Signing Baskets")
val apiTagUKOpenBanking = ResourceDocTag("UKOpenBanking")
val apiTagMXOpenFinance = ResourceDocTag("MXOpenFinance")
- val apiTagApiBuilder = ResourceDocTag("API-Builder")
val apiTagAggregateMetrics = ResourceDocTag("Aggregate-Metrics")
val apiTagSystemIntegrity = ResourceDocTag("System-Integrity")
val apiTagWebhook = ResourceDocTag("Webhook")
diff --git a/obp-api/src/main/scala/code/api/util/ApiVersionUtils.scala b/obp-api/src/main/scala/code/api/util/ApiVersionUtils.scala
index 873678eed5..fc872ae791 100644
--- a/obp-api/src/main/scala/code/api/util/ApiVersionUtils.scala
+++ b/obp-api/src/main/scala/code/api/util/ApiVersionUtils.scala
@@ -20,7 +20,6 @@ object ApiVersionUtils {
v5_1_0 ::
`dynamic-endpoint` ::
`dynamic-entity` ::
- b1::
scannedApis
def valueOf(value: String): ScannedApiVersion = {
@@ -42,7 +41,6 @@ object ApiVersionUtils {
case v5_1_0.fullyQualifiedVersion | v5_1_0.apiShortVersion => v5_1_0
case `dynamic-endpoint`.fullyQualifiedVersion | `dynamic-endpoint`.apiShortVersion => `dynamic-endpoint`
case `dynamic-entity`.fullyQualifiedVersion | `dynamic-entity`.apiShortVersion => `dynamic-entity`
- case b1.fullyQualifiedVersion | b1.apiShortVersion => b1
case version if(scannedApis.map(_.fullyQualifiedVersion).contains(version))
=>scannedApis.filter(_.fullyQualifiedVersion==version).head
case version if(scannedApis.map(_.apiShortVersion).contains(version))
diff --git a/obp-api/src/test/scala/code/api/APIBuilder/APIBuilderModelTest.scala b/obp-api/src/test/scala/code/api/APIBuilder/APIBuilderModelTest.scala
deleted file mode 100644
index f5e7d539d5..0000000000
--- a/obp-api/src/test/scala/code/api/APIBuilder/APIBuilderModelTest.scala
+++ /dev/null
@@ -1,213 +0,0 @@
-/**
-Open Bank Project - API
-Copyright (C) 2011-2019, TESOBE GmbH
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-
-Email: contact@tesobe.com
-TESOBE GmbH
-Osloerstrasse 16/17
-Berlin 13359, Germany
-
- This product includes software developed at
- TESOBE (http://www.tesobe.com/)
- */
-
-package code.api.APIBuilder
-
-import code.util.Helper.MdcLoggable
-import org.scalatest.{FlatSpec, Matchers}
-
-import scala.meta.{Defn, Term, Type}
-import APIBuilderModel.{modelMappedName, _}
-import net.liftweb.json
-import net.liftweb.json.JValue
-
-class APIBuilderModelTest extends FlatSpec with Matchers with MdcLoggable {
-
- val jsonStringFromFile: String =
- """{
- "request_url": "/templates",
- "template": {
- "author": "Chinua Achebe",
- "pages": 209,
- "points": 1.3
- }
- }"""
- val jsonJValueFromFile: JValue = json.parse(jsonStringFromFile)
-
- //"template"
- val modelName = getModelName(jsonJValueFromFile)
-
- //TEMPLATE
- val modelNameUpperCase = modelName.toUpperCase
- //template
- val modelNameLowerCase = modelName.toLowerCase
- //Template
- val modelNameCapitalized = modelNameLowerCase.capitalize
- //MappedTemplate_1
- val modelMappedName = s"Mapped${modelNameCapitalized}_1"
- val modelTypeName: Type.Name = Type.Name(modelMappedName)
- val modelTermName = Term.Name(modelMappedName)
-
- val modelFieldsJValue: JValue = jsonJValueFromFile \ modelName
-
- val modelFieldsNames: List[String] = List("author", "pages", "points")
-
- val modelFieldTypes: List[String] = List("String", "Int", "Double")
-
- val modelFieldDefaultValues: List[Any] = List("Chinua Achebe", 209, 1.3)
-
- "getApiUrl" should "work as expected" in {
- val apiUrl: String = APIBuilderModel.getApiUrl(jsonJValueFromFile)
- apiUrl should be ("/templates")
-
- val jvalueMissingSlash: JValue = json.parse("""{"request_url":"templates/my"}""")
- val apiUrl2: String = APIBuilderModel.getApiUrl(jvalueMissingSlash)
- apiUrl2 should be ("/templates/my")
-
- val jvalueWrongSlash: JValue = json.parse("""{"request_url":"templates/my/"}""")
- val apiUrl3: String = APIBuilderModel.getApiUrl(jvalueMissingSlash)
- apiUrl3 should be ("/templates/my")
- }
-
- "getModelName" should "work as expected" in {
- val apiUrl: String = APIBuilderModel.getModelName(jsonJValueFromFile)
- apiUrl should be ("template")
- }
-
- "getModelFieldsNames" should "work as expected" in {
- val modelFieldsNames: List[String] = APIBuilderModel.getModelFieldsNames(modelFieldsJValue)
- modelFieldsNames should be (List("author", "pages", "points"))
- }
-
- "getModelFieldsTypes" should "work as expected" in {
- val modelFieldsTypes: List[String] = APIBuilderModel.getModelFieldsTypes(modelFieldsNames, modelFieldsJValue)
- modelFieldsTypes should be (List("String", "Int", "Double"))
- }
-
- "getModelFieldDefaultValues" should "work as expected" in {
- val modelFieldsTypes: List[Any] = APIBuilderModel.getModelFieldDefaultValues(modelFieldsNames, modelFieldsJValue)
- modelFieldsTypes should be (List("Chinua Achebe", 209, 1.3))
- }
-
- "getModelTraitMethods" should "work as expected" in {
- val modelTrait: Defn.Trait = APIBuilderModel.getModelTrait(modelFieldsNames, modelFieldTypes)
- modelTrait.toString() should be (
- "trait Template { `_` =>" +
- "\n def author: String" +
- "\n def pages: Int" +
- "\n def points: Double" +
- "\n def templateId: String" +
- "\n" +
- "}")
- }
-
- "getModelCaseClassParams" should "work as expected" in {
- val modelCaseClassParams: List[Term.Param] = APIBuilderModel.getModelCaseClassParams(modelFieldsNames, modelFieldTypes, modelFieldDefaultValues)
- modelCaseClassParams.toString() should be (
- "List(" +
- "author: String = `Chinua Achebe`, " +
- "pages: Int = 209, " +
- "points: Double = 1.3)")
- }
-
- "changeStringToMappedObject" should "work as expected" in {
- val stringObjectName = "Author"
- val stringObjectType = "String"
- val stringMappedObject= APIBuilderModel.stringToMappedObject(stringObjectName, stringObjectType)
- stringMappedObject.toString() should be ("object Author extends MappedString(this, 100)")
-
- val intObjectName = 123
- val intObjectType = "Int"
- val intMappedObject= APIBuilderModel.stringToMappedObject(stringObjectName, intObjectType)
- intMappedObject.toString() should be ("object Author extends MappedInt(this)")
-
- val doubleObjectName = 123.1231
- val doubleObjectType = "Double"
- val doubleMappedObject= APIBuilderModel.stringToMappedObject(stringObjectName, doubleObjectType)
- doubleMappedObject.toString() should be ("object Author extends MappedDouble(this)")
- }
-
- "stringToMappedMethod" should "work as expected" in {
- val methodName = "author"
- val methodReturnType = "String"
- val mappedMethod= APIBuilderModel.stringToMappedMethod(methodName, methodReturnType)
- mappedMethod.toString() should be ("override def author: String = mAuthor.get")
- }
-
- "getModelClassStatements" should "work as expected" in {
- val modelClassStatements= APIBuilderModel.getModelClassStatements(modelFieldsNames, modelFieldTypes)
- modelClassStatements.toString() should be (
- "List(" +
- "object mAuthor extends MappedString(this, 100), " +
- "override def author: String = mAuthor.get, " +
- "object mPages extends MappedInt(this), " +
- "override def pages: Int = mPages.get, " +
- "object mPoints extends MappedDouble(this), " +
- "override def points: Double = mPoints.get)" +
- "")
- }
-
-
- "getModelClass" should "work as expected" in {
- val modelClass= APIBuilderModel.getModelClass(modelTypeName, modelTermName, modelFieldsNames, modelFieldTypes)
- modelClass.toString() should be (
- "class MappedTemplate_1 extends Template with LongKeyedMapper[MappedTemplate_1] with IdPK {" +
- "\n object mAuthor extends MappedString(this, 100)" +
- "\n override def author: String = mAuthor.get" +
- "\n object mPages extends MappedInt(this)" +
- "\n override def pages: Int = mPages.get" +
- "\n object mPoints extends MappedDouble(this)" +
- "\n override def points: Double = mPoints.get" +
- "\n def getSingleton = MappedTemplate_1" +
- "\n object mTemplateId extends MappedString(this, 100)" +
- "\n override def templateId: String = mTemplateId.get" +
- "\n" +
- "}")
- }
-
- "generateCreateModelJsonMethod" should "work as expected" in {
- val createModelJsonMethod= APIBuilderModel.generateCreateModelJsonMethod(modelFieldsNames, modelMappedName)
- createModelJsonMethod.toString() should be (
- "def createTemplate(createTemplateJson: CreateTemplateJson) = " +
- "Full(MappedTemplate_1.create" +
- ".mTemplateId(UUID.randomUUID().toString)" +
- ".mAuthor(createTemplateJson.author)" +
- ".mPages(createTemplateJson.pages)" +
- ".mPoints(createTemplateJson.points)" +
- ".saveMe())")
- }
-
- "generateCreateTemplateJsonApply" should "work as expected" in {
- val createTemplateJsonApply= APIBuilderModel.generateCreateTemplateJsonApply(modelFieldsNames)
- createTemplateJsonApply.toString() should be ("TemplateJson(template.templateId, template.author, template.pages, template.points)")
- }
-
- "getAuthenticationStatement" should "work as expected" in {
- val needAuth= APIBuilderModel.getAuthenticationStatement(true)
- needAuth.toString() should be ("cc.user ?~ UserNotLoggedIn")
- val notNeedAuth= APIBuilderModel.getAuthenticationStatement(false)
- notNeedAuth.toString() should be ("Full(1) ?~ UserNotLoggedIn")
- }
-
- "createTemplateJsonClass" should "work as expected" in {
- val className ="Template"
- val templateIdField: Term.Param = Term.Param(Nil, Term.Name(s"template_id"), Some(Type.Name("String")), Some(Term.Name("`11231231312`")))
- val templateJsonClassParams = List(templateIdField)
-
- val templateJsonClass: Defn.Class = APIBuilderModel.createTemplateJsonClass(className, templateJsonClassParams)
- templateJsonClass.toString() should be ("case class Template(template_id: String = `11231231312`)")
- }
-}
\ No newline at end of file
diff --git a/obp-api/src/test/scala/code/util/ApiVersionUtilsTest.scala b/obp-api/src/test/scala/code/util/ApiVersionUtilsTest.scala
index 05d1bd5104..1a14ed8965 100644
--- a/obp-api/src/test/scala/code/util/ApiVersionUtilsTest.scala
+++ b/obp-api/src/test/scala/code/util/ApiVersionUtilsTest.scala
@@ -20,6 +20,6 @@ class ApiVersionUtilsTest extends V400ServerSetup {
versions.map(version => ApiVersionUtils.valueOf(version.fullyQualifiedVersion))
//NOTE, when we added the new version, better fix this number manually. and also check the versions
- versions.length shouldBe(25)
+ versions.length shouldBe(24)
}}
}
\ No newline at end of file
diff --git a/obp-commons/src/main/scala/com/openbankproject/commons/util/ApiVersion.scala b/obp-commons/src/main/scala/com/openbankproject/commons/util/ApiVersion.scala
index 9a75375b73..480bdfd355 100644
--- a/obp-commons/src/main/scala/com/openbankproject/commons/util/ApiVersion.scala
+++ b/obp-commons/src/main/scala/com/openbankproject/commons/util/ApiVersion.scala
@@ -8,7 +8,6 @@ import net.liftweb.json.{Formats, JField, JObject, JString, JsonAST}
object ApiStandards extends Enumeration {
type ApiStandards = Value
val obp = Value
- val `api-builder` = Value("api-builder")
}
object ApiShortVersions extends Enumeration {
@@ -24,7 +23,6 @@ object ApiShortVersions extends Enumeration {
val `v4.0.0` = Value("v4.0.0")
val `v5.0.0` = Value("v5.0.0")
val `v5.1.0` = Value("v5.1.0")
- val b1 = Value
val `dynamic-endpoint` = Value("dynamic-endpoint")
val `dynamic-entity` = Value("dynamic-entity")
}
@@ -118,9 +116,6 @@ object ApiVersion {
val `dynamic-endpoint` = ScannedApiVersion(urlPrefix,ApiStandards.obp.toString,ApiShortVersions.`dynamic-endpoint`.toString)
val `dynamic-entity` = ScannedApiVersion(urlPrefix,ApiStandards.obp.toString,ApiShortVersions.`dynamic-entity`.toString)
- //This is generated by scala-meta:
- val b1 = ScannedApiVersion(urlPrefix,ApiStandards.`api-builder`.toString, ApiShortVersions.b1.toString)
-
//This is OBP standard version:
val standardVersions =
v1_2_1 ::
@@ -134,7 +129,6 @@ object ApiVersion {
v4_0_0 ::
v5_0_0 ::
v5_1_0 ::
- b1 ::
`dynamic-endpoint` ::
`dynamic-entity`::
Nil