Author: mcconnell
Date: Sun Jul 11 10:01:56 2004
New Revision: 22818
Added:
avalon/trunk/runtime/composition/api/src/java/org/apache/avalon/composition/model/DuplicateNameException.java
Modified:
avalon/trunk/runtime/composition/api/src/java/org/apache/avalon/composition/model/ModelRepository.java
avalon/trunk/runtime/composition/impl/src/java/org/apache/avalon/composition/model/impl/DefaultModelRepository.java
Log:
Updates corresponding to RUNTIME-40 (elimination of the possibility to add a model to a container with the same name as an existing model).
Added: avalon/trunk/runtime/composition/api/src/java/org/apache/avalon/composition/model/DuplicateNameException.java
==============================================================================
--- (empty file)
+++ avalon/trunk/runtime/composition/api/src/java/org/apache/avalon/composition/model/DuplicateNameException.java Sun Jul 11 10:01:56 2004
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2004 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.avalon.composition.model;
+
+/**
+ * Exception raised in response to a model assembly failure.
+ *
+ * @author <a href="mailto:[email protected]">Avalon Development Team</a>
+ * @version $Revision: 1.5 $ $Date: 2004/03/07 22:10:39 $
+ */
+public class DuplicateNameException
+ extends ModelException
+{
+ /**
+ * Construct a new <code>DuplicateNameException</code> instance.
+ *
+ * @param name The conflicting name.
+ */
+ public DuplicateNameException( final String name )
+ {
+ super( name, null );
+ }
+}
+
Modified: avalon/trunk/runtime/composition/api/src/java/org/apache/avalon/composition/model/ModelRepository.java
==============================================================================
--- avalon/trunk/runtime/composition/api/src/java/org/apache/avalon/composition/model/ModelRepository.java (original)
+++ avalon/trunk/runtime/composition/api/src/java/org/apache/avalon/composition/model/ModelRepository.java Sun Jul 11 10:01:56 2004
@@ -93,9 +93,10 @@
/**
* Add an model to the repository.
*
- * @param model the model to add
+ * @param model the model to add
+ * @exception DuplicateNameException if the name is already bound
*/
- void addModel( DeploymentModel model );
+ void addModel( DeploymentModel model ) throws DuplicateNameException;
/**
* Add an model to the repository.
@@ -103,15 +104,22 @@
* @param name the name to register the model under
* @param model the model to add
*/
- void addModel( String name, DeploymentModel model );
+ void addModel( String name, DeploymentModel model ) throws DuplicateNameException;
/**
- * Remove an model from the repository.
+ * Remove a named model from the repository.
*
- * @param model the model to remove
+ * @param name the name of the model to remove
*/
- void removeModel( DeploymentModel model );
+ void removeModel( String name );
+ /**
+ * Remove a model from the repository.
+ *
+ * @param model the model to remove
+ */
+ void removeModel( DeploymentModel model );
+
/**
* Locate an model meeting the supplied criteria.
*
Modified: avalon/trunk/runtime/composition/impl/src/java/org/apache/avalon/composition/model/impl/DefaultModelRepository.java
==============================================================================
--- avalon/trunk/runtime/composition/impl/src/java/org/apache/avalon/composition/model/impl/DefaultModelRepository.java (original)
+++ avalon/trunk/runtime/composition/impl/src/java/org/apache/avalon/composition/model/impl/DefaultModelRepository.java Sun Jul 11 10:01:56 2004
@@ -24,6 +24,7 @@
import org.apache.avalon.composition.model.DeploymentModel;
import org.apache.avalon.composition.model.ModelRepository;
+import org.apache.avalon.composition.model.DuplicateNameException;
import org.apache.avalon.framework.logger.Logger;
@@ -247,8 +248,10 @@
* @param model the model to add
*/
public void addModel( DeploymentModel model )
- {
- m_models.put( model.getName(), model );
+ throws DuplicateNameException
+ {
+ final String name = model.getName();
+ addModel( name, model );
}
/**
@@ -257,19 +260,34 @@
* @param name the name to register the model under
* @param model the model to add
*/
- public void addModel( String name, DeploymentModel model )
+ public void addModel( String name, DeploymentModel model )
+ throws DuplicateNameException
{
+ if( null != m_models.get( name ) )
+ {
+ throw new DuplicateNameException( name );
+ }
m_models.put( name, model );
}
/**
- * Remove an model from the repository.
+ * Remove a model from the repository.
*
* @param model the model to remove
*/
public void removeModel( DeploymentModel model )
{
- m_models.remove( model.getName() );
+ removeModel( model.getName() );
+ }
+
+ /**
+ * Remove a named model from the repository.
+ *
+ * @param name the name of the model to remove
+ */
+ public void removeModel( String name )
+ {
+ m_models.remove( name );
}
/**
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.