refactor/update error message for missing connector property

This commit is contained in:
hongwei 2025-06-13 17:12:17 +02:00
parent c61b13ece3
commit 3a2dd2ee7a
19 changed files with 61 additions and 79 deletions

View File

@ -42,6 +42,7 @@ import code.api.attributedefinition.AttributeDefinition
import code.api.cache.Redis
import code.api.util.APIUtil.{enableVersionIfAllowed, errorJsonResponse, getPropsValue}
import code.api.util.ApiRole.CanCreateEntitlementAtAnyBank
import code.api.util.ErrorMessages.MandatoryPropertyIsNotSet
import code.api.util._
import code.api.util.migration.Migration
import code.api.util.migration.Migration.DbFunction
@ -405,7 +406,7 @@ class Boot extends MdcLoggable {
}
// ensure our relational database's tables are created/fit the schema
val connector = code.api.Constant.Connector.openOrThrowException("no connector set")
val connector = code.api.Constant.Connector.openOrThrowException(s"$MandatoryPropertyIsNotSet. The missing prop is `connector` ")
val runningMode = Props.mode match {
case Props.RunModes.Production => "Production mode"

View File

@ -125,7 +125,7 @@ trait APIMethods121 {
|* Git Commit""",
EmptyBody,
apiInfoJSON,
List(UnknownError, "no connector set"),
List(UnknownError, MandatoryPropertyIsNotSet),
apiTagApi :: Nil)
lazy val root : OBPEndpoint = {

View File

@ -28,6 +28,7 @@ package code.api.v1_2_1
import code.api.util.APIUtil
import code.api.util.APIUtil._
import code.api.util.ErrorMessages.MandatoryPropertyIsNotSet
import code.model._
import com.openbankproject.commons.model._
import com.openbankproject.commons.util.ApiVersion
@ -371,7 +372,7 @@ object JSONFactory{
val phone = APIUtil.getPropsValue("hosted_by.phone", "+49 (0)30 8145 3994")
val organisationWebsite = APIUtil.getPropsValue("organisation_website", "https://www.tesobe.com")
val connector = code.api.Constant.Connector.openOrThrowException("no connector set")
val connector = code.api.Constant.Connector.openOrThrowException(s"$MandatoryPropertyIsNotSet. The missing prop is `connector` ")
val hostedBy = new HostedBy(organisation, email, phone, organisationWebsite)
val apiInfoJSON = new APIInfoJSON(apiVersion.vDottedApiVersion, apiVersionStatus, gitCommit, connector, hostedBy)

View File

@ -8,14 +8,12 @@ import code.api.util.FutureUtil.EndpointContext
import code.api.util.NewStyle.HttpCode
import code.api.util.{ApiRole, NewStyle}
import code.api.v1_2_1.JSONFactory
import com.openbankproject.commons.ExecutionContext.Implicits.global
import com.openbankproject.commons.model.BankId
import com.openbankproject.commons.util.ApiVersion
import com.openbankproject.commons.ExecutionContext.Implicits.global
import net.liftweb.common.Full
import net.liftweb.http.rest.RestHelper
import net.liftweb.json.Extraction
import scala.collection.immutable.Nil
import scala.collection.mutable.ArrayBuffer
import scala.concurrent.Future
@ -43,7 +41,7 @@ trait APIMethods130 {
|* Git Commit""",
EmptyBody,
apiInfoJSON,
List(UnknownError, "no connector set"),
List(UnknownError, MandatoryPropertyIsNotSet),
apiTagApi :: Nil)
lazy val root : OBPEndpoint = {

View File

@ -6,7 +6,6 @@ import code.api.util.FutureUtil.EndpointContext
import code.api.util.NewStyle.HttpCode
import code.api.util._
import code.api.v1_2_1.JSONFactory
import code.api.v1_3_0.OBPAPI1_3_0
import code.api.v1_4_0.JSONFactory1_4_0._
import code.api.v2_0_0.CreateCustomerJson
import code.atms.Atms
@ -15,7 +14,6 @@ import code.branches.Branches
import code.customer.CustomerX
import code.usercustomerlinks.UserCustomerLink
import code.util.Helper
import code.views.Views
import code.views.system.ViewDefinition
import com.github.dwickern.macros.NameOf.nameOf
import com.openbankproject.commons.model._
@ -44,12 +42,10 @@ import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON._
import code.api.util.APIUtil._
import code.api.util.ErrorMessages
import code.api.util.ErrorMessages._
import code.crm.CrmEvent
import code.customer.CustomerMessages
import code.model._
import code.products.Products
import code.util.Helper._
import com.openbankproject.commons.ExecutionContext.Implicits.global
trait APIMethods140 extends MdcLoggable with APIMethods130 with APIMethods121{
@ -78,7 +74,7 @@ trait APIMethods140 extends MdcLoggable with APIMethods130 with APIMethods121{
|* Git Commit""",
EmptyBody,
apiInfoJSON,
List(UnknownError, "no connector set"),
List(UnknownError, MandatoryPropertyIsNotSet),
apiTagApi :: Nil)
lazy val root : OBPEndpoint = {

View File

@ -1,10 +1,7 @@
package code.api.v2_0_0
import java.util.{Calendar, Date}
import code.api.Constant._
import code.TransactionTypes.TransactionType
import code.api.{APIFailure, APIFailureNewStyle}
import code.api.Constant._
import code.api.APIFailureNewStyle
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON._
import code.api.util.APIUtil._
import code.api.util.ApiTag._
@ -14,15 +11,11 @@ import code.api.util.NewStyle.HttpCode
import code.api.util._
import code.api.v1_2_1.OBPAPI1_2_1._
import code.api.v1_2_1.{JSONFactory => JSONFactory121}
import code.api.v1_3_0.OBPAPI1_3_0
import code.api.v1_4_0.JSONFactory1_4_0
import code.api.v1_4_0.JSONFactory1_4_0.ChallengeAnswerJSON
import code.api.v2_0_0.JSONFactory200.{privateBankAccountsListToJson, _}
import code.bankconnectors.Connector
import code.customer.CustomerX
import code.entitlement.Entitlement
import code.fx.fx
import code.meetings.Meetings
import code.model._
import code.model.dataAccess.{AuthUser, BankAccountCreation}
import code.search.{elasticsearchMetrics, elasticsearchWarehouse}
@ -34,25 +27,23 @@ import code.util.Helper.{booleanToBox, booleanToFuture}
import code.views.Views
import code.views.system.ViewDefinition
import com.github.dwickern.macros.NameOf.nameOf
import com.openbankproject.commons.ExecutionContext.Implicits.global
import com.openbankproject.commons.model._
import net.liftweb.common.{Full, _}
import com.openbankproject.commons.util.ApiVersion
import net.liftweb.common._
import net.liftweb.http.CurrentReq
import net.liftweb.http.rest.RestHelper
import net.liftweb.json.JsonAST.{JValue, prettyRender}
import net.liftweb.json.JsonAST.JValue
import net.liftweb.mapper.By
import net.liftweb.util.Helpers.tryo
import scala.collection.immutable.Nil
import scala.collection.mutable.ArrayBuffer
import com.openbankproject.commons.ExecutionContext.Implicits.global
import com.openbankproject.commons.util.ApiVersion
import net.liftweb.util.StringHelpers
import java.util.Date
import scala.collection.mutable.ArrayBuffer
import scala.concurrent.Future
// Makes JValue assignment to Nil work
import code.api.util.ApiRole._
import code.api.util.ErrorMessages._
import code.api.v2_0_0.AccountsHelper._
import com.openbankproject.commons.model.{AmountOfMoneyJsonV121 => AmountOfMoneyJSON121}
import net.liftweb.json.Extraction
@ -149,7 +140,7 @@ trait APIMethods200 {
|* Git Commit""",
EmptyBody,
apiInfoJSON,
List(UnknownError, "no connector set"),
List(UnknownError, MandatoryPropertyIsNotSet),
apiTagApi :: Nil)
lazy val root : OBPEndpoint = {

View File

@ -84,7 +84,7 @@ trait APIMethods210 {
|* Git Commit""",
EmptyBody,
apiInfoJSON,
List(UnknownError, "no connector set"),
List(UnknownError, MandatoryPropertyIsNotSet),
apiTagApi :: Nil)
lazy val root : OBPEndpoint = {

View File

@ -1,24 +1,21 @@
package code.api.v2_2_0
import java.util.Date
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON._
import code.api.util.APIUtil._
import code.api.util.ApiRole.{canCreateBranch, _}
import code.api.util.ApiRole._
import code.api.util.ApiTag._
import code.api.util.ErrorMessages.{BankAccountNotFound, _}
import code.api.util.FutureUtil.EndpointContext
import code.api.util.NewStyle.HttpCode
import code.api.util.{ErrorMessages, _}
import code.api.util._
import code.api.v1_2_1.{CreateViewJsonV121, JSONFactory, UpdateViewJsonV121}
import code.api.v2_0_0.OBPAPI2_0_0
import code.api.v2_1_0._
import code.api.v2_2_0.JSONFactory220.transformV220ToBranch
import code.api.v3_1_0.{JSONFactory310, PostPutProductJsonV310}
import code.api.v4_0_0.{AtmJsonV400, JSONFactory400}
import code.api.v3_1_0.PostPutProductJsonV310
import code.api.v4_0_0.AtmJsonV400
import code.bankconnectors._
import code.consumer.Consumers
import code.entitlement.Entitlement
import code.fx.{MappedFXRate, fx}
import code.metadata.counterparties.{Counterparties, MappedCounterparty}
import code.metrics.ConnectorMetricsProvider
import code.model._
@ -28,18 +25,18 @@ import code.util.Helper._
import code.views.Views
import code.views.system.ViewDefinition
import com.github.dwickern.macros.NameOf.nameOf
import com.openbankproject.commons.ExecutionContext.Implicits.global
import com.openbankproject.commons.model._
import net.liftweb.common.{Empty, Full}
import com.openbankproject.commons.util.ApiVersion
import net.liftweb.common.Full
import net.liftweb.http.rest.RestHelper
import net.liftweb.json.Extraction
import net.liftweb.util.Helpers.tryo
import scala.collection.immutable.{List, Nil}
import scala.collection.mutable.ArrayBuffer
import com.openbankproject.commons.ExecutionContext.Implicits.global
import com.openbankproject.commons.util.ApiVersion
import net.liftweb.util.StringHelpers
import java.util.Date
import scala.collection.immutable.{List, Nil}
import scala.collection.mutable.ArrayBuffer
import scala.concurrent.Future
@ -73,7 +70,7 @@ trait APIMethods220 {
|* Git Commit""",
EmptyBody,
apiInfoJSON,
List(UnknownError, "no connector set"),
List(UnknownError, MandatoryPropertyIsNotSet),
apiTagApi :: Nil)
lazy val root : OBPEndpoint = {

View File

@ -1,12 +1,9 @@
package code.api.v3_0_0
import java.util.regex.Pattern
import code.accountattribute.AccountAttributeX
import code.accountholders.AccountHolders
import code.api.{APIFailureNewStyle, Constant}
import code.api.Constant.{PARAM_LOCALE, PARAM_TIMESTAMP}
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON.{bankJSON, banksJSON, branchJsonV300, _}
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON.{banksJSON, branchJsonV300, _}
import code.api.util.APIUtil.{getGlossaryItems, _}
import code.api.util.ApiRole._
import code.api.util.ApiTag._
@ -15,8 +12,11 @@ import code.api.util.FutureUtil.EndpointContext
import code.api.util.NewStyle.HttpCode
import code.api.util._
import code.api.v1_2_1.JSONFactory
import code.api.v2_0_0.{JSONFactory200, OBPAPI2_0_0}
import code.api.v2_0_0.AccountsHelper._
import code.api.v2_0_0.JSONFactory200
import code.api.v3_0_0.JSONFactory300._
import code.api.v4_0_0.{AtmJsonV400, JSONFactory400}
import code.api.{APIFailureNewStyle, Constant}
import code.bankconnectors._
import code.consumer.Consumers
import code.entitlementrequest.EntitlementRequest
@ -26,32 +26,27 @@ import code.scope.Scope
import code.search.elasticsearchWarehouse
import code.users.Users
import code.util.Helper
import code.util.Helper.{ObpS, booleanToBox, booleanToFuture}
import code.util.Helper.{ObpS, booleanToFuture}
import code.views.Views
import code.views.system.ViewDefinition
import com.github.dwickern.macros.NameOf.nameOf
import com.grum.geocalc.{Coordinate, EarthCalc, Point}
import com.openbankproject.commons.ExecutionContext.Implicits.global
import com.openbankproject.commons.dto.CustomerAndAttribute
import com.openbankproject.commons.model._
import com.openbankproject.commons.util.ApiVersion
import net.liftweb.common._
import net.liftweb.http.S
import net.liftweb.http.js.JE.JsRaw
import net.liftweb.http.rest.RestHelper
import net.liftweb.json.{Extraction, compactRender}
import net.liftweb.json.JsonAST.JField
import net.liftweb.json.compactRender
import net.liftweb.util.Helpers.tryo
import net.liftweb.util.StringHelpers
import java.util.regex.Pattern
import scala.collection.immutable.{List, Nil}
import scala.collection.mutable.ArrayBuffer
import com.openbankproject.commons.ExecutionContext.Implicits.global
import scala.concurrent.Future
import code.api.v2_0_0.AccountsHelper._
import code.api.v2_2_0.{AtmJsonV220, JSONFactory220}
import code.api.v4_0_0.{AtmJsonV400, JSONFactory400}
import code.model
import com.openbankproject.commons.dto.CustomerAndAttribute
import com.openbankproject.commons.util.ApiVersion
import net.liftweb.json.JsonAST.JField
import net.liftweb.util.StringHelpers
trait APIMethods300 {
@ -82,7 +77,7 @@ trait APIMethods300 {
|* Git Commit""",
EmptyBody,
apiInfoJSON,
List(UnknownError, "no connector set"),
List(UnknownError, MandatoryPropertyIsNotSet),
apiTagApi :: Nil)
lazy val root : OBPEndpoint = {

View File

@ -93,7 +93,7 @@ trait APIMethods310 {
|* Git Commit""",
EmptyBody,
apiInfoJSON,
List(UnknownError, "no connector set"),
List(UnknownError, MandatoryPropertyIsNotSet),
apiTagApi :: Nil)
lazy val root : OBPEndpoint = {
@ -1870,7 +1870,7 @@ trait APIMethods310 {
cc => implicit val ec = EndpointContext(Some(cc))
for {
(_, callContext) <- anonymousAccess(cc)
connectorVersion = code.api.Constant.Connector.openOrThrowException("connector props field `connector` not set")
connectorVersion = code.api.Constant.Connector.openOrThrowException(s"$MandatoryPropertyIsNotSet The missing props is 'connector'")
starConnectorProps = APIUtil.getPropsValue("starConnector_supported_types").openOr("notfound")
//TODO we need to decide what kind of connector should we use.
obpApiLoopback = ObpApiLoopback(

View File

@ -2218,7 +2218,7 @@ trait APIMethods400 extends MdcLoggable {
|* Git Commit""",
EmptyBody,
apiInfoJson400,
List(UnknownError, "no connector set"),
List(UnknownError, MandatoryPropertyIsNotSet),
apiTagApi :: Nil)
lazy val root: OBPEndpoint = {
@ -3817,7 +3817,7 @@ trait APIMethods400 extends MdcLoggable {
BigDecimal(postJson.amount.amount)
}
_ <- Helper.booleanToFuture(s"${InvalidISOCurrencyCode} Current input is: '${postJson.amount.currency}'", cc=callContext) {
isValidCurrencyISOCode(postJson.amount.currency)
code.api.util.APIUtil.isValidCurrencyISOCode(postJson.amount.currency)
}
(_, callContext) <- NewStyle.function.getCustomerByCustomerId(postJson.customer_id, callContext)
_ <- Users.users.vend.getUserByUserIdFuture(postJson.user_id) map {

View File

@ -29,6 +29,7 @@ package code.api.v4_0_0
import code.api.Constant
import code.api.attributedefinition.AttributeDefinition
import code.api.util.APIUtil.{DateWithDay, DateWithSeconds, gitCommit, stringOptionOrNull, stringOrNull}
import code.api.util.ErrorMessages.MandatoryPropertyIsNotSet
import code.api.util.{APIUtil, CallContext, NewStyle}
import code.api.v1_2_1.JSONFactory.{createAmountOfMoneyJSON, createOwnersJSON}
import code.api.v1_2_1.{BankRoutingJsonV121, JSONFactory, UserJSONV121, ViewJSONV121}
@ -1107,7 +1108,7 @@ object JSONFactory400 {
val organisationWebsiteEnergySource = APIUtil.getPropsValue("energy_source.organisation_website", "")
val energySource = new EnergySource400(organisationEnergySource, organisationWebsiteEnergySource)
val connector = code.api.Constant.Connector.openOrThrowException("no connector set")
val connector = code.api.Constant.Connector.openOrThrowException(s"$MandatoryPropertyIsNotSet. The missing prop is `connector` ")
val resourceDocsRequiresRole = APIUtil.getPropsAsBoolValue("resource_docs_requires_role", false)
APIInfoJson400(

View File

@ -38,9 +38,9 @@ import net.liftweb.http.Req
import net.liftweb.http.rest.RestHelper
import net.liftweb.json
import net.liftweb.json.{Extraction, compactRender, prettyRender}
import net.liftweb.mapper.By
import net.liftweb.util.Helpers.tryo
import net.liftweb.util.{Helpers, Props, StringHelpers}
import net.liftweb.mapper.By
import java.util.UUID
import java.util.concurrent.ThreadLocalRandom
@ -95,7 +95,7 @@ trait APIMethods500 {
|* Git Commit""",
EmptyBody,
apiInfoJson400,
List(UnknownError, "no connector set"),
List(UnknownError, MandatoryPropertyIsNotSet),
apiTagApi :: Nil)
lazy val root: OBPEndpoint = {

View File

@ -29,6 +29,7 @@ package code.api.v5_0_0
import code.api.Constant
import code.api.util.APIUtil
import code.api.util.APIUtil.{gitCommit, nullToString, stringOptionOrNull, stringOrNull}
import code.api.util.ErrorMessages.MandatoryPropertyIsNotSet
import code.api.v1_2_1.BankRoutingJsonV121
import code.api.v1_3_0.JSONFactory1_3_0.{cardActionsToString, createAccountJson, createPinResetJson, createReplacementJson}
import code.api.v1_3_0.{PinResetJSON, ReplacementJSON}
@ -558,7 +559,7 @@ object JSONFactory500 {
val organisationWebsiteEnergySource = APIUtil.getPropsValue("energy_source.organisation_website", "")
val energySource = new EnergySource400(organisationEnergySource, organisationWebsiteEnergySource)
val connector = code.api.Constant.Connector.openOrThrowException("no connector set")
val connector = code.api.Constant.Connector.openOrThrowException(s"$MandatoryPropertyIsNotSet. The missing prop is `connector` ")
val resourceDocsRequiresRole = APIUtil.getPropsAsBoolValue("resource_docs_requires_role", false)
APIInfoJson400(

View File

@ -95,7 +95,7 @@ trait APIMethods510 {
|* Git Commit""",
EmptyBody,
apiInfoJson400,
List(UnknownError, "no connector set"),
List(UnknownError, MandatoryPropertyIsNotSet),
apiTagApi :: Nil)
lazy val root: OBPEndpoint = {
@ -296,7 +296,7 @@ trait APIMethods510 {
|""".stripMargin,
EmptyBody,
WaitingForGodotJsonV510(sleep_in_milliseconds = 50),
List(UnknownError, "no connector set"),
List(UnknownError, MandatoryPropertyIsNotSet),
apiTagApi :: Nil)
lazy val waitingForGodot: OBPEndpoint = {

View File

@ -30,6 +30,7 @@ import code.api.Constant
import code.api.berlin.group.ConstantsBG
import code.api.berlin.group.v1_3.JSONFactory_BERLIN_GROUP_1_3.ConsentAccessJson
import code.api.util.APIUtil.{DateWithDay, DateWithSeconds, gitCommit, stringOrNull}
import code.api.util.ErrorMessages.MandatoryPropertyIsNotSet
import code.api.util._
import code.api.v1_2_1.BankRoutingJsonV121
import code.api.v1_4_0.JSONFactory1_4_0.{ChallengeJsonV140, LocationJsonV140, MetaJsonV140, TransactionRequestAccountJsonV140, transformToLocationFromV140, transformToMetaFromV140}
@ -968,7 +969,7 @@ object JSONFactory510 extends CustomJsonFormats {
val organisationWebsiteEnergySource = APIUtil.getPropsValue("energy_source.organisation_website", "")
val energySource = EnergySource400(organisationEnergySource, organisationWebsiteEnergySource)
val connector = code.api.Constant.Connector.openOrThrowException("no connector set")
val connector = code.api.Constant.Connector.openOrThrowException(s"$MandatoryPropertyIsNotSet. The missing prop is `connector` ")
val resourceDocsRequiresRole = APIUtil.getPropsAsBoolValue("resource_docs_requires_role", false)
APIInfoJsonV510(

View File

@ -80,7 +80,7 @@ object Connector extends SimpleInjector {
val connector = new Inject(buildOne _) {}
def buildOne: Connector = {
val connectorProps = code.api.Constant.Connector.openOrThrowException("connector props field not set")
val connectorProps = code.api.Constant.Connector.openOrThrowException(s"$MandatoryPropertyIsNotSet The missing props is 'connector'")
getConnectorInstance(connectorProps)
}

View File

@ -28,13 +28,13 @@ package code.model.dataAccess
import code.UserRefreshes.UserRefreshes
import code.accountholders.AccountHolders
import code.api._
import code.api.cache.Caching
import code.api.dynamic.endpoint.helper.DynamicEndpointHelper
import code.api.util.APIUtil._
import code.api.util.CommonFunctions.validUri
import code.api.util.ErrorMessages._
import code.api.util._
import code.api._
import code.bankconnectors.Connector
import code.context.UserAuthContextProvider
import code.entitlement.Entitlement
@ -419,7 +419,7 @@ import net.liftweb.util.Helpers._
/**Marking the locked state to show different error message */
val usernameLockedStateCode = Long.MaxValue
val connector = code.api.Constant.Connector.openOrThrowException("no connector set")
val connector = code.api.Constant.Connector.openOrThrowException(s"$MandatoryPropertyIsNotSet. The missing prop is `connector` ")
val starConnectorSupportedTypes = APIUtil.getPropsValue("starConnector_supported_types","")
override def dbIndexes: List[BaseIndex[AuthUser]] = UniqueIndex(username, provider) ::super.dbIndexes

View File

@ -25,7 +25,7 @@ TESOBE (http://www.tesobe.com/)
*/
package code.api.v3_1_0
import code.api.util.ErrorMessages.NotImplemented
import code.api.util.ErrorMessages.{MandatoryPropertyIsNotSet, NotImplemented}
import code.api.v3_1_0.OBPAPI3_1_0.Implementations3_1_0
import com.github.dwickern.macros.NameOf.nameOf
import com.openbankproject.commons.model.ErrorMessage
@ -51,7 +51,7 @@ class ObpApiLoopbackTest extends V310ServerSetup {
val response310 = makeGetRequest(request310)
Then("We should get a 400")
response310.code should equal(400)
val connectorVersion = code.api.Constant.Connector.openOrThrowException("connector props filed `connector` not set")
val connectorVersion = code.api.Constant.Connector.openOrThrowException(s"$MandatoryPropertyIsNotSet The missing props is 'connector'")
val errorMessage = s"${NotImplemented}"
And("error should be " + errorMessage)
response310.body.extract[ErrorMessage].message should equal (errorMessage)