[Registry-dev] svn commit r16797 - in trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc: . dao filecache utils

svn at wso2.org svn at wso2.org
Sun May 11 02:54:36 PDT 2008


Author: chathura
Date: Sun May 11 02:54:36 2008
New Revision: 16797

Log:

Completed file system based content caching for resources.

Implemented the periodic cache cleaning for unused content.



Added:
   trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/filecache/
   trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/filecache/FileCleanerTask.java
   trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/filecache/FileData.java
      - copied, changed from r16796, /trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/utils/FileData.java
   trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/filecache/FileManager.java
      - copied, changed from r16796, /trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/utils/FileManager.java
   trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/filecache/RegistryFileInputStream.java
      - copied, changed from r16796, /trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/utils/RegistryFileInputStream.java
Removed:
   trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/utils/FileData.java
   trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/utils/FileManager.java
   trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/utils/RegistryFileInputStream.java
Modified:
   trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/JDBCRegistry.java
   trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/dao/ResourceDAO.java
   trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/dao/ResourceVersionDAO.java

Modified: trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/JDBCRegistry.java
==============================================================================
--- trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/JDBCRegistry.java	(original)
+++ trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/JDBCRegistry.java	Sun May 11 02:54:36 2008
@@ -34,6 +34,7 @@
 import org.wso2.registry.jdbc.queries.QueryProcessorManager;
 import org.wso2.registry.jdbc.realm.RegistryRealm;
 import org.wso2.registry.jdbc.utils.Transaction;
+import org.wso2.registry.jdbc.filecache.FileManager;
 import org.wso2.registry.session.CurrentSession;
 import org.wso2.registry.users.UserRealm;
 import org.wso2.registry.users.UserStoreException;
