@@ -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