Skip to content

Commit cb1c0aa

Browse files
committed
change
Signed-off-by: Abhishek Kumar <[email protected]>
1 parent 0e2fec1 commit cb1c0aa

File tree

3 files changed

+23
-9
lines changed

3 files changed

+23
-9
lines changed

server/src/main/java/com/cloud/server/ManagementServerImpl.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -822,6 +822,7 @@
822822
import com.cloud.user.dao.SSHKeyPairDao;
823823
import com.cloud.user.dao.UserDao;
824824
import com.cloud.user.dao.UserDataDao;
825+
import com.cloud.utils.EnumUtils;
825826
import com.cloud.utils.NumbersUtil;
826827
import com.cloud.utils.Pair;
827828
import com.cloud.utils.PasswordGenerator;
@@ -2412,16 +2413,17 @@ public Pair<List<? extends ConfigurationGroup>, Integer> listConfigurationGroups
24122413
}
24132414

24142415
protected List<IpAddress.State> getStatesForIpAddressSearch(final ListPublicIpAddressesCmd cmd) {
2415-
final String state = cmd.getState();
2416+
final String statesStr = cmd.getState();
24162417
final List<IpAddress.State> states = new ArrayList<>();
2417-
if (StringUtils.isNotBlank(state)) {
2418-
for (String s : StringUtils.split(state, ",")) {
2419-
try {
2420-
states.add(IpAddress.State.valueOf(s));
2421-
} catch (IllegalArgumentException e) {
2422-
throw new InvalidParameterValueException("Invalid state: " + s);
2423-
}
2418+
if (StringUtils.isBlank(statesStr)) {
2419+
return states;
2420+
}
2421+
for (String s : StringUtils.split(statesStr, ",")) {
2422+
IpAddress.State state = EnumUtils.getEnumIgnoreCase(IpAddress.State.class, s.trim());
2423+
if (state == null) {
2424+
throw new InvalidParameterValueException("Invalid state: " + s);
24242425
}
2426+
states.add(state);
24252427
}
24262428
return states;
24272429
}

server/src/test/java/com/cloud/server/ManagementServerImplTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1038,7 +1038,7 @@ public void testGetExternalVmConsole() {
10381038
@Test
10391039
public void getStatesForIpAddressSearchReturnsValidStates() {
10401040
ListPublicIpAddressesCmd cmd = Mockito.mock(ListPublicIpAddressesCmd.class);
1041-
Mockito.when(cmd.getState()).thenReturn("Allocated,Free");
1041+
Mockito.when(cmd.getState()).thenReturn("Allocated ,free");
10421042
List<IpAddress.State> result = spy.getStatesForIpAddressSearch(cmd);
10431043
Assert.assertEquals(2, result.size());
10441044
Assert.assertTrue(result.contains(IpAddress.State.Allocated));

utils/src/main/java/com/cloud/utils/EnumUtils.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,16 @@ public static <T extends Enum<T>> T fromString(Class<T> clz, String value) {
5555
}
5656
return null;
5757
}
58+
59+
public static <T extends Enum<T>> T getEnumIgnoreCase(Class<T> enumClass, String name) {
60+
if (enumClass == null || name == null) {
61+
return null;
62+
}
63+
for (T constant : enumClass.getEnumConstants()) {
64+
if (constant.name().equalsIgnoreCase(name.trim())) {
65+
return constant;
66+
}
67+
}
68+
return null;
69+
}
5870
}

0 commit comments

Comments
 (0)