Skip to content

Commit c0c18e6

Browse files
committed
Update BeanAdapter.
1 parent a0a4915 commit c0c18e6

File tree

1 file changed

+48
-48
lines changed

1 file changed

+48
-48
lines changed

kilo-client/src/main/java/org/httprpc/kilo/beans/BeanAdapter.java

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -803,67 +803,67 @@ public Type getOwnerType() {
803803
* The converted value.
804804
*/
805805
public static Object toGenericType(Object value, Type type) {
806-
if (type instanceof Class<?> rawType) {
807-
return toRawType(value, rawType);
808-
} else if (type instanceof ParameterizedType parameterizedType
809-
&& parameterizedType.getRawType() instanceof Class<?> rawType) {
810-
var actualTypeArguments = parameterizedType.getActualTypeArguments();
811-
812-
if (rawType == List.class) {
813-
if (value == null) {
814-
return null;
815-
} else if (value instanceof Collection<?> collection) {
816-
var elementType = actualTypeArguments[0];
817-
818-
var genericList = new ArrayList<>(collection.size());
806+
return switch (type) {
807+
case Class<?> rawType -> toRawType(value, rawType);
808+
case ParameterizedType parameterizedType -> {
809+
var rawType = (Class<?>)parameterizedType.getRawType();
810+
var actualTypeArguments = parameterizedType.getActualTypeArguments();
811+
812+
if (rawType == List.class) {
813+
if (value == null) {
814+
yield null;
815+
} else if (value instanceof Collection<?> collection) {
816+
var elementType = actualTypeArguments[0];
817+
818+
var genericList = new ArrayList<>(collection.size());
819+
820+
for (var element : collection) {
821+
genericList.add(toGenericType(element, elementType));
822+
}
819823

820-
for (var element : collection) {
821-
genericList.add(toGenericType(element, elementType));
824+
yield genericList;
825+
} else {
826+
throw new IllegalArgumentException("Value is not a collection.");
822827
}
828+
} else if (rawType == Map.class) {
829+
if (value == null) {
830+
yield null;
831+
} else if (value instanceof Map<?, ?> map) {
832+
var keyType = actualTypeArguments[0];
833+
var valueType = actualTypeArguments[1];
823834

824-
return genericList;
825-
} else {
826-
throw new IllegalArgumentException("Value is not a collection.");
827-
}
828-
} else if (rawType == Map.class) {
829-
if (value == null) {
830-
return null;
831-
} else if (value instanceof Map<?, ?> map) {
832-
var keyType = actualTypeArguments[0];
833-
var valueType = actualTypeArguments[1];
835+
var genericMap = new HashMap<>(map.size());
834836

835-
var genericMap = new HashMap<>(map.size());
837+
for (var entry : map.entrySet()) {
838+
genericMap.put(toGenericType(entry.getKey(), keyType), toGenericType(entry.getValue(), valueType));
839+
}
836840

837-
for (var entry : map.entrySet()) {
838-
genericMap.put(toGenericType(entry.getKey(), keyType), toGenericType(entry.getValue(), valueType));
841+
yield genericMap;
842+
} else {
843+
throw new IllegalArgumentException("Value is not a map.");
839844
}
845+
} else if (rawType == Set.class) {
846+
if (value == null) {
847+
yield null;
848+
} else if (value instanceof Collection<?> collection) {
849+
var elementType = actualTypeArguments[0];
840850

841-
return genericMap;
842-
} else {
843-
throw new IllegalArgumentException("Value is not a map.");
844-
}
845-
} else if (rawType == Set.class) {
846-
if (value == null) {
847-
return null;
848-
} else if (value instanceof Collection<?> collection) {
849-
var elementType = actualTypeArguments[0];
851+
var genericSet = new HashSet<>(collection.size());
850852

851-
var genericSet = new HashSet<>(collection.size());
853+
for (var element : collection) {
854+
genericSet.add(toGenericType(element, elementType));
855+
}
852856

853-
for (var element : collection) {
854-
genericSet.add(toGenericType(element, elementType));
857+
yield genericSet;
858+
} else {
859+
throw new IllegalArgumentException("Value is not a collection.");
855860
}
856-
857-
return genericSet;
858861
} else {
859-
throw new IllegalArgumentException("Value is not a collection.");
862+
throw new IllegalArgumentException("Invalid type.");
860863
}
861-
} else {
862-
throw new IllegalArgumentException();
863864
}
864-
} else {
865-
throw new IllegalArgumentException();
866-
}
865+
case null, default -> throw new IllegalArgumentException();
866+
};
867867
}
868868

869869
private static Object toRawType(Object value, Class<?> type) {

0 commit comments

Comments
 (0)