/* * reserved comment block * DO NOT REMOVE OR ALTER! */ /* * Copyright 1999-2004 The Apache Software Foundation. * * Licensed 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 com.sun.org.apache.xml.internal.security.keys.storage; import java.security.KeyStore; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import com.sun.org.apache.xml.internal.security.keys.storage.implementations.KeyStoreResolver; import com.sun.org.apache.xml.internal.security.keys.storage.implementations.SingleCertificateResolver; /** * This class collects customized resolvers for Certificates. * * @author $Author: mullan $ */ public class StorageResolver { /** {@link java.util.logging} logging facility */ static java.util.logging.Logger log = java.util.logging.Logger.getLogger(StorageResolver.class.getName()); /** Field _storageResolvers */ List _storageResolvers = null; /** Field _iterator */ Iterator _iterator = null; /** * Constructor StorageResolver * */ public StorageResolver() {} /** * Constructor StorageResolver * * @param resolver */ public StorageResolver(StorageResolverSpi resolver) { this.add(resolver); } /** * Method addResolver * * @param resolver */ public void add(StorageResolverSpi resolver) { if (_storageResolvers==null) _storageResolvers=new ArrayList(); this._storageResolvers.add(resolver); this._iterator = null; } /** * Constructor StorageResolver * * @param keyStore */ public StorageResolver(KeyStore keyStore) { this.add(keyStore); } /** * Method addKeyStore * * @param keyStore */ public void add(KeyStore keyStore) { try { this.add(new KeyStoreResolver(keyStore)); } catch (StorageResolverException ex) { log.log(java.util.logging.Level.SEVERE, "Could not add KeyStore because of: ", ex); } } /** * Constructor StorageResolver * * @param x509certificate */ public StorageResolver(X509Certificate x509certificate) { this.add(x509certificate); } /** * Method addCertificate * * @param x509certificate */ public void add(X509Certificate x509certificate) { this.add(new SingleCertificateResolver(x509certificate)); } /** * Method getIterator * @return the iterator for the resolvers. * */ public Iterator getIterator() { if (this._iterator == null) { if (_storageResolvers==null) _storageResolvers=new ArrayList(); this._iterator = new StorageResolverIterator(this._storageResolvers.iterator()); } return this._iterator; } /** * Method hasNext * * @return true if there is more elements. */ public boolean hasNext() { if (this._iterator == null) { if (_storageResolvers==null) _storageResolvers=new ArrayList(); this._iterator = new StorageResolverIterator(this._storageResolvers.iterator()); } return this._iterator.hasNext(); } /** * Method next * * @return the next element */ public X509Certificate next() { return (X509Certificate) this._iterator.next(); } /** * Class StorageResolverIterator * * @author $Author: mullan $ * @version $Revision: 1.5 $ */ static class StorageResolverIterator implements Iterator { /** Field _resolvers */ Iterator _resolvers = null; /** * Constructor FilesystemIterator * * @param resolvers */ public StorageResolverIterator(Iterator resolvers) { this._resolvers = resolvers; } /** @inheritDoc */ public boolean hasNext() { return _resolvers.hasNext(); } /** @inheritDoc */ public Object next() { return _resolvers.next(); } /** * Method remove */ public void remove() { throw new UnsupportedOperationException( "Can't remove keys from KeyStore"); } } }