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/06/08 00:14:49 UTC
svn commit: r412580 -
/xml/security/trunk/src/org/apache/xml/security/keys/KeyInfo.java
Author: raul
Date: Wed Jun 7 15:14:47 2006
New Revision: 412580
URL: http://svn.apache.org/viewvc?rev=412580&view=rev
Log:
Code refactoring.
Lazy field initialization.
Registered Class reorder, in several parts the library contains a list of workers
that are asked if it can solve a problem. Now the one that said yes is move to the front
wishing that the next time it also hits.
Modified:
xml/security/trunk/src/org/apache/xml/security/keys/KeyInfo.java
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?rev=412580&r1=412579&r2=412580&view=diff
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/keys/KeyInfo.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/keys/KeyInfo.java Wed Jun 7 15:14:47 2006
@@ -92,7 +92,10 @@
static org.apache.commons.logging.Log log =
org.apache.commons.logging.LogFactory.getLog(KeyInfo.class.getName());
-
+ static List nullList=new ArrayList();
+ static {
+ nullList.add(null);
+ }
/**
* Constructor KeyInfo
@@ -104,7 +107,6 @@
XMLUtils.addReturnToElement(this._constructionElement);
-
}
/**
@@ -115,8 +117,8 @@
* @throws XMLSecurityException
*/
public KeyInfo(Element element, String BaseURI) throws XMLSecurityException {
-
super(element, BaseURI);
+ _storageResolvers.add(null);
}
@@ -728,40 +730,28 @@
* @throws KeyResolverException
*/
PublicKey getPublicKeyFromStaticResolvers() throws KeyResolverException {
-
- for (int i = 0; i < KeyResolver.length(); i++) {
- KeyResolver keyResolver = KeyResolver.item(i);
+ int length=KeyResolver.length();
+ int storageLength=this._storageResolvers.size();
+ for (int i = 0; i < length; i++) {
+ KeyResolverSpi keyResolver = KeyResolver.item(i);
Node currentChild=this._constructionElement.getFirstChild();
String uri= this.getBaseURI();
while (currentChild!=null) {
- if (currentChild.getNodeType() == Node.ELEMENT_NODE) {
- if (this._storageResolvers.size() == 0) {
-
- // if we do not have storage resolvers, we verify with null
- StorageResolver storage = null;
-
- PublicKey pk =
- keyResolver.resolvePublicKey((Element) currentChild,
- uri ,
- storage);
- if (pk != null) {
- return pk;
- }
- } else {
- for (int k = 0; k < this._storageResolvers.size(); k++) {
+ if (currentChild.getNodeType() == Node.ELEMENT_NODE) {
+ for (int k = 0; k < storageLength; k++) {
StorageResolver storage =
(StorageResolver) this._storageResolvers.get(k);
PublicKey pk =
- keyResolver.resolvePublicKey((Element) currentChild,
+ keyResolver.engineResolvePublicKey((Element) currentChild,
uri,
storage);
if (pk != null) {
+ KeyResolver.hit(i);
return pk;
}
- }
- }
+ }
}
currentChild=currentChild.getNextSibling();
}
@@ -776,8 +766,9 @@
* @throws KeyResolverException
*/
PublicKey getPublicKeyFromInternalResolvers() throws KeyResolverException {
-
- for (int i = 0; i < this.lengthInternalKeyResolver(); i++) {
+ int length=lengthInternalKeyResolver();
+ int storageLength=this._storageResolvers.size();
+ for (int i = 0; i < length; i++) {
KeyResolverSpi keyResolver = this.itemInternalKeyResolver(i);
if (log.isDebugEnabled())
log.debug("Try " + keyResolver.getClass().getName());
@@ -785,31 +776,17 @@
Node currentChild=this._constructionElement.getFirstChild();
String uri=this.getBaseURI();
while (currentChild!=null) {
- if (currentChild.getNodeType() == Node.ELEMENT_NODE) {
- if (this._storageResolvers.size() == 0) {
-
- // if we do not have storage resolvers, we verify with null
- StorageResolver storage = null;
-
- PublicKey pk =
- keyResolver
- .engineResolvePublicKey((Element) currentChild, uri, storage);
-
- if (pk != null) {
- return pk;
- }
- } else {
- for (int k = 0; k < this._storageResolvers.size(); k++) {
- StorageResolver storage =
- (StorageResolver) this._storageResolvers.get(k);
- PublicKey pk = keyResolver
+ if (currentChild.getNodeType() == Node.ELEMENT_NODE) {
+ for (int k = 0; k < storageLength; k++) {
+ StorageResolver storage =
+ (StorageResolver) this._storageResolvers.get(k);
+ PublicKey pk = keyResolver
.engineResolvePublicKey((Element) currentChild, uri, storage);
if (pk != null) {
return pk;
}
- }
- }
+ }
}
currentChild=currentChild.getNextSibling();
}
@@ -869,43 +846,41 @@
log.debug("Start getX509CertificateFromStaticResolvers() with "
+ KeyResolver.length() + " resolvers");
String uri=this.getBaseURI();
- for (int i = 0; i < KeyResolver.length(); i++) {
- KeyResolver keyResolver = KeyResolver.item(i);
- Node currentChild=this._constructionElement.getFirstChild();
- while (currentChild!=null) {
- if (currentChild.getNodeType() == Node.ELEMENT_NODE) {
- if (this._storageResolvers.size() == 0) {
-
- // if we do not have storage resolvers, we verify with null
- StorageResolver storage = null;
- X509Certificate cert =
- keyResolver
- .resolveX509Certificate((Element) currentChild, uri , storage);
-
- if (cert != null) {
- return cert;
- }
- } else {
- for (int k = 0; k < this._storageResolvers.size(); k++) {
- StorageResolver storage =
- (StorageResolver) this._storageResolvers.get(k);
-
- X509Certificate cert = keyResolver
- .resolveX509Certificate((Element) currentChild, this
- .getBaseURI(), storage);
-
- if (cert != null) {
- return cert;
- }
- }
- }
- }
- currentChild=currentChild.getNextSibling();
- }
+ int length= KeyResolver.length();
+ int storageLength=this._storageResolvers.size();
+ for (int i = 0; i <length; i++) {
+ KeyResolverSpi keyResolver = KeyResolver.item(i);
+ X509Certificate cert= applyCurrentResolver(uri, storageLength, keyResolver);
+ if (cert!=null) {
+ KeyResolver.hit(i);
+ return cert;
+ }
}
return null;
}
+ private X509Certificate applyCurrentResolver(String uri, int storageLength, KeyResolverSpi keyResolver) throws KeyResolverException {
+ Node currentChild=this._constructionElement.getFirstChild();
+ while (currentChild!=null) {
+ if (currentChild.getNodeType() == Node.ELEMENT_NODE) {
+ for (int k = 0; k < storageLength; k++) {
+ StorageResolver storage =
+ (StorageResolver) this._storageResolvers.get(k);
+
+ X509Certificate cert = keyResolver
+ .engineResolveX509Certificate((Element) currentChild, uri,
+ storage);
+
+ if (cert != null) {
+ return cert;
+ }
+ }
+ }
+ currentChild=currentChild.getNextSibling();
+ }
+ return null;
+ }
+
/**
* Method getX509CertificateFromInternalResolvers
*
@@ -917,46 +892,16 @@
if (log.isDebugEnabled())
log.debug("Start getX509CertificateFromInternalResolvers() with "
+ this.lengthInternalKeyResolver() + " resolvers");
-
+ String uri=this.getBaseURI();
+ int storageLength=this._storageResolvers.size();
for (int i = 0; i < this.lengthInternalKeyResolver(); i++) {
KeyResolverSpi keyResolver = this.itemInternalKeyResolver(i);
if (log.isDebugEnabled())
log.debug("Try " + keyResolver.getClass().getName());
-
- Node currentChild=this._constructionElement.getFirstChild();
- String uri=this.getBaseURI();
- while (currentChild!=null) {
- if (currentChild.getNodeType() == Node.ELEMENT_NODE) {
- if (this._storageResolvers.size() == 0) {
-
- // if we do not have storage resolvers, we verify with null
- StorageResolver storage = null;
-
- X509Certificate cert =
- keyResolver.engineResolveX509Certificate(
- (Element) currentChild, uri, storage);
-
- if (cert != null) {
- return cert;
- }
- } else {
- for (int k = 0; k < this._storageResolvers.size(); k++) {
- StorageResolver storage =
- (StorageResolver) this._storageResolvers.get(k);
-
- X509Certificate cert =
- keyResolver.engineResolveX509Certificate(
- (Element) currentChild, uri,
- storage);
-
- if (cert != null) {
- return cert;
- }
- }
- }
- }
- currentChild=currentChild.getNextSibling();
- }
+ X509Certificate cert= applyCurrentResolver(uri, storageLength, keyResolver);
+ if (cert!=null) {
+ return cert;
+ }
}
return null;
@@ -999,42 +944,28 @@
*/
SecretKey getSecretKeyFromStaticResolvers() throws KeyResolverException {
-
- for (int i = 0; i < KeyResolver.length(); i++) {
- KeyResolver keyResolver = KeyResolver.item(i);
+ final int length=KeyResolver.length();
+ int storageLength=this._storageResolvers.size();
+ for (int i = 0; i < length; i++) {
+ KeyResolverSpi keyResolver = KeyResolver.item(i);
Node currentChild=this._constructionElement.getFirstChild();
String uri=this.getBaseURI();
while (currentChild!=null) {
- if (currentChild.getNodeType() == Node.ELEMENT_NODE) {
- if (this._storageResolvers.size() == 0) {
-
- // if we do not have storage resolvers, we verify with null
- StorageResolver storage = null;
-
- SecretKey sk =
- keyResolver.resolveSecretKey((Element) currentChild,
- uri,
- storage);
-
- if (sk != null) {
- return sk;
- }
- } else {
- for (int k = 0; k < this._storageResolvers.size(); k++) {
+ if (currentChild.getNodeType() == Node.ELEMENT_NODE) {
+ for (int k = 0; k < storageLength; k++) {
StorageResolver storage =
(StorageResolver) this._storageResolvers.get(k);
SecretKey sk =
- keyResolver.resolveSecretKey((Element) currentChild,
+ keyResolver.engineResolveSecretKey((Element) currentChild,
uri,
storage);
if (sk != null) {
return sk;
}
- }
- }
+ }
}
currentChild=currentChild.getNextSibling();
}
@@ -1050,7 +981,7 @@
*/
SecretKey getSecretKeyFromInternalResolvers() throws KeyResolverException {
-
+ int storageLength=this._storageResolvers.size();
for (int i = 0; i < this.lengthInternalKeyResolver(); i++) {
KeyResolverSpi keyResolver = this.itemInternalKeyResolver(i);
if (log.isDebugEnabled())
@@ -1060,19 +991,7 @@
String uri=this.getBaseURI();
while (currentChild!=null) {
if (currentChild.getNodeType() == Node.ELEMENT_NODE) {
- if (this._storageResolvers.size() == 0) {
-
- // if we do not have storage resolvers, we verify with null
- StorageResolver storage = null;
-
- SecretKey sk =
- keyResolver
- .engineResolveSecretKey((Element) currentChild, uri, storage);
- if (sk != null) {
- return sk;
- }
- } else {
- for (int k = 0; k < this._storageResolvers.size(); k++) {
+ for (int k = 0; k < storageLength; k++) {
StorageResolver storage =
(StorageResolver) this._storageResolvers.get(k);
@@ -1083,8 +1002,7 @@
return sk;
}
}
- }
- }
+ }
currentChild=currentChild.getNextSibling();
}
}
@@ -1095,7 +1013,7 @@
/**
* Stores the individual (per-KeyInfo) {@link KeyResolver}s
*/
- List _internalKeyResolvers = new ArrayList();
+ List _internalKeyResolvers = null;
/**
* This method is used to add a custom {@link KeyResolverSpi} to a KeyInfo
@@ -1104,6 +1022,9 @@
* @param realKeyResolver
*/
public void registerInternalKeyResolver(KeyResolverSpi realKeyResolver) {
+ if (_internalKeyResolvers==null) {
+ _internalKeyResolvers=new ArrayList();
+ }
this._internalKeyResolvers.add(realKeyResolver);
}
@@ -1112,6 +1033,8 @@
* @return the length of the key
*/
int lengthInternalKeyResolver() {
+ if (_internalKeyResolvers==null)
+ return 0;
return this._internalKeyResolvers.size();
}
@@ -1126,7 +1049,7 @@
}
/** Field _storageResolvers */
- List _storageResolvers = new ArrayList();
+ List _storageResolvers = nullList;
/**
* Method addStorageResolver
@@ -1134,19 +1057,11 @@
* @param storageResolver
*/
public void addStorageResolver(StorageResolver storageResolver) {
-
- if (storageResolver != null) {
+ if (_storageResolvers == nullList ){
+ _storageResolvers=new ArrayList();
+ }
this._storageResolvers.add(storageResolver);
- }
- }
-
- /**
- * Method getStorageResolvers
- *
- * @return the internalStorages
- */
- List getStorageResolvers() {
- return this._storageResolvers;
+
}
//J-