[Registry-dev] svn commit r14851 - branches/registry/1_0/modules/core/src/main/java/org/wso2/registry/jdbc/dao

svn at wso2.org svn at wso2.org
Sat Mar 15 10:34:46 PDT 2008


Author: glen
Date: Sat Mar 15 10:34:43 2008
New Revision: 14851

Log:

Use an in-memory cache of path -> id, since that relationship won't change and we do that query a lot.


Modified:
   branches/registry/1_0/modules/core/src/main/java/org/wso2/registry/jdbc/dao/VersionedResourceDAO.java

Modified: branches/registry/1_0/modules/core/src/main/java/org/wso2/registry/jdbc/dao/VersionedResourceDAO.java
==============================================================================
--- branches/registry/1_0/modules/core/src/main/java/org/wso2/registry/jdbc/dao/VersionedResourceDAO.java	(original)
+++ branches/registry/1_0/modules/core/src/main/java/org/wso2/registry/jdbc/dao/VersionedResourceDAO.java	Sat Mar 15 10:34:43 2008
@@ -30,10 +30,8 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.sql.*;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Properties;
+import java.sql.Date;
+import java.util.*;
 
 public class VersionedResourceDAO {
 
@@ -624,8 +622,13 @@
         return RegistryConstants.ACTIVE_STATE == count;
     }
 
+    Map<String, Long> idCache = new HashMap<String, Long>();
     public long getResourceID(String path, Connection conn) throws SQLException {
 
+        // Check for cache hit
+        Long cachedID = idCache.get(path);
+        if (cachedID != null) return cachedID;
+
         String sql = "SELECT A.AID FROM ARTIFACTS A WHERE A.PATH=?";
 
         PreparedStatement s = conn.prepareStatement(sql);
@@ -633,7 +636,9 @@
 
         ResultSet result = s.executeQuery();
         if (result.next()) {
-            return result.getLong(DatabaseConstants.AID_FIELD);
+            final long id = result.getLong(DatabaseConstants.AID_FIELD);
+            idCache.put(path, id);
+            return id;
         }
 
         return -1;



More information about the Registry-dev mailing list