@@ -126,7 +127,9 @@
 
     private void init(UserRealm realm) throws RegistryException {
 
-        defaultRealm = realm;
+        FileManager.init();
+
+                defaultRealm = realm;
 
         try {
             systemUserRealm = new AuthorizingRealm();

Modified: trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/dao/ResourceDAO.java
==============================================================================
--- trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/dao/ResourceDAO.java	(original)
+++ trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/dao/ResourceDAO.java	Sun May 11 02:54:36 2008
@@ -21,7 +21,7 @@
 import org.wso2.registry.*;
 import org.wso2.registry.Collection;
 import org.wso2.registry.jdbc.utils.Transaction;
-import org.wso2.registry.jdbc.utils.FileManager;
+import org.wso2.registry.jdbc.filecache.FileManager;
 import org.wso2.registry.session.CurrentSession;
 import org.wso2.registry.utils.AuthorizationUtils;
 import org.wso2.registry.jdbc.dataobjects.ResourceDO;

Modified: trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/dao/ResourceVersionDAO.java
==============================================================================
--- trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/dao/ResourceVersionDAO.java	(original)
+++ trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/dao/ResourceVersionDAO.java	Sun May 11 02:54:36 2008
@@ -17,7 +17,7 @@
 package org.wso2.registry.jdbc.dao;
 
 import org.wso2.registry.jdbc.utils.Transaction;
-import org.wso2.registry.jdbc.utils.FileManager;
+import org.wso2.registry.jdbc.filecache.FileManager;
 import org.wso2.registry.jdbc.dataobjects.ResourceDO;
 import org.wso2.registry.*;
 import org.wso2.registry.Collection;

Added: trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/filecache/FileCleanerTask.java
==============================================================================
--- (empty file)
+++ trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/filecache/FileCleanerTask.java	Sun May 11 02:54:36 2008
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2006, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * 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.wso2.registry.jdbc.filecache;
+
+import java.util.TimerTask;
+
+public class FileCleanerTask extends TimerTask {
+
+    public void run() {
+        FileManager.cleanupFiles();
+    }
+}

Copied: trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/filecache/FileData.java (from r16796, /trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/utils/FileData.java)
==============================================================================
--- /trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/utils/FileData.java	(original)
+++ trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/filecache/FileData.java	Sun May 11 02:54:36 2008
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.wso2.registry.jdbc.utils;
+package org.wso2.registry.jdbc.filecache;
 
 public class FileData {
 

Copied: trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/filecache/FileManager.java (from r16796, /trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/utils/FileManager.java)
==============================================================================
--- /trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/utils/FileManager.java	(original)
+++ trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/filecache/FileManager.java	Sun May 11 02:54:36 2008
@@ -14,9 +14,11 @@
  * limitations under the License.
  */
 
-package org.wso2.registry.jdbc.utils;
+package org.wso2.registry.jdbc.filecache;
 
 import org.wso2.registry.RegistryException;
+import org.wso2.registry.jdbc.filecache.FileData;
+import org.wso2.registry.jdbc.filecache.RegistryFileInputStream;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -24,6 +26,7 @@
 import java.util.Map;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.Timer;
 
 public class FileManager {
 
@@ -37,6 +40,13 @@
 
     private static String tempDir;
 
+    public static void init() {
+
+        long oneHour = 60 * 60 * 1000;
+        Timer timer = new Timer(true);
+        timer.scheduleAtFixedRate(new FileCleanerTask(), oneHour, oneHour);
+    }
+
     public static boolean hasFileBasedContent(String contentID) {
 
         if (fileDataMap.containsKey(contentID)) {
@@ -58,9 +68,14 @@
         }
 
         try {
-            return new RegistryFileInputStream(
+            InputStream inputStream = new RegistryFileInputStream(
                     new BufferedInputStream(new FileInputStream(tempFile)), contentID);
 
+            FileData fileData = fileDataMap.get(contentID);
+            fileData.incrementConnection();
+
+            return inputStream;
+
         } catch (FileNotFoundException e) {
 
             String msg = "Failed to create an input stream from the temp file " +
@@ -80,11 +95,7 @@
         String tempDir = getTempDirectory();
         String tempFilePath = tempDir + "reg" + contentID;
         File tempFile = new File(tempFilePath);
-        if (tempFile.exists()) {
-            FileData fileData = fileDataMap.get(contentID);
-            fileData.incrementConnection();
-
-        } else {
+        if (!tempFile.exists()) {
 
             BufferedOutputStream out = null;
 
@@ -92,8 +103,8 @@
                 tempFile.createNewFile();
                 tempFile.deleteOnExit();
 
+                // we increment the file data only after obtaining the input stream from file 
                 FileData fileData = new FileData();
-                fileData.incrementConnection();
                 fileDataMap.put(contentID, fileData);
 
                 out = new BufferedOutputStream(new FileOutputStream(tempFile));
@@ -132,9 +143,14 @@
 
 
         try {
-            return new RegistryFileInputStream(
+            InputStream fileBasedInputStream = new RegistryFileInputStream(
                     new BufferedInputStream(new FileInputStream(tempFile)), contentID);
 
+            FileData fileData = fileDataMap.get(contentID);
+            fileData.incrementConnection();
+
+            return fileBasedInputStream;
+
         } catch (FileNotFoundException e) {
 
             String msg = "Failed to create an input stream from the temp file " +
@@ -182,7 +198,6 @@
                     (currentTime - fileData.getIdleFrom()) >= MAXIMUM_IDLE_TIME_FOR_FILE) {
 
                 deleteFileBasedContent(contentID);
-                fileDataMap.remove(contentID);
             }
         }
     }

Copied: trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/filecache/RegistryFileInputStream.java (from r16796, /trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/utils/RegistryFileInputStream.java)
==============================================================================
--- /trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/utils/RegistryFileInputStream.java	(original)
+++ trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/filecache/RegistryFileInputStream.java	Sun May 11 02:54:36 2008
@@ -14,7 +14,9 @@
  * limitations under the License.
  */
 
-package org.wso2.registry.jdbc.utils;
+package org.wso2.registry.jdbc.filecache;
+
+import org.wso2.registry.jdbc.filecache.FileManager;
 
 import java.io.InputStream;
 import java.io.IOException;



More information about the Registry-dev mailing list