You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by co...@apache.org on 2012/12/07 19:09:57 UTC
svn commit: r1418418 - in
/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver:
./ implementations/
Author: coheigea
Date: Fri Dec 7 18:09:55 2012
New Revision: 1418418
URL: http://svn.apache.org/viewvc?rev=1418418&view=rev
Log:
[SANTUARIO-337] - Patch applied, thanks
Added:
santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/ResourceResolverContext.java
Modified:
santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/ResourceResolver.java
santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/ResourceResolverSpi.java
santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverAnonymous.java
santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverDirectHTTP.java
santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverFragment.java
santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java
santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverXPointer.java
Modified: santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/ResourceResolver.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/ResourceResolver.java?rev=1418418&r1=1418417&r2=1418418&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/ResourceResolver.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/ResourceResolver.java Fri Dec 7 18:09:55 2012
@@ -81,8 +81,14 @@ public class ResourceResolver {
* @throws ResourceResolverException
*/
public static final ResourceResolver getInstance(
- Attr uri, String baseURI, boolean secureValidation
+ Attr uriAttr, String baseURI, boolean secureValidation
) throws ResourceResolverException {
+ ResourceResolverContext context = new ResourceResolverContext(uriAttr, baseURI, secureValidation);
+ return internalGetInstance(context);
+ }
+
+ private static <N> ResourceResolver internalGetInstance(ResourceResolverContext context)
+ throws ResourceResolverException {
synchronized (resolverList) {
for (ResourceResolver resolver : resolverList) {
ResourceResolver resolverTmp = resolver;
@@ -91,9 +97,9 @@ public class ResourceResolver {
resolverTmp =
new ResourceResolver(resolver.resolverSpi.getClass().newInstance());
} catch (InstantiationException e) {
- throw new ResourceResolverException("", e, uri, baseURI);
+ throw new ResourceResolverException("", e, context.attr, context.baseUri);
} catch (IllegalAccessException e) {
- throw new ResourceResolverException("", e, uri, baseURI);
+ throw new ResourceResolverException("", e, context.attr, context.baseUri);
}
}
@@ -103,15 +109,14 @@ public class ResourceResolver {
);
}
- resolverTmp.resolverSpi.secureValidation = secureValidation;
- if ((resolverTmp != null) && resolverTmp.canResolve(uri, baseURI)) {
+ if ((resolverTmp != null) && resolverTmp.canResolve(context)) {
// Check to see whether the Resolver is allowed
- if (secureValidation
+ if (context.secureValidation
&& (resolverTmp.resolverSpi instanceof ResolverLocalFilesystem
|| resolverTmp.resolverSpi instanceof ResolverDirectHTTP)) {
Object exArgs[] = { resolverTmp.resolverSpi.getClass().getName() };
throw new ResourceResolverException(
- "signature.Reference.ForbiddenResolver", exArgs, uri, baseURI
+ "signature.Reference.ForbiddenResolver", exArgs, context.attr, context.baseUri
);
}
return resolverTmp;
@@ -119,9 +124,10 @@ public class ResourceResolver {
}
}
- Object exArgs[] = { ((uri != null) ? uri.getNodeValue() : "null"), baseURI };
+ Object exArgs[] = { ((context.uriToResolve != null)
+ ? context.uriToResolve : "null"), context.baseUri };
- throw new ResourceResolverException("utils.resolver.noClass", exArgs, uri, baseURI);
+ throw new ResourceResolverException("utils.resolver.noClass", exArgs, context.attr, context.baseUri);
}
/**
@@ -161,6 +167,8 @@ public class ResourceResolver {
);
}
+ ResourceResolverContext context = new ResourceResolverContext(uri, baseURI, secureValidation);
+
// first check the individual Resolvers
if (individualResolvers != null) {
for (int i = 0; i < individualResolvers.size(); i++) {
@@ -172,15 +180,14 @@ public class ResourceResolver {
log.debug("check resolvability by class " + currentClass);
}
- resolver.resolverSpi.secureValidation = secureValidation;
- if (resolver.canResolve(uri, baseURI)) {
+ if (resolver.canResolve(context)) {
return resolver;
}
}
}
}
- return getInstance(uri, baseURI, secureValidation);
+ return internalGetInstance(context);
}
/**
@@ -266,6 +273,14 @@ public class ResourceResolver {
}
/**
+ * @deprecated New clients should use {@link #resolve(Attr, String, boolean)}
+ */
+ public XMLSignatureInput resolve(Attr uri, String baseURI)
+ throws ResourceResolverException {
+ return resolve(uri, baseURI, true);
+ }
+
+ /**
* Method resolve
*
* @param uri
@@ -274,9 +289,10 @@ public class ResourceResolver {
*
* @throws ResourceResolverException
*/
- public XMLSignatureInput resolve(Attr uri, String baseURI)
+ public XMLSignatureInput resolve(Attr uri, String baseURI, boolean secureValidation)
throws ResourceResolverException {
- return resolverSpi.engineResolve(uri, baseURI);
+ ResourceResolverContext context = new ResourceResolverContext(uri, baseURI, secureValidation);
+ return resolverSpi.engineResolveURI(context);
}
/**
@@ -334,7 +350,7 @@ public class ResourceResolver {
* @param baseURI
* @return true if it can resolve the uri
*/
- private boolean canResolve(Attr uri, String baseURI) {
- return resolverSpi.engineCanResolve(uri, baseURI);
+ private boolean canResolve(ResourceResolverContext context) {
+ return this.resolverSpi.engineCanResolveURI(context);
}
}
Added: santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/ResourceResolverContext.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/ResourceResolverContext.java?rev=1418418&view=auto
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/ResourceResolverContext.java (added)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/ResourceResolverContext.java Fri Dec 7 18:09:55 2012
@@ -0,0 +1,39 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.xml.security.utils.resolver;
+
+import org.w3c.dom.Attr;
+
+public class ResourceResolverContext {
+
+ public ResourceResolverContext(Attr attr, String baseUri, boolean secureValidation) {
+ this.attr = attr;
+ this.baseUri = baseUri;
+ this.secureValidation = secureValidation;
+ this.uriToResolve = attr != null ? attr.getValue() : null;
+ }
+
+ public final String uriToResolve;
+
+ public final boolean secureValidation;
+
+ public final String baseUri;
+
+ public final Attr attr;
+}
Modified: santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/ResourceResolverSpi.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/ResourceResolverSpi.java?rev=1418418&r1=1418417&r2=1418418&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/ResourceResolverSpi.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/ResourceResolverSpi.java Fri Dec 7 18:09:55 2012
@@ -38,7 +38,13 @@ public abstract class ResourceResolverSp
/** Field properties */
protected java.util.Map<String, String> properties = null;
- protected boolean secureValidation;
+ /**
+ * Deprecated - used to carry state about whether resolution was being done in a secure fashion,
+ * but was not thread safe, so the resolution information is now passed as parameters to methods.
+ *
+ * @deprecated Secure validation flag is now passed to methods.
+ */
+ protected final boolean secureValidation = true;
/**
* This is the workhorse method used to resolve resources.
@@ -48,9 +54,28 @@ public abstract class ResourceResolverSp
* @return the resource wrapped around a XMLSignatureInput
*
* @throws ResourceResolverException
+ *
+ * @deprecated New clients should override {@link #engineResolveURI(ResourceResolverContext)}
+ */
+ public XMLSignatureInput engineResolve(Attr uri, String BaseURI)
+ throws ResourceResolverException {
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * This is the workhorse method used to resolve resources.
+ * @param context Context to use to resolve resources.
+ *
+ * @return the resource wrapped around a XMLSignatureInput
+ *
+ * @throws ResourceResolverException
*/
- public abstract XMLSignatureInput engineResolve(Attr uri, String BaseURI)
- throws ResourceResolverException;
+ public XMLSignatureInput engineResolveURI(ResourceResolverContext context)
+ throws ResourceResolverException {
+ // The default implementation, to preserve backwards compatibility in the
+ // test cases, calls the old resolver API.
+ return engineResolve(context.attr, context.baseUri);
+ }
/**
* Method engineSetProperty
@@ -108,8 +133,28 @@ public abstract class ResourceResolverSp
* @param uri
* @param BaseURI
* @return true if the engine can resolve the uri
+ *
+ * @deprecated See {@link #engineCanResolveURI(ResourceResolverContext)}
+ */
+ public boolean engineCanResolve(Attr uri, String BaseURI) {
+ // This method used to be abstract, so any calls to "super" are bogus.
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * This method helps the {@link ResourceResolver} to decide whether a
+ * {@link ResourceResolverSpi} is able to perform the requested action.
+ *
+ * <p>New clients should override this method, and not override {@link #engineCanResolve(Attr, String)}
+ * </p>
+ * @param context Context in which to do resolution.
+ * @return true if the engine can resolve the uri
*/
- public abstract boolean engineCanResolve(Attr uri, String BaseURI);
+ public boolean engineCanResolveURI(ResourceResolverContext context) {
+ // To preserve backward compatibility with existing resolvers that might override the old method,
+ // call the old deprecated API.
+ return engineCanResolve( (Attr) context.attr, context.baseUri );
+ }
/**
* Method engineGetPropertyKeys
Modified: santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverAnonymous.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverAnonymous.java?rev=1418418&r1=1418417&r2=1418418&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverAnonymous.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverAnonymous.java Fri Dec 7 18:09:55 2012
@@ -25,15 +25,15 @@ import java.io.IOException;
import java.io.InputStream;
import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.utils.resolver.ResourceResolverContext;
import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
-import org.w3c.dom.Attr;
/**
* @author $Author$
*/
public class ResolverAnonymous extends ResourceResolverSpi {
- private XMLSignatureInput input = null;
+ private InputStream inStream = null;
@Override
public boolean engineIsThreadSafe() {
@@ -46,26 +46,28 @@ public class ResolverAnonymous extends R
* @throws IOException
*/
public ResolverAnonymous(String filename) throws FileNotFoundException, IOException {
- this.input = new XMLSignatureInput(new FileInputStream(filename));
+ inStream = new FileInputStream(filename);
}
/**
* @param is
*/
public ResolverAnonymous(InputStream is) {
- this.input = new XMLSignatureInput(is);
+ inStream = is;
}
/** @inheritDoc */
- public XMLSignatureInput engineResolve(Attr uri, String baseURI) {
- return this.input;
+ @Override
+ public XMLSignatureInput engineResolveURI(ResourceResolverContext context) {
+ return new XMLSignatureInput(inStream);
}
/**
* @inheritDoc
*/
- public boolean engineCanResolve(Attr uri, String baseURI) {
- if (uri == null) {
+ @Override
+ public boolean engineCanResolveURI(ResourceResolverContext context) {
+ if (context.uriToResolve == null) {
return true;
}
return false;
Modified: santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverDirectHTTP.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverDirectHTTP.java?rev=1418418&r1=1418417&r2=1418418&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverDirectHTTP.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverDirectHTTP.java Fri Dec 7 18:09:55 2012
@@ -31,9 +31,9 @@ import java.net.URLConnection;
import org.apache.xml.security.signature.XMLSignatureInput;
import org.apache.xml.security.utils.Base64;
+import org.apache.xml.security.utils.resolver.ResourceResolverContext;
import org.apache.xml.security.utils.resolver.ResourceResolverException;
import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
-import org.w3c.dom.Attr;
/**
* A simple ResourceResolver for HTTP requests. This class handles only 'pure'
@@ -51,7 +51,6 @@ import org.w3c.dom.Attr;
* resourceResolver.setProperty("http.proxy.password", "secretca");
* </PRE>
*
- * @author $Author$
* @see <A HREF="http://www.javaworld.com/javaworld/javatips/jw-javatip42_p.html">Java Tip 42: Write Java apps that work with proxy-based firewalls</A>
* @see <A HREF="http://java.sun.com/j2se/1.4/docs/guide/net/properties.html">SUN J2SE docs for network properties</A>
* @see <A HREF="http://metalab.unc.edu/javafaq/javafaq.html#proxy">The JAVA FAQ Question 9.5: How do I make Java work with a proxy server?</A>
@@ -102,12 +101,13 @@ public class ResolverDirectHTTP extends
* @return
* $todo$ calculate the correct URI from the attribute and the baseURI
*/
- public XMLSignatureInput engineResolve(Attr uri, String baseURI)
+ @Override
+ public XMLSignatureInput engineResolveURI(ResourceResolverContext context)
throws ResourceResolverException {
try {
// calculate new URI
- URI uriNew = getNewURI(uri.getNodeValue(), baseURI);
+ URI uriNew = getNewURI(context.uriToResolve, context.baseUri);
URL url = uriNew.toURL();
URLConnection urlConnection;
urlConnection = openConnection(url);
@@ -157,13 +157,13 @@ public class ResolverDirectHTTP extends
return result;
} catch (URISyntaxException ex) {
- throw new ResourceResolverException("generic.EmptyMessage", ex, uri, baseURI);
+ throw new ResourceResolverException("generic.EmptyMessage", ex, context.attr, context.baseUri);
} catch (MalformedURLException ex) {
- throw new ResourceResolverException("generic.EmptyMessage", ex, uri, baseURI);
+ throw new ResourceResolverException("generic.EmptyMessage", ex, context.attr, context.baseUri);
} catch (IOException ex) {
- throw new ResourceResolverException("generic.EmptyMessage", ex, uri, baseURI);
+ throw new ResourceResolverException("generic.EmptyMessage", ex, context.attr, context.baseUri);
} catch (IllegalArgumentException e) {
- throw new ResourceResolverException("generic.EmptyMessage", e, uri, baseURI);
+ throw new ResourceResolverException("generic.EmptyMessage", e, context.attr, context.baseUri);
}
}
@@ -206,19 +206,17 @@ public class ResolverDirectHTTP extends
*
* @param uri
* @param baseURI
- * @return true if can be resolved
+ * @return true if can be resolved
*/
- public boolean engineCanResolve(Attr uri, String baseURI) {
- if (uri == null) {
+ public boolean engineCanResolveURI(ResourceResolverContext context) {
+ if (context.uriToResolve == null) {
if (log.isDebugEnabled()) {
log.debug("quick fail, uri == null");
}
return false;
}
- String uriNodeValue = uri.getNodeValue();
-
- if (uriNodeValue.equals("") || (uriNodeValue.charAt(0)=='#')) {
+ if (context.uriToResolve.equals("") || (context.uriToResolve.charAt(0)=='#')) {
if (log.isDebugEnabled()) {
log.debug("quick fail for empty URIs and local ones");
}
@@ -226,19 +224,19 @@ public class ResolverDirectHTTP extends
}
if (log.isDebugEnabled()) {
- log.debug("I was asked whether I can resolve " + uriNodeValue);
+ log.debug("I was asked whether I can resolve " + context.uriToResolve);
}
- if (uriNodeValue.startsWith("http:") ||
- (baseURI != null && baseURI.startsWith("http:") )) {
+ if (context.uriToResolve.startsWith("http:") ||
+ (context.baseUri != null && context.baseUri.startsWith("http:") )) {
if (log.isDebugEnabled()) {
- log.debug("I state that I can resolve " + uriNodeValue);
+ log.debug("I state that I can resolve " + context.uriToResolve);
}
return true;
}
if (log.isDebugEnabled()) {
- log.debug("I state that I can't resolve " + uriNodeValue);
+ log.debug("I state that I can't resolve " + context.uriToResolve);
}
return false;
Modified: santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverFragment.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverFragment.java?rev=1418418&r1=1418417&r2=1418418&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverFragment.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverFragment.java Fri Dec 7 18:09:55 2012
@@ -20,9 +20,9 @@ package org.apache.xml.security.utils.re
import org.apache.xml.security.signature.XMLSignatureInput;
import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xml.security.utils.resolver.ResourceResolverContext;
import org.apache.xml.security.utils.resolver.ResourceResolverException;
import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
-import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -53,14 +53,13 @@ public class ResolverFragment extends Re
* @param uri
* @param baseURI
*/
- public XMLSignatureInput engineResolve(Attr uri, String baseURI)
+ public XMLSignatureInput engineResolveURI(ResourceResolverContext context)
throws ResourceResolverException {
- String uriNodeValue = uri.getNodeValue();
- Document doc = uri.getOwnerElement().getOwnerDocument();
+ Document doc = context.attr.getOwnerElement().getOwnerDocument();
Node selectedElem = null;
- if (uriNodeValue.equals("")) {
+ if (context.uriToResolve.equals("")) {
/*
* Identifies the node-set (minus any comment nodes) of the XML
* resource containing the signature
@@ -78,21 +77,21 @@ public class ResolverFragment extends Re
* include the element plus all descendants including namespaces and
* attributes -- but not comments.
*/
- String id = uriNodeValue.substring(1);
+ String id = context.uriToResolve.substring(1);
selectedElem = doc.getElementById(id);
if (selectedElem == null) {
Object exArgs[] = { id };
throw new ResourceResolverException(
- "signature.Verification.MissingID", exArgs, uri, baseURI
+ "signature.Verification.MissingID", exArgs, context.attr, context.baseUri
);
}
- if (secureValidation) {
- Element start = uri.getOwnerDocument().getDocumentElement();
+ if (context.secureValidation) {
+ Element start = context.attr.getOwnerDocument().getDocumentElement();
if (!XMLUtils.protectAgainstWrappingAttack(start, id)) {
Object exArgs[] = { id };
throw new ResourceResolverException(
- "signature.Verification.MultipleIDs", exArgs, uri, baseURI
+ "signature.Verification.MultipleIDs", exArgs, context.attr, context.baseUri
);
}
}
@@ -107,10 +106,10 @@ public class ResolverFragment extends Re
result.setExcludeComments(true);
result.setMIMEType("text/xml");
- if (baseURI != null && baseURI.length() > 0) {
- result.setSourceURI(baseURI.concat(uri.getNodeValue()));
+ if (context.baseUri != null && context.baseUri.length() > 0) {
+ result.setSourceURI(context.baseUri.concat(context.uriToResolve));
} else {
- result.setSourceURI(uri.getNodeValue());
+ result.setSourceURI(context.uriToResolve);
}
return result;
}
@@ -121,25 +120,24 @@ public class ResolverFragment extends Re
* @param uri
* @param baseURI
*/
- public boolean engineCanResolve(Attr uri, String baseURI) {
- if (uri == null) {
+ public boolean engineCanResolveURI(ResourceResolverContext context) {
+ if (context.uriToResolve == null) {
if (log.isDebugEnabled()) {
log.debug("Quick fail for null uri");
}
return false;
}
-
- String uriNodeValue = uri.getNodeValue();
- if (uriNodeValue.equals("") ||
- ((uriNodeValue.charAt(0) == '#') && !uriNodeValue.startsWith("#xpointer("))
+
+ if (context.uriToResolve.equals("") ||
+ ((context.uriToResolve.charAt(0) == '#') && !context.uriToResolve.startsWith("#xpointer("))
) {
if (log.isDebugEnabled()) {
- log.debug("State I can resolve reference: \"" + uriNodeValue + "\"");
+ log.debug("State I can resolve reference: \"" + context.uriToResolve + "\"");
}
return true;
}
if (log.isDebugEnabled()) {
- log.debug("Do not seem to be able to resolve reference: \"" + uriNodeValue + "\"");
+ log.debug("Do not seem to be able to resolve reference: \"" + context.uriToResolve + "\"");
}
return false;
}
Modified: santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java?rev=1418418&r1=1418417&r2=1418418&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java Fri Dec 7 18:09:55 2012
@@ -23,14 +23,12 @@ import java.net.URI;
import java.net.URISyntaxException;
import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.utils.resolver.ResourceResolverContext;
import org.apache.xml.security.utils.resolver.ResourceResolverException;
import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
-import org.w3c.dom.Attr;
/**
* A simple ResourceResolver for requests into the local filesystem.
- *
- * @author $Author$
*/
public class ResolverLocalFilesystem extends ResourceResolverSpi {
@@ -48,11 +46,12 @@ public class ResolverLocalFilesystem ext
/**
* @inheritDoc
*/
- public XMLSignatureInput engineResolve(Attr uri, String baseURI)
+ @Override
+ public XMLSignatureInput engineResolveURI(ResourceResolverContext context)
throws ResourceResolverException {
try {
// calculate new URI
- URI uriNew = getNewURI(uri.getNodeValue(), baseURI);
+ URI uriNew = getNewURI(context.uriToResolve, context.baseUri);
String fileName =
ResolverLocalFilesystem.translateUriToFilename(uriNew.toString());
@@ -63,7 +62,7 @@ public class ResolverLocalFilesystem ext
return result;
} catch (Exception e) {
- throw new ResourceResolverException("generic.EmptyMessage", e, uri, baseURI);
+ throw new ResourceResolverException("generic.EmptyMessage", e, context.attr, context.baseUri);
}
}
@@ -105,26 +104,24 @@ public class ResolverLocalFilesystem ext
/**
* @inheritDoc
*/
- public boolean engineCanResolve(Attr uri, String baseURI) {
- if (uri == null) {
+ public boolean engineCanResolveURI(ResourceResolverContext context) {
+ if (context.uriToResolve == null) {
return false;
}
- String uriNodeValue = uri.getNodeValue();
-
- if (uriNodeValue.equals("") || (uriNodeValue.charAt(0)=='#') ||
- uriNodeValue.startsWith("http:")) {
+ if (context.uriToResolve.equals("") || (context.uriToResolve.charAt(0)=='#') ||
+ context.uriToResolve.startsWith("http:")) {
return false;
}
try {
if (log.isDebugEnabled()) {
- log.debug("I was asked whether I can resolve " + uriNodeValue);
+ log.debug("I was asked whether I can resolve " + context.uriToResolve);
}
- if (uriNodeValue.startsWith("file:") || baseURI.startsWith("file:")) {
+ if (context.uriToResolve.startsWith("file:") || context.baseUri.startsWith("file:")) {
if (log.isDebugEnabled()) {
- log.debug("I state that I can resolve " + uriNodeValue);
+ log.debug("I state that I can resolve " + context.uriToResolve);
}
return true;
}
Modified: santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverXPointer.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverXPointer.java?rev=1418418&r1=1418417&r2=1418418&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverXPointer.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/resolver/implementations/ResolverXPointer.java Fri Dec 7 18:09:55 2012
@@ -20,9 +20,9 @@ package org.apache.xml.security.utils.re
import org.apache.xml.security.signature.XMLSignatureInput;
import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xml.security.utils.resolver.ResourceResolverContext;
import org.apache.xml.security.utils.resolver.ResourceResolverException;
import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
-import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -59,25 +59,25 @@ public class ResolverXPointer extends Re
/**
* @inheritDoc
*/
- public XMLSignatureInput engineResolve(Attr uri, String baseURI)
+ @Override
+ public XMLSignatureInput engineResolveURI(ResourceResolverContext context)
throws ResourceResolverException {
Node resultNode = null;
- Document doc = uri.getOwnerElement().getOwnerDocument();
+ Document doc = context.attr.getOwnerElement().getOwnerDocument();
- String uriStr = uri.getNodeValue();
- if (isXPointerSlash(uriStr)) {
+ if (isXPointerSlash(context.uriToResolve)) {
resultNode = doc;
- } else if (isXPointerId(uriStr)) {
- String id = getXPointerId(uriStr);
+ } else if (isXPointerId(context.uriToResolve)) {
+ String id = getXPointerId(context.uriToResolve);
resultNode = doc.getElementById(id);
- if (secureValidation) {
- Element start = uri.getOwnerDocument().getDocumentElement();
+ if (context.secureValidation) {
+ Element start = context.attr.getOwnerDocument().getDocumentElement();
if (!XMLUtils.protectAgainstWrappingAttack(start, id)) {
Object exArgs[] = { id };
throw new ResourceResolverException(
- "signature.Verification.MultipleIDs", exArgs, uri, baseURI
+ "signature.Verification.MultipleIDs", exArgs, context.attr, context.baseUri
);
}
}
@@ -86,7 +86,7 @@ public class ResolverXPointer extends Re
Object exArgs[] = { id };
throw new ResourceResolverException(
- "signature.Verification.MissingID", exArgs, uri, baseURI
+ "signature.Verification.MissingID", exArgs, context.attr, context.baseUri
);
}
}
@@ -94,10 +94,10 @@ public class ResolverXPointer extends Re
XMLSignatureInput result = new XMLSignatureInput(resultNode);
result.setMIMEType("text/xml");
- if (baseURI != null && baseURI.length() > 0) {
- result.setSourceURI(baseURI.concat(uri.getNodeValue()));
+ if (context.baseUri != null && context.baseUri.length() > 0) {
+ result.setSourceURI(context.baseUri.concat(context.uriToResolve));
} else {
- result.setSourceURI(uri.getNodeValue());
+ result.setSourceURI(context.uriToResolve);
}
return result;
@@ -106,12 +106,11 @@ public class ResolverXPointer extends Re
/**
* @inheritDoc
*/
- public boolean engineCanResolve(Attr uri, String baseURI) {
- if (uri == null) {
+ public boolean engineCanResolveURI(ResourceResolverContext context) {
+ if (context.uriToResolve == null) {
return false;
}
- String uriStr = uri.getNodeValue();
- if (isXPointerSlash(uriStr) || isXPointerId(uriStr)) {
+ if (isXPointerSlash(context.uriToResolve) || isXPointerId(context.uriToResolve)) {
return true;
}