Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationInfo.java URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationInfo.java?rev=393387&r1=393386&r2=393387&view=diff ============================================================================== --- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationInfo.java (original) +++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationInfo.java Tue Apr 11 22:21:19 2006 @@ -20,6 +20,7 @@ import org.apache.geronimo.kernel.management.State; import org.apache.geronimo.kernel.repository.Artifact; +import org.apache.geronimo.gbean.AbstractName; /** * @@ -30,18 +31,32 @@ private static final long serialVersionUID = 576134736036202445L; private final Artifact configID; private final ConfigurationModuleType type; + private final AbstractName storeName; + private final Artifact parentID; private final State state; - public ConfigurationInfo(Artifact configID, ConfigurationModuleType type) { + public ConfigurationInfo(AbstractName storeName, Artifact configID, ConfigurationModuleType type) { this.configID = configID; this.type = type; state = null; + this.storeName = storeName; + this.parentID = null; } - public ConfigurationInfo(Artifact configID, State state, ConfigurationModuleType type) { + public ConfigurationInfo(AbstractName storeName, Artifact configID, State state, ConfigurationModuleType type) { this.configID = configID; this.state = state; this.type = type; + this.storeName = storeName; + this.parentID = null; + } + + public ConfigurationInfo(AbstractName storeName, Artifact configID, State state, ConfigurationModuleType type, Artifact parentID) { + this.configID = configID; + this.state = state; + this.type = type; + this.storeName = storeName; + this.parentID = parentID; } public Artifact getConfigID() { @@ -56,4 +71,11 @@ return type; } + public AbstractName getStoreName() { + return storeName; + } + + public Artifact getParentID() { + return parentID; + } } Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java?rev=393387&r1=393386&r2=393387&view=diff ============================================================================== --- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java (original) +++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java Tue Apr 11 22:21:19 2006 @@ -16,16 +16,15 @@ */ package org.apache.geronimo.kernel.config; -import org.apache.geronimo.kernel.repository.Artifact; - -import javax.management.ObjectName; import java.io.IOException; import java.util.List; +import javax.management.ObjectName; +import org.apache.geronimo.kernel.repository.Artifact; /** * Encapsulates logic for dealing with configurations. * - * @version $Rev: 384686 $ $Date$ + * @version $Rev$ $Date$ */ public interface ConfigurationManager { /** @@ -40,6 +39,12 @@ * @return a List of the stores this manager controls */ List listStores(); + + /** + * Gets the configuration store responsible for the specified + * configuration, or null if there is none. + */ + ConfigurationStore getStoreForConfiguration(Artifact configuration); /** * Return a list of the configurations in a specific store. Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationStore.java URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationStore.java?rev=393387&r1=393386&r2=393387&view=diff ============================================================================== --- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationStore.java (original) +++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationStore.java Tue Apr 11 22:21:19 2006 @@ -25,6 +25,7 @@ import java.util.List; import org.apache.geronimo.kernel.repository.Artifact; +import org.apache.geronimo.gbean.AbstractName; /** * Interface to a store for Configurations. @@ -73,6 +74,13 @@ * @return the object name for the store */ String getObjectName(); + + /** + * Return the object name for the store. + * + * @return the object name for the store + */ + AbstractName getAbstractName(); /** * Return the configurations in the store Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java?rev=393387&r1=393386&r2=393387&view=diff ============================================================================== --- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java (original) +++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java Tue Apr 11 22:21:19 2006 @@ -28,18 +28,17 @@ import java.util.ListIterator; import java.util.Map; import javax.management.ObjectName; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.geronimo.gbean.InvalidConfigurationException; import org.apache.geronimo.kernel.jmx.JMXUtil; +import org.apache.geronimo.kernel.management.State; import org.apache.geronimo.kernel.repository.Artifact; import org.apache.geronimo.kernel.repository.ArtifactResolver; import org.apache.geronimo.kernel.repository.Dependency; import org.apache.geronimo.kernel.repository.Environment; import org.apache.geronimo.kernel.repository.ImportType; import org.apache.geronimo.kernel.repository.MissingDependencyException; -import org.apache.geronimo.kernel.management.State; /** * @version $Rev$ $Date$ @@ -80,6 +79,17 @@ return list; } + public ConfigurationStore getStoreForConfiguration(Artifact configuration) { + List storeSnapshot = getStores(); + List result = new ArrayList(storeSnapshot.size()); + for (int i = 0; i < storeSnapshot.size(); i++) { + ConfigurationStore store = (ConfigurationStore) storeSnapshot.get(i); + if(store.containsConfiguration(configuration)) { + return store; + } + } + return null; + } public List listConfigurations(ObjectName storeName) throws NoSuchStoreException { List storeSnapshot = getStores(); @@ -97,9 +107,9 @@ for (ListIterator iterator = list.listIterator(); iterator.hasNext();) { ConfigurationInfo configurationInfo = (ConfigurationInfo) iterator.next(); if (isRunning(configurationInfo.getConfigID())) { - configurationInfo = new ConfigurationInfo(configurationInfo.getConfigID(), State.RUNNING, configurationInfo.getType()); + configurationInfo = new ConfigurationInfo(store.getAbstractName(), configurationInfo.getConfigID(), State.RUNNING, configurationInfo.getType()); } else { - configurationInfo = new ConfigurationInfo(configurationInfo.getConfigID(), State.STOPPED, configurationInfo.getType()); + configurationInfo = new ConfigurationInfo(store.getAbstractName(), configurationInfo.getConfigID(), State.STOPPED, configurationInfo.getType()); } iterator.set(configurationInfo); } Modified: geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/kernel/config/ConfigurationManagerTest.java URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/kernel/config/ConfigurationManagerTest.java?rev=393387&r1=393386&r2=393387&view=diff ============================================================================== --- geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/kernel/config/ConfigurationManagerTest.java (original) +++ geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/kernel/config/ConfigurationManagerTest.java Tue Apr 11 22:21:19 2006 @@ -142,6 +142,10 @@ throw new UnsupportedOperationException(); } + public AbstractName getAbstractName() { + throw new UnsupportedOperationException(); + } + public List listConfigurations() { throw new UnsupportedOperationException(); } Modified: geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/kernel/repository/ArtifactResolverTest.java URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/kernel/repository/ArtifactResolverTest.java?rev=393387&r1=393386&r2=393387&view=diff ============================================================================== --- geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/kernel/repository/ArtifactResolverTest.java (original) +++ geronimo/branches/1.1/modules/kernel/src/test/org/apache/geronimo/kernel/repository/ArtifactResolverTest.java Tue Apr 11 22:21:19 2006 @@ -32,6 +32,7 @@ import junit.framework.TestCase; import org.apache.geronimo.gbean.GBeanInfo; import org.apache.geronimo.gbean.GBeanInfoBuilder; +import org.apache.geronimo.gbean.AbstractName; import org.apache.geronimo.kernel.Jsr77Naming; import org.apache.geronimo.kernel.config.Configuration; import org.apache.geronimo.kernel.config.ConfigurationData; @@ -175,6 +176,10 @@ } public String getObjectName() { + return null; + } + + public AbstractName getAbstractName() { return null; } Modified: geronimo/branches/1.1/modules/management/src/java/org/apache/geronimo/management/geronimo/J2EEServer.java URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/management/src/java/org/apache/geronimo/management/geronimo/J2EEServer.java?rev=393387&r1=393386&r2=393387&view=diff ============================================================================== --- geronimo/branches/1.1/modules/management/src/java/org/apache/geronimo/management/geronimo/J2EEServer.java (original) +++ geronimo/branches/1.1/modules/management/src/java/org/apache/geronimo/management/geronimo/J2EEServer.java Tue Apr 11 22:21:19 2006 @@ -103,4 +103,15 @@ * @return The ObjectName of the LoginService, in String form. */ public LoginService getLoginService(); + + /** + * Gets the ObjectName of the KeystoreManager associated with this + * J2EEServer. + * + * @see org.apache.geronimo.security.keystore.FileKeystoreManager + * + * @return The ObjectName of the KeystoreManager, in String form. + */ + public KeystoreManager getKeystoreManager(); + } Added: geronimo/branches/1.1/modules/management/src/java/org/apache/geronimo/management/geronimo/KeyIsLocked.java URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/management/src/java/org/apache/geronimo/management/geronimo/KeyIsLocked.java?rev=393387&view=auto ============================================================================== --- geronimo/branches/1.1/modules/management/src/java/org/apache/geronimo/management/geronimo/KeyIsLocked.java (added) +++ geronimo/branches/1.1/modules/management/src/java/org/apache/geronimo/management/geronimo/KeyIsLocked.java Tue Apr 11 22:21:19 2006 @@ -0,0 +1,33 @@ +/** + * + * Copyright 2005 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 org.apache.geronimo.management.geronimo; + +/** + * Exception indicating that the private key you tried to do something with is + * locked. It must be unlocked before it can be used in this way. + * + * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $ + */ +public class KeyIsLocked extends Exception { + public KeyIsLocked(String message) { + super(message); + } + + public KeyIsLocked(String message, Throwable cause) { + super(message, cause); + } +} Added: geronimo/branches/1.1/modules/management/src/java/org/apache/geronimo/management/geronimo/KeystoreInstance.java URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/management/src/java/org/apache/geronimo/management/geronimo/KeystoreInstance.java?rev=393387&view=auto ============================================================================== --- geronimo/branches/1.1/modules/management/src/java/org/apache/geronimo/management/geronimo/KeystoreInstance.java (added) +++ geronimo/branches/1.1/modules/management/src/java/org/apache/geronimo/management/geronimo/KeystoreInstance.java Tue Apr 11 22:21:19 2006 @@ -0,0 +1,133 @@ +/** + * + * Copyright 2005 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 org.apache.geronimo.management.geronimo; + +import java.security.cert.Certificate; + +/** + * Management interface for dealing with a specific Keystore + * + * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $ + */ +public interface KeystoreInstance { + /** + * Returns the name of the keystore as known to the keystore manager. + */ + public String getKeystoreName(); + + /** + * Saves a password to access the keystore as a whole. This means that any + * other server component can use this keystore to create a socket factory. + * However, the relevant private key in the keystore must also be unlocked. + * + * @return True if the keystore was unlocked successfully + */ + public boolean unlockKeystore(char[] password); + + /** + * Clears any saved password, meaning this keystore cannot be used by other + * server components. You can still query and update it by passing the + * password to other functions, + */ + public void lockKeystore(); + + /** + * Checks whether this keystore is unlocked, which is to say, available for + * other components to use to generate socket factories. + * Does not check whether the unlock password is actually correct. + */ + public boolean isKeystoreLocked(); + + /** + * Gets the aliases of all private key entries in the keystore + * + * @param storePassword Used to open the keystore. + */ + public String[] listPrivateKeys(char[] storePassword); + + /** + * Saves a password to access a private key. This means that if the + * keystore is also unlocked, any server component can create an SSL + * socket factory using this private key. Note that the keystore + * must be unlocked before this can be called. + * + * @param password The password to save. + * @return True if the key was unlocked successfully + */ + public boolean unlockPrivateKey(String alias, char[] password) throws KeystoreIsLocked; + + /** + * Clears any saved password for the specified private key, meaning this + * key cannot be used for a socket factory by other server components. + * You can still query and update it by passing the password to other + * functions, + */ + public void lockPrivateKey(String alias); + + /** + * Checks whether the specified private key is unlocked, which is to say, + * available for other components to use to generate socket factories. + * Does not check whether the unlock password is actually correct. + */ + public boolean isKeyUnlocked(String alias); + + /** + * Gets the aliases of all trusted certificate entries in the keystore. + * + * @param storePassword Used to open the keystore. + */ + public String[] listTrustCertificates(char[] storePassword); + + /** + * Gets a particular certificate from the keystore. This may be a trust + * certificate or the certificate corresponding to a particular private + * key. + * @param alias The certificate to look at + * @param storePassword The password to use to access the keystore + */ + public Certificate getCertificate(String alias, char[] storePassword); + + /** + * Adds a certificate to this keystore as a trusted certificate. + * @param cert The certificate to add + * @param alias The alias to list the certificate under + * @param storePassword The password for the keystore + * @return True if the certificate was imported successfully + */ + public boolean importTrustCertificate(Certificate cert, String alias, char[] storePassword); + + /** + * Generates a new private key and certificate pair in this keystore. + * @param alias The alias to store the new key pair under + * @param storePassword The password used to access the keystore + * @param keyPassword The password to use to protect the new key + * @param keyAlgorithm The algorithm used for the key (e.g. RSA) + * @param keySize The number of bits in the key (e.g. 1024) + * @param signatureAlgorithm The algorithm used to sign the key (e.g. MD5withRSA) + * @param validity The number of days the certificate should be valid for + * @param commonName The CN portion of the identity on the certificate + * @param orgUnit The OU portion of the identity on the certificate + * @param organization The O portion of the identity on the certificate + * @param locality The L portion of the identity on the certificate + * @param state The ST portion of the identity on the certificate + * @param country The C portion of the identity on the certificate + * @return True if the key was generated successfully + */ + public boolean generateKeyPair(String alias, char[] storePassword, char[] keyPassword, String keyAlgorithm, int keySize, + String signatureAlgorithm, int validity, String commonName, String orgUnit, + String organization, String locality, String state, String country); +} Added: geronimo/branches/1.1/modules/management/src/java/org/apache/geronimo/management/geronimo/KeystoreIsLocked.java URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/management/src/java/org/apache/geronimo/management/geronimo/KeystoreIsLocked.java?rev=393387&view=auto ============================================================================== --- geronimo/branches/1.1/modules/management/src/java/org/apache/geronimo/management/geronimo/KeystoreIsLocked.java (added) +++ geronimo/branches/1.1/modules/management/src/java/org/apache/geronimo/management/geronimo/KeystoreIsLocked.java Tue Apr 11 22:21:19 2006 @@ -0,0 +1,33 @@ +/** + * + * Copyright 2005 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 org.apache.geronimo.management.geronimo; + +/** + * Exception indicating that the keystore you tried to do something with is + * locked. It must be unlocked before it can be used in this way. + * + * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $ + */ +public class KeystoreIsLocked extends Exception { + public KeystoreIsLocked(String message) { + super(message); + } + + public KeystoreIsLocked(String message, Throwable cause) { + super(message, cause); + } +} Added: geronimo/branches/1.1/modules/management/src/java/org/apache/geronimo/management/geronimo/KeystoreManager.java URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/management/src/java/org/apache/geronimo/management/geronimo/KeystoreManager.java?rev=393387&view=auto ============================================================================== --- geronimo/branches/1.1/modules/management/src/java/org/apache/geronimo/management/geronimo/KeystoreManager.java (added) +++ geronimo/branches/1.1/modules/management/src/java/org/apache/geronimo/management/geronimo/KeystoreManager.java Tue Apr 11 22:21:19 2006 @@ -0,0 +1,64 @@ +/** + * + * Copyright 2005 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 org.apache.geronimo.management.geronimo; + +import javax.net.ServerSocketFactory; + +/** + * Management interface for working with keystores. Mostly this is used to + * identify KeystoreInstances to work with individual keystores. + * + * @see KeystoreInstance + * + * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $ + */ +public interface KeystoreManager { + /** + * Gets the names of the keystores available in the server. + */ + public KeystoreInstance[] getKeystores(); + + /** + * Gets a ServerSocketFactory using one Keystore to access the private key + * and another to provide the list of trusted certificate authorities. + * @param keyStore The key keystore name as provided by listKeystores. The + * KeystoreInstance for this keystore must be unlocked. + * @param keyAlias The name of the private key in the keystore. The + * KeystoreInstance for this keystore must have unlocked + * this key. + * @param trustStore The trust keystore name as provided by listKeystores. + * The KeystoreInstance for this keystore must have + * unlocked this key. + * + * @throws KeystoreIsLocked Occurs when the requested key keystore cannot + * be used because it has not been unlocked. + * @throws KeyIsLocked Occurs when the requested private key in the key + * keystore cannot be used because it has not been + * unlocked. + */ + public ServerSocketFactory createSSLFactory(String keyStore, String keyAlias, String trustStore) + throws KeystoreIsLocked, KeyIsLocked; + + /** + * Creates a new, empty keystore. The name should be a valid file name + * with no path separator characters. + * + * @param name The name of the keystore to create + * @param password The password to use to protect the new keystore + */ + public KeystoreInstance createKeystore(String name, char[] password); +} Modified: geronimo/branches/1.1/modules/security/project.xml URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/security/project.xml?rev=393387&r1=393386&r2=393387&view=diff ============================================================================== --- geronimo/branches/1.1/modules/security/project.xml (original) +++ geronimo/branches/1.1/modules/security/project.xml Tue Apr 11 22:21:19 2006 @@ -50,6 +50,15 @@ geronimo + geronimo-util + ${pom.currentVersion} + + true + + + + + geronimo geronimo-core ${pom.currentVersion} Copied: geronimo/branches/1.1/modules/security/src/java/org/apache/geronimo/security/keystore/FileKeystoreInstance.java (from r388236, geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/keystore/FileKeystoreInstance.java) URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/security/src/java/org/apache/geronimo/security/keystore/FileKeystoreInstance.java?p2=geronimo/branches/1.1/modules/security/src/java/org/apache/geronimo/security/keystore/FileKeystoreInstance.java&p1=geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/keystore/FileKeystoreInstance.java&r1=388236&r2=393387&rev=393387&view=diff ============================================================================== --- geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/keystore/FileKeystoreInstance.java (original) +++ geronimo/branches/1.1/modules/security/src/java/org/apache/geronimo/security/keystore/FileKeystoreInstance.java Tue Apr 11 22:21:19 2006 @@ -16,18 +16,6 @@ */ package org.apache.geronimo.security.keystore; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.geronimo.gbean.DynamicGBean; -import org.apache.geronimo.gbean.GBeanInfo; -import org.apache.geronimo.gbean.GBeanInfoBuilder; -import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory; -import org.apache.geronimo.kernel.Kernel; -import org.apache.geronimo.util.jce.X509Principal; -import org.apache.geronimo.util.jce.X509V1CertificateGenerator; - -import javax.management.MalformedObjectNameException; -import javax.management.ObjectName; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; @@ -56,6 +44,19 @@ import java.util.List; import java.util.Map; import java.util.Vector; +import javax.management.MalformedObjectNameException; +import javax.management.ObjectName; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.geronimo.gbean.DynamicGBean; +import org.apache.geronimo.gbean.GBeanInfo; +import org.apache.geronimo.gbean.GBeanInfoBuilder; +import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory; +import org.apache.geronimo.kernel.Kernel; +import org.apache.geronimo.management.geronimo.KeystoreInstance; +import org.apache.geronimo.management.geronimo.KeystoreIsLocked; +import org.apache.geronimo.util.jce.X509Principal; +import org.apache.geronimo.util.jce.X509V1CertificateGenerator; /** * Implementation of KeystoreInstance that accesses a keystore file on the Copied: geronimo/branches/1.1/modules/security/src/java/org/apache/geronimo/security/keystore/FileKeystoreManager.java (from r388236, geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/keystore/FileKeystoreManager.java) URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/security/src/java/org/apache/geronimo/security/keystore/FileKeystoreManager.java?p2=geronimo/branches/1.1/modules/security/src/java/org/apache/geronimo/security/keystore/FileKeystoreManager.java&p1=geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/keystore/FileKeystoreManager.java&r1=388236&r2=393387&rev=393387&view=diff ============================================================================== --- geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/keystore/FileKeystoreManager.java (original) +++ geronimo/branches/1.1/modules/security/src/java/org/apache/geronimo/security/keystore/FileKeystoreManager.java Tue Apr 11 22:21:19 2006 @@ -16,53 +16,47 @@ */ package org.apache.geronimo.security.keystore; -import org.apache.geronimo.system.serverinfo.ServerInfo; -import org.apache.geronimo.gbean.GBeanInfo; -import org.apache.geronimo.gbean.GBeanInfoBuilder; -import org.apache.geronimo.gbean.GBeanLifecycle; -import org.apache.geronimo.gbean.GBeanData; -import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory; -import org.apache.geronimo.j2ee.management.impl.Util; -import org.apache.geronimo.kernel.config.EditableConfigurationManager; -import org.apache.geronimo.kernel.config.ConfigurationUtil; -import org.apache.geronimo.kernel.config.Configuration; -import org.apache.geronimo.kernel.config.InvalidConfigException; -import org.apache.geronimo.kernel.Kernel; -import org.apache.geronimo.util.jce.*; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import javax.net.ServerSocketFactory; -import javax.management.ObjectName; -import javax.management.MalformedObjectNameException; -import java.io.File; -import java.io.OutputStream; import java.io.BufferedOutputStream; +import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.io.OutputStream; +import java.math.BigInteger; import java.net.URI; -import java.net.URISyntaxException; -import java.util.List; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.Map; -import java.util.Hashtable; -import java.util.Vector; -import java.util.Date; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; -import java.security.KeyPairGenerator; -import java.security.KeyPair; -import java.security.PublicKey; import java.security.PrivateKey; -import java.security.SignatureException; -import java.security.InvalidKeyException; +import java.security.PublicKey; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; -import java.security.cert.Certificate; -import java.math.BigInteger; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.Hashtable; +import java.util.Iterator; +import java.util.List; +import java.util.Vector; +import javax.net.ServerSocketFactory; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.geronimo.gbean.AbstractName; +import org.apache.geronimo.gbean.GBeanData; +import org.apache.geronimo.gbean.GBeanInfo; +import org.apache.geronimo.gbean.GBeanInfoBuilder; +import org.apache.geronimo.gbean.GBeanLifecycle; +import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory; +import org.apache.geronimo.kernel.Kernel; +import org.apache.geronimo.kernel.config.ConfigurationUtil; +import org.apache.geronimo.kernel.config.EditableConfigurationManager; +import org.apache.geronimo.kernel.config.InvalidConfigException; +import org.apache.geronimo.management.geronimo.KeyIsLocked; +import org.apache.geronimo.management.geronimo.KeystoreInstance; +import org.apache.geronimo.management.geronimo.KeystoreIsLocked; +import org.apache.geronimo.management.geronimo.KeystoreManager; +import org.apache.geronimo.system.serverinfo.ServerInfo; +import org.apache.geronimo.util.jce.X509Principal; +import org.apache.geronimo.util.jce.X509V1CertificateGenerator; /** * An implementation of KeystoreManager that assumes every file in a specified @@ -76,14 +70,12 @@ private ServerInfo serverInfo; private URI configuredDir; private Collection keystores; - private ObjectName mine; private Kernel kernel; - public FileKeystoreManager(URI keystoreDir, ServerInfo serverInfo, Collection keystores, String objectName, Kernel kernel) throws MalformedObjectNameException { + public FileKeystoreManager(URI keystoreDir, ServerInfo serverInfo, Collection keystores, Kernel kernel) { configuredDir = keystoreDir; this.serverInfo = serverInfo; this.keystores = keystores; - mine = ObjectName.getInstance(objectName); this.kernel = kernel; } @@ -110,7 +102,7 @@ public void doFail() { } - public String[] listKeystores() { + public String[] listKeystoreFiles() { File[] files = directory.listFiles(); List list = new ArrayList(); for (int i = 0; i < files.length; i++) { @@ -122,6 +114,18 @@ return (String[]) list.toArray(new String[list.size()]); } + public KeystoreInstance[] getKeystores() { + String[] names = listKeystoreFiles(); + KeystoreInstance[] result = new KeystoreInstance[names.length]; + for (int i = 0; i < result.length; i++) { + result[i] = getKeystore(names[i]); + if(result[i] == null) { + return null; + } + } + return result; + } + public KeystoreInstance getKeystore(String name) { for (Iterator it = keystores.iterator(); it.hasNext();) { KeystoreInstance instance = (KeystoreInstance) it.next(); @@ -133,31 +137,20 @@ if(!test.exists() || !test.canRead()) { throw new IllegalArgumentException("Cannot access keystore "+test.getAbsolutePath()+"!"); } - ObjectName oName; - Map props = mine.getKeyPropertyList(); - Hashtable revised = new Hashtable(props); - revised.put(NameFactory.J2EE_NAME, name); - revised.put(NameFactory.J2EE_TYPE, NameFactory.KEYSTORE_INSTANCE); - try { - oName = ObjectName.getInstance(mine.getDomain(), revised); - } catch (MalformedObjectNameException e) { - throw new IllegalArgumentException("Invalid keystore name '"+name+"' ("+e.getMessage()+")"); - } - GBeanData data = new GBeanData(oName, FileKeystoreInstance.getGBeanInfo()); + AbstractName aName; + AbstractName myName = kernel.getAbstractNameFor(this); + aName = kernel.getNaming().createChildName(myName, name, NameFactory.KEYSTORE_INSTANCE); + GBeanData data = new GBeanData(aName, FileKeystoreInstance.getGBeanInfo()); data.setAttribute("keystoreFile", test); data.setAttribute("keystoreName", name); EditableConfigurationManager mgr = ConfigurationUtil.getEditableConfigurationManager(kernel); if(mgr != null) { try { - ObjectName config = Util.getConfiguration(kernel, mine); - mgr.addGBeanToConfiguration(Configuration.getConfigurationID(config), data, true); - return (KeystoreInstance) kernel.getProxyManager().createProxy(oName, KeystoreInstance.class); + mgr.addGBeanToConfiguration(myName.getArtifact(), data, true); + return (KeystoreInstance) kernel.getProxyManager().createProxy(aName, KeystoreInstance.class); } catch (InvalidConfigException e) { log.error("Should never happen", e); throw new IllegalStateException("Unable to add Keystore GBean ("+e.getMessage()+")"); - } catch (URISyntaxException e) { - log.error("Should never happen", e); - throw new IllegalStateException("Unable to add Keystore GBean ("+e.getMessage()+")"); } finally { ConfigurationUtil.releaseConfigurationManager(kernel, mgr); } @@ -201,12 +194,11 @@ static { GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic(FileKeystoreManager.class); infoFactory.addAttribute("keystoreDir", URI.class, true); - infoFactory.addAttribute("objectName", String.class, false); infoFactory.addAttribute("kernel", Kernel.class, false); infoFactory.addReference("ServerInfo", ServerInfo.class, "GBean"); infoFactory.addReference("KeystoreInstances", KeystoreInstance.class, NameFactory.KEYSTORE_INSTANCE); infoFactory.addInterface(KeystoreManager.class); - infoFactory.setConstructor(new String[]{"keystoreDir", "ServerInfo", "KeystoreInstances", "objectName", "kernel"}); + infoFactory.setConstructor(new String[]{"keystoreDir", "ServerInfo", "KeystoreInstances", "kernel"}); GBEAN_INFO = infoFactory.getBeanInfo(); } @@ -281,7 +273,6 @@ certgen.setSerialNumber(new BigInteger(String.valueOf(curr))); // make certificate - X509Certificate cert = certgen.generateX509Certificate(privateKey); - return cert; + return certgen.generateX509Certificate(privateKey); } } Modified: geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/configuration/RepositoryConfigurationStore.java URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/configuration/RepositoryConfigurationStore.java?rev=393387&r1=393386&r2=393387&view=diff ============================================================================== --- geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/configuration/RepositoryConfigurationStore.java (original) +++ geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/configuration/RepositoryConfigurationStore.java Tue Apr 11 22:21:19 2006 @@ -33,6 +33,7 @@ import org.apache.geronimo.gbean.GBeanInfo; import org.apache.geronimo.gbean.GBeanInfoBuilder; +import org.apache.geronimo.gbean.AbstractName; import org.apache.geronimo.kernel.Kernel; import org.apache.geronimo.kernel.config.ConfigurationAlreadyExistsException; import org.apache.geronimo.kernel.config.ConfigurationData; @@ -74,6 +75,10 @@ return objectName.toString(); } + public AbstractName getAbstractName() { + return kernel.getAbstractNameFor(this); + } + public ConfigurationData loadConfiguration(Artifact configId) throws NoSuchConfigException, IOException, InvalidConfigException { File location = repository.getLocation(configId); @@ -244,7 +249,7 @@ ConfigurationData configurationData = loadConfiguration(configId); ConfigurationModuleType type = configurationData.getModuleType(); - configs.add(new ConfigurationInfo(configId, type)); + configs.add(new ConfigurationInfo(kernel.getAbstractNameFor(this), configId, type)); } catch (Exception e) { } } Modified: geronimo/branches/1.1/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilderTest.java URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilderTest.java?rev=393387&r1=393386&r2=393387&view=diff ============================================================================== --- geronimo/branches/1.1/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilderTest.java (original) +++ geronimo/branches/1.1/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilderTest.java Tue Apr 11 22:21:19 2006 @@ -402,6 +402,10 @@ return null; } + public AbstractName getAbstractName() { + return null; + } + public List listConfigurations() { return null; }