[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