1
2
3
4
5
6
7
8
9
10
11
12 package com.eviware.soapui.support.xml;
13
14 import com.eviware.soapui.support.types.StringToStringMap;
15
16 /***
17 * Separates a path component into its parts.
18 *
19 * @author lars
20 */
21 public class XPathComponent
22 {
23 private String namespace;
24 private String prefix;
25 private String localNameWithoutBraces;
26
27
28 private String braces;
29
30 public XPathComponent( String c, StringToStringMap prefixMap )
31 {
32 String localName;
33 int ix = c.indexOf( ':' );
34 if( ix >= 0 )
35 {
36 prefix = c.substring( 0, ix );
37 localName = c.substring( ix + 1 );
38 namespace = prefixMap.get( prefix );
39 }
40 else
41 {
42 prefix = null;
43 localName = c;
44 namespace = null;
45 }
46 ix = localName.indexOf( '[' );
47 if( ix >= 0 )
48 {
49 localNameWithoutBraces = localName.substring( 0, ix );
50 braces = localName.substring( ix );
51 }
52 else
53 {
54 localNameWithoutBraces = localName;
55 braces = "";
56 }
57 assert localName.equals( localNameWithoutBraces + braces ) : localName + " != " + localNameWithoutBraces + " + "
58 + braces;
59 }
60
61 @Override
62 public String toString()
63 {
64 if( prefix != null )
65 return prefix + ":" + localNameWithoutBraces + braces;
66 else
67 return localNameWithoutBraces + braces;
68 }
69
70 public String getNamespace()
71 {
72 return namespace;
73 }
74
75 public boolean hasPrefix()
76 {
77 return prefix != null;
78 }
79
80 public String getPrefix()
81 {
82 if( prefix == null )
83 return "";
84 else
85 return prefix;
86 }
87
88 public String getLocalName()
89 {
90 return localNameWithoutBraces;
91 }
92
93 public String getBraces()
94 {
95 return braces;
96 }
97
98 public String getFullNameWithPrefix()
99 {
100 return getFullNameWithPrefix( localNameWithoutBraces );
101 }
102
103 public String getFullNameWithPrefix( String aLocalName )
104 {
105 return ( hasPrefix() ? getPrefix() + ":" : "" ) + aLocalName + getBraces();
106 }
107 }