summaryrefslogtreecommitdiffstats
path: root/pki/base/common/src/com/netscape/cms/servlet/common/CMSFile.java
diff options
context:
space:
mode:
Diffstat (limited to 'pki/base/common/src/com/netscape/cms/servlet/common/CMSFile.java')
-rw-r--r--pki/base/common/src/com/netscape/cms/servlet/common/CMSFile.java104
1 files changed, 104 insertions, 0 deletions
diff --git a/pki/base/common/src/com/netscape/cms/servlet/common/CMSFile.java b/pki/base/common/src/com/netscape/cms/servlet/common/CMSFile.java
new file mode 100644
index 000000000..523a1f94b
--- /dev/null
+++ b/pki/base/common/src/com/netscape/cms/servlet/common/CMSFile.java
@@ -0,0 +1,104 @@
+// --- BEGIN COPYRIGHT BLOCK ---
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// (C) 2007 Red Hat, Inc.
+// All rights reserved.
+// --- END COPYRIGHT BLOCK ---
+package com.netscape.cms.servlet.common;
+
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+
+import com.netscape.certsrv.apps.*;
+import com.netscape.certsrv.logging.ILogger;
+import com.netscape.certsrv.base.EBaseException;
+
+
+/**
+ * CMSFile represents a file from the filesystem cached in memory
+ *
+ * @version $Revision$, $Date$
+ */
+public class CMSFile {
+ protected String mAbsPath;
+ protected long mLastModified;
+ protected byte[] mContent;
+ protected long mLastAccess = 0;
+
+ protected ILogger mLogger = CMS.getLogger();
+
+ protected CMSFile() {
+ }
+
+ public CMSFile(File file) throws IOException, EBaseException {
+ mAbsPath = file.getAbsolutePath();
+ mLastModified = file.lastModified();
+ fillContent(file);
+ }
+
+ private void fillContent(File file) throws IOException {
+ int fileSize = (int) file.length();
+
+ mContent = new byte[fileSize];
+ FileInputStream fileIn = new FileInputStream(file);
+ int actualSize = fileIn.read(mContent);
+ fileIn.close();
+
+ if (actualSize != fileSize) {
+ byte[] actualContent = new byte[actualSize];
+
+ System.arraycopy(mContent, 0, actualContent, 0, actualSize);
+ mContent = actualContent;
+ }
+ }
+
+ public String getAbsPath() {
+ return mAbsPath;
+ }
+
+ public byte[] getContent() {
+ return mContent;
+ }
+
+ public long getLastModified() {
+ return mLastModified;
+ }
+
+ public synchronized long getLastAccess() {
+ return mLastAccess;
+ }
+
+ public synchronized void setLastAccess(long lastAccess) {
+ mLastAccess = lastAccess;
+ }
+
+ protected void log(int level, String msg) {
+ mLogger.log(ILogger.EV_SYSTEM, level, ILogger.S_OTHER, "CMSgateway:" + msg);
+ }
+
+ public String toString() {
+ try {
+ return new String(mContent, "UTF8");
+ } catch (UnsupportedEncodingException e) {
+ return new String(mContent);
+ }
+ }
+
+ public String toString(String enc) throws UnsupportedEncodingException {
+ return new String(mContent, enc);
+ }
+}