From 2dbdb855ccec86052eef419de7e2c35ae75124c4 Mon Sep 17 00:00:00 2001 From: shuang Date: Tue, 21 Jan 2020 20:37:41 +0800 Subject: [PATCH] feature/add_required_field_annotation : fix test fail caused by move ScannedApiVersion from obp-api to obp-commons --- .../src/test/resources/frozen_type_meta_data | Bin 52392 -> 52833 bytes .../scala/code/util/FrozenClassUtil.scala | 9 +++- .../commons/util/ApiVersion.scala | 49 ++++++++++++++---- 3 files changed, 46 insertions(+), 12 deletions(-) diff --git a/obp-api/src/test/resources/frozen_type_meta_data b/obp-api/src/test/resources/frozen_type_meta_data index ad3f22a56ed7f25c904057b0b778052dc77ff281..2cd179cc0d2802fb1eaeecfdd977b191cb3b4e0f 100644 GIT binary patch delta 444 zcmZ26llkEs<_QxSjV1>w$S9VUWaj7vCnx6RrKUI*WQL^{6=&w>DHs$KyvqABk(q&c z;-2uyDvV03g$#8JoRe*YR5oWa?&n|wal + logger.error("read PersistedFrozenApiInfo fail." + e) + throw e } finally { IOUtils.closeQuietly(input) } 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 b406cca71..600972df8 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 @@ -1,5 +1,7 @@ package com.openbankproject.commons.util +import java.io.{ObjectInputStream, ObjectOutputStream} + object ApiStandards extends Enumeration { type ApiStandards = Value val obp = Value @@ -38,13 +40,40 @@ sealed trait ApiVersion { * @param apiShortVersion eg: `v1.2.1` or `v2.0` * note: why not use case class? because case class can't have call by name parameter. this is work around for */ -class ScannedApiVersion(urlPrefixFn: => String, val apiStandard: String, val apiShortVersion: String) extends ApiVersion{ +class ScannedApiVersion(@transient urlPrefixFn: => String, var apiStandard: String, var apiShortVersion: String) extends ApiVersion with java.io.Serializable { def urlPrefix: String = urlPrefixFn val fullyQualifiedVersion = s"${apiStandard.toUpperCase}$apiShortVersion" override def toString() = apiShortVersion + //-----start Serializable related methods for support Frozen feature, we can serialize this object and deSerialize to do compare. + private def writeObject(out: ObjectOutputStream): Unit = { + out.defaultWriteObject() + out.writeObject(apiStandard) + out.writeObject(apiShortVersion) + } + private def readObject(in: ObjectInputStream): Unit = { + in.defaultReadObject() + apiStandard = in.readObject().asInstanceOf[String] + apiShortVersion = in.readObject().asInstanceOf[String] + } + + def canEqual(other: Any): Boolean = other.isInstanceOf[ScannedApiVersion] + + override def equals(other: Any): Boolean = other match { + case that: ScannedApiVersion => + (that canEqual this) && + apiStandard == that.apiStandard && + apiShortVersion == that.apiShortVersion + case _ => false + } + + override def hashCode(): Int = { + val state = Seq(apiStandard, apiShortVersion) + state.map(_.hashCode()).foldLeft(0)((a, b) => 31 * a + b) + } + //-----end Serializable related methods for support Frozen feature, we can serialize this object and deSerialize to do compare. } object ScannedApiVersion { @@ -83,13 +112,13 @@ object ApiVersion { // and affect the follow OBP Standard versions var apiPathZero: String = ApiStandards.obp.toString //OBP Standard - val v1_2_1 = ScannedApiVersion({apiPathZero},ApiStandards.obp.toString,ApiShortVersions.`v1.2.1`.toString) - val v1_3_0 = ScannedApiVersion({apiPathZero},ApiStandards.obp.toString,ApiShortVersions.`v1.3.0`.toString) - val v1_4_0 = ScannedApiVersion({apiPathZero},ApiStandards.obp.toString,ApiShortVersions.`v1.4.0`.toString) - val v2_0_0 = ScannedApiVersion({apiPathZero},ApiStandards.obp.toString,ApiShortVersions.`v2.0.0`.toString) - val v2_1_0 = ScannedApiVersion({apiPathZero},ApiStandards.obp.toString,ApiShortVersions.`v2.1.0`.toString) - val v2_2_0 = ScannedApiVersion({apiPathZero},ApiStandards.obp.toString,ApiShortVersions.`v2.2.0`.toString) - val v3_0_0 = ScannedApiVersion({apiPathZero},ApiStandards.obp.toString,ApiShortVersions.`v3.0.0`.toString) - val v3_1_0 = ScannedApiVersion({apiPathZero},ApiStandards.obp.toString,ApiShortVersions.`v3.1.0`.toString) - val v4_0_0 = ScannedApiVersion({apiPathZero},ApiStandards.obp.toString,ApiShortVersions.`v4.0.0`.toString) + val v1_2_1 = ScannedApiVersion(apiPathZero,ApiStandards.obp.toString,ApiShortVersions.`v1.2.1`.toString) + val v1_3_0 = ScannedApiVersion(apiPathZero,ApiStandards.obp.toString,ApiShortVersions.`v1.3.0`.toString) + val v1_4_0 = ScannedApiVersion(apiPathZero,ApiStandards.obp.toString,ApiShortVersions.`v1.4.0`.toString) + val v2_0_0 = ScannedApiVersion(apiPathZero,ApiStandards.obp.toString,ApiShortVersions.`v2.0.0`.toString) + val v2_1_0 = ScannedApiVersion(apiPathZero,ApiStandards.obp.toString,ApiShortVersions.`v2.1.0`.toString) + val v2_2_0 = ScannedApiVersion(apiPathZero,ApiStandards.obp.toString,ApiShortVersions.`v2.2.0`.toString) + val v3_0_0 = ScannedApiVersion(apiPathZero,ApiStandards.obp.toString,ApiShortVersions.`v3.0.0`.toString) + val v3_1_0 = ScannedApiVersion(apiPathZero,ApiStandards.obp.toString,ApiShortVersions.`v3.1.0`.toString) + val v4_0_0 = ScannedApiVersion(apiPathZero,ApiStandards.obp.toString,ApiShortVersions.`v4.0.0`.toString) }