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
29 public class ResolverXPointer extends org.apache.xml.security.stax.impl.resourceResolvers.ResolverXPointer {
30
31 public ResolverXPointer() {
32 super();
33 }
34
35 public ResolverXPointer(String uri) {
36 super(uri);
37 }
38
39 @Override
40 public ResourceResolver newInstance(String uri, String baseURI) {
41 return new ResolverXPointer(uri);
42 }
43
44 @Override
45 public boolean matches(XMLSecStartElement xmlSecStartElement) {
46 return matches(xmlSecStartElement, XMLSecurityConstants.ATT_NULL_Id);
47 }
48
49 @Override
50 public boolean matches(XMLSecStartElement xmlSecStartElement, QName idAttributeNS) {
51
52 if (getId() == null) {
53 if (!isRootNodeOccured()) {
54 setRootNodeOccured(true);
55 return true;
56 }
57 return false;
58 }
59
60 Attribute attribute = xmlSecStartElement.getAttributeByName(WSSConstants.ATT_WSU_ID);
61 if (attribute != null && attribute.getValue().equals(getId())) {
62 return true;
63 }
64 return super.matches(xmlSecStartElement, idAttributeNS);
65 }
66 }