1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.wss4j.policy.stax;
20
21 import org.apache.wss4j.policy.model.XPath;
22
23 import javax.xml.namespace.QName;
24 import java.util.ArrayList;
25 import java.util.List;
26
27 public final class PolicyUtils {
28
29 private PolicyUtils() {
30
31 }
32
33 public static List<QName> getElementPath(XPath xPath) {
34 List<QName> elements = new ArrayList<>();
35 String[] xPathElements = xPath.getXPath().split("/");
36 for (int j = 0; j < xPathElements.length; j++) {
37 String xPathElement = xPathElements[j];
38 if (xPathElement == null || xPathElement.length() == 0) {
39 continue;
40 }
41 String[] elementParts = xPathElement.split(":");
42 if (elementParts.length == 2) {
43 String ns = xPath.getPrefixNamespaceMap().get(elementParts[0]);
44 if (ns == null) {
45 throw new IllegalArgumentException("Namespace not declared");
46 }
47 elements.add(new QName(ns, elementParts[1]));
48 } else {
49 elements.add(new QName(elementParts[0]));
50 }
51 }
52 return elements;
53 }
54 }