001 package org.cumulus4j.keymanager.api.internal; 002 003 import org.cumulus4j.keymanager.api.KeyManagerAPI; 004 import org.cumulus4j.keymanager.api.KeyManagerAPIConfiguration; 005 import org.cumulus4j.keymanager.api.KeyManagerAPIInstantiationException; 006 007 /** 008 * @author Marco หงุ่ยตระกูล-Schulze - marco at nightlabs dot de 009 */ 010 public abstract class AbstractKeyManagerAPI 011 implements KeyManagerAPI 012 { 013 protected static final String FILE_URL_PREFIX = "file:"; 014 015 private volatile KeyManagerAPIConfiguration configuration; 016 017 /** 018 * Get the configuration. If there is no configuration, yet, an 019 * {@link IllegalStateException} is thrown. 020 * @return the configuration, never <code>null</code>. 021 * @throws IllegalStateException if there is no configuration, yet, i.e. setConfiguration(...) was not yet called. 022 */ 023 public KeyManagerAPIConfiguration getConf() 024 throws IllegalStateException 025 { 026 KeyManagerAPIConfiguration configuration = getConfiguration(); 027 if (configuration == null) 028 throw new IllegalStateException("There is no configuration, yet! Call setConfiguration(...) first!"); 029 030 return configuration; 031 } 032 033 /** 034 * Convenience method delegating to {@link KeyManagerAPIConfiguration#getAuthUserName()}. 035 * @return the authUserName. 036 * @throws IllegalStateException if there is no configuration, yet, i.e. setConfiguration(...) was not yet called. 037 */ 038 public String getAuthUserName() throws IllegalStateException { 039 return getConf().getAuthUserName(); 040 } 041 042 /** 043 * Convenience method delegating to {@link KeyManagerAPIConfiguration#getAuthPassword()}. 044 * @return the authPassword. 045 * @throws IllegalStateException if there is no configuration, yet, i.e. setConfiguration(...) was not yet called. 046 */ 047 public char[] getAuthPassword() throws IllegalStateException { 048 return getConf().getAuthPassword(); 049 } 050 051 /** 052 * Convenience method delegating to {@link KeyManagerAPIConfiguration#getKeyStoreID()}. 053 * @return the keyStoreID. 054 * @throws IllegalStateException if there is no configuration, yet, i.e. setConfiguration(...) was not yet called. 055 */ 056 public String getKeyStoreID() throws IllegalStateException { 057 return getConf().getKeyStoreID(); 058 } 059 060 /** 061 * Convenience method delegating to {@link KeyManagerAPIConfiguration#getKeyManagerBaseURL()}. 062 * @return the keyManagerBaseURL. 063 * @throws IllegalStateException if there is no configuration, yet, i.e. setConfiguration(...) was not yet called. 064 */ 065 public String getKeyManagerBaseURL() throws IllegalStateException { 066 return getConf().getKeyManagerBaseURL(); 067 } 068 069 @Override 070 public void setConfiguration(KeyManagerAPIConfiguration configuration) throws IllegalArgumentException, KeyManagerAPIInstantiationException 071 { 072 if (configuration == null) 073 throw new IllegalArgumentException("configuration == null"); 074 075 // Mark it read-only to prevent any configuration change besides calling this method again. 076 configuration.markReadOnly(); 077 078 // The authUserName and authPassword is not necessarily required for all operations. 079 // if (configuration.getAuthUserName() == null) 080 // throw new IllegalArgumentException("configuration.authUserName == null"); 081 // 082 // if (configuration.getAuthPassword() == null) 083 // throw new IllegalArgumentException("configuration.authPassword == null"); 084 085 if (configuration.getKeyStoreID() == null) 086 throw new IllegalArgumentException("configuration.keyStoreID == null"); 087 088 this.configuration = configuration; 089 } 090 091 @Override 092 public KeyManagerAPIConfiguration getConfiguration() { 093 return configuration; 094 } 095 096 protected static boolean equals(Object o1, Object o2) 097 { 098 return o1 == o2 || (o1 != null && o1.equals(o2)); 099 } 100 }