Author: cbegin
Date: Fri Jan  2 23:05:36 2009
New Revision: 730929

URL: http://svn.apache.org/viewvc?rev=730929&view=rev
Log:
Used strict map for configuration collections.

Modified:
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java?rev=730929&r1=730928&r2=730929&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java
 Fri Jan  2 23:05:36 2009
@@ -40,10 +40,10 @@
   private final InterceptorChain interceptorChain = new InterceptorChain();
   private final TypeHandlerRegistry typeHandlerRegistry = new 
TypeHandlerRegistry();
   private final TypeAliasRegistry typeAliasRegistry = new TypeAliasRegistry();
-  private final Map<String, MappedStatement> mappedStatements = new 
HashMap<String, MappedStatement>();
-  private final Map<String, Cache> caches = new HashMap<String, Cache>();
-  private final Map<String, ResultMap> resultMaps = new HashMap<String, 
ResultMap>();
-  private final Map<String, ParameterMap> parameterMaps = new HashMap<String, 
ParameterMap>();
+  private final Map<String, MappedStatement> mappedStatements = new 
StrictMap<String, MappedStatement>("Mapped Statements collection");
+  private final Map<String, Cache> caches = new StrictMap<String, 
Cache>("Caches collection");
+  private final Map<String, ResultMap> resultMaps = new HashMap<String, 
ResultMap>();//("Result Maps collection");
+  private final Map<String, ParameterMap> parameterMaps = new 
StrictMap<String, ParameterMap>("Parameter Maps collection");
 
   public Configuration() {
     typeAliasRegistry.registerAlias("JDBC", 
JdbcTransactionFactory.class.getName());
@@ -241,4 +241,41 @@
     interceptorChain.addInterceptor(interceptor);
   }
 
+  private static class StrictMap<J,K> extends HashMap<J,K> {
+
+    private String name;
+
+    public StrictMap(String name, int initialCapacity, float loadFactor) {
+      super(initialCapacity, loadFactor);
+      this.name = name;
+    }
+
+    public StrictMap(String name, int initialCapacity) {
+      super(initialCapacity);
+      this.name = name;
+    }
+
+    public StrictMap(String name) {
+      super();
+      this.name = name;
+    }
+
+    public StrictMap(String name, Map<? extends J, ? extends K> m) {
+      super(m);
+      this.name = name;
+    }
+
+    public K put(J key, K value) {
+      if (containsKey(key)) throw new IllegalArgumentException(name + " 
already contains value for " + key);
+      return super.put(key, value);
+    }
+
+    public K get(Object key) {
+      K value = super.get(key);
+      if (value == null) throw new IllegalArgumentException(name + " does not 
contain value for " + key);
+      return value;
+    }
+
+  }
+
 }


Reply via email to