You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by ra...@apache.org on 2006/10/15 18:41:04 UTC
svn commit: r464224 - in /xml/security/trunk: ./
src/org/apache/xml/security/algorithms/ src/org/apache/xml/security/keys/
src/org/apache/xml/security/keys/keyresolver/
src/org/apache/xml/security/keys/keyresolver/implementations/
src/org/apache/xml/se...
Author: raul
Date: Sun Oct 15 09:41:03 2006
New Revision: 464224
URL: http://svn.apache.org/viewvc?view=rev&rev=464224
Log:
KeyResolver & ResourceResolver can work like <1.3 mode when used with old implementations.
Modified:
xml/security/trunk/CHANGELOG.txt
xml/security/trunk/src/org/apache/xml/security/algorithms/Algorithm.java
xml/security/trunk/src/org/apache/xml/security/keys/KeyInfo.java
xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/KeyResolver.java
xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/KeyResolverSpi.java
xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/DSAKeyValueResolver.java
xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/EncryptedKeyResolver.java
xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/RSAKeyValueResolver.java
xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/RetrievalMethodResolver.java
xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509CertificateResolver.java
xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509IssuerSerialResolver.java
xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509SKIResolver.java
xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509SubjectNameResolver.java
xml/security/trunk/src/org/apache/xml/security/utils/resolver/ResourceResolver.java
xml/security/trunk/src/org/apache/xml/security/utils/resolver/ResourceResolverSpi.java
xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverDirectHTTP.java
xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverFragment.java
xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java
xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverXPointer.java
xml/security/trunk/src_unitTests/org/apache/xml/security/test/encryption/BobKeyResolver.java
xml/security/trunk/src_unitTests/org/apache/xml/security/test/utils/OldApiTest.java
Modified: xml/security/trunk/CHANGELOG.txt
URL: http://svn.apache.org/viewvc/xml/security/trunk/CHANGELOG.txt?view=diff&rev=464224&r1=464223&r2=464224
==============================================================================
--- xml/security/trunk/CHANGELOG.txt (original)
+++ xml/security/trunk/CHANGELOG.txt Sun Oct 15 09:41:03 2006
@@ -4,6 +4,7 @@
to use implementations for the >1.3 versions paying the performance hit
of the old implementation.
Fix a small & unneeded java 1.4 dependecy.
+ KeyResolver & ResourceResolver can work like <1.3 mode when used with old implementations.
New in 1.4RC1
Fixed bug 40290.
Modified: xml/security/trunk/src/org/apache/xml/security/algorithms/Algorithm.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/algorithms/Algorithm.java?view=diff&rev=464224&r1=464223&r2=464224
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/algorithms/Algorithm.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/algorithms/Algorithm.java Sun Oct 15 09:41:03 2006
@@ -20,7 +20,6 @@
import org.apache.xml.security.exceptions.XMLSecurityException;
import org.apache.xml.security.utils.Constants;
-import org.apache.xml.security.utils.ElementProxy;
import org.apache.xml.security.utils.SignatureElementProxy;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
Modified: xml/security/trunk/src/org/apache/xml/security/keys/KeyInfo.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/keys/KeyInfo.java?view=diff&rev=464224&r1=464223&r2=464224
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/keys/KeyInfo.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/keys/KeyInfo.java Sun Oct 15 09:41:03 2006
@@ -758,7 +758,7 @@
(StorageResolver) this._storageResolvers.get(k);
PublicKey pk =
- keyResolver.engineResolvePublicKey((Element) currentChild,
+ keyResolver.engineLookupAndResolvePublicKey((Element) currentChild,
uri,
storage);
@@ -796,7 +796,7 @@
StorageResolver storage =
(StorageResolver) this._storageResolvers.get(k);
PublicKey pk = keyResolver
- .engineResolvePublicKey((Element) currentChild, uri, storage);
+ .engineLookupAndResolvePublicKey((Element) currentChild, uri, storage);
if (pk != null) {
return pk;
@@ -883,7 +883,7 @@
(StorageResolver) this._storageResolvers.get(k);
X509Certificate cert = keyResolver
- .engineResolveX509Certificate((Element) currentChild, uri,
+ .engineLookupResolveX509Certificate((Element) currentChild, uri,
storage);
if (cert != null) {
@@ -973,7 +973,7 @@
(StorageResolver) this._storageResolvers.get(k);
SecretKey sk =
- keyResolver.engineResolveSecretKey((Element) currentChild,
+ keyResolver.engineLookupAndResolveSecretKey((Element) currentChild,
uri,
storage);
@@ -1011,7 +1011,7 @@
(StorageResolver) this._storageResolvers.get(k);
SecretKey sk = keyResolver
- .engineResolveSecretKey((Element) currentChild, uri, storage);
+ .engineLookupAndResolveSecretKey((Element) currentChild, uri, storage);
if (sk != null) {
return sk;
Modified: xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/KeyResolver.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/KeyResolver.java?view=diff&rev=464224&r1=464223&r2=464224
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/KeyResolver.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/KeyResolver.java Sun Oct 15 09:41:03 2006
@@ -254,7 +254,7 @@
public PublicKey resolvePublicKey(
Element element, String BaseURI, StorageResolver storage)
throws KeyResolverException {
- return this._resolverSpi.engineResolvePublicKey(element, BaseURI, storage);
+ return this._resolverSpi.engineLookupAndResolvePublicKey(element, BaseURI, storage);
}
/**
@@ -270,7 +270,7 @@
public X509Certificate resolveX509Certificate(
Element element, String BaseURI, StorageResolver storage)
throws KeyResolverException {
- return this._resolverSpi.engineResolveX509Certificate(element, BaseURI,
+ return this._resolverSpi.engineLookupResolveX509Certificate(element, BaseURI,
storage);
}
@@ -284,7 +284,7 @@
public SecretKey resolveSecretKey(
Element element, String BaseURI, StorageResolver storage)
throws KeyResolverException {
- return this._resolverSpi.engineResolveSecretKey(element, BaseURI,
+ return this._resolverSpi.engineLookupAndResolveSecretKey(element, BaseURI,
storage);
}
Modified: xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/KeyResolverSpi.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/KeyResolverSpi.java?view=diff&rev=464224&r1=464223&r2=464224
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/KeyResolverSpi.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/KeyResolverSpi.java Sun Oct 15 09:41:03 2006
@@ -39,6 +39,19 @@
* @version $Revision$
*/
public abstract class KeyResolverSpi {
+ /**
+ * This method helps the {@link org.apache.xml.security.utils.resolver.ResourceResolver} to decide whether a
+ * {@link org.apache.xml.security.utils.resolver.ResourceResolverSpi} is able to perform the requested action.
+ *
+ * @param element
+ * @param BaseURI
+ * @param storage
+ * @return
+ */
+ public boolean engineCanResolve(Element element, String BaseURI,
+ StorageResolver storage) {
+ throw new UnsupportedOperationException();
+ }
/**
* Method engineResolvePublicKey
@@ -50,10 +63,53 @@
*
* @throws KeyResolverException
*/
- abstract public PublicKey engineResolvePublicKey(
+ public PublicKey engineResolvePublicKey(
+ Element element, String BaseURI, StorageResolver storage)
+ throws KeyResolverException {
+ throw new UnsupportedOperationException();
+ };
+
+ /**
+ * Method engineResolvePublicKey
+ *
+ * @param element
+ * @param BaseURI
+ * @param storage
+ * @return resolved public key from the registered from the element.
+ *
+ * @throws KeyResolverException
+ */
+ public PublicKey engineLookupAndResolvePublicKey(
Element element, String BaseURI, StorageResolver storage)
- throws KeyResolverException;
+ throws KeyResolverException {
+ try {
+ KeyResolverSpi tmp = (KeyResolverSpi) getClass().newInstance();
+ if (!tmp.engineCanResolve(element, BaseURI, storage))
+ return null;
+ return tmp.engineResolvePublicKey(element, BaseURI, storage);
+ } catch (InstantiationException e) {
+ throw new KeyResolverException("",e);
+ } catch (IllegalAccessException e) {
+ throw new KeyResolverException("",e);
+ }
+ }
+ /**
+ * Method engineResolveCertificate
+ *
+ * @param element
+ * @param BaseURI
+ * @param storage
+ * @return resolved X509Certificate key from the registered from the elements
+ *
+ * @throws KeyResolverException
+ */
+ public X509Certificate engineResolveX509Certificate(
+ Element element, String BaseURI, StorageResolver storage)
+ throws KeyResolverException{
+ throw new UnsupportedOperationException();
+ };
+
/**
* Method engineResolveCertificate
*
@@ -64,10 +120,36 @@
*
* @throws KeyResolverException
*/
- abstract public X509Certificate engineResolveX509Certificate(
+ public X509Certificate engineLookupResolveX509Certificate(
Element element, String BaseURI, StorageResolver storage)
- throws KeyResolverException;
-
+ throws KeyResolverException {
+ try {
+ KeyResolverSpi tmp = (KeyResolverSpi) getClass().newInstance();
+ if (!tmp.engineCanResolve(element, BaseURI, storage))
+ return null;
+ return tmp.engineResolveX509Certificate(element, BaseURI, storage);
+ } catch (InstantiationException e) {
+ throw new KeyResolverException("",e);
+ } catch (IllegalAccessException e) {
+ throw new KeyResolverException("",e);
+ }
+ }
+ /**
+ * Method engineResolveSecretKey
+ *
+ * @param element
+ * @param BaseURI
+ * @param storage
+ * @return resolved SecretKey key from the registered from the elements
+ *
+ * @throws KeyResolverException
+ */
+ public SecretKey engineResolveSecretKey(
+ Element element, String BaseURI, StorageResolver storage)
+ throws KeyResolverException{
+ throw new UnsupportedOperationException();
+ };
+
/**
* Method engineResolveSecretKey
*
@@ -78,9 +160,20 @@
*
* @throws KeyResolverException
*/
- abstract public SecretKey engineResolveSecretKey(
+ public SecretKey engineLookupAndResolveSecretKey(
Element element, String BaseURI, StorageResolver storage)
- throws KeyResolverException;
+ throws KeyResolverException {
+ try {
+ KeyResolverSpi tmp = (KeyResolverSpi) getClass().newInstance();
+ if (!tmp.engineCanResolve(element, BaseURI, storage))
+ return null;
+ return tmp.engineResolveSecretKey(element, BaseURI, storage);
+ } catch (InstantiationException e) {
+ throw new KeyResolverException("",e);
+ } catch (IllegalAccessException e) {
+ throw new KeyResolverException("",e);
+ }
+ }
/** Field _properties */
protected java.util.Map _properties = null;
Modified: xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/DSAKeyValueResolver.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/DSAKeyValueResolver.java?view=diff&rev=464224&r1=464223&r2=464224
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/DSAKeyValueResolver.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/DSAKeyValueResolver.java Sun Oct 15 09:41:03 2006
@@ -45,7 +45,7 @@
* @param storage
* @return null if no {@link PublicKey} could be obtained
*/
- public PublicKey engineResolvePublicKey(
+ public PublicKey engineLookupAndResolvePublicKey(
Element element, String BaseURI, StorageResolver storage) {
if (element == null) {
return null;
@@ -84,13 +84,13 @@
/** @inheritDoc */
- public X509Certificate engineResolveX509Certificate(
+ public X509Certificate engineLookupResolveX509Certificate(
Element element, String BaseURI, StorageResolver storage) {
return null;
}
/** @inheritDoc */
- public javax.crypto.SecretKey engineResolveSecretKey(
+ public javax.crypto.SecretKey engineLookupAndResolveSecretKey(
Element element, String BaseURI, StorageResolver storage){
return null;
}
Modified: xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/EncryptedKeyResolver.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/EncryptedKeyResolver.java?view=diff&rev=464224&r1=464223&r2=464224
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/EncryptedKeyResolver.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/EncryptedKeyResolver.java Sun Oct 15 09:41:03 2006
@@ -78,20 +78,20 @@
}
/** @inheritDoc */
- public PublicKey engineResolvePublicKey(
+ public PublicKey engineLookupAndResolvePublicKey(
Element element, String BaseURI, StorageResolver storage) {
return null;
}
/** @inheritDoc */
- public X509Certificate engineResolveX509Certificate(
+ public X509Certificate engineLookupResolveX509Certificate(
Element element, String BaseURI, StorageResolver storage) {
return null;
}
/** @inheritDoc */
- public javax.crypto.SecretKey engineResolveSecretKey(
+ public javax.crypto.SecretKey engineLookupAndResolveSecretKey(
Element element, String BaseURI, StorageResolver storage) {
SecretKey key=null;
if (log.isDebugEnabled())
Modified: xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/RSAKeyValueResolver.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/RSAKeyValueResolver.java?view=diff&rev=464224&r1=464223&r2=464224
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/RSAKeyValueResolver.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/RSAKeyValueResolver.java Sun Oct 15 09:41:03 2006
@@ -47,7 +47,7 @@
/** @inheritDoc */
- public PublicKey engineResolvePublicKey(
+ public PublicKey engineLookupAndResolvePublicKey(
Element element, String BaseURI, StorageResolver storage) {
if (log.isDebugEnabled())
log.debug("Can I resolve " + element.getTagName());
@@ -87,13 +87,13 @@
}
/** @inheritDoc */
- public X509Certificate engineResolveX509Certificate(
+ public X509Certificate engineLookupResolveX509Certificate(
Element element, String BaseURI, StorageResolver storage) {
return null;
}
/** @inheritDoc */
- public javax.crypto.SecretKey engineResolveSecretKey(
+ public javax.crypto.SecretKey engineLookupAndResolveSecretKey(
Element element, String BaseURI, StorageResolver storage) {
return null;
}
Modified: xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/RetrievalMethodResolver.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/RetrievalMethodResolver.java?view=diff&rev=464224&r1=464223&r2=464224
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/RetrievalMethodResolver.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/RetrievalMethodResolver.java Sun Oct 15 09:41:03 2006
@@ -77,7 +77,7 @@
* @param storage
*
*/
- public PublicKey engineResolvePublicKey(
+ public PublicKey engineLookupAndResolvePublicKey(
Element element, String BaseURI, StorageResolver storage)
{
if (!XMLUtils.elementIsInSignatureSpace(element,
@@ -140,7 +140,7 @@
* @param storage
*
*/
- public X509Certificate engineResolveX509Certificate(
+ public X509Certificate engineLookupResolveX509Certificate(
Element element, String BaseURI, StorageResolver storage)
{
if (!XMLUtils.elementIsInSignatureSpace(element,
@@ -268,7 +268,7 @@
* @param storage
*
*/
- public javax.crypto.SecretKey engineResolveSecretKey(
+ public javax.crypto.SecretKey engineLookupAndResolveSecretKey(
Element element, String BaseURI, StorageResolver storage)
{
return null;
Modified: xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509CertificateResolver.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509CertificateResolver.java?view=diff&rev=464224&r1=464223&r2=464224
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509CertificateResolver.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509CertificateResolver.java Sun Oct 15 09:41:03 2006
@@ -56,11 +56,11 @@
*
* @throws KeyResolverException
*/
- public PublicKey engineResolvePublicKey(
+ public PublicKey engineLookupAndResolvePublicKey(
Element element, String BaseURI, StorageResolver storage)
throws KeyResolverException {
- X509Certificate cert = this.engineResolveX509Certificate(element,
+ X509Certificate cert = this.engineLookupResolveX509Certificate(element,
BaseURI, storage);
if (cert != null) {
@@ -79,7 +79,7 @@
*
* @throws KeyResolverException
*/
- public X509Certificate engineResolveX509Certificate(
+ public X509Certificate engineLookupResolveX509Certificate(
Element element, String BaseURI, StorageResolver storage)
throws KeyResolverException {
@@ -90,7 +90,7 @@
Element el=XMLUtils.selectDsNode(element.getFirstChild(),
Constants._TAG_X509DATA,0);
if (el!=null) {
- return engineResolveX509Certificate(el, BaseURI, storage);
+ return engineLookupResolveX509Certificate(el, BaseURI, storage);
}
return null;
}
@@ -119,7 +119,7 @@
* @param storage
*
*/
- public javax.crypto.SecretKey engineResolveSecretKey(
+ public javax.crypto.SecretKey engineLookupAndResolveSecretKey(
Element element, String BaseURI, StorageResolver storage)
{
return null;
Modified: xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509IssuerSerialResolver.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509IssuerSerialResolver.java?view=diff&rev=464224&r1=464223&r2=464224
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509IssuerSerialResolver.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509IssuerSerialResolver.java Sun Oct 15 09:41:03 2006
@@ -46,11 +46,11 @@
/** @inheritDoc */
- public PublicKey engineResolvePublicKey(
+ public PublicKey engineLookupAndResolvePublicKey(
Element element, String BaseURI, StorageResolver storage)
throws KeyResolverException {
- X509Certificate cert = this.engineResolveX509Certificate(element,
+ X509Certificate cert = this.engineLookupResolveX509Certificate(element,
BaseURI, storage);
if (cert != null) {
@@ -61,7 +61,7 @@
}
/** @inheritDoc */
- public X509Certificate engineResolveX509Certificate(
+ public X509Certificate engineLookupResolveX509Certificate(
Element element, String BaseURI, StorageResolver storage)
throws KeyResolverException {
if (log.isDebugEnabled())
@@ -138,7 +138,7 @@
}
/** @inheritDoc */
- public javax.crypto.SecretKey engineResolveSecretKey(
+ public javax.crypto.SecretKey engineLookupAndResolveSecretKey(
Element element, String BaseURI, StorageResolver storage) {
return null;
}
Modified: xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509SKIResolver.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509SKIResolver.java?view=diff&rev=464224&r1=464223&r2=464224
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509SKIResolver.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509SKIResolver.java Sun Oct 15 09:41:03 2006
@@ -54,11 +54,11 @@
* @return null if no {@link PublicKey} could be obtained
* @throws KeyResolverException
*/
- public PublicKey engineResolvePublicKey(
+ public PublicKey engineLookupAndResolvePublicKey(
Element element, String BaseURI, StorageResolver storage)
throws KeyResolverException {
- X509Certificate cert = this.engineResolveX509Certificate(element,
+ X509Certificate cert = this.engineLookupResolveX509Certificate(element,
BaseURI, storage);
if (cert != null) {
@@ -77,7 +77,7 @@
*
* @throws KeyResolverException
*/
- public X509Certificate engineResolveX509Certificate(
+ public X509Certificate engineLookupResolveX509Certificate(
Element element, String BaseURI, StorageResolver storage)
throws KeyResolverException {
if (log.isDebugEnabled()) {
@@ -147,7 +147,7 @@
* @param storage
*
*/
- public javax.crypto.SecretKey engineResolveSecretKey(
+ public javax.crypto.SecretKey engineLookupAndResolveSecretKey(
Element element, String BaseURI, StorageResolver storage)
{
return null;
Modified: xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509SubjectNameResolver.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509SubjectNameResolver.java?view=diff&rev=464224&r1=464223&r2=464224
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509SubjectNameResolver.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509SubjectNameResolver.java Sun Oct 15 09:41:03 2006
@@ -53,11 +53,11 @@
* @return null if no {@link PublicKey} could be obtained
* @throws KeyResolverException
*/
- public PublicKey engineResolvePublicKey(
+ public PublicKey engineLookupAndResolvePublicKey(
Element element, String BaseURI, StorageResolver storage)
throws KeyResolverException {
- X509Certificate cert = this.engineResolveX509Certificate(element,
+ X509Certificate cert = this.engineLookupResolveX509Certificate(element,
BaseURI, storage);
if (cert != null) {
@@ -76,7 +76,7 @@
*
* @throws KeyResolverException
*/
- public X509Certificate engineResolveX509Certificate(
+ public X509Certificate engineLookupResolveX509Certificate(
Element element, String BaseURI, StorageResolver storage)
throws KeyResolverException {
if (log.isDebugEnabled())
@@ -155,7 +155,7 @@
* @param storage
*
*/
- public javax.crypto.SecretKey engineResolveSecretKey(
+ public javax.crypto.SecretKey engineLookupAndResolveSecretKey(
Element element, String BaseURI, StorageResolver storage)
{
return null;
Modified: xml/security/trunk/src/org/apache/xml/security/utils/resolver/ResourceResolver.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/utils/resolver/ResourceResolver.java?view=diff&rev=464224&r1=464223&r2=464224
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/utils/resolver/ResourceResolver.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/utils/resolver/ResourceResolver.java Sun Oct 15 09:41:03 2006
@@ -53,6 +53,8 @@
/** these are the system-wide resolvers */
static List _resolverVector = null;
+
+ static boolean allThreadSafeInList=true;
/** Field transformSpi */
protected ResourceResolverSpi _resolverSpi = null;
@@ -97,12 +99,20 @@
for (int i = 0; i < length; i++) {
ResourceResolver resolver =
(ResourceResolver) ResourceResolver._resolverVector.get(i);
-
+ ResourceResolver resolverTmp=null;
+ try {
+ resolverTmp = allThreadSafeInList || resolver._resolverSpi.engineIsThreadSafe() ? resolver :
+ new ResourceResolver((ResourceResolverSpi)resolver._resolverSpi.getClass().newInstance());
+ } catch (InstantiationException e) {
+ throw new ResourceResolverException("",e,uri,BaseURI);
+ } catch (IllegalAccessException e) {
+ throw new ResourceResolverException("",e,uri,BaseURI);
+ }
if (log.isDebugEnabled())
log.debug("check resolvability by class " + resolver._resolverSpi.getClass().getName());
- if ((resolver != null) && resolver.canResolve(uri, BaseURI)) {
+ if ((resolver != null) && resolverTmp.canResolve(uri, BaseURI)) {
if (i!=0) {
//update resolver.
//System.out.println("Swaping");
@@ -114,7 +124,7 @@
//System.out.println("hitting");
}
- return resolver;
+ return resolverTmp;
}
}
@@ -205,9 +215,12 @@
if (start) {
ResourceResolver._resolverVector.add(0, resolver);
log.debug("registered resolver");
- } else {
+ } else {
ResourceResolver._resolverVector.add(resolver);
}
+ if (!resolver._resolverSpi.engineIsThreadSafe()) {
+ allThreadSafeInList=false;
+ }
} catch (Exception e) {
log.warn("Error loading resolver " + className +" disabling it");
} catch (NoClassDefFoundError e) {
Modified: xml/security/trunk/src/org/apache/xml/security/utils/resolver/ResourceResolverSpi.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/utils/resolver/ResourceResolverSpi.java?view=diff&rev=464224&r1=464223&r2=464224
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/utils/resolver/ResourceResolverSpi.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/utils/resolver/ResourceResolverSpi.java Sun Oct 15 09:41:03 2006
@@ -90,7 +90,15 @@
this._properties.putAll(properties);
}
}
-
+ /**
+ * Tells if the implementation does can be reused by several threads safely.
+ * It normally means that the implemantation does not have any member, or there is
+ * member change betwen engineCanResolve & engineResolve invocations. Or it mantians all
+ * member info in ThreadLocal methods.
+ */
+ public boolean engineIsThreadSafe() {
+ return false;
+ }
/**
* This method helps the {@link ResourceResolver} to decide whether a
* {@link ResourceResolverSpi} is able to perform the requested action.
Modified: xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverDirectHTTP.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverDirectHTTP.java?view=diff&rev=464224&r1=464223&r2=464224
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverDirectHTTP.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverDirectHTTP.java Sun Oct 15 09:41:03 2006
@@ -88,6 +88,9 @@
/** Field HttpProxyPass */
private static final int HttpBasicPass = 5;
+ public boolean engineIsThreadSafe() {
+ return true;
+ }
/**
* Method resolve
*
Modified: xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverFragment.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverFragment.java?view=diff&rev=464224&r1=464223&r2=464224
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverFragment.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverFragment.java Sun Oct 15 09:41:03 2006
@@ -41,7 +41,9 @@
static org.apache.commons.logging.Log log =
org.apache.commons.logging.LogFactory.getLog(
ResolverFragment.class.getName());
-
+ public boolean engineIsThreadSafe() {
+ return true;
+ }
/**
* Method engineResolve
*
Modified: xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java?view=diff&rev=464224&r1=464223&r2=464224
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java Sun Oct 15 09:41:03 2006
@@ -39,6 +39,9 @@
org.apache.commons.logging.LogFactory.getLog(
ResolverLocalFilesystem.class.getName());
+ public boolean engineIsThreadSafe() {
+ return true;
+ }
/**
* @inheritDoc
*/
@@ -68,6 +71,7 @@
}
}
+ private static int FILE_URI_LENGTH="file:/".length();
/**
* Method translateUriToFilename
*
@@ -76,7 +80,7 @@
*/
private static String translateUriToFilename(String uri) {
- String subStr = uri.substring("file:/".length());
+ String subStr = uri.substring(FILE_URI_LENGTH);
if (subStr.indexOf("%20") > -1)
{
Modified: xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverXPointer.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverXPointer.java?view=diff&rev=464224&r1=464223&r2=464224
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverXPointer.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverXPointer.java Sun Oct 15 09:41:03 2006
@@ -49,6 +49,9 @@
org.apache.commons.logging.LogFactory.getLog(
ResolverXPointer.class.getName());
+ public boolean engineIsThreadSafe() {
+ return true;
+ }
/**
* @inheritDoc
*/
Modified: xml/security/trunk/src_unitTests/org/apache/xml/security/test/encryption/BobKeyResolver.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src_unitTests/org/apache/xml/security/test/encryption/BobKeyResolver.java?view=diff&rev=464224&r1=464223&r2=464224
==============================================================================
--- xml/security/trunk/src_unitTests/org/apache/xml/security/test/encryption/BobKeyResolver.java (original)
+++ xml/security/trunk/src_unitTests/org/apache/xml/security/test/encryption/BobKeyResolver.java Sun Oct 15 09:41:03 2006
@@ -89,7 +89,7 @@
* @return null if no {@link PublicKey} could be obtained
* @throws KeyResolverException
*/
- public PublicKey engineResolvePublicKey(
+ public PublicKey engineLookupAndResolvePublicKey(
Element element, String BaseURI, StorageResolver storage)
throws KeyResolverException {
@@ -105,7 +105,7 @@
*
* @throws KeyResolverException
*/
- public X509Certificate engineResolveX509Certificate(
+ public X509Certificate engineLookupResolveX509Certificate(
Element element, String BaseURI, StorageResolver storage)
throws KeyResolverException {
return null;
@@ -120,7 +120,7 @@
*
* @throws KeyResolverException
*/
- public javax.crypto.SecretKey engineResolveSecretKey(
+ public javax.crypto.SecretKey engineLookupAndResolveSecretKey(
Element element, String BaseURI, StorageResolver storage)
throws KeyResolverException {
Modified: xml/security/trunk/src_unitTests/org/apache/xml/security/test/utils/OldApiTest.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src_unitTests/org/apache/xml/security/test/utils/OldApiTest.java?view=diff&rev=464224&r1=464223&r2=464224
==============================================================================
--- xml/security/trunk/src_unitTests/org/apache/xml/security/test/utils/OldApiTest.java (original)
+++ xml/security/trunk/src_unitTests/org/apache/xml/security/test/utils/OldApiTest.java Sun Oct 15 09:41:03 2006
@@ -14,12 +14,18 @@
import org.apache.xml.security.transforms.Transform;
import org.apache.xml.security.transforms.TransformSpi;
import org.apache.xml.security.transforms.TransformationException;
+import org.apache.xml.security.utils.resolver.ResourceResolver;
+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.xml.sax.SAXException;
public class OldApiTest extends TestCase {
- static Transform compare;
+
public static class OldTransform extends TransformSpi {
+ static Transform compare;
protected XMLSignatureInput enginePerformTransform(
XMLSignatureInput input)
throws IOException,
@@ -41,7 +47,46 @@
Transform.register("old", OldTransform.class.getName());
Transform a=new Transform(doc,"old",null);
- compare=a;
+ OldTransform.compare=a;
a.performTransform(null);
+ };
+
+ public static class OldResourceResolverSpi extends ResourceResolverSpi {
+ Attr uriCompare;
+ String baseCompare;
+ public boolean engineCanResolve(Attr uri, String BaseURI) {
+ if (uri.getValue().indexOf("!!!test=")!=0) {
+ return false;
+ }
+ uriCompare=uri;
+ baseCompare=BaseURI;
+ return true;
+ }
+
+ public XMLSignatureInput engineResolve(Attr uri, String BaseURI) throws ResourceResolverException {
+ assertEquals(uriCompare, uri);
+ assertEquals(baseCompare,BaseURI);
+ return null;
+ }
+
+ };
+ public void testOldResourceResolverSpi() throws Exception {
+ Document doc=DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+ Attr uri=doc.createAttribute("id");
+ uri.setNodeValue("!!!test=1");
+ ((Element)doc.createElement("test")).setAttributeNode(uri);
+ Attr uri1=doc.createAttribute("id");
+ uri1.setNodeValue("!!!test=2");
+ doc.createElement("test1").setAttributeNode(uri1);
+ ResourceResolver.registerAtStart(OldResourceResolverSpi.class.getName());
+ ResourceResolver resolver=ResourceResolver.getInstance(uri, "test");
+ ResourceResolver resolver1=ResourceResolver.getInstance(uri1, "test1");
+ ResourceResolver resolver2=ResourceResolver.getInstance(uri1, "test2");
+
+ resolver2.resolve(uri1, "test2");
+ resolver.resolve(uri, "test");
+ resolver1.resolve(uri1, "test1");
+
+
};
}