Skip to content

Commit 44aa747

Browse files
committed
Move concrete list and map handling logic.
1 parent d97b171 commit 44aa747

File tree

1 file changed

+39
-37
lines changed

1 file changed

+39
-37
lines changed

httprpc-server/src/main/java/org/httprpc/WebService.java

Lines changed: 39 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -773,9 +773,7 @@ private void describeResource(String path, Resource resource, XMLStreamWriter xm
773773
}
774774

775775
private String describe(Type type) {
776-
if (type instanceof Class<?>) {
777-
return describe((Class<?>)type);
778-
} else if (type instanceof WildcardType) {
776+
if (type instanceof WildcardType) {
779777
return describe(((WildcardType)type).getUpperBounds()[0]);
780778
} else if (type instanceof ParameterizedType) {
781779
ParameterizedType parameterizedType = (ParameterizedType)type;
@@ -791,6 +789,44 @@ private String describe(Type type) {
791789
} else {
792790
throw new IllegalArgumentException();
793791
}
792+
} else if (type instanceof Class<?>) {
793+
if (Iterable.class.isAssignableFrom((Class<?>)type)) {
794+
return describe(new ParameterizedType() {
795+
@Override
796+
public Type[] getActualTypeArguments() {
797+
return new Type[] {Object.class};
798+
}
799+
800+
@Override
801+
public Type getRawType() {
802+
return Iterable.class;
803+
}
804+
805+
@Override
806+
public Type getOwnerType() {
807+
return null;
808+
}
809+
});
810+
} else if (Map.class.isAssignableFrom((Class<?>)type)) {
811+
return describe(new ParameterizedType() {
812+
@Override
813+
public Type[] getActualTypeArguments() {
814+
return new Type[] {Object.class, Object.class};
815+
}
816+
817+
@Override
818+
public Type getRawType() {
819+
return Map.class;
820+
}
821+
822+
@Override
823+
public Type getOwnerType() {
824+
return null;
825+
}
826+
});
827+
} else {
828+
return describe((Class<?>)type);
829+
}
794830
} else {
795831
throw new IllegalArgumentException();
796832
}
@@ -837,40 +873,6 @@ private String describe(Class<?> type) {
837873
return "datetime-local";
838874
} else if (type == URL.class) {
839875
return "url";
840-
} else if (Iterable.class.isAssignableFrom(type)) {
841-
return describe(new ParameterizedType() {
842-
@Override
843-
public Type[] getActualTypeArguments() {
844-
return new Type[] {Object.class};
845-
}
846-
847-
@Override
848-
public Type getRawType() {
849-
return Iterable.class;
850-
}
851-
852-
@Override
853-
public Type getOwnerType() {
854-
return null;
855-
}
856-
});
857-
} else if (Map.class.isAssignableFrom(type)) {
858-
return describe(new ParameterizedType() {
859-
@Override
860-
public Type[] getActualTypeArguments() {
861-
return new Type[] {Object.class, Object.class};
862-
}
863-
864-
@Override
865-
public Type getRawType() {
866-
return Map.class;
867-
}
868-
869-
@Override
870-
public Type getOwnerType() {
871-
return null;
872-
}
873-
});
874876
} else {
875877
if (!structures.containsKey(type)) {
876878
Map<String, Method> accessors = BeanAdapter.getAccessors(type);

0 commit comments

Comments
 (0)