Skip to content

Commit

Permalink
Improve filtering block conditions by adding support to filter by exa…
Browse files Browse the repository at this point in the history
…ct condition value
  • Loading branch information
ashanhr committed Sep 13, 2024
1 parent 2acef47 commit 910a45d
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13810,15 +13810,27 @@ public List<BlockConditionsDTO> getBlockConditionsByConditionTypeAndValue(String
ResultSet resultSet = null;
List<BlockConditionsDTO> blockConditionsDTOList = new ArrayList<>();
try {
String query = SQLConstants.ThrottleSQLConstants.GET_BLOCK_CONDITIONS_BY_TYPE_AND_VALUE_SQL;
String query;
boolean isConditionValueQuoted = conditionValue != null && conditionValue.startsWith(
"\"") && conditionValue.endsWith("\"");
if (isConditionValueQuoted) {
query = ThrottleSQLConstants.GET_BLOCK_CONDITIONS_BY_TYPE_AND_EXACT_VALUE_SQL;
conditionValue = conditionValue.substring(1, conditionValue.length() - 1);
} else {
query = SQLConstants.ThrottleSQLConstants.GET_BLOCK_CONDITIONS_BY_TYPE_AND_VALUE_SQL;
}
connection = APIMgtDBUtil.getConnection();
selectPreparedStatement = connection.prepareStatement(query);
String conditionTypeUpper = conditionType != null ? conditionType.toUpperCase() : null;
selectPreparedStatement.setString(1, conditionTypeUpper);
selectPreparedStatement.setString(2, conditionTypeUpper);
selectPreparedStatement.setString(3, conditionValue);
selectPreparedStatement.setString(4, conditionValue);
selectPreparedStatement.setString(5, tenantDomain);
if (isConditionValueQuoted) {
selectPreparedStatement.setString(4, tenantDomain);
} else {
selectPreparedStatement.setString(4, conditionValue);
selectPreparedStatement.setString(5, tenantDomain);
}
resultSet = selectPreparedStatement.executeQuery();
while (resultSet.next()) {
BlockConditionsDTO blockConditionsDTO = populateBlockConditionsDataWithRS(resultSet);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3329,6 +3329,9 @@ public static class ThrottleSQLConstants{
public static final String GET_BLOCK_CONDITIONS_BY_TYPE_AND_VALUE_SQL =
"SELECT CONDITION_ID, TYPE, BLOCK_CONDITION, ENABLED, DOMAIN, UUID FROM AM_BLOCK_CONDITIONS WHERE "
+ "(TYPE = ? OR ? IS NULL) AND (BLOCK_CONDITION LIKE CONCAT('%', ?, '%') OR ? IS NULL) AND DOMAIN = ?";
public static final String GET_BLOCK_CONDITIONS_BY_TYPE_AND_EXACT_VALUE_SQL =
"SELECT CONDITION_ID, TYPE, BLOCK_CONDITION, ENABLED, DOMAIN, UUID FROM AM_BLOCK_CONDITIONS WHERE "
+ "(TYPE = ? OR ? IS NULL) AND (BLOCK_CONDITION = ?) AND DOMAIN = ?";

public static final String TIER_HAS_SUBSCRIPTION = " select count(sub.TIER_ID) as c from AM_SUBSCRIPTION sub, AM_API api "
+ " where sub.TIER_ID = ? and api.API_PROVIDER like ? and sub.API_ID = api.API_ID ";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1193,8 +1193,12 @@ public void testAddUpdateDeleteBlockCondition() throws Exception {
BlockConditionsDTO userUUID = apiMgtDAO.addBlockConditions(userBlockcondition);
assertNotNull(apiMgtDAO.getBlockConditionByUUID(apiUUID.getUUID()));
assertNotNull(userUUID);
assertNotNull(apiMgtDAO.getBlockConditionsByConditionTypeAndValue(APIConstants.BLOCKING_CONDITIONS_API,
"/testAddUpdateDeleteBlockCondition", "carbon.super"));
assertEquals(1, apiMgtDAO.getBlockConditionsByConditionTypeAndValue(APIConstants.BLOCKING_CONDITIONS_API,
"/testAddUpdateDeleteBlock", "carbon.super").size());
assertEquals(1, apiMgtDAO.getBlockConditionsByConditionTypeAndValue(APIConstants.BLOCKING_CONDITIONS_API,
"\"/testAddUpdateDeleteBlockCondition\"", "carbon.super").size());
assertEquals(0, apiMgtDAO.getBlockConditionsByConditionTypeAndValue(APIConstants.BLOCKING_CONDITIONS_API,
"\"/testAddUpdateDeleteBlock\"", "carbon.super").size());
assertNotNull(apiMgtDAO
.updateBlockConditionState(apiMgtDAO.getBlockConditionByUUID(userUUID.getUUID()).getConditionId(),
"FALSE"));
Expand Down

0 comments on commit 910a45d

Please sign in to comment.