diff --git a/src/main/scala/code/api/builder/APIMethods_APIBuilder.scala b/src/main/scala/code/api/builder/APIMethods_APIBuilder.scala index af4a04656..1ef09c07e 100644 --- a/src/main/scala/code/api/builder/APIMethods_APIBuilder.scala +++ b/src/main/scala/code/api/builder/APIMethods_APIBuilder.scala @@ -67,7 +67,7 @@ trait APIMethods_APIBuilder { self: RestHelper => } object APIBuilder_Connector { val allAPIBuilderModels = List(MappedTemplate_4824100653501473508) - def createTemplate(createTemplateJson: CreateTemplateJson) = Full(MappedTemplate_4824100653501473508.create.mTemplateId(UUID.randomUUID().toString).mAuthor(createTemplateJson.author).mPages(createTemplateJson.pages).mPoints(createTemplateJson.points).saveMe()) + def createTemplate(createTemplateJson: CreateTemplateJson) = Full(MappedTemplate_4824100653501473508.create.mTemplateId(generateUUID()).mAuthor(createTemplateJson.author).mPages(createTemplateJson.pages).mPoints(createTemplateJson.points).saveMe()) def getTemplates() = Full(MappedTemplate_4824100653501473508.findAll()) def getTemplateById(templateId: String) = MappedTemplate_4824100653501473508.find(By(MappedTemplate_4824100653501473508.mTemplateId, templateId)) def deleteTemplate(templateId: String) = MappedTemplate_4824100653501473508.find(By(MappedTemplate_4824100653501473508.mTemplateId, templateId)).map(_.delete_!) diff --git a/src/main/scala/code/api/util/APIUtil.scala b/src/main/scala/code/api/util/APIUtil.scala index cff5a9da6..090a3e0c5 100644 --- a/src/main/scala/code/api/util/APIUtil.scala +++ b/src/main/scala/code/api/util/APIUtil.scala @@ -1449,7 +1449,7 @@ Returns a string showed to the developer * @return - the HTTP session ID */ def updateCallContextSessionId(callContext: Option[CallContext]): Option[CallContext] = { - val sessionId = UUID.randomUUID().toString + val sessionId = generateUUID() val gatewayLoginRequestPayloadNew = callContext.map(_.gatewayLoginRequestPayload.map(_.copy(session_id = Some(sessionId)))).flatten callContext.map(_.copy(gatewayLoginRequestPayload = gatewayLoginRequestPayloadNew)) } @@ -2133,7 +2133,7 @@ Returns a string showed to the developer * Create the explicit CounterpartyId, (Used in `Create counterparty for an account` endpoint ). * This is just a UUID, use both in Counterparty.counterpartyId and CounterpartyMetadata.counterpartyId */ - def createExplicitCounterpartyId()= UUID.randomUUID().toString + def createExplicitCounterpartyId()= generateUUID() /** * Create the implicit CounterpartyId, we can only get limit data from Adapter. (Used in `getTransactions` endpoint, we create the counterparty implicitly.) @@ -2268,4 +2268,10 @@ Returns a string showed to the developer json.parse(jsonStringFromFile) } + /** + * This function is used to centralize generation of UUID values + * @return UUID as a String value + */ + def generateUUID(): String = UUID.randomUUID().toString + } \ No newline at end of file diff --git a/src/main/scala/code/api/util/RateLimitUtil.scala b/src/main/scala/code/api/util/RateLimitUtil.scala index 7a745a8fa..d26d5ad96 100644 --- a/src/main/scala/code/api/util/RateLimitUtil.scala +++ b/src/main/scala/code/api/util/RateLimitUtil.scala @@ -64,7 +64,7 @@ object RateLimitUtil extends MdcLoggable { def isRedisAvailable() = { try { - val uuid = UUID.randomUUID().toString() + val uuid = APIUtil.generateUUID() jedis.connect() jedis.set(uuid, "10") jedis.exists(uuid) == true diff --git a/src/main/scala/code/api/v2_2_0/APIMethods220.scala b/src/main/scala/code/api/v2_2_0/APIMethods220.scala index 8e859f2ae..3e31bff56 100644 --- a/src/main/scala/code/api/v2_2_0/APIMethods220.scala +++ b/src/main/scala/code/api/v2_2_0/APIMethods220.scala @@ -899,8 +899,8 @@ trait APIMethods220 { u <- cc.user ?~! UserNotLoggedIn _ <- booleanToBox(hasEntitlement("", u.userId, ApiRole.canCreateConsumer), UserHasMissingRoles + CanCreateConsumer ) postedJson <- tryo {json.extract[ConsumerPostJSON]} ?~! InvalidJsonFormat - consumer <- Consumers.consumers.vend.createConsumer(Some(UUID.randomUUID().toString), - Some(UUID.randomUUID().toString), + consumer <- Consumers.consumers.vend.createConsumer(Some(generateUUID()), + Some(generateUUID()), Some(postedJson.enabled), Some(postedJson.app_name), None, diff --git a/src/main/scala/code/bankconnectors/Connector.scala b/src/main/scala/code/bankconnectors/Connector.scala index e0c5b6fee..a75d278af 100644 --- a/src/main/scala/code/bankconnectors/Connector.scala +++ b/src/main/scala/code/bankconnectors/Connector.scala @@ -483,7 +483,7 @@ trait Connector extends MdcLoggable{ isPositiveAmtToSend <- booleanToBox(rawAmt > BigDecimal("0"), s"Can't send a payment with a value of 0 or less. (${rawAmt})") // Version 200 below has more support for charge charge = TransactionRequestCharge("Charge for completed transaction", AmountOfMoney(body.value.currency, "0.00")) - transactionRequest <- createTransactionRequestImpl(TransactionRequestId(java.util.UUID.randomUUID().toString), transactionRequestType, fromAccount, toAccount, body, status.toString, charge) + transactionRequest <- createTransactionRequestImpl(TransactionRequestId(generateUUID()), transactionRequestType, fromAccount, toAccount, body, status.toString, charge) } yield transactionRequest //make sure we get something back @@ -509,7 +509,7 @@ trait Connector extends MdcLoggable{ } } else { //if challenge necessary, create a new one - val challenge = TransactionRequestChallenge(id = java.util.UUID.randomUUID().toString, allowed_attempts = 3, challenge_type = TransactionChallengeTypes.SANDBOX_TAN.toString) + val challenge = TransactionRequestChallenge(id = generateUUID(), allowed_attempts = 3, challenge_type = TransactionChallengeTypes.SANDBOX_TAN.toString) saveTransactionRequestChallenge(result.id, challenge) result = result.copy(challenge = challenge) } @@ -542,7 +542,7 @@ trait Connector extends MdcLoggable{ chargeValue <- tryo {(BigDecimal(body.value.amount) * 0.0001).setScale(10, BigDecimal.RoundingMode.HALF_UP).toDouble} ?~! s"could not create charge for ${body.value.amount}" charge = TransactionRequestCharge("Total charges for completed transaction", AmountOfMoney(body.value.currency, chargeValue.toString())) - transactionRequest <- createTransactionRequestImpl(TransactionRequestId(java.util.UUID.randomUUID().toString), transactionRequestType, fromAccount, toAccount, body, status.toString, charge) + transactionRequest <- createTransactionRequestImpl(TransactionRequestId(generateUUID()), transactionRequestType, fromAccount, toAccount, body, status.toString, charge) } yield transactionRequest //make sure we get something back @@ -577,7 +577,7 @@ trait Connector extends MdcLoggable{ } } else { //if challenge necessary, create a new one - val challenge = TransactionRequestChallenge(id = java.util.UUID.randomUUID().toString, allowed_attempts = 3, challenge_type = TransactionChallengeTypes.SANDBOX_TAN.toString) + val challenge = TransactionRequestChallenge(id = generateUUID(), allowed_attempts = 3, challenge_type = TransactionChallengeTypes.SANDBOX_TAN.toString) saveTransactionRequestChallenge(result.id, challenge) result = result.copy(challenge = challenge) } @@ -654,7 +654,7 @@ trait Connector extends MdcLoggable{ chargeValue <- getChargeValue(chargeLevelAmount,transactionRequestCommonBodyAmount) ?~! GetChargeValueException charge = TransactionRequestCharge("Total charges for completed transaction", AmountOfMoney(transactionRequestCommonBody.value.currency, chargeValue)) // Always create a new Transaction Request - transactionRequest <- createTransactionRequestImpl210(TransactionRequestId(java.util.UUID.randomUUID().toString), transactionRequestType, fromAccount, toAccount, transactionRequestCommonBody, detailsPlain, status.toString, charge, chargePolicy) ?~! InvalidConnectorResponseForCreateTransactionRequestImpl210 + transactionRequest <- createTransactionRequestImpl210(TransactionRequestId(generateUUID()), transactionRequestType, fromAccount, toAccount, transactionRequestCommonBody, detailsPlain, status.toString, charge, chargePolicy) ?~! InvalidConnectorResponseForCreateTransactionRequestImpl210 // If no challenge necessary, create Transaction immediately and put in data store and object to return newTransactionRequest <- status match { @@ -687,7 +687,7 @@ trait Connector extends MdcLoggable{ challengeAnswer <- createChallenge(fromAccount.bankId, fromAccount.accountId, initiator.userId, transactionRequestType: TransactionRequestType, transactionRequest.id.value ) ?~! "OBP-40xxx : createTransactionRequestv300.createChallenge exception !" - challengeId = UUID.randomUUID().toString + challengeId = generateUUID() salt = BCrypt.gensalt() challengeAnswerHashed = BCrypt.hashpw(challengeAnswer, salt).substring(0, 44) diff --git a/src/main/scala/code/bankconnectors/KafkaMappedConnector.scala b/src/main/scala/code/bankconnectors/KafkaMappedConnector.scala index b779473eb..9a9aa21e9 100644 --- a/src/main/scala/code/bankconnectors/KafkaMappedConnector.scala +++ b/src/main/scala/code/bankconnectors/KafkaMappedConnector.scala @@ -735,7 +735,7 @@ object KafkaMappedConnector extends Connector with KafkaHelper with MdcLoggable //TODO: pass in currency as a parameter? val account = createAccountIfNotExisting( bank.bankId, - AccountId(UUID.randomUUID().toString), + AccountId(APIUtil.generateUUID()), accountNumber, accountType, accountLabel, diff --git a/src/main/scala/code/bankconnectors/KafkaMappedConnector_JVMcompatible.scala b/src/main/scala/code/bankconnectors/KafkaMappedConnector_JVMcompatible.scala index c9ef20942..b21982d63 100644 --- a/src/main/scala/code/bankconnectors/KafkaMappedConnector_JVMcompatible.scala +++ b/src/main/scala/code/bankconnectors/KafkaMappedConnector_JVMcompatible.scala @@ -876,7 +876,7 @@ object KafkaMappedConnector_JVMcompatible extends Connector with KafkaHelper wit fromAccountBankId = fromAccount.bankId.value , //"00100", //need fill 3 fromAccountCurrency = fromAccount.currency,//"XAF", //need fill 4 //transaction detail - transactionId = UUID.randomUUID().toString.take(35), //need fill 5 + transactionId = APIUtil.generateUUID().take(35), //need fill 5 transactionRequestType = transactionRequestType.value, transactionCurrency = "XAF", //need fill 6 transactionAmount = amount.toString(), //"3001", //need fill 7 @@ -1014,7 +1014,7 @@ object KafkaMappedConnector_JVMcompatible extends Connector with KafkaHelper wit //TODO: pass in currency as a parameter? val account = createAccountIfNotExisting( bank.bankId, - AccountId(UUID.randomUUID().toString), + AccountId(APIUtil.generateUUID()), accountNumber, accountType, accountLabel, diff --git a/src/main/scala/code/bankconnectors/LocalMappedConnector.scala b/src/main/scala/code/bankconnectors/LocalMappedConnector.scala index 01ffc6df6..65692a471 100644 --- a/src/main/scala/code/bankconnectors/LocalMappedConnector.scala +++ b/src/main/scala/code/bankconnectors/LocalMappedConnector.scala @@ -782,7 +782,7 @@ object LocalMappedConnector extends Connector with MdcLoggable { //TODO: pass in currency as a parameter? val account = createAccountIfNotExisting( bank.bankId, - AccountId(UUID.randomUUID().toString), + AccountId(APIUtil.generateUUID()), accountNumber, accountType, accountLabel, currency, 0L, accountHolderName, diff --git a/src/main/scala/code/bankconnectors/LocalRecordConnector.scala b/src/main/scala/code/bankconnectors/LocalRecordConnector.scala index 693169710..9f5a75c12 100644 --- a/src/main/scala/code/bankconnectors/LocalRecordConnector.scala +++ b/src/main/scala/code/bankconnectors/LocalRecordConnector.scala @@ -462,7 +462,7 @@ private object LocalRecordConnector extends Connector with MdcLoggable { } } - val createdAccount = createAccount(hostedBank, AccountId(UUID.randomUUID().toString), + val createdAccount = createAccount(hostedBank, AccountId(APIUtil.generateUUID()), accountNumber, accountType, accountLabel, currency, BigDecimal("0.00"), accountHolderName) Full((hostedBank, createdAccount)) diff --git a/src/main/scala/code/bankconnectors/ObpJvmMappedConnector.scala b/src/main/scala/code/bankconnectors/ObpJvmMappedConnector.scala index f8001830b..4f2f0387b 100644 --- a/src/main/scala/code/bankconnectors/ObpJvmMappedConnector.scala +++ b/src/main/scala/code/bankconnectors/ObpJvmMappedConnector.scala @@ -620,7 +620,7 @@ object ObpJvmMappedConnector extends Connector with MdcLoggable { val userId = AuthUser.getCurrentResourceUserUserId val postedDate = ZonedDateTime.now - val transactionUUID = UUID.randomUUID().toString + val transactionUUID = APIUtil.generateUUID() // Remove last "-" from UUIID to make it 35-character // long string (8-4-4-4-12 -> 8-4-4-16) val transactionId = transactionUUID.patch(transactionUUID.lastIndexOf('-'), "", 1) @@ -764,7 +764,7 @@ object ObpJvmMappedConnector extends Connector with MdcLoggable { //TODO: pass in currency as a parameter? val account = createAccountIfNotExisting( bank.bankId, - AccountId(UUID.randomUUID().toString), + AccountId(APIUtil.generateUUID()), accountNumber, accountType, accountLabel, diff --git a/src/main/scala/code/bankconnectors/vMar2017/KafkaMappedConnector_vMar2017.scala b/src/main/scala/code/bankconnectors/vMar2017/KafkaMappedConnector_vMar2017.scala index 5dcc6b9db..a86918e54 100644 --- a/src/main/scala/code/bankconnectors/vMar2017/KafkaMappedConnector_vMar2017.scala +++ b/src/main/scala/code/bankconnectors/vMar2017/KafkaMappedConnector_vMar2017.scala @@ -1019,7 +1019,7 @@ trait KafkaMappedConnector_vMar2017 extends Connector with KafkaHelper with MdcL chargePolicy: String): Box[TransactionId] = { val postedDate = APIUtil.DateWithMsFormat.format(now) - val transactionId = UUID.randomUUID().toString + val transactionId = APIUtil.generateUUID() val req = OutboundSaveTransactionBase( messageFormat = messageFormat, @@ -1358,7 +1358,7 @@ trait KafkaMappedConnector_vMar2017 extends Connector with KafkaHelper with MdcL //TODO: pass in currency as a parameter? val account = createAccountIfNotExisting( bank.bankId, - AccountId(UUID.randomUUID().toString), + AccountId(APIUtil.generateUUID()), accountNumber, accountType, accountLabel, diff --git a/src/main/scala/code/kafka/kafkaStreamsHelper.scala b/src/main/scala/code/kafka/kafkaStreamsHelper.scala index 779a8a440..7b14d03a8 100644 --- a/src/main/scala/code/kafka/kafkaStreamsHelper.scala +++ b/src/main/scala/code/kafka/kafkaStreamsHelper.scala @@ -36,7 +36,7 @@ class KafkaStreamsHelperActor extends Actor with ObpActorInit with ObpActorHelpe *Random select the partitions number from 0 to kafka.partitions value *The specified partition number will be inside the Key. */ - private def keyAndPartition = scala.util.Random.nextInt(partitions) + "_" + UUID.randomUUID().toString + private def keyAndPartition = scala.util.Random.nextInt(partitions) + "_" + APIUtil.generateUUID() private val producerSettings = if (APIUtil.getPropsValue("kafka.use.ssl").getOrElse("false") == "true") { ProducerSettings(system, new StringSerializer, new StringSerializer) diff --git a/src/main/scala/code/model/OAuth.scala b/src/main/scala/code/model/OAuth.scala index eca65c9cb..5a8072a05 100644 --- a/src/main/scala/code/model/OAuth.scala +++ b/src/main/scala/code/model/OAuth.scala @@ -350,7 +350,7 @@ class Consumer extends LongKeyedMapper[Consumer] with CreatedUpdated{ //For now consumerId is only used in Gateway Login, all other cases, we should use the id instead `consumerId`. object id extends MappedLongIndex(this) object consumerId extends MappedString(this, 250) { // Introduced to cover gateway login functionality - override def defaultValue = UUID.randomUUID().toString + override def defaultValue = APIUtil.generateUUID() } private def minLength3(field: MappedString[Consumer])( s : String) = { diff --git a/src/main/scala/code/model/dataAccess/AuthUser.scala b/src/main/scala/code/model/dataAccess/AuthUser.scala index 92e815e1b..f927d9127 100644 --- a/src/main/scala/code/model/dataAccess/AuthUser.scala +++ b/src/main/scala/code/model/dataAccess/AuthUser.scala @@ -600,7 +600,7 @@ import net.liftweb.util.Helpers._ .email(extEmail) .username(extUsername) // No need to store password, so store dummy string instead - .password(UUID.randomUUID().toString) + .password(generateUUID()) .provider(extProvider) .validated(true) // Save the user in order to be able to log in diff --git a/src/main/scala/code/transaction/MappedTransaction.scala b/src/main/scala/code/transaction/MappedTransaction.scala index 86b9a18f2..4e0f7e23a 100644 --- a/src/main/scala/code/transaction/MappedTransaction.scala +++ b/src/main/scala/code/transaction/MappedTransaction.scala @@ -21,7 +21,7 @@ class MappedTransaction extends LongKeyedMapper[MappedTransaction] with IdPK wit object bank extends MappedString(this, 255) object account extends AccountIdString(this) object transactionId extends MappedString(this, 255) { - override def defaultValue = UUID.randomUUID().toString + override def defaultValue = APIUtil.generateUUID() } //TODO: review the need for this @@ -222,7 +222,7 @@ object MappedTransaction extends MappedTransaction with LongKeyedMetaMapper[Mapp override def afterSave = List( t => tryo { - val eventId = UUID.randomUUID().toString() + val eventId = APIUtil.generateUUID() val actor = ObpLookupSystem.getWebHookActor() actor ! WebHookActor.Request( ApiTrigger.onBalanceChange, diff --git a/src/main/scala/code/util/MappedUUID.scala b/src/main/scala/code/util/MappedUUID.scala index 4433b4086..1fd5edb77 100644 --- a/src/main/scala/code/util/MappedUUID.scala +++ b/src/main/scala/code/util/MappedUUID.scala @@ -1,9 +1,8 @@ package code.util -import java.util.UUID - +import code.api.util.APIUtil.generateUUID import net.liftweb.mapper.{MappedString, Mapper} class MappedUUID[T <: Mapper[T]] (override val fieldOwner : T) extends MappedString(fieldOwner, 36) { - override def defaultValue = UUID.randomUUID().toString + override def defaultValue = generateUUID() } diff --git a/src/test/scala/code/customer/MappedCustomerInfoTest.scala b/src/test/scala/code/customer/MappedCustomerInfoTest.scala index 7cdf647a2..ca5a6bbec 100644 --- a/src/test/scala/code/customer/MappedCustomerInfoTest.scala +++ b/src/test/scala/code/customer/MappedCustomerInfoTest.scala @@ -4,7 +4,7 @@ import java.text.SimpleDateFormat import java.util.{Date, UUID} import code.api.util.APIUtil.OAuth._ -import code.api.util.ApiRole +import code.api.util.{APIUtil, ApiRole} import code.api.v1_4_0.JSONFactory1_4_0.CustomerFaceImageJson import code.api.v1_4_0.V140ServerSetup import code.api.v2_0_0.CreateCustomerJson @@ -70,7 +70,7 @@ class MappedCustomerProviderTest extends V140ServerSetup with DefaultUsers { } scenario("Customer exists and we try to get it") { - val customerId = createCustomer(testBankId1, resourceUser1, UUID.randomUUID().toString, user1) + val customerId = createCustomer(testBankId1, resourceUser1, APIUtil.generateUUID(), user1) Given("MappedCustomer exists for a user") When("We try to get it") val foundOpt = Customer.customerProvider.vend.getCustomerByUserId(testBankId1, resourceUser1.userId) diff --git a/src/test/scala/code/sandbox/PostCustomer.scala b/src/test/scala/code/sandbox/PostCustomer.scala index 4e477845e..7386656e1 100644 --- a/src/test/scala/code/sandbox/PostCustomer.scala +++ b/src/test/scala/code/sandbox/PostCustomer.scala @@ -196,7 +196,7 @@ object PostCustomer extends SendServerRequests { val url = s"/v2.1.0/banks/${b.id}/customers" - val customerId: String = UUID.randomUUID().toString + val customerId: String = APIUtil.generateUUID() val customerFaceImageJson = CustomerFaceImageJson(url = c.face_image.url, date = c.face_image.date) diff --git a/src/test/scala/code/setup/LocalMappedConnectorTestSetup.scala b/src/test/scala/code/setup/LocalMappedConnectorTestSetup.scala index a28ab9890..46b5d137e 100644 --- a/src/test/scala/code/setup/LocalMappedConnectorTestSetup.scala +++ b/src/test/scala/code/setup/LocalMappedConnectorTestSetup.scala @@ -42,7 +42,7 @@ trait LocalMappedConnectorTestSetup extends TestConnectorSetupWithStandardPermis thisBankId = bankId, thisAccountId = accountId, thisViewId = "", - name = UUID.randomUUID().toString, + name = APIUtil.generateUUID(), otherAccountRoutingScheme = otherAccountRoutingScheme, otherAccountRoutingAddress = accountId, otherBankRoutingScheme = "OBP", @@ -138,7 +138,7 @@ trait LocalMappedConnectorTestSetup extends TestConnectorSetupWithStandardPermis override protected def createTransactionRequest(account: BankAccount) = { MappedTransactionRequest.create - .mTransactionRequestId(UUID.randomUUID().toString) + .mTransactionRequestId(APIUtil.generateUUID()) .mType("SANDBOX_TAN") .mFrom_BankId(account.bankId.value) .mFrom_AccountId(account.accountId.value) @@ -153,7 +153,7 @@ trait LocalMappedConnectorTestSetup extends TestConnectorSetupWithStandardPermis .saveMe MappedTransactionRequest.create - .mTransactionRequestId(UUID.randomUUID().toString) + .mTransactionRequestId(APIUtil.generateUUID()) .mType("SANDBOX_TAN") .mFrom_BankId(account.bankId.value) .mFrom_AccountId(account.accountId.value)