22
33import com .fasterxml .jackson .databind .ObjectReader ;
44import io .netty .buffer .ByteBuf ;
5- import io .netty .buffer .ByteBufAllocator ;
6- import io .netty .buffer .ByteBufUtil ;
7- import io .netty .buffer .Unpooled ;
85import lombok .SneakyThrows ;
9- import org .apache .commons .collections4 .MapUtils ;
106import org .hswebframework .ezorm .core .param .Term ;
117import org .hswebframework .web .api .crud .entity .TermExpressionParser ;
128import org .hswebframework .web .bean .FastBeanCopier ;
139import org .springframework .core .io .buffer .DataBuffer ;
14- import org .springframework .core .io .buffer .NettyDataBuffer ;
15- import org .springframework .core .io .buffer .NettyDataBufferFactory ;
1610import org .springframework .http .HttpHeaders ;
17- import org .springframework .util .MultiValueMap ;
1811
19- import java .lang .reflect .Array ;
20- import java .nio .ByteBuffer ;
21- import java .util .*;
12+ import java .util .List ;
13+ import java .util .Map ;
2214import java .util .function .Function ;
2315import java .util .stream .Collectors ;
2416
@@ -32,11 +24,7 @@ public class ConverterUtils {
3224 * @return 转换结果
3325 */
3426 public static Object tryConvertToList (Object value , Function <Object , Object > converter ) {
35- List <Object > list = convertToList (value , converter );
36- if (list .size () == 1 ) {
37- return converter .apply (list .get (0 ));
38- }
39- return list ;
27+ return org .jetlinks .core .utils .ConverterUtils .tryConvertToList (value , converter );
4028 }
4129
4230 /**
@@ -48,40 +36,7 @@ public static Object tryConvertToList(Object value, Function<Object, Object> con
4836 * @return 转换后的List
4937 */
5038 public static <T > List <T > convertToList (Object value , Function <Object , T > converter ) {
51- if (value == null ) {
52- return Collections .emptyList ();
53- }
54-
55- if (value instanceof String ) {
56- String [] arr = ((String ) value ).split ("," );
57- if (arr .length == 1 ) {
58- return Collections .singletonList (converter .apply (arr [0 ]));
59- }
60- List <T > list = new ArrayList <>(arr .length );
61- for (String s : arr ) {
62- list .add (converter .apply (s ));
63- }
64- return list ;
65- }
66-
67- if (value instanceof Collection ) {
68- List <T > list = new ArrayList <>(((Collection <?>) value ).size ());
69- for (Object o : ((Collection <?>) value )) {
70- list .add (converter .apply (o ));
71- }
72- return list ;
73- }
74-
75- if (value .getClass ().isArray ()) {
76- int len = Array .getLength (value );
77- List <T > list = new ArrayList <>(len );
78- for (int i = 0 ; i < len ; i ++) {
79- list .add (converter .apply (Array .get (value , i )));
80- }
81- return list ;
82- }
83-
84- return Collections .singletonList (converter .apply (value ));
39+ return org .jetlinks .core .utils .ConverterUtils .convertToList (value , converter );
8540 }
8641
8742 /**
@@ -106,28 +61,7 @@ public static List<Object> convertToList(Object value) {
10661 */
10762 @ SneakyThrows
10863 public static String [] convertMapToTags (Map <String , Object > map ) {
109- if (MapUtils .isEmpty (map )) {
110- return new String [0 ];
111- }
112- String [] tags = new String [map .size () * 2 ];
113- int index = 0 ;
114- for (Map .Entry <String , Object > entry : map .entrySet ()) {
115- String key = entry .getKey ();
116- Object value = entry .getValue ();
117- if (value == null ) {
118- continue ;
119- }
120- String strValue = value instanceof String
121- ? String .valueOf (value )
122- : ObjectMappers .JSON_MAPPER .writeValueAsString (value );
123-
124- tags [index ++] = key ;
125- tags [index ++] = strValue ;
126- }
127- if (tags .length > index ) {
128- return Arrays .copyOf (tags , index );
129- }
130- return tags ;
64+ return org .jetlinks .core .utils .ConverterUtils .convertMapToTags (map );
13165 }
13266
13367 static final ObjectReader termReader = ObjectMappers .JSON_MAPPER .readerForListOf (Term .class );
@@ -171,98 +105,24 @@ public static List<Term> convertTerms(Object value) {
171105 }
172106 }
173107
174- private static final NettyDataBufferFactory factory = new NettyDataBufferFactory (ByteBufAllocator .DEFAULT );
175-
176108 public static DataBuffer convertDataBuffer (Object obj ) {
177- if (obj == null ) {
178- return null ;
179- }
180- if (obj instanceof DataBuffer ) {
181- return ((DataBuffer ) obj );
182- }
183- return factory .wrap (convertNettyBuffer (obj ));
109+ return org .jetlinks .core .utils .ConverterUtils .convertDataBuffer (obj );
184110 }
185111
186112 public static <T > ByteBuf convertNettyBuffer (T obj ,
187113 Function <T , ByteBuf > fallback ) {
188- if (obj == null ) {
189- return null ;
190- }
191- if (obj instanceof ByteBuf ) {
192- return ((ByteBuf ) obj );
193- }
194-
195- if (obj instanceof byte []) {
196- return Unpooled .wrappedBuffer (((byte []) obj ));
197- }
198-
199- if (obj instanceof NettyDataBuffer ) {
200- return ((NettyDataBuffer ) obj ).getNativeBuffer ();
201- }
202-
203- if (obj instanceof DataBuffer ) {
204- return Unpooled .wrappedBuffer (((DataBuffer ) obj ).asByteBuffer ());
205- }
206-
207- if (obj instanceof ByteBuffer ) {
208- return Unpooled .wrappedBuffer (((ByteBuffer ) obj ));
209- }
210-
211- if (obj instanceof String ) {
212- String str = String .valueOf (obj );
213- // hex
214- if (str .startsWith ("0x" )) {
215- return Unpooled .wrappedBuffer (ByteBufUtil .decodeHexDump (str , 2 , str .length () - 2 ));
216- }
217- //data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
218- if (str .startsWith ("data:" )) {
219- return Unpooled .wrappedBuffer (
220- Base64
221- .getDecoder ()
222- .decode (str .substring (str .indexOf ("," ) + 1 )));
223- }
224- // base64
225- byte [] strBytes = str .getBytes ();
226- if (org .apache .commons .codec .binary .Base64 .isBase64 (strBytes )) {
227- try {
228- return Unpooled .wrappedBuffer (
229- Base64
230- .getDecoder ()
231- .decode (strBytes ));
232- } catch (Throwable ignore ) {
233- }
234- }
235- return Unpooled .wrappedBuffer (strBytes );
236- }
237-
238- return fallback .apply (obj );
114+ return org .jetlinks .core .utils .ConverterUtils .convertNettyBuffer (obj , fallback );
239115 }
240116
241117 public static ByteBuf convertNettyBuffer (Object obj ) {
242- return convertNettyBuffer ( obj , val -> Unpooled . wrappedBuffer ( String . valueOf ( val ). getBytes ()) );
118+ return org . jetlinks . core . utils . ConverterUtils . convertNettyBuffer ( obj );
243119 }
244120
245121
246122 @ SuppressWarnings ("all" )
247123 public static HttpHeaders convertHttpHeaders (Object headers ) {
248- if (headers instanceof HttpHeaders ) {
249- return (HttpHeaders ) headers ;
250- }
251- if (headers instanceof MultiValueMap ) {
252- return new HttpHeaders ((MultiValueMap ) headers );
253- }
254- if (headers instanceof Map <?, ?>) {
255- Map <?, ?> httpHeaders = (Map <?, ?>) headers ;
256- HttpHeaders newHeader = new HttpHeaders ();
257- for (Map .Entry <?, ?> entry : httpHeaders .entrySet ()) {
258- newHeader .put (String .valueOf (entry .getKey ()),
259- convertToList (entry .getValue (), String ::valueOf ));
260- }
261- return newHeader ;
262- }
263- return org .jetlinks .core .utils .ConverterUtils .convert (headers ,HttpHeaders .class );
124+ return org .jetlinks .core .utils .ConverterUtils .convertHttpHeaders (headers );
264125 }
265126
266127
267-
268128}
0 commit comments