You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by cb...@apache.org on 2009/01/03 08:05:36 UTC

svn commit: r730929 - /ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java

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;
+    }
+
+  }
+
 }