svn commit: rev 22818 - in avalon/trunk/runtime/composition: api/src/java/org/apache/avalon/composition/model impl/src/java/org/apache/avalon/composition/model/impl

[email protected]
Newsgroups gmane.comp.jakarta.avalon.cvs
Message-ID <[email protected]>
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.