diff --git a/open-banking-accelerator/components/account-metadata/com.wso2.openbanking.accelerator.account.metadata.service/pom.xml b/open-banking-accelerator/components/account-metadata/com.wso2.openbanking.accelerator.account.metadata.service/pom.xml index 03bceb87..2e74f29c 100644 --- a/open-banking-accelerator/components/account-metadata/com.wso2.openbanking.accelerator.account.metadata.service/pom.xml +++ b/open-banking-accelerator/components/account-metadata/com.wso2.openbanking.accelerator.account.metadata.service/pom.xml @@ -19,7 +19,7 @@ open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../../pom.xml 4.0.0 diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/pom.xml b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/pom.xml index ae4ed2c1..eb689092 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/pom.xml +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/pom.xml @@ -17,15 +17,13 @@ ~ under the License. --> - + 4.0.0 open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../pom.xml diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/caching/OpenBankingBaseCache.java b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/caching/OpenBankingBaseCache.java index 37c485a2..1c41b245 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/caching/OpenBankingBaseCache.java +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/caching/OpenBankingBaseCache.java @@ -33,8 +33,8 @@ /** * Abstract cache manager for Open Banking. * - * @param - * @param + * @param Extended Cache Key + * @param Cache Value */ public abstract class OpenBankingBaseCache { @@ -54,7 +54,7 @@ public interface OnDemandRetriever { /** * Initialize With unique cache name. * - * @param cacheName + * @param cacheName unique cache name. */ public OpenBankingBaseCache(String cacheName) { @@ -68,10 +68,10 @@ public OpenBankingBaseCache(String cacheName) { /** * Get from cache or invoke ondemand retriever and store. * - * @param key - * @param onDemandRetriever - * @return - * @throws OpenBankingException + * @param key cache key. + * @param onDemandRetriever on demand retriever. + * @return cached object. + * @throws OpenBankingException if an error occurs while retrieving the object */ public V getFromCacheOrRetrieve(K key, OnDemandRetriever onDemandRetriever) throws OpenBankingException { @@ -132,8 +132,8 @@ public V getFromCache(K key) { /** * Add Object to cache. * - * @param key - * @param value + * @param key cache key. + * @param value cache value. */ public void addToCache(K key, V value) { @@ -149,7 +149,7 @@ public void addToCache(K key, V value) { /** * Remove Object from Cache. * - * @param key + * @param key cache key. */ public void removeFromCache(K key) { diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/config/OpenBankingConfigParser.java b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/config/OpenBankingConfigParser.java index c3df4d3b..d9c77296 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/config/OpenBankingConfigParser.java +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/config/OpenBankingConfigParser.java @@ -112,7 +112,7 @@ public static OpenBankingConfigParser getInstance() { * * @param filePath Custom file path * @return OpenBankingConfigParser object - * @Deprecated use OpenBankingConfigParser.getInstance() + * @Deprecated use OpenBankingConfigParser.getInstance() */ @Deprecated public static OpenBankingConfigParser getInstance(String filePath) { @@ -785,7 +785,7 @@ public int getConnectionVerificationTimeout() { /** * Returns the retention datasource name configured in open-banking.xml. - * @return + * @return retention datasource name or empty string if nothing is configured */ public String getRetentionDataSourceName() { @@ -1142,7 +1142,7 @@ public String getOBIdnRetrieverSandboxCertificateKid() { /** * JWKS Retriever Size Limit for JWS Signature Handling. * - * @return + * @return JWKS Retriever Size Limit */ public String getJwksRetrieverSizeLimit() { @@ -1153,7 +1153,7 @@ public String getJwksRetrieverSizeLimit() { /** * JWKS Retriever Connection Timeout for JWS Signature Handling. * - * @return + * @return JWKS Retriever Connection Timeout */ public String getJwksRetrieverConnectionTimeout() { @@ -1164,7 +1164,7 @@ public String getJwksRetrieverConnectionTimeout() { /** * JWKS Retriever Read Timeout for JWS Signature Handling. * - * @return + * @return JWKS Retriever Read Timeout */ public String getJwksRetrieverReadTimeout() { @@ -1199,7 +1199,7 @@ public boolean isJwsResponseSigningEnabled() { /** * Jws Request Signing allowed algorithms. * - * @return + * @return Jws Request Signing allowed algorithms */ public List getJwsRequestSigningAlgorithms() { @@ -1218,7 +1218,7 @@ public List getJwsRequestSigningAlgorithms() { /** * Jws Response Signing allowed algorithm. * - * @return + * @return Jws Response Signing allowed algorithm */ public String getJwsResponseSigningAlgorithm() { @@ -1457,4 +1457,23 @@ public String getFederatedIDPName() { ((String) getConfigElementFromKey(OpenBankingConstants.PSU_FEDERATED_IDP_NAME)).trim(); } + /** + * Method to get the value Idempotency enable configuration. + * @return Whether Idempotency is enabled or not + */ + public boolean isIdempotencyValidationEnabled() { + return getConfigElementFromKey(OpenBankingConstants.IDEMPOTENCY_IS_ENABLED) != null && + Boolean.parseBoolean(((String) + getConfigElementFromKey(OpenBankingConstants.IDEMPOTENCY_IS_ENABLED)).trim()); + } + + /** + * Method to get the value Idempotency allowed time configuration. + * @return Idempotency allowed time + */ + public String getIdempotencyAllowedTime() { + return getConfigElementFromKey(OpenBankingConstants.IDEMPOTENCY_ALLOWED_TIME) == null ? "1440" : + (String) getConfigElementFromKey(OpenBankingConstants.IDEMPOTENCY_ALLOWED_TIME); + } + } diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/constant/OpenBankingConstants.java b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/constant/OpenBankingConstants.java index 6831a70c..6f4a6e3f 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/constant/OpenBankingConstants.java +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/constant/OpenBankingConstants.java @@ -255,4 +255,6 @@ public class OpenBankingConstants { public static final String QUERY = "query"; public static final String IS_PSU_FEDERATED = "PSUFederatedAuthentication.Enabled"; public static final String PSU_FEDERATED_IDP_NAME = "PSUFederatedAuthentication.IDPName"; + public static final String IDEMPOTENCY_IS_ENABLED = "Consent.Idempotency.Enabled"; + public static final String IDEMPOTENCY_ALLOWED_TIME = "Consent.Idempotency.AllowedTimeDuration"; } diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/identity/ApplicationIdentityService.java b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/identity/ApplicationIdentityService.java index a416c685..8dd7171a 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/identity/ApplicationIdentityService.java +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/identity/ApplicationIdentityService.java @@ -36,10 +36,11 @@ public class ApplicationIdentityService { * Get JWKSet for application. * First checks to get from cache, else retrieve the JWKSet from the URL by calling * a method in JWKRetriever - * @param applicationName - * @param jwksUrl - * @param useCache + * @param applicationName Application Name + * @param jwksUrl URL of the JWKSet + * @param useCache Use cache or not * @return JWKSet + * @throws OpenBankingException if an error occurs while retrieving the JWKSet */ public JWKSet getPublicJWKSet(String applicationName, URL jwksUrl, boolean useCache) throws OpenBankingException { diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/identity/cache/base/OpenBankingIdentityBaseCache.java b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/identity/cache/base/OpenBankingIdentityBaseCache.java index b434eb95..2f8776da 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/identity/cache/base/OpenBankingIdentityBaseCache.java +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/identity/cache/base/OpenBankingIdentityBaseCache.java @@ -25,8 +25,8 @@ /** * Cache definition to store objects in open banking iam component implementations. - * @param - * @param + * @param Extended Cache key + * @param Cache value */ public class OpenBankingIdentityBaseCache extends OpenBankingBaseCache { @@ -37,6 +37,7 @@ public class OpenBankingIdentityBaseCache /** * Initialize with unique cache name. + * @param cacheName Unique cache name */ public OpenBankingIdentityBaseCache(String cacheName) { diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/identity/retriever/JWKRetriever.java b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/identity/retriever/JWKRetriever.java index dba4f6a4..f0eff1db 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/identity/retriever/JWKRetriever.java +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/identity/retriever/JWKRetriever.java @@ -77,9 +77,9 @@ public JWKRetriever getInstance() { /** * Get JWK Set from remote resource retriever. * - * @param jwksURL - * @return - * @throws IOException + * @param jwksURL jwksURL in URL format + * @return JWKSet + * @throws OpenBankingException if an error occurs while retrieving resource */ public JWKSet updateJWKSetFromURL(URL jwksURL) throws OpenBankingException { @@ -105,7 +105,7 @@ public JWKSet updateJWKSetFromURL(URL jwksURL) throws OpenBankingException { * @param jwksURL jwksURL in URL format * @param applicationName application name as a string * @return jwkSet - * @throws OpenBankingException + * @throws OpenBankingException if an error occurs while getting JWK set */ public JWKSet getJWKSet(URL jwksURL , String applicationName) throws OpenBankingException { diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/identity/retriever/ServerIdentityRetriever.java b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/identity/retriever/ServerIdentityRetriever.java index e33c89a0..59d3f3b6 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/identity/retriever/ServerIdentityRetriever.java +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/identity/retriever/ServerIdentityRetriever.java @@ -118,7 +118,7 @@ public static Certificate getCertificate(String alias) throws KeyStoreException * Returns Signing certificate alias at Production environment. * @param certificateType Signing * @return String Certificate alias - * @throws OpenBankingException + * @throws OpenBankingException when there is an exception while retrieving the alias */ public static Optional getCertAlias(IdentityConstants.CertificateType certificateType) throws OpenBankingException { diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/identity/retriever/sp/CommonServiceProviderRetriever.java b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/identity/retriever/sp/CommonServiceProviderRetriever.java index 1eda4423..0281130d 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/identity/retriever/sp/CommonServiceProviderRetriever.java +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/identity/retriever/sp/CommonServiceProviderRetriever.java @@ -47,7 +47,7 @@ public class CommonServiceProviderRetriever { * @param clientId ClientId of the application * @param property Property of the application * @return the property value from SP metadata - * @throws OpenBankingException + * @throws OpenBankingException if an error occurs while retrieving the property */ @Generated(message = "Excluding from code coverage since it requires a service call") public String getAppPropertyFromSPMetaData(String clientId, String property) throws OpenBankingException { diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/AnalyticsLogsUtils.java b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/AnalyticsLogsUtils.java index 72c9fc03..8a8c64de 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/AnalyticsLogsUtils.java +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/AnalyticsLogsUtils.java @@ -42,6 +42,7 @@ public class AnalyticsLogsUtils { * @param dataStream Name of the data stream to which the data belongs * @param dataVersion Version of the data stream to which the data belongs * @param analyticsData Data which belongs to the given data stream that needs to be logged via the given logger + * @throws OpenBankingException if an error occurs while processing the analytics data */ public static void addAnalyticsLogs(String logFile, String dataStream, String dataVersion, Map analyticsData) throws OpenBankingException { diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/CertificateUtils.java b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/CertificateUtils.java index ca883b2f..65906695 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/CertificateUtils.java +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/CertificateUtils.java @@ -43,8 +43,9 @@ public class CertificateUtils { /** * Parse the certificate content. * - * @param content the content to be pased - * @throws OpenBankingException + * @param content the content to be passed + * @return the parsed certificate + * @throws OpenBankingException if an error occurs while parsing the certificate */ public static X509Certificate parseCertificate(String content) throws OpenBankingException { diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/JWTUtils.java b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/JWTUtils.java index 1489f035..a2aeca5c 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/JWTUtils.java +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/JWTUtils.java @@ -53,6 +53,7 @@ public class JWTUtils { * @param jwtToken jwt sent by the tpp * @param jwtPart expected jwt part (header, body) * @return json object containing requested jwt part + * @throws ParseException if an error occurs while parsing the jwt */ public static JSONObject decodeRequestJWT(String jwtToken, String jwtPart) throws ParseException { @@ -77,6 +78,10 @@ public static JSONObject decodeRequestJWT(String jwtToken, String jwtPart) throw * @param jwksUri endpoint displaying the key set for the signing certificates * @param algorithm the signing algorithm for jwt * @return true if signature is valid + * @throws ParseException if an error occurs while parsing the jwt + * @throws BadJOSEException if the jwt is invalid + * @throws JOSEException if an error occurs while processing the jwt + * @throws MalformedURLException if an error occurs while creating the URL object */ @Generated(message = "Excluding from code coverage since can not call this method due to external https call") public static boolean validateJWTSignature(String jwtString, String jwksUri, String algorithm) diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/OpenBankingUtils.java b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/OpenBankingUtils.java index 3c57ce21..94504bec 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/OpenBankingUtils.java +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/OpenBankingUtils.java @@ -61,7 +61,7 @@ public static Object getClassInstanceFromFQN(String classpath) { * * @param softwareStatement software statement (jwt) extracted from request payload * @return software_environment - * @throws ParseException + * @throws ParseException if an error occurs while parsing the software statement */ public static String getSoftwareEnvironmentFromSSA(String softwareStatement) throws ParseException { @@ -105,8 +105,9 @@ public static boolean isPublishableDisputeData(int statusCode) { /** * Method to reduce string length. * - * @param input and maxLength for dispute data - * @return String + * @param input Input for dispute data + * @param maxLength Max length for dispute data + * @return String with reduced length */ public static String reduceStringLength(String input, int maxLength) { if (StringUtils.isEmpty(input) || input.length() <= maxLength) { diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/SPQueryExecutorUtil.java b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/SPQueryExecutorUtil.java index ca479c46..72c83d1c 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/SPQueryExecutorUtil.java +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/SPQueryExecutorUtil.java @@ -48,11 +48,15 @@ public class SPQueryExecutorUtil { /** * Executes the given query in SP. * - * @param appName Name of the siddhi app. - * @param query Name of the query + * @param appName Name of the siddhi app. + * @param query Name of the query + * @param spUserName Username for SP + * @param spPassword Password for SP + * @param spApiHost Hostname of the SP * @return JSON object with result - * @throws IOException IO Exception. - * @throws ParseException Parse Exception. + * @throws IOException IO Exception. + * @throws ParseException Parse Exception. + * @throws OpenBankingException OpenBanking Exception. */ public static JSONObject executeQueryOnStreamProcessor(String appName, String query, String spUserName, String spPassword, String spApiHost) diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/ServiceProviderUtils.java b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/ServiceProviderUtils.java index 4a94f93f..fae34feb 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/ServiceProviderUtils.java +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/util/ServiceProviderUtils.java @@ -32,7 +32,7 @@ public class ServiceProviderUtils { * Get Tenant Domain String for the client id. * @param clientId the client id of the application * @return tenant domain of the client - * @throws OpenBankingException + * @throws OpenBankingException if an error occurs while retrieving the tenant domain */ @Generated(message = "Ignoring because OAuth2Util cannot be mocked with no constructors") public static String getSpTenantDomain(String clientId) throws OpenBankingException { diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/validator/OpenBankingValidator.java b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/validator/OpenBankingValidator.java index fc38a601..44c60e32 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/validator/OpenBankingValidator.java +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.common/src/main/java/com/wso2/openbanking/accelerator/common/validator/OpenBankingValidator.java @@ -57,6 +57,9 @@ public static OpenBankingValidator getInstance() { /** * Check for violations on request object. Stop at the first violation and return error. * Validations are executed based on annotation in model of the class. + * + * @param object Object to be validated + * @return Error message if there is a violation, null otherwise */ public String getFirstViolation(Object object) { diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.data.publisher/com.wso2.openbanking.accelerator.authentication.data.publisher/pom.xml b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.data.publisher/com.wso2.openbanking.accelerator.authentication.data.publisher/pom.xml index 12c8b6c0..c28c4655 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.data.publisher/com.wso2.openbanking.accelerator.authentication.data.publisher/pom.xml +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.data.publisher/com.wso2.openbanking.accelerator.authentication.data.publisher/pom.xml @@ -17,15 +17,13 @@ ~ under the License. --> - + 4.0.0 com.wso2.openbanking.accelerator.data.publisher com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../pom.xml diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.data.publisher/com.wso2.openbanking.accelerator.data.publisher.common/pom.xml b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.data.publisher/com.wso2.openbanking.accelerator.data.publisher.common/pom.xml index 6bd7bc80..c5e53ad3 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.data.publisher/com.wso2.openbanking.accelerator.data.publisher.common/pom.xml +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.data.publisher/com.wso2.openbanking.accelerator.data.publisher.common/pom.xml @@ -16,13 +16,11 @@ ~ specific language governing permissions and limitations ~ under the License. --> - + open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../../pom.xml 4.0.0 diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.data.publisher/pom.xml b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.data.publisher/pom.xml index d367f077..9fdb5738 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.data.publisher/pom.xml +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.data.publisher/pom.xml @@ -16,13 +16,11 @@ ~ specific language governing permissions and limitations ~ under the License. --> - + open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.gateway/pom.xml b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.gateway/pom.xml index b4eaa95b..5d0fe88e 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.gateway/pom.xml +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.gateway/pom.xml @@ -17,15 +17,13 @@ ~ under the License. --> - + 4.0.0 open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../pom.xml diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.identity/pom.xml b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.identity/pom.xml index 0b2e3e5d..a5ac6829 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.identity/pom.xml +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.identity/pom.xml @@ -16,13 +16,11 @@ ~ specific language governing permissions and limitations ~ under the License. --> - + open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.keymanager/pom.xml b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.keymanager/pom.xml index 5bc44c69..b924760f 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.keymanager/pom.xml +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.keymanager/pom.xml @@ -14,13 +14,11 @@ ~ KIND, either express or implied. See the License for the ~ specific language governing permissions and limitations ~ under the License. - --> + --> open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.runtime/com.wso2.openbanking.accelerator.runtime.identity.authn.filter/pom.xml b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.runtime/com.wso2.openbanking.accelerator.runtime.identity.authn.filter/pom.xml index 36f4b193..99262a60 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.runtime/com.wso2.openbanking.accelerator.runtime.identity.authn.filter/pom.xml +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.runtime/com.wso2.openbanking.accelerator.runtime.identity.authn.filter/pom.xml @@ -16,13 +16,11 @@ ~ specific language governing permissions and limitations ~ under the License. --> - + com.wso2.openbanking.accelerator.runtime com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../pom.xml diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.runtime/pom.xml b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.runtime/pom.xml index 75be5543..8c779fb7 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.runtime/pom.xml +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.runtime/pom.xml @@ -16,13 +16,11 @@ ~ specific language governing permissions and limitations ~ under the License. --> - + open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../pom.xml diff --git a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.service.activator/pom.xml b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.service.activator/pom.xml index c7e11427..53c76ed7 100644 --- a/open-banking-accelerator/components/com.wso2.openbanking.accelerator.service.activator/pom.xml +++ b/open-banking-accelerator/components/com.wso2.openbanking.accelerator.service.activator/pom.xml @@ -16,14 +16,13 @@ ~ specific language governing permissions and limitations ~ under the License. --> - + 4.0.0 open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../pom.xml diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/pom.xml b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/pom.xml index ddb2df0b..45b4514b 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/pom.xml +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/pom.xml @@ -16,15 +16,13 @@ ~ specific language governing permissions and limitations ~ under the License. --> - + 4.0.0 open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../../pom.xml diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/admin/model/ConsentAdminHandler.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/admin/model/ConsentAdminHandler.java index e1c6cb9d..65f514bf 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/admin/model/ConsentAdminHandler.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/admin/model/ConsentAdminHandler.java @@ -42,21 +42,21 @@ public interface ConsentAdminHandler { /** * Method to handle the temporary retention data syncing with the retention database. * @param consentAdminData consentAdminData - * @throws ConsentException + * @throws ConsentException if any error occurs while syncing the retention database */ public void handleTemporaryRetentionDataSyncing(ConsentAdminData consentAdminData) throws ConsentException; /** * Method to handle the consent status audit search. * @param consentAdminData consentAdminData - * @throws ConsentException + * @throws ConsentException if any error occurs while searching the consent status audit */ public void handleConsentStatusAuditSearch(ConsentAdminData consentAdminData) throws ConsentException; /** * Method to handle the consent file search. * @param consentAdminData consentAdminData - * @throws ConsentException + * @throws ConsentException if any error occurs while searching the consent file */ public void handleConsentFileSearch(ConsentAdminData consentAdminData) throws ConsentException; diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/authorize/impl/DefaultConsentRetrievalStep.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/authorize/impl/DefaultConsentRetrievalStep.java index 496db846..0deca7b5 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/authorize/impl/DefaultConsentRetrievalStep.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/authorize/impl/DefaultConsentRetrievalStep.java @@ -111,9 +111,8 @@ public void execute(ConsentData consentData, JSONObject jsonObject) throws Conse /** * Method to retrieve consent related data from the initiation payload. - * @param consentResource + * @param consentResource Consent Resource * @return consent - * @throws ConsentException */ public JSONArray getConsentDataSet(ConsentResource consentResource) { diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/authorize/utils/ConsentRetrievalUtil.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/authorize/utils/ConsentRetrievalUtil.java index 0d5af23b..f0cc17b4 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/authorize/utils/ConsentRetrievalUtil.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/authorize/utils/ConsentRetrievalUtil.java @@ -47,8 +47,8 @@ public class ConsentRetrievalUtil { /** * Method to extract request object from query params. * - * @param spQueryParams - * @return + * @param spQueryParams Query params + * @return requestObject */ public static String extractRequestObject(String spQueryParams) { @@ -71,8 +71,8 @@ public static String extractRequestObject(String spQueryParams) { /** * Method to validate the request object and extract consent ID. * - * @param requestObject - * @return + * @param requestObject Request object + * @return consentId */ public static String extractConsentId(String requestObject) { @@ -193,8 +193,8 @@ public static void populateDebtorAccount(JSONObject initiation, JSONArray consen /** * Method to add debtor account details to consent data to send it to the consent page. * - * @param initiation - * @param consentDataJSON + * @param initiation Initiation object from the request + * @param consentDataJSON Consent information object */ public static void populateCreditorAccount(JSONObject initiation, JSONArray consentDataJSON) { if (initiation.get(ConsentExtensionConstants.CREDITOR_ACC) != null) { diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/authservlet/impl/util/Utils.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/authservlet/impl/util/Utils.java index d1d66edd..73c6a91b 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/authservlet/impl/util/Utils.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/authservlet/impl/util/Utils.java @@ -47,9 +47,9 @@ public class Utils { * To get the property value for the given key from the ResourceBundle. * Retrieve the value of property entry for key, return key if a value is not found for key * - * @param resourceBundle - * @param key - * @return + * @param resourceBundle ResourceBundle + * @param key Key + * @return Value of the property entry for key */ public static String i18n(ResourceBundle resourceBundle, String key) { @@ -66,8 +66,8 @@ public static String i18n(ResourceBundle resourceBundle, String key) { /** * Split claims based on a deliminator and create map of claimID and displayName. * - * @param requestedClaimList - * @return + * @param requestedClaimList Requested claim list + * @return List of claims */ public static List> splitClaims(String[] requestedClaimList) { @@ -88,9 +88,9 @@ public static List> splitClaims(String[] requestedClaimList) /** * Method to populate accounts data to be sent to consent page. * - * @param request - * @param dataSet - * @return + * @param request HttpServletRequest + * @param dataSet Request payload JSONObject + * @return Map of Accounts data */ public static Map populateAccountsData(HttpServletRequest request, JSONObject dataSet) { @@ -124,9 +124,9 @@ public static Map populateAccountsData(HttpServletRequest reques /** * Method to populate payments data to be sent to consent page. * - * @param request - * @param dataSet - * @return + * @param request HttpServletRequest + * @param dataSet Request payload JSONObject + * @return Map of Payments data */ public static Map populatePaymentsData(HttpServletRequest request, JSONObject dataSet) { @@ -167,9 +167,9 @@ public static Map populatePaymentsData(HttpServletRequest reques /** * Method to populate Confirmation of Funds data to be sent to consent page. * - * @param httpServletRequest - * @param dataSet - * @return + * @param httpServletRequest HttpServletRequest + * @param dataSet Request payload JSONObject + * @return Map of Confirmation of Funds data */ public static Map populateCoFData(HttpServletRequest httpServletRequest, JSONObject dataSet) { @@ -208,7 +208,7 @@ public static Map populateCoFData(HttpServletRequest httpServlet * Method to retrieve debtor account from consent data object. * * @param consentDataObject Object containing consent related data - * @return + * @return Debtor account */ public static String getDebtorAccFromConsentData(JSONArray consentDataObject) { @@ -253,9 +253,9 @@ private static List> addAccList (JSONObject dataSet) { /** * Method to populate vrp data to be sent to consent page. * - * @param request - * @param dataSet - * @return + * @param request HttpServletRequest + * @param dataSet Request payload JSONObject + * @return Map of VRP data */ public static Map populateVRPDataRetrieval(HttpServletRequest request, JSONObject dataSet) { diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/ciba/authenticator/CIBAPushAuthenticator.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/ciba/authenticator/CIBAPushAuthenticator.java index a9b04cd9..39f665d8 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/ciba/authenticator/CIBAPushAuthenticator.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/ciba/authenticator/CIBAPushAuthenticator.java @@ -127,7 +127,7 @@ public static synchronized void initializeConsentSteps() { * * @param consentData Consent Data * @param jsonObject Json object to store consent data - * @throws ConsentException + * @throws ConsentException when an error occurs while executing retrieval steps */ protected void executeRetrieval(ConsentData consentData, JSONObject jsonObject) throws ConsentException { @@ -146,7 +146,7 @@ protected void executeRetrieval(ConsentData consentData, JSONObject jsonObject) * @param response HTTP response * @param sessionDataKey Session data key * @return Consent data - * @throws ConsentException + * @throws ConsentException when an error occurs while retrieving consent */ protected JSONObject retrieveConsent(HttpServletRequest request, HttpServletResponse response, String sessionDataKey) throws ConsentException { @@ -256,9 +256,9 @@ protected AuthenticationContext getAutenticationContext(String sessionDataKey) { /** * OB specific implementation to retrieve consent data. - * @param sessionDataKey + * @param sessionDataKey Session data key * @return consent data - * @throws AuthenticationFailedException + * @throws AuthenticationFailedException Authentication failed exception */ @Override protected Optional getAdditionalInfo(HttpServletRequest request, HttpServletResponse response, @@ -324,6 +324,7 @@ protected void handlePreConsent(AuthenticationContext context, Map splitQuery(String queryParamsString) throws UnsupportedEncodingException { final Map queryParams = new HashMap<>(); @@ -345,6 +346,7 @@ protected Map splitQuery(String queryParamsString) throws Unsupp * @param httpStatusCode Http status code * @param errorCode Error code * @param errorDescription Error description + * @return CIBAAuthenticationEndpointErrorResponse CIBA Authentication Endpoint Error Response */ public static CIBAAuthenticationEndpointErrorResponse createErrorResponse(int httpStatusCode, String errorCode, String errorDescription) { diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/AuthErrorCode.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/AuthErrorCode.java index 690db6f4..67234110 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/AuthErrorCode.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/AuthErrorCode.java @@ -24,82 +24,75 @@ public enum AuthErrorCode { /** - * invalid_request, see {@link - * OAuth 2.0}. + * invalid_request, see ... */ INVALID_REQUEST("invalid_request"), /** - * unauthorized_client, see {@link - * OAuth 2.0}. + * unauthorized_client, see ... */ UNAUTHORIZED_CLIENT("unauthorized_client"), /** - * access_denied, see {@link - * OAuth 2.0}. + * access_denied, see ... */ ACCESS_DENIED("access_denied"), /** - * unsupported_response_type, see {@link - * OAuth 2.0}. + * unsupported_response_type, see ... */ UNSUPPORTED_RESPONSE_TYPE("unsupported_response_type"), /** - * invalid_scope, see {@link - * OAuth 2.0}. + * invalid_scope, see ... */ INVALID_SCOPE("invalid_scope"), /** - * server_error, see {@link - * OAuth 2.0}. + * server_error, see ... */ SERVER_ERROR("server_error"), /** - * temporarily_unavailable, see {@link - * OAuth 2.0}. + * temporarily_unavailable, see ... */ TEMPORARILY_UNAVAILABLE("temporarily_unavailable"), /** - * interaction_required, see {@link + * interaction_required, see * OpenID Connect Core 1.0}. */ INTERACTION_REQUIRED("interaction_required"), /** - * login_required, see {@link + * login_required, see * OpenID Connect Core 1.0}. */ LOGIN_REQUIRED("login_required"), /** - * account_selection_required, see {@link + * account_selection_required, see * OpenID Connect Core 1.0}. */ ACCOUNT_SELECTION_REQUIRED("account_selection_required"), /** - * consent_required, see {@link + * consent_required, see * OpenID Connect Core 1.0}. */ CONSENT_REQUIRED("consent_required"), /** - * invalid_request_uri, see {@link + * invalid_request_uri, see * OpenID Connect Core 1.0}. */ INVALID_REQUEST_URI("invalid_request_uri"), /** - * invalid_request_object, see {@link + * invalid_request_object, see * OpenID Connect Core 1.0}. */ INVALID_REQUEST_OBJECT("invalid_request_object"), /** - * request_not_supported, see {@link + * request_not_supported, see * OpenID Connect Core 1.0}. */ REQUEST_NOT_SUPPORTED("request_not_supported"), /** - * request_uri_not_supported, see {@link + * request_uri_not_supported, see * OpenID Connect Core 1.0}. */ REQUEST_URI_NOT_SUPPORTED("request_uri_not_supported"), /** - * registration_not_supported, see {@link + * registration_not_supported, see * OpenID Connect Core 1.0}. */ REGISTRATION_NOT_SUPPORTED("registration_not_supported"); diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/ConsentCache.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/ConsentCache.java index 42060f2d..7c9cbf35 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/ConsentCache.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/ConsentCache.java @@ -77,6 +77,7 @@ public static IdentityCache getInstance() { * Add consent data to consent data cache. * @param sessionDataKey session data key * @param consentData consent data + * @throws ConsentManagementException if an error occurs while adding consent data to cache */ public static void addConsentDataToCache(String sessionDataKey, ConsentData consentData) throws ConsentManagementException { @@ -91,6 +92,7 @@ public static void addConsentDataToCache(String sessionDataKey, ConsentData cons * Add consent data to database. * @param sessionDataKey session data key * @param consentData consent data + * @throws ConsentManagementException if an error occurs while storing consent data */ public static void storeConsent(ConsentData consentData, String sessionDataKey) throws ConsentManagementException { diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/ConsentExtensionUtils.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/ConsentExtensionUtils.java index 950cb7a0..141410ab 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/ConsentExtensionUtils.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/ConsentExtensionUtils.java @@ -226,9 +226,9 @@ public static Map getSensitiveData(String key) { /** * @param consentDetails json object of consent data - * @param sessionDataKey - * @return - * @throws URISyntaxException + * @param sessionDataKey session data key + * @return ConsentData object + * @throws URISyntaxException if the URI is invalid */ public static ConsentData getConsentDataFromAttributes(JsonObject consentDetails, String sessionDataKey) throws URISyntaxException { @@ -312,6 +312,8 @@ public static boolean isRequestAcceptedPastElapsedTime() { /** * Returns the DateTime by adding given number of days and the with the given Time. * + * @param daysToAdd Number of days to add + * @param time Time to add * @return DateTime value for the day */ public static String constructDateTime(long daysToAdd, String time) { @@ -330,6 +332,7 @@ public static String constructDateTime(long daysToAdd, String time) { * Validates whether Cutoffdatetime is enabled, if the request is arriving past the cut off date and if it * should be rejected by policy. * + * @param timeStamp Initiation timestamp * @return if the request should be rejected, or not. */ public static boolean shouldSubmissionRequestBeRejected(String timeStamp) { @@ -377,8 +380,8 @@ public static String getCurrentCutOffDateTime() { } /** * Convert long date values to ISO 8601 format. - * @param dateValue - * @return + * @param dateValue Date value in long + * @return ISO 8601 formatted date */ public static String convertToISO8601(long dateValue) { diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/ResponseStatus.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/ResponseStatus.java index 92fa7009..396599a4 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/ResponseStatus.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/ResponseStatus.java @@ -20,167 +20,145 @@ /** * Enum of the supported response status in accelerator. + * HTTP/1.1 documentation - ... */ public enum ResponseStatus { /** - * 200 OK, see {@link - * HTTP/1.1 documentation}. + * 200 OK, see ... */ OK(200, "OK"), /** - * 201 Created, see {@link - * HTTP/1.1 documentation}. + * 201 Created, see ... */ CREATED(201, "Created"), /** - * 202 Accepted, see {@link - * HTTP/1.1 documentation}. + * 202 Accepted, see ... */ ACCEPTED(202, "Accepted"), /** - * 204 No Content, see {@link - * HTTP/1.1 documentation}. + * 204 No Content, see ... */ NO_CONTENT(204, "No Content"), /** - * 205 Reset Content, see {@link - * HTTP/1.1 documentation}. + * 205 Reset Content, see ... * * @since 2.0 */ RESET_CONTENT(205, "Reset Content"), /** - * 206 Reset Content, see {@link - * HTTP/1.1 documentation}. + * 206 Reset Content, see ... * * @since 2.0 */ PARTIAL_CONTENT(206, "Partial Content"), /** - * 301 Moved Permanently, see {@link - * HTTP/1.1 documentation}. + * 301 Moved Permanently, see ... */ MOVED_PERMANENTLY(301, "Moved Permanently"), /** - * 302 Found, see {@link - * HTTP/1.1 documentation}. + * 302 Found, see ... * * @since 2.0 */ FOUND(302, "Found"), /** - * 303 See Other, see {@link - * HTTP/1.1 documentation}. + * 303 See Other, see ... */ SEE_OTHER(303, "See Other"), /** - * 304 Not Modified, see {@link - * HTTP/1.1 documentation}. + * 304 Not Modified, see ... */ NOT_MODIFIED(304, "Not Modified"), /** - * 305 Use Proxy, see {@link - * HTTP/1.1 documentation}. + * 305 Use Proxy, see link - "..." of + * HTTP/1.1 documentation. * * @since 2.0 */ USE_PROXY(305, "Use Proxy"), /** - * 307 Temporary Redirect, see {@link - * HTTP/1.1 documentation}. + * 307 Temporary Redirect, see ... */ TEMPORARY_REDIRECT(307, "Temporary Redirect"), /** - * 400 Bad Request, see {@link - * HTTP/1.1 documentation}. + * 400 Bad Request, see ... */ BAD_REQUEST(400, "Bad Request"), /** - * 401 Unauthorized, see {@link - * HTTP/1.1 documentation}. + * 401 Unauthorized, see ... */ UNAUTHORIZED(401, "Unauthorized"), /** - * 402 Payment Required, see {@link - * HTTP/1.1 documentation}. + * 402 Payment Required, see ... * * @since 2.0 */ PAYMENT_REQUIRED(402, "Payment Required"), /** - * 403 Forbidden, see {@link - * HTTP/1.1 documentation}. + * 403 Forbidden, see ... */ FORBIDDEN(403, "Forbidden"), /** - * 404 Not Found, see {@link - * HTTP/1.1 documentation}. + * 404 Not Found, see ... */ NOT_FOUND(404, "Not Found"), /** - * 405 Method Not Allowed, see {@link - * HTTP/1.1 documentation}. + * 405 Method Not Allowed, see ... * * @since 2.0 */ METHOD_NOT_ALLOWED(405, "Method Not Allowed"), /** - * 406 Not Acceptable, see {@link - * HTTP/1.1 documentation}. + * 406 Not Acceptable, see ... */ NOT_ACCEPTABLE(406, "Not Acceptable"), /** - * 409 Conflict, see {@link - * HTTP/1.1 documentation}. + * 409 Conflict, see ... */ CONFLICT(409, "Conflict"), /** - * 410 Gone, see {@link - * HTTP/1.1 documentation}. + * 410 Gone, see ... */ GONE(410, "Gone"), /** - * 411 Length Required, see {@link - * HTTP/1.1 documentation}. + * 411 Length Required, see ... * * @since 2.0 */ LENGTH_REQUIRED(411, "Length Required"), /** - * 412 Precondition Failed, see {@link - * HTTP/1.1 documentation}. + * 412 Precondition Failed, see ... */ PRECONDITION_FAILED(412, "Precondition Failed"), /** - * 413 Request Entity Too Large, see {@link HTTP/1.1 documentation}. + * 413 Request Entity Too Large, + * see ... * * @since 2.0 */ REQUEST_ENTITY_TOO_LARGE(413, "Request Entity Too Large"), /** - * 414 Request-URI Too Long, see {@link - * HTTP/1.1 documentation}. + * 414 Request-URI Too Long, see ... * * @since 2.0 */ REQUEST_URI_TOO_LONG(414, "Request-URI Too Long"), /** - * 415 Unsupported Media Type, see {@link HTTP/1.1 documentation}. + * 415 Unsupported Media Type, + * see ... */ UNSUPPORTED_MEDIA_TYPE(415, "Unsupported Media Type"), /** - * 416 Requested Range Not Satisfiable, see {@link HTTP/1.1 documentation}. + * 416 Requested Range Not Satisfiable, + * see ... * * @since 2.0 */ REQUESTED_RANGE_NOT_SATISFIABLE(416, "Requested Range Not Satisfiable"), /** - * 417 Expectation Failed, see {@link - * HTTP/1.1 documentation}. + * 417 Expectation Failed, + * see ... * * @since 2.0 */ @@ -194,39 +172,34 @@ public enum ResponseStatus { */ TOO_MANY_REQUESTS(429, "Too Many Requests"), /** - * 500 Internal Server Error, see {@link - * HTTP/1.1 documentation}. + * 500 Internal Server Error, see ... */ INTERNAL_SERVER_ERROR(500, "Internal Server Error"), /** - * 501 Not Implemented, see {@link - * HTTP/1.1 documentation}. + * 501 Not Implemented, see ... * * @since 2.0 */ NOT_IMPLEMENTED(501, "Not Implemented"), /** - * 502 Bad Gateway, see {@link - * HTTP/1.1 documentation}. + * 502 Bad Gateway, see ..." * * @since 2.0 */ BAD_GATEWAY(502, "Bad Gateway"), /** - * 503 Service Unavailable, see {@link - * HTTP/1.1 documentation}. + * 503 Service Unavailable, see ... */ SERVICE_UNAVAILABLE(503, "Service Unavailable"), /** - * 504 Gateway Timeout, see {@link - * HTTP/1.1 documentation}. + * 504 Gateway Timeout, see ... * * @since 2.0 */ GATEWAY_TIMEOUT(504, "Gateway Timeout"), /** - * 505 HTTP Version Not Supported, see {@link - * HTTP/1.1 documentation}. + * 505 HTTP Version Not Supported, + * see ... * * @since 2.0 */ diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyConstants.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyConstants.java index d0b8f988..e9866c25 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyConstants.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyConstants.java @@ -1,12 +1,20 @@ -/* - * Copyright (c) 2024, WSO2 LLC. (https://www.wso2.com). All Rights Reserved. +/** + * Copyright (c) 2024, WSO2 LLC. (https://www.wso2.com). + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at * - * This software is the property of WSO2 LLC. and its suppliers, if any. - * Dissemination of any information or reproduction of any material contained - * herein in any form is strictly forbidden, unless permitted by WSO2 expressly. - * You may not alter or remove any copyright or other notice from copies of this content. + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. */ - package com.wso2.openbanking.accelerator.consent.extensions.common.idempotency; /** @@ -14,15 +22,21 @@ */ public class IdempotencyConstants { - public static final String IDEMPOTENCY_IS_ENABLED = "Consent.Idempotency.Enabled"; - public static final String IDEMPOTENCY_ALLOWED_TIME = "Consent.Idempotency.AllowedTimeDuration"; + public static final String CONTENT_TYPE_TAG = "content-type"; + public static final String X_IDEMPOTENCY_KEY = "x-idempotency-key"; + public static final String IDEMPOTENCY_KEY_NAME = "IdempotencyKey"; + public static final String ISO_FORMAT = "yyyy-MM-dd'T'HH:mm:ssXXX"; + public static final String EMPTY_OBJECT = "{}"; public static final String ERROR_PAYLOAD_NOT_SIMILAR = "Payloads are not similar. Hence this is not a valid" + " idempotent request"; public static final String ERROR_AFTER_ALLOWED_TIME = "Request received after the allowed time., Hence this is" + " not a valid idempotent request"; public static final String ERROR_MISMATCHING_CLIENT_ID = "Client ID sent in the request does not match with the" + " client ID in the retrieved consent. Hence this is not a valid idempotent request"; - public static final String ERROR_NO_CONSENT_DETAILS = "No consent details found for the consent ID, Hence this" + + public static final String ERROR_NO_CONSENT_DETAILS = "No consent details found for the consent ID %s, Hence this" + " is not a valid idempotent request"; public static final String JSON_COMPARING_ERROR = "Error occurred while comparing JSON payloads"; + public static final String CONSENT_RETRIEVAL_ERROR = "Error while retrieving detailed consent data"; + public static final String SAME_CONSENT_ID_ERROR = "Cannot use different unique identifier for the same" + + " consent ID when the request does not contain a payload."; } diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyValidationException.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyValidationException.java new file mode 100644 index 00000000..821287ca --- /dev/null +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyValidationException.java @@ -0,0 +1,35 @@ +/** + * Copyright (c) 2024, WSO2 LLC. (https://www.wso2.com). + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package com.wso2.openbanking.accelerator.consent.extensions.common.idempotency; + +import com.wso2.openbanking.accelerator.common.exception.OpenBankingException; + +/** + * Used for handling exceptions in Idempotency Validation. + */ +public class IdempotencyValidationException extends OpenBankingException { + + public IdempotencyValidationException(String message) { + super(message); + } + + public IdempotencyValidationException(String message, Throwable e) { + super(message, e); + } +} diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyValidationResult.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyValidationResult.java index 32745967..a67f6694 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyValidationResult.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyValidationResult.java @@ -41,6 +41,13 @@ public IdempotencyValidationResult(boolean isIdempotent, boolean isValid, Detail this.consentId = consentId; } + public IdempotencyValidationResult(boolean isIdempotent, boolean isValid) { + this.isIdempotent = isIdempotent; + this.isValid = isValid; + this.consent = null; + this.consentId = null; + } + public boolean isIdempotent() { return isIdempotent; } diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyValidationUtils.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyValidationUtils.java new file mode 100644 index 00000000..19639519 --- /dev/null +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyValidationUtils.java @@ -0,0 +1,131 @@ +/** + * Copyright (c) 2024, WSO2 LLC. (https://www.wso2.com). + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package com.wso2.openbanking.accelerator.consent.extensions.common.idempotency; + +import com.wso2.openbanking.accelerator.common.config.OpenBankingConfigParser; +import com.wso2.openbanking.accelerator.common.exception.ConsentManagementException; +import com.wso2.openbanking.accelerator.consent.extensions.internal.ConsentExtensionsDataHolder; +import com.wso2.openbanking.accelerator.consent.mgt.service.ConsentCoreService; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.time.Duration; +import java.time.OffsetDateTime; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Class to hold idempotency validation utils. + */ +public class IdempotencyValidationUtils { + + private static final Log log = LogFactory.getLog(IdempotencyValidationUtils.class); + private static final ConsentCoreService consentCoreService = ConsentExtensionsDataHolder.getInstance() + .getConsentCoreService(); + + /** + * Method to retrieve the consent ids that have the idempotency key name and value as attribute. + * + * @param idempotencyKeyName Idempotency Key Name + * @param idempotencyKeyValue Idempotency Key Value + * @return List of consent ids if available, else an empty list will be returned + */ + static List getConsentIdsFromIdempotencyKey(String idempotencyKeyName, + String idempotencyKeyValue) { + try { + return consentCoreService.getConsentIdByConsentAttributeNameAndValue( + idempotencyKeyName, idempotencyKeyValue); + } catch (ConsentManagementException e) { + log.debug("No consent ids found for the idempotency key value"); + return new ArrayList<>(); + } + } + + /** + * Method to retrieve the consent ids and idempotency key value using the idempotency key. + * + * @param idempotencyKeyName Idempotency Key Name + * @return Map of consent ids and idempotency key vallue if available, else an empty map will be returned + */ + static Map getAttributesFromIdempotencyKey(String idempotencyKeyName) { + try { + return consentCoreService.getConsentAttributesByName(idempotencyKeyName); + } catch (ConsentManagementException e) { + log.debug("No consent ids found for the idempotency key value"); + return new HashMap<>(); + } + } + + /** + * Method to compare the client ID sent in the request and client id retrieved from the database. + * + * @param requestClientID Client ID sent in the request + * @param dbClientID client ID retrieved from the database + * @return true if the client ID sent in the request and client id retrieved from the database are equal + */ + static boolean isClientIDEqual(String requestClientID, String dbClientID) { + if (requestClientID == null) { + return false; + } + return requestClientID.equals(dbClientID); + } + + /** + * Method to check whether difference between two dates is less than the configured time. + * + * @param createdTime Created Time of the request + * @return true if the request is received within allowed time + */ + static boolean isRequestReceivedWithinAllowedTime(long createdTime) { + + if (createdTime == 0L) { + log.debug("Created time is of the previous request is not correctly set. Hence returning false"); + return false; + } + String allowedTimeDuration = OpenBankingConfigParser.getInstance().getIdempotencyAllowedTime(); + if (StringUtils.isNotBlank(allowedTimeDuration)) { + OffsetDateTime createdDate = OffsetDateTime.parse(toISO8601DateTime(createdTime)); + OffsetDateTime currDate = OffsetDateTime.now(createdDate.getOffset()); + + long diffInMinutes = Duration.between(createdDate, currDate).toMinutes(); + return diffInMinutes <= Long.parseLong(allowedTimeDuration); + } else { + log.error("Idempotency allowed duration is not configured in the system. Hence returning false"); + return false; + } + } + + /** + * Convert long date values to ISO 8601 format. ISO 8601 format - "yyyy-MM-dd'T'HH:mm:ssXXX" + * @param epochDate Date value in epoch format + * @return ISO 8601 formatted date + */ + private static String toISO8601DateTime(long epochDate) { + + DateFormat simple = new SimpleDateFormat(IdempotencyConstants.ISO_FORMAT); + Date simpleDateVal = new Date(epochDate * 1000); + return simple.format(simpleDateVal); + } +} diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyValidator.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyValidator.java index 170cc54b..0e6ed237 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyValidator.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyValidator.java @@ -18,23 +18,21 @@ package com.wso2.openbanking.accelerator.consent.extensions.common.idempotency; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.wso2.openbanking.accelerator.common.config.OpenBankingConfigParser; import com.wso2.openbanking.accelerator.common.exception.ConsentManagementException; import com.wso2.openbanking.accelerator.consent.extensions.internal.ConsentExtensionsDataHolder; +import com.wso2.openbanking.accelerator.consent.extensions.manage.model.ConsentManageData; import com.wso2.openbanking.accelerator.consent.mgt.dao.models.DetailedConsentResource; import com.wso2.openbanking.accelerator.consent.mgt.service.ConsentCoreService; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import java.io.IOException; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.time.Duration; -import java.time.OffsetDateTime; -import java.util.ArrayList; -import java.util.Date; +import java.util.List; import java.util.Map; /** @@ -43,160 +41,261 @@ public class IdempotencyValidator { private static final Log log = LogFactory.getLog(IdempotencyValidator.class); - private static final Map configs = OpenBankingConfigParser.getInstance().getConfiguration(); private static final ConsentCoreService consentCoreService = ConsentExtensionsDataHolder.getInstance() .getConsentCoreService(); /** * Method to check whether the request is idempotent. - * This method will first check whether idempotency validation is enabled. Then it will check whether the - * idempotency key exists in the database and whether the request is received within the allowed time. + * This method will first check whether idempotency validation is enabled. After that it will validate whether + * required parameters for validation is present. + * For validation, need to check whether the idempotency key values is present as a consent attribute, if present + * the consent will be retrieved. Finally following conditions will be validated. + * - Whether the client id sent in the request and client id retrieved from the database are equal + * - Whether the difference between two dates is less than the configured time + * - Whether payloads are equal * - * @param idempotencyKeyName Idempotency Key Name - * @param idempotencyKeyValue Idempotency Key Value - * @param request Request Payload + * @param consentManageData Consent Manage Data * @return IdempotencyValidationResult + * @throws IdempotencyValidationException If an error occurs while validating idempotency */ - public static IdempotencyValidationResult validateIdempotency(String idempotencyKeyName, String idempotencyKeyValue, - String request, String clientId) - throws ConsentManagementException { - - if (Boolean.parseBoolean((configs.get(IdempotencyConstants.IDEMPOTENCY_IS_ENABLED)).toString())) { - // If idempotency key name, value or request is empty then cannot proceed with idempotency validation - if (idempotencyKeyName == null || idempotencyKeyValue == null || request.isEmpty() || clientId == null) { - log.debug("Idempotency Key , NameValue, Client ID or Request is empty. Hence cannot proceed with " + - "idempotency validation"); - return new IdempotencyValidationResult(false, false, null, null); - } - try { + public IdempotencyValidationResult validateIdempotency(ConsentManageData consentManageData) + throws IdempotencyValidationException { + + if (!OpenBankingConfigParser.getInstance().isIdempotencyValidationEnabled()) { + return new IdempotencyValidationResult(false, false); + } + // If request is empty then cannot proceed with idempotency validation + if (consentManageData.getPayload() == null) { + log.error("Request payload is empty. Hence cannot proceed with idempotency validation"); + return new IdempotencyValidationResult(false, false); + } + // If client id is empty then cannot proceed with idempotency validation + if (StringUtils.isBlank(consentManageData.getClientId())) { + log.error("Client ID is empty. Hence cannot proceed with idempotency validation"); + return new IdempotencyValidationResult(false, false); + } + String idempotencyKeyValue = consentManageData.getHeaders().get(getIdempotencyHeaderName()); + // If idempotency key value is empty then cannot proceed with idempotency validation + if (StringUtils.isBlank(idempotencyKeyValue)) { + log.error("Idempotency Key Valueis empty. Hence cannot proceed with idempotency validation"); + return new IdempotencyValidationResult(false, false); + } + try { + String idempotencyKeyName = getIdempotencyAttributeName(consentManageData.getRequestPath()); + if (!IdempotencyConstants.EMPTY_OBJECT.equals(consentManageData.getPayload().toString())) { // Retrieve consent ids that have the idempotency key name and value as attribute - ArrayList consentIds = getConsentIdsFromIdempotencyKey(idempotencyKeyName, - idempotencyKeyValue); + List consentIds = IdempotencyValidationUtils + .getConsentIdsFromIdempotencyKey(idempotencyKeyName, idempotencyKeyValue); // Check whether the consent id list is not empty. If idempotency key exists in the database then // the consent Id list will be not empty. if (!consentIds.isEmpty()) { - log.debug(String.format("Idempotency Key %s exists in the database. Hence this is an idempotent" + - " request", idempotencyKeyValue)); + if (log.isDebugEnabled()) { + log.debug(String.format("Idempotency Key %s exists in the database. Hence this is an" + + " idempotent request", idempotencyKeyValue)); + } for (String consentId : consentIds) { - DetailedConsentResource consentRequest = consentCoreService.getDetailedConsent(consentId); - if (consentRequest != null) { - // Compare the client ID sent in the request and client id retrieved from the database - // to validate whether the request is received from the same client - if (isClientIdsMatching(clientId, consentRequest.getClientID())) { - // Check whether difference between two dates is less than the configured time - if (isRequestReceivedWithinAllowedTime(consentRequest.getCreatedTime())) { - // Compare whether JSON payloads are equal - if (isJSONPayloadSimilar(consentRequest.getReceipt(), request)) { - log.debug("Payloads are similar and request received within allowed time." + - " Hence this is a valid idempotent request"); - return new IdempotencyValidationResult(true, true, - consentRequest, consentId); - } else { - log.debug(IdempotencyConstants.ERROR_PAYLOAD_NOT_SIMILAR); - throw new ConsentManagementException(IdempotencyConstants - .ERROR_PAYLOAD_NOT_SIMILAR); - } - } else { - log.debug(IdempotencyConstants.ERROR_AFTER_ALLOWED_TIME); - throw new ConsentManagementException(IdempotencyConstants - .ERROR_AFTER_ALLOWED_TIME); - } - } else { - log.debug(IdempotencyConstants.ERROR_MISMATCHING_CLIENT_ID); - throw new ConsentManagementException(IdempotencyConstants.ERROR_MISMATCHING_CLIENT_ID); - } + DetailedConsentResource consentResource = consentCoreService.getDetailedConsent(consentId); + if (consentResource != null) { + return validateIdempotencyConditions(consentManageData, consentResource); } else { - log.debug(IdempotencyConstants.ERROR_NO_CONSENT_DETAILS); - throw new ConsentManagementException(IdempotencyConstants.ERROR_NO_CONSENT_DETAILS); + String errorMsg = String.format(IdempotencyConstants.ERROR_NO_CONSENT_DETAILS, consentId); + log.error(errorMsg); + throw new IdempotencyValidationException(errorMsg); } } } - } catch (IOException e) { - log.error(IdempotencyConstants.JSON_COMPARING_ERROR, e); - throw new ConsentManagementException(IdempotencyConstants.JSON_COMPARING_ERROR); + } else { + return validateIdempotencyWithoutPayload(consentManageData, idempotencyKeyName, idempotencyKeyValue); } + } catch (IOException e) { + log.error(IdempotencyConstants.JSON_COMPARING_ERROR, e); + throw new IdempotencyValidationException(IdempotencyConstants.JSON_COMPARING_ERROR); + } catch (ConsentManagementException e) { + log.error(IdempotencyConstants.CONSENT_RETRIEVAL_ERROR, e); + return new IdempotencyValidationResult(true, false); } - return new IdempotencyValidationResult(false, false, null, null); + return new IdempotencyValidationResult(false, false); } /** - * Method to retrieve the consent ids that have the idempotency key name and value as attribute. + * Method to check whether the idempotency conditions are met for requests without payload. + * This method will validate the following conditions. + * - Whether the idempotency key value is different for the same consent id + * - Whether the client id sent in the request and client id retrieved from the database are equal + * - Whether the difference between two dates is less than the configured time + * - Whether payloads are equal * - * @param idempotencyKeyName Idempotency Key Name - * @param idempotencyKeyValue Idempotency Key Value - * @return List of consent ids + * @param consentManageData Consent Manage Data + * @param idempotencyKeyName Idempotency Key Name + * @param idempotencyKeyValue Idempotency Key value + * @return IdempotencyValidationResult */ - private static ArrayList getConsentIdsFromIdempotencyKey(String idempotencyKeyName, - String idempotencyKeyValue) { - try { - return consentCoreService.getConsentIdByConsentAttributeNameAndValue( - idempotencyKeyName, idempotencyKeyValue); - } catch (ConsentManagementException e) { - log.debug("No consent ids found for the idempotency key value"); - return new ArrayList<>(); + private IdempotencyValidationResult validateIdempotencyWithoutPayload(ConsentManageData consentManageData, + String idempotencyKeyName, + String idempotencyKeyValue) + throws IdempotencyValidationException, IOException, ConsentManagementException { + + // Retrieve consent ids and idempotency key values that have the idempotency key name + Map attributes = IdempotencyValidationUtils.getAttributesFromIdempotencyKey(idempotencyKeyName); + // Check whether the attributes map is not empty. If idempotency key exists in the database then + // the consent Id list will be not empty. + if (!attributes.isEmpty()) { + if (log.isDebugEnabled()) { + log.debug(String.format("Idempotency Key %s exists in the database. Hence this is an" + + " idempotent request", idempotencyKeyValue)); + } + for (Map.Entry entry : attributes.entrySet()) { + // If the idempotency key value is different for the same consent id then it is not a valid idempotent + if (consentManageData.getRequestPath().contains(entry.getKey()) && + !idempotencyKeyValue.equals(entry.getValue())) { + throw new IdempotencyValidationException(IdempotencyConstants.SAME_CONSENT_ID_ERROR); + } + DetailedConsentResource consentRequest = consentCoreService.getDetailedConsent(entry.getKey()); + if (consentRequest != null) { + return validateIdempotencyConditions(consentManageData, consentRequest); + } else { + String errorMsg = String.format(IdempotencyConstants.ERROR_NO_CONSENT_DETAILS, entry.getKey()); + log.error(errorMsg); + throw new IdempotencyValidationException(errorMsg); + } + } + } + return new IdempotencyValidationResult(false, false); } /** - * Method to compare the client ID sent in the request and client id retrieved from the database. + * Method to check whether the idempotency conditions are met. + * This method will validate the following conditions. + * - Whether the client id sent in the request and client id retrieved from the database are equal + * - Whether the difference between two dates is less than the configured time + * - Whether payloads are equal * - * @param requestClientID Client ID sent in the request - * @param dbClientId client ID retrieved from the database - * @return Whether JSON client Ids are equal + * @param consentManageData Consent Manage Data + * @param consentResource Detailed Consent Resource + * @return IdempotencyValidationResult */ - private static boolean isClientIdsMatching(String requestClientID, String dbClientId) { - - return requestClientID.equals(dbClientId); + private IdempotencyValidationResult validateIdempotencyConditions(ConsentManageData consentManageData, + DetailedConsentResource consentResource) + throws IdempotencyValidationException, IOException { + // Compare the client ID sent in the request and client id retrieved from the database + // to validate whether the request is received from the same client + if (IdempotencyValidationUtils.isClientIDEqual(consentResource.getClientID(), + consentManageData.getClientId())) { + // Check whether difference between two dates is less than the configured time + if (IdempotencyValidationUtils.isRequestReceivedWithinAllowedTime(getCreatedTimeOfPreviousRequest( + consentManageData.getRequestPath(), consentResource.getConsentID()))) { + // Compare whether JSON payloads are equal + if (isPayloadSimilar(consentManageData, getPayloadOfPreviousRequest( + consentManageData.getRequestPath(), consentResource.getConsentID()))) { + log.debug("Payloads are similar and request received within allowed" + + " time. Hence this is a valid idempotent request"); + return new IdempotencyValidationResult(true, true, + consentResource, consentResource.getConsentID()); + } else { + log.error(IdempotencyConstants.ERROR_PAYLOAD_NOT_SIMILAR); + throw new IdempotencyValidationException(IdempotencyConstants + .ERROR_PAYLOAD_NOT_SIMILAR); + } + } else { + log.error(IdempotencyConstants.ERROR_AFTER_ALLOWED_TIME); + throw new IdempotencyValidationException(IdempotencyConstants + .ERROR_AFTER_ALLOWED_TIME); + } + } else { + log.error(IdempotencyConstants.ERROR_MISMATCHING_CLIENT_ID); + throw new IdempotencyValidationException(IdempotencyConstants.ERROR_MISMATCHING_CLIENT_ID); + } } /** - * Method to compare whether JSON payloads are equal. + * Method to get the Idempotency Attribute Name store in consent Attributes. * - * @param jsonString1 JSON payload retrieved from database - * @param jsonString2 JSON payload received from current request - * @return Whether JSON payloads are equal - * @throws IOException If an error occurs while comparing JSON payloads + * @param resourcePath Resource Path + * @return idempotency Attribute Name. */ - private static boolean isJSONPayloadSimilar(String jsonString1, String jsonString2) throws IOException { - - JsonNode expectedNode = new ObjectMapper().readTree(jsonString1); - JsonNode actualNode = new ObjectMapper().readTree(jsonString2); - return expectedNode.equals(actualNode); + public String getIdempotencyAttributeName(String resourcePath) { + return IdempotencyConstants.IDEMPOTENCY_KEY_NAME; } /** - * Method to check whether difference between two dates is less than the configured time. + * Method to get the Idempotency Header Name according to the request. * - * @param createdTime Created Time of the request - * @return Whether the request is received within allowed time + * @return idempotency Header Name. */ - protected static boolean isRequestReceivedWithinAllowedTime(long createdTime) { + public String getIdempotencyHeaderName() { + return IdempotencyConstants.X_IDEMPOTENCY_KEY; + } - if (createdTime == 0L) { - return false; + /** + * Method to get created time from the Detailed Consent Resource. + * + * @param resourcePath Resource Path + * @param consentId ConsentId + * @return Created Time. + */ + public long getCreatedTimeOfPreviousRequest(String resourcePath, String consentId) { + DetailedConsentResource consentRequest = null; + try { + consentRequest = consentCoreService.getDetailedConsent(consentId); + } catch (ConsentManagementException e) { + log.error(IdempotencyConstants.CONSENT_RETRIEVAL_ERROR, e); + return 0L; } - String allowedTimeDuration = (String) configs.get(IdempotencyConstants.IDEMPOTENCY_ALLOWED_TIME); - if (allowedTimeDuration != null) { - OffsetDateTime createdDate = OffsetDateTime.parse(convertToISO8601(createdTime)); - OffsetDateTime currDate = OffsetDateTime.now(createdDate.getOffset()); + if (consentRequest == null) { + return 0L; + } + return consentRequest.getCreatedTime(); + } - long diffInHours = Duration.between(createdDate, currDate).toMinutes(); - return diffInHours <= Long.parseLong(allowedTimeDuration); - } else { - log.error("Idempotency Allowed duration is null"); - return false; + /** + * Method to get payload from previous request. + * + * @param resourcePath Resource Path + * @param consentId ConsentId + * @return Map containing the payload. + */ + public String getPayloadOfPreviousRequest(String resourcePath, String consentId) { + DetailedConsentResource consentRequest = null; + try { + consentRequest = consentCoreService.getDetailedConsent(consentId); + } catch (ConsentManagementException e) { + log.error(IdempotencyConstants.CONSENT_RETRIEVAL_ERROR, e); + return null; + } + if (consentRequest == null) { + return null; } + return consentRequest.getReceipt(); } /** - * Convert long date values to ISO 8601 format. - * @param dateValue Date value - * @return ISO 8601 formatted date + * Method to compare whether payloads are equal. + * + * @param consentManageData Consent Manage Data Object + * @param consentReceipt Payload received from database + * @return Whether payloads are equal */ - public static String convertToISO8601(long dateValue) { + public boolean isPayloadSimilar(ConsentManageData consentManageData, String consentReceipt) { - DateFormat simple = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); - Date simpleDateVal = new Date(dateValue * 1000); - return simple.format(simpleDateVal); + if (consentManageData.getPayload() == null || consentReceipt == null) { + return false; + } + + JsonNode expectedNode = null; + JsonNode actualNode = null; + try { + ObjectMapper mapper = new ObjectMapper(); + expectedNode = mapper.readTree(consentManageData.getPayload().toString()); + actualNode = mapper.readTree(consentReceipt); + if (log.isDebugEnabled()) { + log.debug(String.format("Expected payload for idempotent request is: %s. But actual payload " + + "received is %s", expectedNode.toString(), actualNode.toString())); + } + } catch (JsonProcessingException e) { + log.error(IdempotencyConstants.JSON_COMPARING_ERROR, e); + return false; + } + return expectedNode.equals(actualNode); } } diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/manage/impl/AccountConsentManageRequestHandler.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/manage/impl/AccountConsentManageRequestHandler.java index 166e2e9d..83d7d0f2 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/manage/impl/AccountConsentManageRequestHandler.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/manage/impl/AccountConsentManageRequestHandler.java @@ -302,7 +302,7 @@ private static boolean isTransactionFromToTimeValid(String fromDateVal, String t /** * Method to append the consent expiration time (UTC) as a consent attribute. - * + * @param requestedConsent Consent Resource */ public static void appendConsentExpirationTimestampAttribute(ConsentResource requestedConsent) { diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/manage/impl/VRPConsentRequestHandler.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/manage/impl/VRPConsentRequestHandler.java index 485164ec..2598e51d 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/manage/impl/VRPConsentRequestHandler.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/manage/impl/VRPConsentRequestHandler.java @@ -154,6 +154,7 @@ public void handleConsentManageDelete(ConsentManageData consentManageData) { * * @param consentManageData Object containing request details, including client ID, request payload, headers. * @param request Object + * @throws ConsentManagementException if an error occurs while creating the consent or storing consent attributes. */ public void handlePaymentPost(ConsentManageData consentManageData, Object request) throws ConsentManagementException { diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/manage/validator/CofConsentRequestValidator.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/manage/validator/CofConsentRequestValidator.java index 6a72bdac..9007ace6 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/manage/validator/CofConsentRequestValidator.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/manage/validator/CofConsentRequestValidator.java @@ -35,8 +35,8 @@ public class CofConsentRequestValidator { /** * Method to validate COF initiation request. - * @param initiation - * @return + * @param initiation Initiation Object + * @return JSONObject Validation Response */ public static JSONObject validateCOFInitiation(JSONObject initiation) { diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/manage/validator/PaymentsConsentRequestValidator.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/manage/validator/PaymentsConsentRequestValidator.java index 845860a9..2653591e 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/manage/validator/PaymentsConsentRequestValidator.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/manage/validator/PaymentsConsentRequestValidator.java @@ -32,7 +32,7 @@ public class PaymentsConsentRequestValidator { * * @param requestPath Request Path of the request * @param initiation Initiation Object - * @return + * @return JSONObject Validation Response */ public static JSONObject validatePaymentInitiation(String requestPath, JSONObject initiation) { diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/manage/validator/VRPConsentRequestValidator.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/manage/validator/VRPConsentRequestValidator.java index 14e2c1c3..1a4dc097 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/manage/validator/VRPConsentRequestValidator.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/manage/validator/VRPConsentRequestValidator.java @@ -140,6 +140,7 @@ public static JSONObject validateControlParameters(JSONObject controlParameters) * It is commonly used to validate whether a given object represents a valid JSON array. * * @param value The object to be checked for being a valid JSONArray. + * @return true if the object is a valid JSONArray, false otherwise. */ public static boolean isValidJSONArray(Object value) { String errorMessage = String.format(ErrorConstants.INVALID_PARAMETER_MESSAGE, "periodic limit", @@ -462,6 +463,7 @@ public static JSONObject validateVRPInitiationPayload(JSONObject initiation) { * @param parentObj The JSONObject to be validated. * @param key The key to be checked for presence in the parentObj. * @param expectedType The expected type of the value associated with the key. + * @param The expected type of the value associated with the key. * @return true if the specified key is present in the parentObj and the associated value is a * non-empty string. */ @@ -513,7 +515,8 @@ public static JSONObject validateJsonObjectKey(JSONObject parentObj, String * @param parentArray The JSONObject to be validated. * @param key The key to be checked for presence in the parentObj. * @param expectedType The expected type of the value associated with the key. - * @return A JSONObject containing validation results for the entire array. + * @param The expected type of the value associated with the key. + * @return A JSONObject containing validation results for the entire array. */ public static JSONObject validateAmountCurrencyPeriodicLimits(JSONArray parentArray, String key, Class expectedType) { diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/util/ConsentManageUtil.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/util/ConsentManageUtil.java index 695afcb4..f4297901 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/util/ConsentManageUtil.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/util/ConsentManageUtil.java @@ -80,7 +80,7 @@ public static JSONObject validateInitiationDataBody(JSONObject initiationRequest * @param errorCode Error Code * @param errorMessage Error Message * @param errorPath Error Path - * @return + * @return JSONObject Validation response */ public static JSONObject getValidationResponse(String errorCode, String errorMessage, String errorPath) { JSONObject validationResponse = new JSONObject(); @@ -96,7 +96,7 @@ public static JSONObject getValidationResponse(String errorCode, String errorMes * * @param errorMessage Error Message * - * @return + * @return JSONObject Validation response */ public static JSONObject getValidationResponse(String errorMessage) { JSONObject validationResponse = new JSONObject(); @@ -111,7 +111,7 @@ public static JSONObject getValidationResponse(String errorMessage) { * Method to validate debtor account. * * @param debtorAccount Debtor Account object - * @return + * @return JSONObject Validation response */ public static JSONObject validateDebtorAccount(JSONObject debtorAccount) { @@ -224,7 +224,7 @@ public static JSONObject validateDebtorAccount(JSONObject debtorAccount) { * Validate creditor account. * * @param creditorAccount Creditor Account object - * @return + * @return JSONObject Validation response */ public static JSONObject validateCreditorAccount(JSONObject creditorAccount) { @@ -379,7 +379,7 @@ public static void handleConsentManageDelete(ConsentManageData consentManageData * Utility class to check whether the Debtor Account Scheme name length. * * @param debtorAccSchemeName Debtor Account Scheme Name - * @return + * @return boolean Whether the Debtor Account Scheme name length is valid */ public static boolean validateDebtorAccSchemeNameLength(String debtorAccSchemeName) { if (log.isDebugEnabled()) { @@ -393,7 +393,7 @@ public static boolean validateDebtorAccSchemeNameLength(String debtorAccSchemeNa * Utility class to check whether the Debtor Account Scheme name matches with Enum values. * * @param debtorAccSchemeName Debtor Account Scheme Name - * @return + * @return boolean Whether the Debtor Account Scheme name is valid */ public static boolean isDebtorAccSchemeNameValid(String debtorAccSchemeName) { if (log.isDebugEnabled()) { @@ -412,7 +412,7 @@ public static boolean isDebtorAccSchemeNameValid(String debtorAccSchemeName) { * Utility class to check whether the Debtor Account Identification is valid. * * @param debtorAccIdentification Debtor Account Identification - * @return + * @return boolean Whether the Debtor Account Identification is valid */ public static boolean isDebtorAccIdentificationValid(String debtorAccIdentification) { if (log.isDebugEnabled()) { @@ -426,7 +426,7 @@ public static boolean isDebtorAccIdentificationValid(String debtorAccIdentificat * Utility class to check whether the Debtor Account Name is valid. * * @param debtorAccName Debtor Account Name - * @return + * @return boolean Whether the Debtor Account Name is valid */ public static boolean isDebtorAccNameValid(String debtorAccName) { if (log.isDebugEnabled()) { @@ -440,7 +440,7 @@ public static boolean isDebtorAccNameValid(String debtorAccName) { * Utility class to check whether the Debtor AccountSecondary Identification is valid. * * @param debtorAccSecondaryIdentification Debtor Account Secondary Identification - * @return + * @return boolean Whether the Debtor Account Secondary Identification is valid */ public static boolean isDebtorAccSecondaryIdentificationValid(String debtorAccSecondaryIdentification) { if (log.isDebugEnabled()) { @@ -474,6 +474,7 @@ private static boolean checkSortCodeSchemeNameAndIdentificationValidity(String s * Check whether the local instrument is supported. * * @param localInstrument Local Instrument value to validate + * @return Whether the local instrument is valid */ public static boolean validateLocalInstrument(String localInstrument) { ArrayList defaultLocalInstrumentList = new ArrayList<>(Arrays.asList( @@ -497,6 +498,7 @@ public static boolean validateLocalInstrument(String localInstrument) { * Check whether the amount is higher that the max instructed amount allowed by the bank. * * @param instructedAmount Instructed Amount to validate + * @return Whether the instructed amount is valid */ public static boolean validateMaxInstructedAmount(String instructedAmount) { //This is a mandatory configuration in open-banking.xml. Hence can't be null. @@ -511,7 +513,9 @@ public static boolean validateMaxInstructedAmount(String instructedAmount) { * * @param response Response of the request * @param createdConsent Consent response received from service layer - * @return + * @param consentManageData Request Details received + * @param type ConsentType + * @return JSONObject Initiation Response */ public static JSONObject getInitiationResponse(JSONObject response, DetailedConsentResource createdConsent, ConsentManageData consentManageData, String type) { @@ -548,7 +552,9 @@ public static JSONObject getInitiationResponse(JSONObject response, DetailedCons * * @param receiptJSON Initiation of the request * @param consent Consent response received from service layer - * @return + * @param consentManageData Request Details received + * @param type ConsentType + * @return JSONObject Initiation Response */ public static JSONObject getInitiationRetrievalResponse(JSONObject receiptJSON, ConsentResource consent, ConsentManageData consentManageData, String type) { @@ -588,7 +594,7 @@ private static String convertEpochDateTime(long epochTime) { * @param consentId Consent ID * @param consentManageData Request Details recieved * @param type ConsentType - * @return + * @return Constructed Self Link */ public static String constructSelfLink(String consentId, ConsentManageData consentManageData, String type) { @@ -615,7 +621,7 @@ public static String constructSelfLink(String consentId, ConsentManageData conse * Validate the consent ID. * * @param consentId Consent Id to validate - * @return + * @return Whether the consent ID is valid */ public static boolean isConsentIdValid(String consentId) { return (consentId.length() == 36 && Pattern.matches(ConsentExtensionConstants.UUID_REGEX, consentId)); @@ -625,7 +631,7 @@ public static boolean isConsentIdValid(String consentId) { * Validate Expiration Date Time. * * @param expDateVal Expiration Date Time - * @return + * @return Whether the expiration date time is valid */ public static boolean isConsentExpirationTimeValid(String expDateVal) { if (expDateVal == null) { @@ -642,8 +648,8 @@ public static boolean isConsentExpirationTimeValid(String expDateVal) { } /** * Validate whether the date is a valid ISO 8601 format. - * @param dateValue - * @return + * @param dateValue Date value to validate + * @return Whether the date is a valid ISO 8601 format */ public static boolean isValid8601(String dateValue) { try { diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/util/PaymentPayloadValidator.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/util/PaymentPayloadValidator.java index c8b08821..03e4782a 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/util/PaymentPayloadValidator.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/util/PaymentPayloadValidator.java @@ -35,7 +35,7 @@ public class PaymentPayloadValidator { * * @param requestPath Request Path of the request * @param initiation Initiation Object of the request - * @return + * @return JSONObject Validation Response */ public static JSONObject validatePaymentInitiationPayload(String requestPath, JSONObject initiation) { diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/util/jobs/ExpiredConsentStatusUpdateJob.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/util/jobs/ExpiredConsentStatusUpdateJob.java index 3e8c9942..fde76d8a 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/util/jobs/ExpiredConsentStatusUpdateJob.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/util/jobs/ExpiredConsentStatusUpdateJob.java @@ -56,8 +56,8 @@ public class ExpiredConsentStatusUpdateJob implements Job { /** * Method used to enforce periodic statues update of consents. * - * @param jobExecutionContext - * @throws JobExecutionException + * @param jobExecutionContext Job Execution Context + * @throws JobExecutionException if an error occurs while executing the job */ public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { try { @@ -70,6 +70,7 @@ public void execute(JobExecutionContext jobExecutionContext) throws JobExecution /** * Method to update statues of consents. + * @throws ConsentManagementException if an error occurs while updating the consent status */ public static void updateExpiredStatues() throws ConsentManagementException { diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/util/jobs/RetentionDatabaseSyncJob.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/util/jobs/RetentionDatabaseSyncJob.java index dfb36c03..8ea9068e 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/util/jobs/RetentionDatabaseSyncJob.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/util/jobs/RetentionDatabaseSyncJob.java @@ -42,8 +42,8 @@ public class RetentionDatabaseSyncJob implements Job { /** * Method used to enforce sync the temporary retention data. * - * @param jobExecutionContext - * @throws JobExecutionException + * @param jobExecutionContext Job Execution Context + * @throws JobExecutionException if an error occurs while executing the job */ public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { @@ -56,6 +56,7 @@ public void execute(JobExecutionContext jobExecutionContext) throws JobExecution /** * Method to sync the temporary retention data. + * @throws ConsentManagementException if an error occurs while syncing the retention database */ public static void syncRetentionDatabase() throws ConsentManagementException { diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/validate/impl/PaymentSubmissionPayloadValidator.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/validate/impl/PaymentSubmissionPayloadValidator.java index fd187814..421a13b3 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/validate/impl/PaymentSubmissionPayloadValidator.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/validate/impl/PaymentSubmissionPayloadValidator.java @@ -34,7 +34,7 @@ public class PaymentSubmissionPayloadValidator { * * @param submission Submission Request * @param initiation Initiation Request - * @return + * @return JSONObject Validation Response */ public JSONObject validateInitiation(JSONObject submission, JSONObject initiation) { diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/validate/util/ConsentValidatorUtil.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/validate/util/ConsentValidatorUtil.java index f5ba4d9e..2b636063 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/validate/util/ConsentValidatorUtil.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/main/java/com/wso2/openbanking/accelerator/consent/extensions/validate/util/ConsentValidatorUtil.java @@ -44,7 +44,7 @@ public class ConsentValidatorUtil { * * @param str1 First String to validate * @param str2 Second String to validate - * @return + * @return Whether mandatory parameters are same */ public static boolean compareMandatoryParameter(String str1, String str2) { @@ -57,7 +57,7 @@ public static boolean compareMandatoryParameter(String str1, String str2) { * * @param errorCode Error Code * @param errorMessage Error Message - * @return + * @return Validation Result */ public static JSONObject getValidationResult(String errorCode, String errorMessage) { @@ -72,7 +72,7 @@ public static JSONObject getValidationResult(String errorCode, String errorMessa /** * Method to construct the success validation result. * - * @return + * @return Validation Result */ public static JSONObject getSuccessValidationResult() { @@ -146,7 +146,7 @@ public static JSONObject validateCreditorAcc(JSONObject subCreditorAccount, JSON * * @param str1 First String to validate * @param str2 Second String to validate - * @return + * @return Whether optional parameters are same */ public static boolean compareOptionalParameter(String str1, String str2) { @@ -240,7 +240,7 @@ public static List getCOFAPIPathRegexArray() { * Util method to validate the Confirmation of Funds request URI. * * @param uri Request URI - * @return + * @return Whether URI is valid */ public static boolean isCOFURIValid(String uri) { @@ -259,8 +259,8 @@ public static boolean isCOFURIValid(String uri) { * Validate whether consent is expired. * * @param expDateVal Expiration Date Time - * @return - * @throws ConsentException + * @return Whether consent is expired + * @throws ConsentException if an error occurs while parsing expiration date */ public static boolean isConsentExpired(String expDateVal) throws ConsentException { diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/test/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyValidatorTests.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/test/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyValidatorTests.java index 1aefc909..f6afd117 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/test/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyValidatorTests.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.extensions/src/test/java/com/wso2/openbanking/accelerator/consent/extensions/common/idempotency/IdempotencyValidatorTests.java @@ -21,14 +21,18 @@ import com.wso2.openbanking.accelerator.common.config.OpenBankingConfigParser; import com.wso2.openbanking.accelerator.common.exception.ConsentManagementException; import com.wso2.openbanking.accelerator.consent.extensions.internal.ConsentExtensionsDataHolder; +import com.wso2.openbanking.accelerator.consent.extensions.manage.model.ConsentManageData; import com.wso2.openbanking.accelerator.consent.mgt.dao.models.DetailedConsentResource; import com.wso2.openbanking.accelerator.consent.mgt.service.impl.ConsentCoreServiceImpl; +import org.mockito.Mock; import org.mockito.Mockito; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.testng.PowerMockTestCase; import org.testng.Assert; import org.testng.annotations.BeforeClass; +import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.time.OffsetDateTime; @@ -42,14 +46,16 @@ */ @PrepareForTest({OpenBankingConfigParser.class, ConsentExtensionsDataHolder.class}) @PowerMockIgnore("jdk.internal.reflect.*") -public class IdempotencyValidatorTests { +public class IdempotencyValidatorTests extends PowerMockTestCase { + @Mock + private ConsentManageData consentManageData; private ConsentCoreServiceImpl consentCoreServiceImpl; private ArrayList consentIdList; + private Map attributeList; private String consentId; private Map configs; - private static final String IDEMPOTENCY_IS_ENABLED = "Consent.Idempotency.Enabled"; - private static final String IDEMPOTENCY_ALLOWED_TIME = "Consent.Idempotency.AllowedTimeDuration"; + private Map headers; private static final String CLIENT_ID = "testClientId"; private static final String PAYLOAD = "{\n" + @@ -110,12 +116,28 @@ public class IdempotencyValidatorTests { @BeforeClass public void beforeTest() { configs = new HashMap<>(); - configs.put(IDEMPOTENCY_IS_ENABLED, "true"); - configs.put(IDEMPOTENCY_ALLOWED_TIME, "1"); + headers = new HashMap<>(); + headers.put(IdempotencyConstants.X_IDEMPOTENCY_KEY, "123456"); + headers.put(IdempotencyConstants.CONTENT_TYPE_TAG, "application/json"); + + consentManageData = Mockito.mock(ConsentManageData.class); consentCoreServiceImpl = Mockito.mock(ConsentCoreServiceImpl.class); + + consentId = UUID.randomUUID().toString(); + consentIdList = new ArrayList<>(); + consentIdList.add(consentId); + + attributeList = new HashMap<>(); + attributeList.put(consentId, "123456"); + } + + @BeforeMethod + public void beforeMethod() { OpenBankingConfigParser openBankingConfigParserMock = PowerMockito.mock(OpenBankingConfigParser.class); Mockito.doReturn(configs).when(openBankingConfigParserMock).getConfiguration(); + Mockito.doReturn(true).when(openBankingConfigParserMock).isIdempotencyValidationEnabled(); + Mockito.doReturn("1").when(openBankingConfigParserMock).getIdempotencyAllowedTime(); ConsentExtensionsDataHolder consentExtensionsDataHolderMock = PowerMockito .mock(ConsentExtensionsDataHolder.class); @@ -125,22 +147,20 @@ public void beforeTest() { PowerMockito.mockStatic(ConsentExtensionsDataHolder.class); PowerMockito.when(ConsentExtensionsDataHolder.getInstance()).thenReturn(consentExtensionsDataHolderMock); PowerMockito.when(consentExtensionsDataHolderMock.getConsentCoreService()).thenReturn(consentCoreServiceImpl); - - consentId = UUID.randomUUID().toString(); - consentIdList = new ArrayList<>(); - consentIdList.add(consentId); } @Test - public void testValidateIdempotency() throws ConsentManagementException { + public void testValidateIdempotency() throws ConsentManagementException, IdempotencyValidationException { OffsetDateTime offsetDateTime = OffsetDateTime.now(); Mockito.doReturn(consentIdList).when(consentCoreServiceImpl) .getConsentIdByConsentAttributeNameAndValue(Mockito.anyString(), Mockito.anyString()); Mockito.doReturn(getConsent(offsetDateTime.toEpochSecond())).when(consentCoreServiceImpl) .getDetailedConsent(Mockito.anyString()); - IdempotencyValidationResult result = IdempotencyValidator.validateIdempotency("IdempotencyKey", - "123456", PAYLOAD, CLIENT_ID); + Mockito.doReturn(headers).when(consentManageData).getHeaders(); + Mockito.doReturn(CLIENT_ID).when(consentManageData).getClientId(); + Mockito.doReturn(PAYLOAD).when(consentManageData).getPayload(); + IdempotencyValidationResult result = new IdempotencyValidator().validateIdempotency(consentManageData); Assert.assertTrue(result.isIdempotent()); Assert.assertTrue(result.isValid()); @@ -148,74 +168,100 @@ public void testValidateIdempotency() throws ConsentManagementException { Assert.assertEquals(consentId, result.getConsentId()); } - @Test - public void testValidateIdempotencyWithoutIdempotencyKeyName() throws ConsentManagementException { - IdempotencyValidationResult result = IdempotencyValidator - .validateIdempotency(null, "", "", CLIENT_ID); + @Test(expectedExceptions = IdempotencyValidationException.class) + public void testValidateIdempotencyForRequestsWithoutPayload() throws ConsentManagementException, + IdempotencyValidationException { + OffsetDateTime offsetDateTime = OffsetDateTime.now(); - Assert.assertFalse(result.isIdempotent()); + Mockito.doReturn(attributeList).when(consentCoreServiceImpl).getConsentAttributesByName(Mockito.anyString()); + Mockito.doReturn(getConsent(offsetDateTime.toEpochSecond())).when(consentCoreServiceImpl) + .getDetailedConsent(Mockito.anyString()); + Mockito.doReturn(headers).when(consentManageData).getHeaders(); + Mockito.doReturn(CLIENT_ID).when(consentManageData).getClientId(); + Mockito.doReturn("{}").when(consentManageData).getPayload(); + Mockito.doReturn("{}").when(consentManageData).getPayload(); + Mockito.doReturn("/payments/".concat(consentId)).when(consentManageData).getRequestPath(); + new IdempotencyValidator().validateIdempotency(consentManageData); } @Test - public void testValidateIdempotencyWithoutIdempotencyKeyValue() throws ConsentManagementException { - IdempotencyValidationResult result = IdempotencyValidator - .validateIdempotency("IdempotencyKey", null, "", CLIENT_ID); + public void testValidateIdempotencyWithoutIdempotencyKeyValue() throws IdempotencyValidationException { + + Mockito.doReturn(new HashMap<>()).when(consentManageData).getHeaders(); + Mockito.doReturn(CLIENT_ID).when(consentManageData).getClientId(); + Mockito.doReturn(PAYLOAD).when(consentManageData).getPayload(); + IdempotencyValidationResult result = new IdempotencyValidator().validateIdempotency(consentManageData); Assert.assertFalse(result.isIdempotent()); } @Test - public void testValidateIdempotencyWithoutRequest() throws ConsentManagementException { - IdempotencyValidationResult result = IdempotencyValidator - .validateIdempotency("IdempotencyKey", "123456", "", CLIENT_ID); + public void testValidateIdempotencyWithoutRequest() throws IdempotencyValidationException { + Mockito.doReturn(headers).when(consentManageData).getHeaders(); + Mockito.doReturn(CLIENT_ID).when(consentManageData).getClientId(); + Mockito.doReturn("").when(consentManageData).getPayload(); + IdempotencyValidationResult result = new IdempotencyValidator().validateIdempotency(consentManageData); Assert.assertFalse(result.isIdempotent()); } @Test - public void testValidateIdempotencyRetrievingAttributesWithException() throws ConsentManagementException { + public void testValidateIdempotencyRetrievingAttributesWithException() + throws ConsentManagementException, IdempotencyValidationException { Mockito.doThrow(ConsentManagementException.class).when(consentCoreServiceImpl) .getConsentIdByConsentAttributeNameAndValue(Mockito.anyString(), Mockito.anyString()); - IdempotencyValidationResult result = IdempotencyValidator.validateIdempotency("IdempotencyKey", - "123456", "test", CLIENT_ID); + Mockito.doReturn(headers).when(consentManageData).getHeaders(); + Mockito.doReturn(CLIENT_ID).when(consentManageData).getClientId(); + Mockito.doReturn(PAYLOAD).when(consentManageData).getPayload(); + IdempotencyValidationResult result = new IdempotencyValidator().validateIdempotency(consentManageData); Assert.assertFalse(result.isIdempotent()); } @Test - public void testValidateIdempotencyWithoutAttribute() throws ConsentManagementException { + public void testValidateIdempotencyWithoutAttribute() + throws ConsentManagementException, IdempotencyValidationException { Mockito.doReturn(new ArrayList<>()).when(consentCoreServiceImpl) .getConsentIdByConsentAttributeNameAndValue(Mockito.anyString(), Mockito.anyString()); - IdempotencyValidationResult result = IdempotencyValidator.validateIdempotency("IdempotencyKey", - "123456", "test", CLIENT_ID); + Mockito.doReturn(headers).when(consentManageData).getHeaders(); + Mockito.doReturn(CLIENT_ID).when(consentManageData).getClientId(); + Mockito.doReturn(PAYLOAD).when(consentManageData).getPayload(); + IdempotencyValidationResult result = new IdempotencyValidator().validateIdempotency(consentManageData); Assert.assertFalse(result.isIdempotent()); } - @Test(expectedExceptions = ConsentManagementException.class) - public void testValidateIdempotencyWithNullConsentRequest() throws ConsentManagementException { + @Test(expectedExceptions = IdempotencyValidationException.class) + public void testValidateIdempotencyWithNullConsentRequest() + throws ConsentManagementException, IdempotencyValidationException { Mockito.doReturn(consentIdList).when(consentCoreServiceImpl) .getConsentIdByConsentAttributeNameAndValue(Mockito.anyString(), Mockito.anyString()); + Mockito.doReturn(headers).when(consentManageData).getHeaders(); + Mockito.doReturn(CLIENT_ID).when(consentManageData).getClientId(); + Mockito.doReturn(PAYLOAD).when(consentManageData).getPayload(); Mockito.doReturn(null).when(consentCoreServiceImpl).getDetailedConsent(Mockito.anyString()); - IdempotencyValidator.validateIdempotency("IdempotencyKey", - "123456", "test", CLIENT_ID); + new IdempotencyValidator().validateIdempotency(consentManageData); } - @Test(expectedExceptions = ConsentManagementException.class) - public void testValidateIdempotencyWithNonMatchingClientId() throws ConsentManagementException { + @Test(expectedExceptions = IdempotencyValidationException.class) + public void testValidateIdempotencyWithNonMatchingClientId() + throws ConsentManagementException, IdempotencyValidationException { Mockito.doReturn(consentIdList).when(consentCoreServiceImpl) .getConsentIdByConsentAttributeNameAndValue(Mockito.anyString(), Mockito.anyString()); + Mockito.doReturn(headers).when(consentManageData).getHeaders(); + Mockito.doReturn("sampleClientID").when(consentManageData).getClientId(); + Mockito.doReturn(PAYLOAD).when(consentManageData).getPayload(); Mockito.doReturn(null).when(consentCoreServiceImpl).getDetailedConsent(Mockito.anyString()); - IdempotencyValidator.validateIdempotency("IdempotencyKey", - "123456", "test", "sampleClientID"); + new IdempotencyValidator().validateIdempotency(consentManageData); } - @Test(expectedExceptions = ConsentManagementException.class) - public void testValidateIdempotencyAfterAllowedTime() throws ConsentManagementException { + @Test(expectedExceptions = IdempotencyValidationException.class) + public void testValidateIdempotencyAfterAllowedTime() + throws ConsentManagementException, IdempotencyValidationException { OffsetDateTime offsetDateTime = OffsetDateTime.now().minusHours(2); @@ -223,12 +269,15 @@ public void testValidateIdempotencyAfterAllowedTime() throws ConsentManagementEx .getConsentIdByConsentAttributeNameAndValue(Mockito.anyString(), Mockito.anyString()); Mockito.doReturn(getConsent(offsetDateTime.toEpochSecond())).when(consentCoreServiceImpl) .getDetailedConsent(Mockito.anyString()); - IdempotencyValidator.validateIdempotency("IdempotencyKey", - "123456", PAYLOAD, CLIENT_ID); + Mockito.doReturn(headers).when(consentManageData).getHeaders(); + Mockito.doReturn(CLIENT_ID).when(consentManageData).getClientId(); + Mockito.doReturn(PAYLOAD).when(consentManageData).getPayload(); + new IdempotencyValidator().validateIdempotency(consentManageData); } - @Test(expectedExceptions = ConsentManagementException.class) - public void testValidateIdempotencyWithNonMatchingPayload() throws ConsentManagementException { + @Test(expectedExceptions = IdempotencyValidationException.class) + public void testValidateIdempotencyWithNonMatchingPayload() + throws ConsentManagementException, IdempotencyValidationException { OffsetDateTime offsetDateTime = OffsetDateTime.now(); @@ -236,8 +285,10 @@ public void testValidateIdempotencyWithNonMatchingPayload() throws ConsentManage .getConsentIdByConsentAttributeNameAndValue(Mockito.anyString(), Mockito.anyString()); Mockito.doReturn(getConsent(offsetDateTime.toEpochSecond())).when(consentCoreServiceImpl) .getDetailedConsent(Mockito.anyString()); - IdempotencyValidator.validateIdempotency("IdempotencyKey", "123456", - DIFFERENT_PAYLOAD, CLIENT_ID); + Mockito.doReturn(headers).when(consentManageData).getHeaders(); + Mockito.doReturn(CLIENT_ID).when(consentManageData).getClientId(); + Mockito.doReturn(DIFFERENT_PAYLOAD).when(consentManageData).getPayload(); + new IdempotencyValidator().validateIdempotency(consentManageData); } diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/pom.xml b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/pom.xml index 33e724c8..6b087782 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/pom.xml +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/pom.xml @@ -16,13 +16,11 @@ ~ specific language governing permissions and limitations ~ under the License. --> - + open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../../pom.xml 4.0.0 diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/ConsentCoreDAO.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/ConsentCoreDAO.java index 39609302..55a21a33 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/ConsentCoreDAO.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/ConsentCoreDAO.java @@ -217,7 +217,7 @@ ConsentAttributes getConsentAttributes(Connection connection, String consentID) * @param connection connection object * @param attributeName attribute name * @return a map with the conesnt ID and the related attribute value - * @throws OBConsentDataRetrievalException + * @throws OBConsentDataRetrievalException thrown if a database error occurs */ Map getConsentAttributesByName(Connection connection, String attributeName) throws OBConsentDataRetrievalException; @@ -229,7 +229,7 @@ Map getConsentAttributesByName(Connection connection, String att * @param attributeName attribute name * @param attributeValue attribute value * @return Consent ID related to the given attribute key and value - * @throws OBConsentDataRetrievalException + * @throws OBConsentDataRetrievalException `thrown if a database error occurs */ ArrayList getConsentIdByConsentAttributeNameAndValue(Connection connection, String attributeName, String attributeValue) @@ -424,7 +424,7 @@ boolean updateConsentValidityTime(Connection connection, String consentID, long * relevant to each history record * @param amendmentReason A string that indicates the reason that caused the amendment of the consent * @return true if insertion successful - * @throws OBConsentDataUpdationException + * @throws OBConsentDataInsertionException thrown if any error occurs in the process */ boolean storeConsentAmendmentHistory(Connection connection, String historyID, long timestamp, String recordID, String consentDataType, String changedAttributesJsonString, String amendmentReason) diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/queries/ConsentMgtCommonDBQueries.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/queries/ConsentMgtCommonDBQueries.java index fbbec890..6f880a6f 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/queries/ConsentMgtCommonDBQueries.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/queries/ConsentMgtCommonDBQueries.java @@ -325,8 +325,8 @@ public String getGetConsentHistoryPreparedStatement(String whereClause) { /** * SQL query for delete consent attributes. - * @param executeOnRetentionTables - * @return + * @param executeOnRetentionTables whether to execute on retention tables + * @return SQL query for delete consent attributes */ public String getDeleteConsentAttributeByConsentIdPreparedStatement(boolean executeOnRetentionTables) { @@ -340,8 +340,8 @@ public String getDeleteConsentAttributeByConsentIdPreparedStatement(boolean exec /** * SQL query for delete consent file. - * @param executeOnRetentionTables - * @return + * @param executeOnRetentionTables whether to execute on retention tables + * @return SQL query for delete consent file */ public String getDeleteConsentFileResourcePreparedStatement(boolean executeOnRetentionTables) { @@ -355,8 +355,8 @@ public String getDeleteConsentFileResourcePreparedStatement(boolean executeOnRet /** * SQL query for delete consent mapping by auth id. - * @param executeOnRetentionTables - * @return + * @param executeOnRetentionTables whether to execute on retention tables + * @return SQL query for delete consent mapping by auth id */ public String getDeleteConsentMappingByAuthIdPreparedStatement(boolean executeOnRetentionTables) { @@ -371,8 +371,8 @@ public String getDeleteConsentMappingByAuthIdPreparedStatement(boolean executeOn /** * SQL query for delete auth resource. - * @param executeOnRetentionTables - * @return + * @param executeOnRetentionTables whether to execute on retention tables + * @return SQL query for delete auth resource */ public String getDeleteAuthorizationResourcePreparedStatement(boolean executeOnRetentionTables) { @@ -386,8 +386,8 @@ public String getDeleteAuthorizationResourcePreparedStatement(boolean executeOnR /** * SQL query for consent status audit record. - * @param executeOnRetentionTables - * @return + * @param executeOnRetentionTables whether to execute on retention tables + * @return SQL query for consent status audit record */ public String getDeleteConsentStatusAuditRecordsPreparedStatement(boolean executeOnRetentionTables) { @@ -401,8 +401,8 @@ public String getDeleteConsentStatusAuditRecordsPreparedStatement(boolean execut /** * SQL query for delete consent. - * @param executeOnRetentionTables - * @return + * @param executeOnRetentionTables whether to execute on retention tables + * @return SQL query for delete consent */ public String getDeleteConsentPreparedStatement(boolean executeOnRetentionTables) { @@ -416,8 +416,8 @@ public String getDeleteConsentPreparedStatement(boolean executeOnRetentionTables /** * SQL query for get list of consent_ids. - * @param fetchFromRetentionTables - * @return + * @param fetchFromRetentionTables whether to fetch from retention tables + * @return SQL query for get list of consent_ids */ public String getListOfConsentIdsPreparedStatement(boolean fetchFromRetentionTables) { @@ -432,10 +432,10 @@ public String getListOfConsentIdsPreparedStatement(boolean fetchFromRetentionTab /** * SQL query for get consent status audit records by consentIds. * @param whereClause conditions - * @param shouldLimit - * @param shouldOffset - * @param fetchFromRetentionTables - * @return + * @param shouldLimit whether to consider the Limit parameter + * @param shouldOffset whether to consider the Offset parameter + * @param fetchFromRetentionTables whether to fetch from retention tables + * @return SQL query for get consent status audit records by consentIds */ public String getConsentStatusAuditRecordsByConsentIdsPreparedStatement(String whereClause, boolean shouldLimit, boolean shouldOffset, diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/queries/ConsentMgtMssqlDBQueries.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/queries/ConsentMgtMssqlDBQueries.java index f164effa..d9b68208 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/queries/ConsentMgtMssqlDBQueries.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/queries/ConsentMgtMssqlDBQueries.java @@ -145,8 +145,8 @@ public String getSearchConsentsPreparedStatement(String whereClause, boolean sho /** * SQL query for delete consent mapping by auth id. - * @param executeOnRetentionTables - * @return + * @param executeOnRetentionTables execute on retention tables + * @return SQL query */ public String getDeleteConsentMappingByAuthIdPreparedStatement(boolean executeOnRetentionTables) { @@ -163,10 +163,10 @@ public String getDeleteConsentMappingByAuthIdPreparedStatement(boolean executeOn /** * SQL query for get consent status audit records by consentIds. * @param whereClause conditions - * @param shouldLimit - * @param shouldOffset - * @param fetchFromRetentionTables - * @return + * @param shouldLimit limit + * @param shouldOffset offset + * @param fetchFromRetentionTables fetch from retention tables + * @return SQL query */ public String getConsentStatusAuditRecordsByConsentIdsPreparedStatement(String whereClause, boolean shouldLimit, boolean shouldOffset, diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/queries/ConsentMgtOracleDBQueries.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/queries/ConsentMgtOracleDBQueries.java index 1de250aa..d321977c 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/queries/ConsentMgtOracleDBQueries.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/queries/ConsentMgtOracleDBQueries.java @@ -148,8 +148,8 @@ public String getSearchConsentsPreparedStatement(String whereClause, boolean sho /** * SQL query for delete consent mapping by auth id. - * @param executeOnRetentionTables - * @return + * @param executeOnRetentionTables whether to execute on retention tables + * @return SQL query to delete consent mapping by auth id */ public String getDeleteConsentMappingByAuthIdPreparedStatement(boolean executeOnRetentionTables) { @@ -166,10 +166,10 @@ public String getDeleteConsentMappingByAuthIdPreparedStatement(boolean executeOn /** * SQL query for get consent status audit records by consentIds. * @param whereClause conditions - * @param shouldLimit - * @param shouldOffset - * @param fetchFromRetentionTables - * @return + * @param shouldLimit whether limit should be applied + * @param shouldOffset whether offset should be applied + * @param fetchFromRetentionTables whether to fetch from retention tables + * @return SQL query to retrieve consent status audit records by consentIds */ public String getConsentStatusAuditRecordsByConsentIdsPreparedStatement(String whereClause, boolean shouldLimit, boolean shouldOffset, diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/queries/ConsentMgtPostgresDBQueries.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/queries/ConsentMgtPostgresDBQueries.java index 8b905623..ec5af0d2 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/queries/ConsentMgtPostgresDBQueries.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/queries/ConsentMgtPostgresDBQueries.java @@ -212,8 +212,8 @@ public String getSearchConsentsPreparedStatement(String whereClause, boolean sho /** * SQL query for delete consent mapping by auth id. - * @param executeOnRetentionTables - * @return + * @param executeOnRetentionTables flag to execute on retention tables + * @return SQL query for delete consent mapping by auth id */ public String getDeleteConsentMappingByAuthIdPreparedStatement(boolean executeOnRetentionTables) { diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/utils/ConsentDAOUtils.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/utils/ConsentDAOUtils.java index c928065d..5974f4cb 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/utils/ConsentDAOUtils.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.dao/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/dao/utils/ConsentDAOUtils.java @@ -160,8 +160,8 @@ public static String constructAuthSearchPreparedStatement(Map ap /** * Method to construct where clause for consent status audit search condition. - * @param consentIDs - * @return + * @param consentIDs List of consent IDs + * @return Filter condition for consent status audit */ public static String constructConsentAuditRecordSearchPreparedStatement(ArrayList consentIDs) { @@ -232,8 +232,8 @@ public static TreeMap determineOrderOfParamsToSet(String pre /** * Method to construct excluded statuses search condition. * - * @param statusesEligibleForExpiration - * @return + * @param statusesEligibleForExpiration List of statuses eligible for expiration + * @return Filter condition for excluded statuses */ public static String constructStatusesEligibleForExpirationCondition(List statusesEligibleForExpiration) { diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.service/pom.xml b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.service/pom.xml index 029fce11..c228a287 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.service/pom.xml +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.service/pom.xml @@ -17,13 +17,11 @@ ~ under the License. --> - + open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../../pom.xml 4.0.0 diff --git a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.service/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/service/ConsentCoreService.java b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.service/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/service/ConsentCoreService.java index cca72fbd..6568d590 100644 --- a/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.service/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/service/ConsentCoreService.java +++ b/open-banking-accelerator/components/consent-management/com.wso2.openbanking.accelerator.consent.mgt.service/src/main/java/com/wso2/openbanking/accelerator/consent/mgt/service/ConsentCoreService.java @@ -218,6 +218,7 @@ boolean revokeConsentWithReason(String consentID, String revokedConsentStatus, S * @param consentType consent type * @param applicableStatusToRevoke the status that a consent should have for revoking * @param revokedConsentStatus the status should be updated the consent with after revoking + * @param shouldRevokeTokens the check to revoke tokens or not when revoking consent * @return returns true if successful * @throws ConsentManagementException thrown if an error occurs in the process */ @@ -368,6 +369,11 @@ boolean reAuthorizeExistingAuthResource(String consentID, String authID, String * @param consentID consent ID * @param userID user ID * @param accountIDsMapWithPermissions account IDs with relative permissions + * @param currentConsentStatus current status of the consent for creating audit record + * @param newConsentStatus new consent status after re authorization + * @param newExistingAuthStatus new status of the existing authorizations + * @param newAuthStatus new status of the new authorization + * @param newAuthType new authorization type * @return true if all operations are successful * @throws ConsentManagementException thrown if any error occurs in the process */ @@ -406,6 +412,7 @@ AuthorizationResource createConsentAuthorization(AuthorizationResource authoriza * used to represent permissions related to each accountID. * * @param authID authorization ID + * @param accountIDsMapWithPermissions account IDs with relative permissions * @return returns the list of created consent mapping resources * @throws ConsentManagementException thrown if any error occurs */ @@ -508,6 +515,7 @@ ArrayList searchDetailedConsents(ArrayList cons /** * This method is used to bind user and accounts to the consent. * + * @param consentResource consent resource * @param userID user ID * @param authID ID of the authorization resource * @param accountIDsMapWithPermissions account IDs list with relevant permissions @@ -523,6 +531,7 @@ boolean bindUserAccountsToConsent(ConsentResource consentResource, String userID /** * This method is used to bind user and accounts to the consent where permissions for each account is not relevant. * + * @param consentResource consent resource * @param userID user ID * @param authID ID of the authorization resource * @param accountIDs account IDs list @@ -544,6 +553,7 @@ public boolean bindUserAccountsToConsent(ConsentResource consentResource, String * @param consentID consent ID * @param userID user ID * @return a list of authorization resources + * @throws ConsentManagementException thrown if any error occurs in the process */ ArrayList searchAuthorizations(String consentID, String userID) throws ConsentManagementException; @@ -553,6 +563,7 @@ ArrayList searchAuthorizations(String consentID, String u * * @param consentID consent ID * @return a list of authorization resources + * @throws ConsentManagementException thrown if any error occurs in the process */ ArrayList searchAuthorizations(String consentID) throws ConsentManagementException; @@ -562,6 +573,7 @@ ArrayList searchAuthorizations(String consentID) * * @param userID user ID * @return a list of authorization resources + * @throws ConsentManagementException thrown if any error occurs in the process */ ArrayList searchAuthorizationsForUser(String userID) throws ConsentManagementException; @@ -584,10 +596,10 @@ ConsentResource amendConsentData(String consentID, String consentReceipt, Long c /** * This method is used to update status of the consent for a given consentId and userId. - * @param consentId - * @param newConsentStatus - * @return - * @throws ConsentManagementException + * @param consentId consent ID + * @param newConsentStatus new consent status + * @return updated consent resource + * @throws ConsentManagementException thrown if any error occurs in the process */ ConsentResource updateConsentStatus(String consentId, String newConsentStatus) throws ConsentManagementException; @@ -595,9 +607,9 @@ ConsentResource updateConsentStatus(String consentId, String newConsentStatus) /** * This method is used to fetch consents which has a expiring time as a consent attribute * (eligible for expiration). - * @param statusesEligibleForExpiration - * @return - * @throws ConsentManagementException + * @param statusesEligibleForExpiration statuses eligible for expiration + * @return list of consents eligible for expiration + * @throws ConsentManagementException thrown if any error occurs in the process */ ArrayList getConsentsEligibleForExpiration(String statusesEligibleForExpiration) throws ConsentManagementException; @@ -620,7 +632,6 @@ AuthorizationResource updateAuthorizationStatus(String authorizationId, String n * * @param authorizationID the authorization ID of the authorization resource that needs to be updated * @param userID the user of the authorization resource - * @return * @throws ConsentManagementException thrown if any error occurs while updating */ void updateAuthorizationUser(String authorizationID, String userID) @@ -677,8 +688,8 @@ Map getConsentAmendmentHistoryData(String consen /** * This method is used to sync the retention database with purged consents from consent database. - * @return - * @throws ConsentManagementException + * @return true if the sync is successful + * @throws ConsentManagementException thrown if any error occurs in the process */ boolean syncRetentionDatabaseWithPurgedConsent() throws ConsentManagementException; diff --git a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/pom.xml b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/pom.xml index 75655e64..dac6381b 100644 --- a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/pom.xml +++ b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/pom.xml @@ -19,7 +19,7 @@ open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../../pom.xml 4.0.0 diff --git a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/dao/AggregatedPollingDAO.java b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/dao/AggregatedPollingDAO.java index 8f98a2ad..26325d13 100644 --- a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/dao/AggregatedPollingDAO.java +++ b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/dao/AggregatedPollingDAO.java @@ -38,7 +38,7 @@ public interface AggregatedPollingDAO { * @param notificationId Notification ID to update * @param notificationStatus Notification status to update * @return Update is success or not - * @throws OBEventNotificationException + * @throws OBEventNotificationException Exception when updating notification status by ID */ Boolean updateNotificationStatusById(String notificationId, String notificationStatus) throws OBEventNotificationException; @@ -48,7 +48,7 @@ Boolean updateNotificationStatusById(String notificationId, String notificationS * * @param notificationError Notification error details * @return Stored event notifications error details - * @throws OBEventNotificationException + * @throws OBEventNotificationException Exception when storing event notifications error details */ Map storeErrorNotification(NotificationError notificationError) throws OBEventNotificationException; @@ -60,7 +60,7 @@ Map storeErrorNotification(NotificationError notifica * @param status Notification status to retrieve * @param max Maximum number of notifications to retrieve * @return List of notifications by client and status - * @throws OBEventNotificationException + * @throws OBEventNotificationException Exception when retrieving notifications by client ID and status */ List getNotificationsByClientIdAndStatus(String clientId, String status, int max) throws OBEventNotificationException; @@ -70,7 +70,7 @@ List getNotificationsByClientIdAndStatus(String clientId, Strin * * @param notificationId Notification ID to retrieve * @return List of notifications by notification ID - * @throws OBEventNotificationException + * @throws OBEventNotificationException Exception when retrieving notifications by notification ID */ List getEventsByNotificationID(String notificationId) throws OBEventNotificationException; @@ -79,7 +79,7 @@ List getNotificationsByClientIdAndStatus(String clientId, Strin * * @param status Notification status to retrieve * @return List of notifications by status - * @throws OBEventNotificationException + * @throws OBEventNotificationException Exception when retrieving notifications by status */ List getNotificationsByStatus(String status) throws OBEventNotificationException; @@ -89,7 +89,7 @@ List getNotificationsByClientIdAndStatus(String clientId, Strin * @param clientId Client ID to retrieve notifications * @param eventStatus Notification status to retrieve * @return List of notifications by status and client id - * @throws OBEventNotificationException + * @throws OBEventNotificationException Exception when retrieving notification count by client ID and status */ int getNotificationCountByClientIdAndStatus(String clientId, String eventStatus) throws OBEventNotificationException; @@ -99,7 +99,7 @@ int getNotificationCountByClientIdAndStatus(String clientId, String eventStatus) * * @param notificationId Notification ID to retrieve * @return Notification status by notification ID - * @throws OBEventNotificationException + * @throws OBEventNotificationException Exception when retrieving notification status */ boolean getNotificationStatus(String notificationId) throws OBEventNotificationException; } diff --git a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/dao/EventPublisherDAO.java b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/dao/EventPublisherDAO.java index a410b770..0ff62185 100644 --- a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/dao/EventPublisherDAO.java +++ b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/dao/EventPublisherDAO.java @@ -36,7 +36,7 @@ public interface EventPublisherDAO { * @param notificationDTO Notification details DTO * @param eventsList List of notification events * @return NotificationID of the saved notification. - * @throws OBEventNotificationException + * @throws OBEventNotificationException Exception when persisting event notification data */ String persistEventNotification(Connection connection, NotificationDTO notificationDTO, ArrayList eventsList) throws OBEventNotificationException; diff --git a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/dao/EventSubscriptionDAO.java b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/dao/EventSubscriptionDAO.java index 5e1fd28d..dc41501e 100644 --- a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/dao/EventSubscriptionDAO.java +++ b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/dao/EventSubscriptionDAO.java @@ -35,7 +35,7 @@ public interface EventSubscriptionDAO { * @param connection Database connection. * @param eventSubscription EventSubscription object. * @return EventSubscription object. - * @throws OBEventNotificationException + * @throws OBEventNotificationException Exception when storing event subscription */ EventSubscription storeEventSubscription(Connection connection, EventSubscription eventSubscription) throws OBEventNotificationException; @@ -47,7 +47,7 @@ EventSubscription storeEventSubscription(Connection connection, EventSubscriptio * @param subscriptionId Subscription ID. * @param eventTypes Event types to be stored. * @return List of strings with subscribed event types. - * @throws OBEventNotificationException + * @throws OBEventNotificationException Exception when storing subscribed event types */ List storeSubscribedEventTypes(Connection connection, String subscriptionId, List eventTypes) throws OBEventNotificationException; @@ -58,7 +58,7 @@ List storeSubscribedEventTypes(Connection connection, String subscriptio * @param connection Database connection. * @param subscriptionId Subscription ID. * @return EventSubscription model. - * @throws OBEventNotificationException + * @throws OBEventNotificationException Exception when retrieving event subscription by subscription ID */ EventSubscription getEventSubscriptionBySubscriptionId(Connection connection, String subscriptionId) throws OBEventNotificationException; @@ -69,7 +69,7 @@ EventSubscription getEventSubscriptionBySubscriptionId(Connection connection, St * @param connection Database connection. * @param clientId Client ID. * @return List of EventSubscription models. - * @throws OBEventNotificationException + * @throws OBEventNotificationException Exception when retrieving event subscriptions by client ID */ List getEventSubscriptionsByClientId(Connection connection, String clientId) throws OBEventNotificationException; @@ -80,7 +80,7 @@ List getEventSubscriptionsByClientId(Connection connection, S * @param connection Database connection. * @param eventType Event type that need to be subscribed by the retrieving subscriptions. * @return List of EventSubscription models. - * @throws OBEventNotificationException + * @throws OBEventNotificationException Exception when retrieving event subscriptions by event type */ List getEventSubscriptionsByEventType(Connection connection, String eventType) throws OBEventNotificationException; @@ -91,7 +91,7 @@ List getEventSubscriptionsByEventType(Connection connection, * @param connection Database connection. * @param eventSubscription eventSubscription object. * @return true if update was successful. - * @throws OBEventNotificationException + * @throws OBEventNotificationException Exception when updating event subscription */ Boolean updateEventSubscription(Connection connection, EventSubscription eventSubscription) throws OBEventNotificationException; @@ -102,7 +102,7 @@ Boolean updateEventSubscription(Connection connection, EventSubscription eventSu * @param connection Database connection. * @param subscriptionId Subscription ID. * @return true if deletion was successful. - * @throws OBEventNotificationException + * @throws OBEventNotificationException Exception when deleting event subscription */ Boolean deleteEventSubscription(Connection connection, String subscriptionId) throws OBEventNotificationException; @@ -112,7 +112,7 @@ Boolean updateEventSubscription(Connection connection, EventSubscription eventSu * @param connection Database connection. * @param subscriptionId subscription ID. * @return true if deletion was successful. - * @throws OBEventNotificationException + * @throws OBEventNotificationException Exception when deleting subscribed event types */ Boolean deleteSubscribedEventTypes(Connection connection, String subscriptionId) throws OBEventNotificationException; diff --git a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/handler/DefaultEventPollingServiceHandler.java b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/handler/DefaultEventPollingServiceHandler.java index 905a9802..9372f04d 100644 --- a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/handler/DefaultEventPollingServiceHandler.java +++ b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/handler/DefaultEventPollingServiceHandler.java @@ -52,7 +52,7 @@ public void setEventPollingService(EventPollingService eventPollingService) { /** * This method is used to Poll Events as per request params. * @param eventPollingRequest JSON request for event polling - * @return + * @return EventPollingResponse */ public EventPollingResponse pollEvents(JSONObject eventPollingRequest) { diff --git a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/internal/EventNotificationComponent.java b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/internal/EventNotificationComponent.java index aa7a95c1..7b813677 100644 --- a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/internal/EventNotificationComponent.java +++ b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/internal/EventNotificationComponent.java @@ -63,6 +63,7 @@ protected void activate(ComponentContext context) { /** * Setters for the descendent OSGI services of the EventNotificationComponent. * This is added to run the EventNotification OSGI component after the Common module + * @param openBankingConfigurationService OpenBankingConfigurationService */ @Reference( service = OpenBankingConfigurationService.class, @@ -89,6 +90,10 @@ public void unsetConfigService(OpenBankingConfigurationService openBankingConfig unbind = "unsetOAuth2Service" ) + /** + * Setters for the descendent OSGI services of the EventNotificationComponent. + * @param oAuth2Service OAuth2Service + */ public void setOAuth2Service(OAuth2Service oAuth2Service) { } diff --git a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/model/Notification.java b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/model/Notification.java index fba9b08e..1a7aacf6 100644 --- a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/model/Notification.java +++ b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/model/Notification.java @@ -111,7 +111,12 @@ public void setIss(String iss) { /** * This method is to convert the class to a JSONObject. - **/ + * @param notification Notification + * @return JSONObject + * @throws IOException IOException when converting the class to JSONObject + * @throws JOSEException JOSEException when converting the class to JSONObject + * @throws IdentityOAuth2Exception IdentityOAuth2Exception when converting the class to JSONObject + */ public static JsonNode getJsonNode(Notification notification) throws IOException, JOSEException, IdentityOAuth2Exception { ObjectMapper objectMapper = new ObjectMapper(); diff --git a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/realtime/service/RealtimeEventNotificationRequestGenerator.java b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/realtime/service/RealtimeEventNotificationRequestGenerator.java index c996b09c..f9e6bf89 100644 --- a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/realtime/service/RealtimeEventNotificationRequestGenerator.java +++ b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/realtime/service/RealtimeEventNotificationRequestGenerator.java @@ -32,6 +32,8 @@ public interface RealtimeEventNotificationRequestGenerator { * This method is to generate realtime event notification payload. To generate custom values * for the body this method should be extended. * + * @param notificationDTO Notification details DTO + * @param eventSET Event set * @return String payload */ String getRealtimeEventNotificationPayload(NotificationDTO notificationDTO, String eventSET); @@ -40,7 +42,7 @@ public interface RealtimeEventNotificationRequestGenerator { * This method is to generate realtime event notification request headers. To generate custom values * for the body this method should be extended. * - * @return Map headers + * @return Map of headers */ Map getAdditionalHeaders(); } diff --git a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/service/EventCreationService.java b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/service/EventCreationService.java index 025984b6..3ccc63ec 100644 --- a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/service/EventCreationService.java +++ b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/service/EventCreationService.java @@ -51,7 +51,7 @@ public class EventCreationService { * notifications for event polling request. * @param notificationCreationDTO Notification Creation DTO * @return Event Response - * @throws OBEventNotificationException + * @throws OBEventNotificationException Exception when persisting event notification data */ public String publishOBEventNotification(NotificationCreationDTO notificationCreationDTO) throws OBEventNotificationException { diff --git a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/service/EventNotificationGenerator.java b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/service/EventNotificationGenerator.java index 4eb6dc9c..8b0e50ea 100644 --- a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/service/EventNotificationGenerator.java +++ b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/service/EventNotificationGenerator.java @@ -39,7 +39,7 @@ public interface EventNotificationGenerator { * @param notificationEventList List of notification events * * @return Event Notification Body - * @throws OBEventNotificationException + * @throws OBEventNotificationException Exception when generating event notification body */ Notification generateEventNotificationBody(NotificationDTO notificationDTO, List notificationEventList) throws OBEventNotificationException; diff --git a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/service/EventPollingService.java b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/service/EventPollingService.java index aa7495d0..8490a9f8 100644 --- a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/service/EventPollingService.java +++ b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/service/EventPollingService.java @@ -52,7 +52,7 @@ public class EventPollingService { * event polling request. * @param eventPollingDTO Event polling request DTO * @return AggregatedPollingResponse Aggregated Polling Response - * @throws OBEventNotificationException + * @throws OBEventNotificationException Exception when polling events */ public AggregatedPollingResponse pollEvents(EventPollingDTO eventPollingDTO) throws OBEventNotificationException { diff --git a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/service/EventSubscriptionService.java b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/service/EventSubscriptionService.java index a0b84125..1d561c01 100644 --- a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/service/EventSubscriptionService.java +++ b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/service/EventSubscriptionService.java @@ -44,7 +44,7 @@ public class EventSubscriptionService { * * @param eventSubscription event subscription object that needs to be persisted * @return event subscription object that is persisted - * @throws OBEventNotificationException + * @throws OBEventNotificationException if an error occurred while persisting the event subscription */ public EventSubscription createEventSubscription(EventSubscription eventSubscription) throws OBEventNotificationException { @@ -80,7 +80,7 @@ public EventSubscription createEventSubscription(EventSubscription eventSubscrip * * @param subscriptionId subscription id of the event subscription * @return event subscription object that is retrieved - * @throws OBEventNotificationException + * @throws OBEventNotificationException if an error occurred while retrieving the event subscription */ public EventSubscription getEventSubscriptionBySubscriptionId(String subscriptionId) throws OBEventNotificationException { @@ -104,7 +104,7 @@ public EventSubscription getEventSubscriptionBySubscriptionId(String subscriptio * * @param clientId client id of the event subscription * @return list of event subscriptions that are retrieved - * @throws OBEventNotificationException + * @throws OBEventNotificationException if an error occurred while retrieving the event subscriptions */ public List getEventSubscriptionsByClientId(String clientId) throws OBEventNotificationException { @@ -126,7 +126,7 @@ public List getEventSubscriptionsByClientId(String clientId) * * @param eventType event type that needs to be subscribed by the retrieving event subscriptions. * @return list of event subscriptions that are retrieved - * @throws OBEventNotificationException + * @throws OBEventNotificationException if an error occurred while retrieving the event subscriptions */ public List getEventSubscriptionsByClientIdAndEventType(String eventType) throws OBEventNotificationException { @@ -149,7 +149,7 @@ public List getEventSubscriptionsByClientIdAndEventType(Strin * * @param eventSubscription event subscription object that needs to be updated * @return true if the event subscription is updated successfully - * @throws OBEventNotificationException + * @throws OBEventNotificationException if an error occurred while updating the event subscription */ public Boolean updateEventSubscription(EventSubscription eventSubscription) throws OBEventNotificationException { @@ -212,7 +212,7 @@ public Boolean updateEventSubscription(EventSubscription eventSubscription) * * @param subscriptionId subscription id of the event subscription * @return true if the event subscription is deleted successfully - * @throws OBEventNotificationException + * @throws OBEventNotificationException if an error occurred while deleting the event subscription */ public Boolean deleteEventSubscription(String subscriptionId) throws OBEventNotificationException { diff --git a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/util/EventNotificationServiceUtil.java b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/util/EventNotificationServiceUtil.java index 4e0fd1eb..a83a9cc7 100644 --- a/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/util/EventNotificationServiceUtil.java +++ b/open-banking-accelerator/components/event-notifications/com.wso2.openbanking.accelerator.event.notifications.service/src/main/java/com/wso2/openbanking/accelerator/event/notifications/service/util/EventNotificationServiceUtil.java @@ -92,7 +92,7 @@ public static String getCustomNotificationPayload(JsonNode jsonNode) { * Method to get event JSON from eventInformation payload string. * @param eventInformation String event Information * @return JSONObject converted event json - * @throws ParseException + * @throws ParseException Exception when parsing event information */ public static JSONObject getEventJSONFromString(String eventInformation) throws ParseException { @@ -103,7 +103,7 @@ public static JSONObject getEventJSONFromString(String eventInformation) throws /** * Validate if the client ID is existing. * @param clientId client ID of the TPP - * @throws OBEventNotificationException + * @throws OBEventNotificationException Exception when validating client ID */ @Generated(message = "Excluded since this needs OAuth2Util service provider") public static void validateClientId(String clientId) throws OBEventNotificationException { diff --git a/open-banking-accelerator/components/ob-throttler/com.wso2.openbanking.accelerator.throttler.dao/pom.xml b/open-banking-accelerator/components/ob-throttler/com.wso2.openbanking.accelerator.throttler.dao/pom.xml index 13fb7f64..65cccb6c 100644 --- a/open-banking-accelerator/components/ob-throttler/com.wso2.openbanking.accelerator.throttler.dao/pom.xml +++ b/open-banking-accelerator/components/ob-throttler/com.wso2.openbanking.accelerator.throttler.dao/pom.xml @@ -16,13 +16,11 @@ ~ specific language governing permissions and limitations ~ under the License. --> - + open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../../pom.xml 4.0.0 diff --git a/open-banking-accelerator/components/ob-throttler/com.wso2.openbanking.accelerator.throttler.service/pom.xml b/open-banking-accelerator/components/ob-throttler/com.wso2.openbanking.accelerator.throttler.service/pom.xml index d02d7c8d..e690e52d 100644 --- a/open-banking-accelerator/components/ob-throttler/com.wso2.openbanking.accelerator.throttler.service/pom.xml +++ b/open-banking-accelerator/components/ob-throttler/com.wso2.openbanking.accelerator.throttler.service/pom.xml @@ -16,13 +16,11 @@ ~ specific language governing permissions and limitations ~ under the License. --> - + open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../../pom.xml 4.0.0 diff --git a/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.application.info.endpoint/pom.xml b/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.application.info.endpoint/pom.xml index 3fbb955c..f8483079 100755 --- a/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.application.info.endpoint/pom.xml +++ b/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.application.info.endpoint/pom.xml @@ -17,13 +17,11 @@ ~ under the License. --> - + open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../../pom.xml 4.0.0 diff --git a/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.ciba.authentication.endpoint/pom.xml b/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.ciba.authentication.endpoint/pom.xml index 57603425..3a28f7bc 100644 --- a/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.ciba.authentication.endpoint/pom.xml +++ b/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.ciba.authentication.endpoint/pom.xml @@ -18,7 +18,7 @@ open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../../pom.xml 4.0.0 diff --git a/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.consent.endpoint/pom.xml b/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.consent.endpoint/pom.xml index 80248e96..0b131351 100644 --- a/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.consent.endpoint/pom.xml +++ b/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.consent.endpoint/pom.xml @@ -17,15 +17,13 @@ ~ under the License. --> - + 4.0.0 open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../../pom.xml diff --git a/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.dcr.endpoint/pom.xml b/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.dcr.endpoint/pom.xml index 576a7cea..067eadc7 100644 --- a/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.dcr.endpoint/pom.xml +++ b/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.dcr.endpoint/pom.xml @@ -16,13 +16,11 @@ ~ specific language governing permissions and limitations ~ under the License. --> - + open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../../pom.xml 4.0.0 diff --git a/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.dcr.endpoint/src/main/java/com/wso2/openbanking/accelerator/identity/dcr/endpoint/impl/util/RegistrationUtils.java b/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.dcr.endpoint/src/main/java/com/wso2/openbanking/accelerator/identity/dcr/endpoint/impl/util/RegistrationUtils.java index fbb3749c..158f4008 100644 --- a/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.dcr.endpoint/src/main/java/com/wso2/openbanking/accelerator/identity/dcr/endpoint/impl/util/RegistrationUtils.java +++ b/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.dcr.endpoint/src/main/java/com/wso2/openbanking/accelerator/identity/dcr/endpoint/impl/util/RegistrationUtils.java @@ -249,7 +249,11 @@ public static void addAttributes(Map requestAttributes, alteredAttributes.put(entry.getKey().toString(), gson.toJson(entry.getValue())); } else { //remove unnecessary inverted commas. - alteredAttributes.put(entry.getKey().toString(), entry.getValue().toString()); + if (entry.getValue() != null) { + // This is to handle optional nullable params. + // Ex: "software_on_behalf_of_org":null + alteredAttributes.put(entry.getKey().toString(), entry.getValue().toString()); + } } } } diff --git a/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.dcr.endpoint/src/main/java/com/wso2/openbanking/accelerator/identity/dcr/endpoint/impl/util/ResponseStatus.java b/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.dcr.endpoint/src/main/java/com/wso2/openbanking/accelerator/identity/dcr/endpoint/impl/util/ResponseStatus.java index 6e02b6ee..ab002635 100644 --- a/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.dcr.endpoint/src/main/java/com/wso2/openbanking/accelerator/identity/dcr/endpoint/impl/util/ResponseStatus.java +++ b/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.dcr.endpoint/src/main/java/com/wso2/openbanking/accelerator/identity/dcr/endpoint/impl/util/ResponseStatus.java @@ -24,182 +24,157 @@ public enum ResponseStatus { /** - * 200 OK, see {@link - * HTTP/1.1 documentation}. + * 200 OK, see .... */ OK(200, "OK"), /** - * 201 Created, see {@link - * HTTP/1.1 documentation}. + * 201 Created, see .... */ CREATED(201, "Created"), /** - * 202 Accepted, see {@link - * HTTP/1.1 documentation}. + * 202 Accepted, see .... */ ACCEPTED(202, "Accepted"), /** - * 204 No Content, see {@link - * HTTP/1.1 documentation}. + * 204 No Content, see .... */ NO_CONTENT(204, "No Content"), /** - * 205 Reset Content, see {@link - * HTTP/1.1 documentation}. + * 205 Reset Content, see .... * * @since 2.0 */ RESET_CONTENT(205, "Reset Content"), /** - * 206 Reset Content, see {@link - * HTTP/1.1 documentation}. + * 206 Reset Content, see .... * * @since 2.0 */ PARTIAL_CONTENT(206, "Partial Content"), /** - * 301 Moved Permanently, see {@link - * HTTP/1.1 documentation}. + * 301 Moved Permanently, + * see .... */ MOVED_PERMANENTLY(301, "Moved Permanently"), /** - * 302 Found, see {@link - * HTTP/1.1 documentation}. + * 302 Found, see .... * * @since 2.0 */ FOUND(302, "Found"), /** - * 303 See Other, see {@link - * HTTP/1.1 documentation}. + * 303 See Other, see .... */ SEE_OTHER(303, "See Other"), /** - * 304 Not Modified, see {@link - * HTTP/1.1 documentation}. + * 304 Not Modified, see .... */ NOT_MODIFIED(304, "Not Modified"), /** - * 305 Use Proxy, see {@link - * HTTP/1.1 documentation}. + * 305 Use Proxy, see .... * * @since 2.0 */ USE_PROXY(305, "Use Proxy"), /** - * 307 Temporary Redirect, see {@link - * HTTP/1.1 documentation}. + * 307 Temporary Redirect, see .... */ TEMPORARY_REDIRECT(307, "Temporary Redirect"), /** - * 400 Bad Request, see {@link - * HTTP/1.1 documentation}. + * 400 Bad Request, see .... */ BAD_REQUEST(400, "Bad Request"), /** - * 401 Unauthorized, see {@link - * HTTP/1.1 documentation}. + * 401 Unauthorized, see .... */ UNAUTHORIZED(401, "Unauthorized"), /** - * 402 Payment Required, see {@link - * HTTP/1.1 documentation}. + * 402 Payment Required, see .... * * @since 2.0 */ PAYMENT_REQUIRED(402, "Payment Required"), /** - * 403 Forbidden, see {@link - * HTTP/1.1 documentation}. + * 403 Forbidden, see .... */ FORBIDDEN(403, "Forbidden"), /** - * 404 Not Found, see {@link - * HTTP/1.1 documentation}. + * 404 Not Found, see .... */ NOT_FOUND(404, "Not Found"), /** - * 405 Method Not Allowed, see {@link - * HTTP/1.1 documentation}. + * 405 Method Not Allowed, see .... * * @since 2.0 */ METHOD_NOT_ALLOWED(405, "Method Not Allowed"), /** - * 406 Not Acceptable, see {@link - * HTTP/1.1 documentation}. + * 406 Not Acceptable, see .... */ NOT_ACCEPTABLE(406, "Not Acceptable"), /** - * 409 Conflict, see {@link - * HTTP/1.1 documentation}. + * 409 Conflict, see .... */ CONFLICT(409, "Conflict"), /** - * 410 Gone, see {@link - * HTTP/1.1 documentation}. + * 410 Gone, see .... */ GONE(410, "Gone"), /** - * 411 Length Required, see {@link - * HTTP/1.1 documentation}. + * 411 Length Required, see .... * * @since 2.0 */ LENGTH_REQUIRED(411, "Length Required"), /** - * 412 Precondition Failed, see {@link - * HTTP/1.1 documentation}. + * 412 Precondition Failed, see .... */ PRECONDITION_FAILED(412, "Precondition Failed"), /** - * 413 Request Entity Too Large, see {@link HTTP/1.1 documentation}. + * 413 Request Entity Too Large, see HTTP/1.1 documentation. * * @since 2.0 */ REQUEST_ENTITY_TOO_LARGE(413, "Request Entity Too Large"), /** - * 414 Request-URI Too Long, see {@link - * HTTP/1.1 documentation}. + * 414 Request-URI Too Long, + * see .... * * @since 2.0 */ REQUEST_URI_TOO_LONG(414, "Request-URI Too Long"), /** - * 415 Unsupported Media Type, see {@link HTTP/1.1 documentation}. + * 415 Unsupported Media Type, see HTTP/1.1 documentation. */ UNSUPPORTED_MEDIA_TYPE(415, "Unsupported Media Type"), /** - * 416 Requested Range Not Satisfiable, see {@link HTTP/1.1 documentation}. + * 416 Requested Range Not Satisfiable, see HTTP/1.1 documentation. * * @since 2.0 */ REQUESTED_RANGE_NOT_SATISFIABLE(416, "Requested Range Not Satisfiable"), /** - * 417 Expectation Failed, see {@link - * HTTP/1.1 documentation}. + * 417 Expectation Failed, see .... * * @since 2.0 */ EXPECTATION_FAILED(417, "Expectation Failed"), /** - * 500 Internal Server Error, see {@link - * HTTP/1.1 documentation}. + * 500 Internal Server Error, + * see .... */ INTERNAL_SERVER_ERROR(500, "Internal Server Error"), /** - * 501 Not Implemented, see {@link - * HTTP/1.1 documentation}. + * 501 Not Implemented, see .... * * @since 2.0 */ NOT_IMPLEMENTED(501, "Not Implemented"), /** - * 503 Service Unavailable, see {@link - * HTTP/1.1 documentation}. + * 503 Service Unavailable, see .... */ SERVICE_UNAVAILABLE(503, "Service Unavailable"); diff --git a/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.demo.backend/pom.xml b/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.demo.backend/pom.xml index a46cac2b..5c83936c 100644 --- a/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.demo.backend/pom.xml +++ b/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.demo.backend/pom.xml @@ -17,13 +17,11 @@ ~ under the License. --> - + open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../../pom.xml 4.0.0 diff --git a/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.event.notifications.endpoint/pom.xml b/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.event.notifications.endpoint/pom.xml index 2a601530..0dc31114 100644 --- a/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.event.notifications.endpoint/pom.xml +++ b/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.event.notifications.endpoint/pom.xml @@ -19,7 +19,7 @@ open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../../pom.xml 4.0.0 diff --git a/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.push.authorization.endpoint/pom.xml b/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.push.authorization.endpoint/pom.xml index bc4e2173..c1627fd2 100644 --- a/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.push.authorization.endpoint/pom.xml +++ b/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.accelerator.push.authorization.endpoint/pom.xml @@ -17,15 +17,13 @@ ~ under the License. --> - + 4.0.0 open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../../pom.xml diff --git a/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.authentication.webapp/pom.xml b/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.authentication.webapp/pom.xml index 2218c8b3..de100d98 100644 --- a/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.authentication.webapp/pom.xml +++ b/open-banking-accelerator/internal-apis/internal-webapps/com.wso2.openbanking.authentication.webapp/pom.xml @@ -17,13 +17,11 @@ ~ under the License. --> - + open-banking-accelerator com.wso2.openbanking.accelerator - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../../../pom.xml 4.0.0 diff --git a/open-banking-accelerator/pom.xml b/open-banking-accelerator/pom.xml index fbee0107..a74277b2 100644 --- a/open-banking-accelerator/pom.xml +++ b/open-banking-accelerator/pom.xml @@ -17,22 +17,20 @@ ~ under the License. --> - + 4.0.0 com.wso2.openbanking.accelerator open-banking - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../pom.xml WSO2 Open Banking Accelerator open-banking-accelerator pom - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT components/com.wso2.openbanking.accelerator.common diff --git a/pom.xml b/pom.xml index e4aaab44..c00f9acc 100644 --- a/pom.xml +++ b/pom.xml @@ -21,12 +21,12 @@ com.wso2.openbanking.accelerator open-banking pom - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT org.wso2 wso2 - 2 + 1.4 @@ -44,6 +44,28 @@ open-banking-accelerator react-apps + + + + org.apache.maven.plugins + maven-javadoc-plugin + + src/main/java + + **/RegistrationErrorDTO.java + + + + + attach-javadocs + + jar + + + + + + npm diff --git a/react-apps/pom.xml b/react-apps/pom.xml index 737f309a..5520caef 100644 --- a/react-apps/pom.xml +++ b/react-apps/pom.xml @@ -17,14 +17,13 @@ ~ under the License. --> - + 4.0.0 com.wso2.openbanking.accelerator open-banking - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../pom.xml diff --git a/react-apps/self-care-portal/pom.xml b/react-apps/self-care-portal/pom.xml index edce496d..be86ad9a 100644 --- a/react-apps/self-care-portal/pom.xml +++ b/react-apps/self-care-portal/pom.xml @@ -17,15 +17,13 @@ ~ under the License. --> - + 4.0.0 com.wso2.openbanking.accelerator react-apps - 3.2.0-SNAPSHOT + 3.2.4-SNAPSHOT ../pom.xml