1
2
3
4
5
6
7
8
9
10
11
12 package com.eviware.soapui.impl.wsdl.support.xsd;
13
14 import java.util.ArrayList;
15 import java.util.Collection;
16 import java.util.LinkedHashMap;
17 import java.util.List;
18 import java.util.Map;
19
20 import javax.xml.namespace.QName;
21
22 import com.eviware.soapui.SoapUI;
23 import com.eviware.soapui.config.StringListConfig;
24 import com.eviware.soapui.support.StringUtils;
25 import com.eviware.soapui.support.types.StringList;
26
27 public class SettingUtils
28 {
29 public static Collection<? extends QName> string2QNames( String string )
30 {
31 List<QName> result = new ArrayList<QName>();
32 if( string != null && string.trim().length() > 0 )
33 {
34 try
35 {
36 StringList names = StringList.fromXml( string );
37 for( String name : names )
38 {
39 QName qname = string2qname( name );
40 result.add( qname );
41 }
42 }
43 catch( Exception e )
44 {
45 SoapUI.logError( e );
46 }
47 }
48
49 return result;
50 }
51
52 private static QName string2qname( String name )
53 {
54 int ix = name.indexOf( '@' );
55 if( ix >= 0 )
56 return new QName( name.substring( ix + 1 ), name.substring( 0, ix ) );
57 else
58 return new QName( name );
59 }
60
61 private static String qname2string( QName qname )
62 {
63 String ns = qname.getNamespaceURI();
64 String localPart = qname.getLocalPart();
65 if( ns != null && ns.length() > 0 )
66 return localPart + "@" + ns;
67 else
68 return localPart;
69 }
70
71 public static String qnameValues2String( Map<QName, String[]> valueMap )
72 {
73 StringListConfig config = StringListConfig.Factory.newInstance();
74 for( QName qname : valueMap.keySet() )
75 {
76 String[] values = valueMap.get( qname );
77 String nameAndValues = qname2string( qname ) + "=" + StringUtils.join( values, "," );
78 config.addEntry( nameAndValues );
79 }
80 return config.toString();
81 }
82
83 public static Map<QName, String[]> string2QNameValues( String string )
84 {
85 LinkedHashMap<QName, String[]> result = new LinkedHashMap<QName, String[]>();
86 if( string != null && string.trim().length() > 0 )
87 {
88 try
89 {
90 StringList list = StringList.fromXml( string );
91 for( String s : list )
92 {
93 String[] words = s.split( "=" );
94 if( words.length == 2 )
95 {
96 String name = words[0];
97 String[] values = words[1].split( "," );
98 if( name.length() > 0 && values.length > 0 )
99 {
100 QName qname = string2qname( name );
101 result.put( qname, values );
102 }
103 }
104 }
105 }
106 catch( Exception e )
107 {
108 SoapUI.logError( e );
109 }
110 }
111
112 return result;
113 }
114 }