From 31768a5a8f71ea25ff82b3b044010d8fb56d4148 Mon Sep 17 00:00:00 2001 From: shuang Date: Sat, 24 Aug 2019 22:22:49 +0800 Subject: [PATCH] rest connector methods generate: fix builder errors --- obp-api/pom.xml | 6 +++++ .../code/api/util/CodeGenerateUtils.scala | 6 ++++- .../rest/RestConnectorBuilder.scala | 9 +++++++ .../rest/RestConnector_vMar2019.scala | 25 ++----------------- .../vSept2018/KafkaConnectorBuilder.scala | 9 +++++++ .../webuiprops/MappedWebUiPropsProvider.scala | 8 ------ .../commons/dto/JsonsTransfer.scala | 2 +- .../commons/model/CommonModel.scala | 6 ++--- .../commons/model/CommonModelTrait.scala | 4 +-- 9 files changed, 36 insertions(+), 39 deletions(-) diff --git a/obp-api/pom.xml b/obp-api/pom.xml index 4839c6b02..bfeeadfb5 100644 --- a/obp-api/pom.xml +++ b/obp-api/pom.xml @@ -377,6 +377,12 @@ evo-inflector 1.2.2 + + + org.javassist + javassist + 3.25.0-GA + diff --git a/obp-api/src/main/scala/code/api/util/CodeGenerateUtils.scala b/obp-api/src/main/scala/code/api/util/CodeGenerateUtils.scala index b201007ea..05474627d 100644 --- a/obp-api/src/main/scala/code/api/util/CodeGenerateUtils.scala +++ b/obp-api/src/main/scala/code/api/util/CodeGenerateUtils.scala @@ -147,7 +147,11 @@ object CodeGenerateUtils { val TypeRef(_, _, args: List[Type]) = tp args.map(createDocExample(_)).mkString("(", ", ", ")") } else if (isObpType) { - val fields = tp.decls.find(it => it.isConstructor).toList.flatMap(_.asMethod.paramLists(0)).foldLeft("")((str, symbol) => { + val concreteType = tp.typeSymbol.isAbstract match { + case true => ReflectUtils.getTypeByName(tp.typeSymbol.fullName + "Commons") // if here not found the Commons type, must add one + case false => tp + } + val fields = concreteType.decls.find(it => it.isConstructor).toList.flatMap(_.asMethod.paramLists(0)).foldLeft("")((str, symbol) => { val valName = symbol.name.toString val TypeRef(pre: Type, sym: Symbol, args: List[Type]) = symbol.info val value = if (pre <:< ru.typeOf[ProductAttributeType.type]) { diff --git a/obp-api/src/main/scala/code/bankconnectors/rest/RestConnectorBuilder.scala b/obp-api/src/main/scala/code/bankconnectors/rest/RestConnectorBuilder.scala index 7020e0da8..46e2e8e17 100644 --- a/obp-api/src/main/scala/code/bankconnectors/rest/RestConnectorBuilder.scala +++ b/obp-api/src/main/scala/code/bankconnectors/rest/RestConnectorBuilder.scala @@ -16,6 +16,15 @@ import scala.reflect.runtime.{universe => ru} import code.api.util.CodeGenerateUtils.createDocExample object RestConnectorBuilder extends App { + // rewrite method code.webuiprops.MappedWebUiPropsProvider#getWebUiPropsValue, avoid access DB cause dataSource not found exception + { + import javassist.ClassPool + val pool = ClassPool.getDefault + val ct = pool.getCtClass("code.webuiprops.MappedWebUiPropsProvider$") + val m = ct.getDeclaredMethod("getWebUiPropsValue") + m.insertBefore("""return ""; """) + ct.toClass + } val genMethodNames = List( "getAdapterInfo", diff --git a/obp-api/src/main/scala/code/bankconnectors/rest/RestConnector_vMar2019.scala b/obp-api/src/main/scala/code/bankconnectors/rest/RestConnector_vMar2019.scala index 551c6a7c8..2202a877a 100644 --- a/obp-api/src/main/scala/code/bankconnectors/rest/RestConnector_vMar2019.scala +++ b/obp-api/src/main/scala/code/bankconnectors/rest/RestConnector_vMar2019.scala @@ -243,36 +243,15 @@ trait RestConnector_vMar2019 extends Connector with KafkaHelper with MdcLoggable import com.openbankproject.commons.dto.{OutBoundGetBankAccountsBalances => OutBound, InBoundGetBankAccountsBalances => InBound} val url = getUrl(callContext,"getBankAccountsBalances" , ("bankIdAccountIds", bankIdAccountIds)) val req = OutBound(callContext.map(_.toOutboundAdapterCallContext).orNull, bankIdAccountIds) - sendGetRequest[InBound](url, req).map(convertToTuple(callContext)) + sendRequest[InBound](url, HttpMethods.GET, req).map(convertToTuple(callContext)) } } }("getBankAccountsBalances") //---------------- dynamic end ---------------------please don't modify this line - - - - - - - - - - private[this] def sendGetRequest[T: TypeTag : Manifest](url: String, outBound: TopicTrait) = - sendRequest[T](url, HttpMethods.GET, outBound) - - private[this] def sendPostRequest[T: TypeTag : Manifest](url: String, outBound: TopicTrait) = - sendRequest[T](url, HttpMethods.POST, outBound) - - private[this] def sendPutRequest[T: TypeTag : Manifest](url: String, outBound: TopicTrait) = - sendRequest[T](url, HttpMethods.PUT, outBound) - - private[this] def sendDelteRequest[T: TypeTag : Manifest](url: String, outBound: TopicTrait) = - sendRequest[T](url, HttpMethods.DELETE, outBound) - //In RestConnector, we use the headers to propagate the parameters to Adapter. The parameters come from the CallContext.outboundAdapterAuthInfo.userAuthContext //We can set them from UserOauthContext or the http request headers. private[this] implicit def buildHeaders(outboundAdapterCallContext: OutboundAdapterCallContext): List[HttpHeader] = { @@ -339,7 +318,7 @@ trait RestConnector_vMar2019 extends Connector with KafkaHelper with MdcLoggable .foldLeft(s"$baseUrl/$methodName")((url, pair) => url.concat(s"/${pair._1}/${urlValueConverter(pair._2)}")) + queryParams.getOrElse("") } - private[this] def sendRequest[T <: InBoundTrait[_]: TypeTag : Manifest](url: String, method: HttpMethod, outBound: TopicTrait): Future[Box[T]] = { + private[this] def sendRequest[T <: InBoundTrait[_]: TypeTag : Manifest](url: String, method: HttpMethod, outBound: {def outboundAdapterCallContext: OutboundAdapterCallContext}): Future[Box[T]] = { // TODO transfer accountId to accountReference in outBound val outBoundJson = net.liftweb.json.Serialization.write(outBound) val request = prepareHttpRequest(url, method, HttpProtocol("HTTP/1.1"), outBoundJson).withHeaders(outBound.outboundAdapterCallContext) diff --git a/obp-api/src/main/scala/code/bankconnectors/vSept2018/KafkaConnectorBuilder.scala b/obp-api/src/main/scala/code/bankconnectors/vSept2018/KafkaConnectorBuilder.scala index 21fb332d6..841b4c388 100644 --- a/obp-api/src/main/scala/code/bankconnectors/vSept2018/KafkaConnectorBuilder.scala +++ b/obp-api/src/main/scala/code/bankconnectors/vSept2018/KafkaConnectorBuilder.scala @@ -19,6 +19,15 @@ import scala.reflect.runtime.{universe => ru} import code.api.util.CodeGenerateUtils.createDocExample object KafkaConnectorBuilder extends App { + // rewrite method code.webuiprops.MappedWebUiPropsProvider#getWebUiPropsValue, avoid access DB cause dataSource not found exception + { + import javassist.ClassPool + val pool = ClassPool.getDefault + val ct = pool.getCtClass("code.webuiprops.MappedWebUiPropsProvider$") + val m = ct.getDeclaredMethod("getWebUiPropsValue") + m.insertBefore("""return ""; """) + ct.toClass + } val needToGenerateMethodsNames = List( // "getKycChecks", diff --git a/obp-api/src/main/scala/code/webuiprops/MappedWebUiPropsProvider.scala b/obp-api/src/main/scala/code/webuiprops/MappedWebUiPropsProvider.scala index 6ea32e52a..480e306f5 100644 --- a/obp-api/src/main/scala/code/webuiprops/MappedWebUiPropsProvider.scala +++ b/obp-api/src/main/scala/code/webuiprops/MappedWebUiPropsProvider.scala @@ -33,19 +33,11 @@ object MappedWebUiPropsProvider extends WebUiPropsProvider { var cacheKey = (randomUUID().toString, randomUUID().toString, randomUUID().toString) CacheKeyFromArguments.buildCacheKey { Caching.memoizeSyncWithProvider(Some(cacheKey.toString()))(webUiPropsTTL second) { - try { //We need call this method without database, so just catch exception and others will also throw exception. WebUiProps.find(By(WebUiProps.Name, nameOfProperty)) .map(_.value) .openOr { APIUtil.getPropsValue(nameOfProperty, defaultValue) } - } catch { - //java.lang.NullPointerException: Looking for Connection Identifier ConnectionIdentifier(lift) but failed to find either a JNDI data - // source with the name lift or a lift connection manager with the correct name - // Only handle this exception. no others. - case exception: NullPointerException if(exception.getMessage.contains("failed to find either a JNDI data source"))=> - APIUtil.getPropsValue(nameOfProperty, defaultValue) - } } } }("getWebUiProps")("MappedWebUiPropsProvider") diff --git a/obp-commons/src/main/scala/com/openbankproject/commons/dto/JsonsTransfer.scala b/obp-commons/src/main/scala/com/openbankproject/commons/dto/JsonsTransfer.scala index 17b6ec4fe..9da09c6b2 100644 --- a/obp-commons/src/main/scala/com/openbankproject/commons/dto/JsonsTransfer.scala +++ b/obp-commons/src/main/scala/com/openbankproject/commons/dto/JsonsTransfer.scala @@ -451,7 +451,7 @@ case class OutBoundGetTransactionRequests210(outboundAdapterCallContext: Outboun case class InBoundGetTransactionRequests210(inboundAdapterCallContext: InboundAdapterCallContext, status: Status, data: List[TransactionRequest]) extends InBoundTrait[List[TransactionRequest]] -case class OutBoundGetTransactionsCore(bankId: BankId, accountID: AccountId, limit: Int, offset: Int, fromDate: String, toDate: String) extends TopicTrait +case class OutBoundGetTransactionsCore(outboundAdapterCallContext: OutboundAdapterCallContext, bankId: BankId, accountID: AccountId, limit: Int, offset: Int, fromDate: String, toDate: String) extends TopicTrait case class InBoundGetTransactionsCore(inboundAdapterCallContext: InboundAdapterCallContext, status: Status, data: List[TransactionCore]) extends InBoundTrait[List[TransactionCore]] //-------- return type are not Future-------------------------------------------------------------------------------------------------- diff --git a/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModel.scala b/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModel.scala index 41d79bbd2..383a69474 100644 --- a/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModel.scala +++ b/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModel.scala @@ -447,9 +447,9 @@ case class OrderObjectJson( ) case class ObpApiLoopback( - connectorVersion: String, - gitCommit: String, - durationTime: String + connectorVersion: String, + gitCommit: String, + durationTime: String ) extends TopicTrait case class CardObjectJson( diff --git a/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModelTrait.scala b/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModelTrait.scala index ffc332c31..37f3458d5 100644 --- a/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModelTrait.scala +++ b/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModelTrait.scala @@ -343,9 +343,7 @@ trait RoutingT { // @see 'case request: TopicTrait' in code/bankconnectors/kafkaStreamsHelper.scala // This is for Kafka topics for both North and South sides. // In OBP-API, these topics will be created automatically. -trait TopicTrait { - def outboundAdapterCallContext: OutboundAdapterCallContext -} +trait TopicTrait //high level of four different kinds of transaction request types: FREE_FROM, SANDBOXTAN, COUNTERPATY and SEPA. //They share the same AmountOfMoney and description fields