1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.wss4j.stax.impl.resourceResolvers;
20
21 import javax.xml.namespace.QName;
22 import javax.xml.stream.events.Attribute;
23
24 import org.apache.wss4j.stax.ext.WSSConstants;
25 import org.apache.xml.security.stax.ext.ResourceResolver;
26 import org.apache.xml.security.stax.ext.XMLSecurityConstants;
27 import org.apache.xml.security.stax.ext.stax.XMLSecStartElement;
28 import org.apache.xml.security.stax.impl.resourceResolvers.ResolverXPointer;
29
30 public class WSS4JResolverXPointer extends ResolverXPointer {
31
32 public WSS4JResolverXPointer() {
33 super();
34 }
35
36 public WSS4JResolverXPointer(String uri) {
37 super(uri);
38 }
39
40 @Override
41 public ResourceResolver newInstance(String uri, String baseURI) {
42 return new WSS4JResolverXPointer(uri);
43 }
44
45 @Override
46 public boolean matches(XMLSecStartElement xmlSecStartElement) {
47 return matches(xmlSecStartElement, XMLSecurityConstants.ATT_NULL_Id);
48 }
49
50 @Override
51 public boolean matches(XMLSecStartElement xmlSecStartElement, QName idAttributeNS) {
52
53 if (getId() == null) {
54 if (!isRootNodeOccured()) {
55 setRootNodeOccured(true);
56 return true;
57 }
58 return false;
59 }
60
61 Attribute attribute = xmlSecStartElement.getAttributeByName(WSSConstants.ATT_WSU_ID);
62 if (attribute != null && attribute.getValue().equals(getId())) {
63 return true;
64 }
65 return super.matches(xmlSecStartElement, idAttributeNS);
66 }
67 }