View Javadoc

1   /*
2    * Copyright [2007] [University Corporation for Advanced Internet Development, Inc.]
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package org.opensaml.xml.security.keyinfo;
18  
19  import org.opensaml.xml.security.credential.Credential;
20  
21  /**
22   * Interface for factories which produce {@link KeyInfoGenerator} instances.
23   */
24  public interface KeyInfoGeneratorFactory {
25      
26      /**
27       * Get a new instance of the generator type produced by the factory.
28       * 
29       * @return a new KeyInfoGenerator instance
30       */
31      public KeyInfoGenerator newInstance();
32      
33      /**
34       * Check whether the generators produced by this factory can handle the specified credential.
35       * 
36       * @param credential the credential to evaluate
37       * @return true if the generators produced by this factory can handle the type of the specified credential,
38       *          false otherwise
39       */
40      public boolean handles(Credential credential);
41      
42      /**
43       * Get the type (interface) of the specific type of credential handled by generators produced by
44       * this factory.  Primarily used as an index by manager implementions such as {@link KeyInfoGeneratorManager}.
45       * 
46       * @return the specifc type of credential handled by the generators produced by this factory
47       */
48      public Class<? extends Credential> getCredentialType();
49      
50  }