http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/agents-audit/src/main/java/com/xasecure/audit/provider/LocalFileLogBuffer.java
----------------------------------------------------------------------
diff --git 
a/agents-audit/src/main/java/com/xasecure/audit/provider/LocalFileLogBuffer.java
 
b/agents-audit/src/main/java/com/xasecure/audit/provider/LocalFileLogBuffer.java
deleted file mode 100644
index b96d555..0000000
--- 
a/agents-audit/src/main/java/com/xasecure/audit/provider/LocalFileLogBuffer.java
+++ /dev/null
@@ -1,687 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 com.xasecure.audit.provider;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileFilter;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
-import java.security.PrivilegedAction;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.TreeSet;
-
-import org.apache.hadoop.security.UserGroupInformation;
-
-
-public class LocalFileLogBuffer<T> implements LogBuffer<T> {
-       private String  mDirectory               = null;
-       private String  mFile                    = null;
-       private int     mFlushIntervalSeconds    = 1 * 60;
-       private int     mFileBufferSizeBytes     = 8 * 1024;
-       private String  mEncoding                = null;
-       private boolean mIsAppend                = true;
-       private int     mRolloverIntervalSeconds = 10 * 60;
-       private String  mArchiveDirectory        = null;
-       private int     mArchiveFileCount        = 10;
-       private DebugTracer mLogger              = null;
-
-       private Writer mWriter           = null;
-       private String mBufferFilename   = null;
-       private long   mNextRolloverTime = 0;
-       private long   mNextFlushTime    = 0;
-       private int    mFileOpenRetryIntervalInMs = 60 * 1000;
-       private long   mNextFileOpenRetryTime     = 0;
-
-       private DestinationDispatcherThread<T> mDispatcherThread = null;
-       
-       public LocalFileLogBuffer(DebugTracer tracer) {
-               mLogger = tracer;
-       }
-
-       public String getDirectory() {
-               return mDirectory;
-       }
-
-       public void setDirectory(String directory) {
-               mDirectory = directory;
-       }
-
-       public String getFile() {
-               return mFile;
-       }
-
-       public void setFile(String file) {
-               mFile = file;
-       }
-
-       public int getFileBufferSizeBytes() {
-               return mFileBufferSizeBytes;
-       }
-
-       public void setFileBufferSizeBytes(int fileBufferSizeBytes) {
-               mFileBufferSizeBytes = fileBufferSizeBytes;
-       }
-
-       public int getFlushIntervalSeconds() {
-               return mFlushIntervalSeconds;
-       }
-
-       public void setFlushIntervalSeconds(int flushIntervalSeconds) {
-               mFlushIntervalSeconds = flushIntervalSeconds;
-       }
-
-       public String getEncoding() {
-               return mEncoding;
-       }
-
-       public void setEncoding(String encoding) {
-               mEncoding = encoding;
-       }
-
-       public boolean getIsAppend() {
-               return mIsAppend;
-       }
-
-       public void setIsAppend(boolean isAppend) {
-               mIsAppend = isAppend;
-       }
-
-       public int getRolloverIntervalSeconds() {
-               return mRolloverIntervalSeconds;
-       }
-
-       public void setRolloverIntervalSeconds(int rolloverIntervalSeconds) {
-               mRolloverIntervalSeconds = rolloverIntervalSeconds;
-       }
-
-       public String getArchiveDirectory() {
-               return mArchiveDirectory;
-       }
-
-       public void setArchiveDirectory(String archiveDirectory) {
-               mArchiveDirectory = archiveDirectory;
-       }
-
-       public int getArchiveFileCount() {
-               return mArchiveFileCount;
-       }
-
-       public void setArchiveFileCount(int archiveFileCount) {
-               mArchiveFileCount = archiveFileCount;
-       }
-
-
-       @Override
-       public void start(LogDestination<T> destination) {
-               mLogger.debug("==> LocalFileLogBuffer.start()");
-
-               mDispatcherThread = new DestinationDispatcherThread<T>(this, 
destination, mLogger);
-
-               mDispatcherThread.start();
-
-               mLogger.debug("<== LocalFileLogBuffer.start()");
-       }
-
-       @Override
-       public void stop() {
-               mLogger.debug("==> LocalFileLogBuffer.stop()");
-               
-               DestinationDispatcherThread<T> dispatcherThread = 
mDispatcherThread;
-               mDispatcherThread = null;
-
-               if(dispatcherThread != null && dispatcherThread.isAlive()) {
-                       dispatcherThread.stopThread();
-
-                       try {
-                               dispatcherThread.join();
-                       } catch (InterruptedException e) {
-                               mLogger.warn("LocalFileLogBuffer.stop(): failed 
in waiting for DispatcherThread", e);
-                       }
-               }
-
-               closeFile();
-
-               mLogger.debug("<== LocalFileLogBuffer.stop()");
-       }
-
-       @Override
-       public boolean isAvailable() {
-               return mWriter != null;
-       }
-
-       @Override
-       public boolean add(T log) {
-               boolean ret = false;
-
-               String msg = MiscUtil.stringify(log);
-
-               if(msg.contains(MiscUtil.LINE_SEPARATOR)) {
-                       msg = msg.replace(MiscUtil.LINE_SEPARATOR, 
MiscUtil.ESCAPE_STR + MiscUtil.LINE_SEPARATOR);
-               }
-
-               synchronized(this) {
-                       checkFileStatus();
-       
-                       Writer writer = mWriter;
-       
-                       if(writer != null) {
-                               try {
-                                       writer.write(msg + 
MiscUtil.LINE_SEPARATOR);
-                                       
-                                       if(mFileBufferSizeBytes == 0) {
-                                               writer.flush();
-                                       }
-       
-                                       ret = true;
-                               } catch(IOException excp) {
-                                       mLogger.warn("LocalFileLogBuffer.add(): 
write failed", excp);
-
-                                       closeFile();
-                               }
-                       }
-               }
-
-               return ret;
-       }
-
-       @Override
-       public boolean isEmpty() {
-               return mDispatcherThread == null || mDispatcherThread.isIdle();
-       }
-
-       private synchronized void openFile() {
-               mLogger.debug("==> LocalFileLogBuffer.openFile()");
-
-               long now = System.currentTimeMillis();
-
-               closeFile();
-
-               if(mNextFileOpenRetryTime <= now) {
-                       try {
-                               mNextRolloverTime = 
MiscUtil.getNextRolloverTime(mNextRolloverTime, (mRolloverIntervalSeconds * 
1000L));
-
-                               long startTime = 
MiscUtil.getRolloverStartTime(mNextRolloverTime, (mRolloverIntervalSeconds * 
1000L));
-
-                               mBufferFilename = 
MiscUtil.replaceTokens(mDirectory + File.separator + mFile, startTime);
-
-                               MiscUtil.createParents(new 
File(mBufferFilename));
-
-                               FileOutputStream ostream = null;
-                               try {
-                                       ostream = new 
FileOutputStream(mBufferFilename, mIsAppend);
-                               } catch(Exception excp) {
-                                       
mLogger.warn("LocalFileLogBuffer.openFile(): failed to open file " + 
mBufferFilename, excp);
-                               }
-
-                               if(ostream != null) {
-                                       mWriter = createWriter(ostream);
-
-                                       if(mWriter != null) {
-                                               
mLogger.debug("LocalFileLogBuffer.openFile(): opened file " + mBufferFilename);
-
-                                               mNextFlushTime = 
System.currentTimeMillis() + (mFlushIntervalSeconds * 1000L);
-                                       } else {
-                                               
mLogger.warn("LocalFileLogBuffer.openFile(): failed to open file for write " + 
mBufferFilename);
-
-                                               mBufferFilename = null;
-                                       }
-                               }
-                       } finally {
-                               if(mWriter == null) {
-                                       mNextFileOpenRetryTime = now + 
mFileOpenRetryIntervalInMs;
-                               }
-                       }
-               }
-
-               mLogger.debug("<== LocalFileLogBuffer.openFile()");
-       }
-
-       private synchronized void closeFile() {
-               mLogger.debug("==> LocalFileLogBuffer.closeFile()");
-
-               Writer writer = mWriter;
-
-               mWriter = null;
-
-               if(writer != null) {
-                       try {
-                               writer.flush();
-                               writer.close();
-                       } catch(IOException excp) {
-                               mLogger.warn("LocalFileLogBuffer: failed to 
close file " + mBufferFilename, excp);
-                       }
-
-                       if(mDispatcherThread != null) {
-                               mDispatcherThread.addLogfile(mBufferFilename);
-                       }
-               }
-
-               mLogger.debug("<== LocalFileLogBuffer.closeFile()");
-       }
-
-       private void rollover() {
-               mLogger.debug("==> LocalFileLogBuffer.rollover()");
-
-               closeFile();
-
-               openFile();
-
-               mLogger.debug("<== LocalFileLogBuffer.rollover()");
-       }
-
-       private void checkFileStatus() {
-               long now = System.currentTimeMillis();
-
-               if(now > mNextRolloverTime) {
-                       rollover();
-               } else  if(mWriter == null) {
-                       openFile();
-               } else if(now > mNextFlushTime) {
-                       try {
-                               mNextFlushTime = now + (mFlushIntervalSeconds * 
1000L);
-
-                               mWriter.flush();
-                       } catch (IOException excp) {
-                               mLogger.warn("LocalFileLogBuffer: failed to 
flush to file " + mBufferFilename, excp);
-                       }
-               }
-       }
-
-       private Writer createWriter(OutputStream os ) {
-           Writer writer = null;
-
-           if(os != null) {
-                       if(mEncoding != null) {
-                               try {
-                                       writer = new OutputStreamWriter(os, 
mEncoding);
-                               } catch(UnsupportedEncodingException excp) {
-                                       mLogger.warn("LocalFileLogBuffer: 
failed to create output writer for file " + mBufferFilename, excp);
-                               }
-                       }
-       
-                       if(writer == null) {
-                               writer = new OutputStreamWriter(os);
-                       }
-
-                       if(mFileBufferSizeBytes > 0 && writer != null) {
-                       writer = new BufferedWriter(writer, 
mFileBufferSizeBytes);
-               }
-           }
-
-           return writer;
-       }
-
-       boolean isCurrentFilename(String filename) {
-               return mBufferFilename != null && filename != null && 
filename.equals(mBufferFilename);
-       }
-
-       @Override
-       public String toString() {
-               StringBuilder sb = new StringBuilder();
-
-               sb.append("LocalFileLogBuffer {");
-               sb.append("Directory=").append(mDirectory).append("; ");
-               sb.append("File=").append(mFile).append("; ");
-               
sb.append("RolloverIntervaSeconds=").append(mRolloverIntervalSeconds).append("; 
");
-               
sb.append("ArchiveDirectory=").append(mArchiveDirectory).append("; ");
-               sb.append("ArchiveFileCount=").append(mArchiveFileCount);
-               sb.append("}");
-
-               return sb.toString();
-       }
-       
-}
-
-class DestinationDispatcherThread<T> extends Thread {
-       private TreeSet<String>        mCompletedLogfiles = new 
TreeSet<String>();
-       private boolean                mStopThread        = false;
-       private LocalFileLogBuffer<T>  mFileLogBuffer     = null;
-       private LogDestination<T>      mDestination       = null;
-       private DebugTracer            mLogger            = null;
-
-       private String         mCurrentLogfile = null;
-       private BufferedReader mReader         = null;
-
-       public DestinationDispatcherThread(LocalFileLogBuffer<T> fileLogBuffer, 
LogDestination<T> destination, DebugTracer tracer) {
-               super(DestinationDispatcherThread.class.getSimpleName() + "-" + 
System.currentTimeMillis());
-
-               mLogger = tracer;
-
-               mFileLogBuffer = fileLogBuffer;
-               mDestination   = destination;
-
-               setDaemon(true);
-       }
-
-       public void addLogfile(String filename) {
-               mLogger.debug("==> DestinationDispatcherThread.addLogfile(" + 
filename + ")");
-
-               if(filename != null) {
-                       synchronized(mCompletedLogfiles) {
-                               mCompletedLogfiles.add(filename);
-                               mCompletedLogfiles.notify();
-                       }
-               }
-
-               mLogger.debug("<== DestinationDispatcherThread.addLogfile(" + 
filename + ")");
-       }
-
-       public void stopThread() {
-               mStopThread = true;
-       }
-
-       public boolean isIdle() {
-               synchronized(mCompletedLogfiles) {
-                       return mCompletedLogfiles.isEmpty() && mCurrentLogfile 
== null;
-               }
-       }
-
-       @Override
-       public void run() {
-               UserGroupInformation loginUser = null;
-
-               try {
-                       loginUser = UserGroupInformation.getLoginUser();
-               } catch (IOException excp) {
-                       mLogger.error("DestinationDispatcherThread.run(): 
failed to get login user details. Audit files will not be sent to HDFS 
destination", excp);
-               }
-
-               if(loginUser == null) {
-                       mLogger.error("DestinationDispatcherThread.run(): 
failed to get login user. Audit files will not be sent to HDFS destination");
-
-                       return;
-               }
-
-               loginUser.doAs(new PrivilegedAction<Integer>() {
-                       @Override
-                       public Integer run() {
-                               doRun();
-
-                               return 0;
-                       }
-               });
-       }
-
-       private void doRun() {
-               init();
-
-               mDestination.start();
-
-               long pollIntervalInMs = 1000L;
-
-               while(! mStopThread) {
-                       synchronized(mCompletedLogfiles) {
-                               while(mCompletedLogfiles.isEmpty() && 
!mStopThread) {
-                                       try {
-                                               
mCompletedLogfiles.wait(pollIntervalInMs);
-                                       } catch(InterruptedException excp) {
-                                               throw new 
RuntimeException("DestinationDispatcherThread.run(): failed to wait for log 
file", excp);
-                                       }
-                               }
-                               
-                               mCurrentLogfile = 
mCompletedLogfiles.pollFirst();
-                       }
-                       
-                       if(mCurrentLogfile != null) {
-                               sendCurrentFile();
-                       }
-               }
-
-               mDestination.stop();
-       }
-
-       private void init() {
-               mLogger.debug("==> DestinationDispatcherThread.init()");
-
-               String dirName = 
MiscUtil.replaceTokens(mFileLogBuffer.getDirectory(), 0);
-               
-               if(dirName != null) {
-                       File directory = new File(dirName);
-               
-                       if(directory.exists() && directory.isDirectory()) {
-                               File[] files = directory.listFiles();
-               
-                               if(files != null) {
-                                       for(File file : files) {
-                                               if(file.exists() && 
file.isFile() && file.canRead()) {
-                                                       String filename = 
file.getAbsolutePath();
-                                                       if(! 
mFileLogBuffer.isCurrentFilename(filename)) {
-                                                               
addLogfile(filename);
-                                                       }
-                                               }
-                                       }
-                               }
-                       }
-               }
-
-               mLogger.debug("<== DestinationDispatcherThread.init()");
-       }
-       
-       private boolean sendCurrentFile() {
-               mLogger.debug("==> 
DestinationDispatcherThread.sendCurrentFile()");
-
-               boolean ret = false;
-
-               long destinationPollIntervalInMs = 1000L;
-
-               openCurrentFile();
-
-                while(!mStopThread) {
-                       String log = getNextStringifiedLog();
-
-                       if(log == null) { // reached end-of-file
-                               ret = true;
-
-                               break;
-                       }
-
-                       // loop until log is sent successfully
-                       while(!mStopThread && 
!mDestination.sendStringified(log)) {
-                               try {
-                                       
Thread.sleep(destinationPollIntervalInMs);
-                               } catch(InterruptedException excp) {
-                                       throw new 
RuntimeException("LocalFileLogBuffer.sendCurrentFile(" + mCurrentLogfile + "): 
failed while waiting for destination to be available", excp);
-                               }
-                       }
-               }
-
-               closeCurrentFile();
-
-               if(!mStopThread) {
-                       mDestination.flush();
-                       archiveCurrentFile();
-               }
-
-               mLogger.debug("<== 
DestinationDispatcherThread.sendCurrentFile()");
-
-               return ret;
-       }
-
-       private String getNextStringifiedLog() {
-               String log = null;
-
-               if(mReader != null) {
-                       try {
-                               while(true) {
-                                       String line = mReader.readLine();
-
-                                       if(line == null) { // reached 
end-of-file
-                                               break;
-                                       }
-
-                                       if(line.endsWith(MiscUtil.ESCAPE_STR)) {
-                                               line = line.substring(0, 
line.length() - MiscUtil.ESCAPE_STR.length());
-
-                                               if(log == null) {
-                                                       log = line;
-                                               } else {
-                                                       log += 
MiscUtil.LINE_SEPARATOR;
-                                                       log += line;
-                                               }
-
-                                               continue;
-                                       } else {
-                                               if(log == null) {
-                                                       log = line;
-                                               } else {
-                                                       log += line;
-                                               }
-                                               break;
-                                       }
-                               }
-                       } catch (IOException excp) {
-                               
mLogger.warn("getNextStringifiedLog.getNextLog(): failed to read from file " + 
mCurrentLogfile, excp);
-                       }
-               }
-
-               return log;
-       }
-
-       private void openCurrentFile() {
-               mLogger.debug("==> openCurrentFile(" + mCurrentLogfile + ")");
-
-               if(mCurrentLogfile != null) {
-                       try {
-                               FileInputStream inStr = new 
FileInputStream(mCurrentLogfile);
-                               
-                               InputStreamReader strReader = 
createReader(inStr);
-                               
-                               if(strReader != null) {
-                                       mReader = new BufferedReader(strReader);
-                               }
-                       } catch(FileNotFoundException excp) {
-                               mLogger.warn("openNextFile(): error while 
opening file " + mCurrentLogfile, excp);
-                       }
-               }
-
-               mLogger.debug("<== openCurrentFile(" + mCurrentLogfile + ")");
-       }
-       
-       private void closeCurrentFile() {
-               mLogger.debug("==> closeCurrentFile(" + mCurrentLogfile + ")");
-
-               if(mReader != null) {
-                       try {
-                               mReader.close();
-                       } catch(IOException excp) {
-                               // ignore
-                       }
-               }
-               mReader = null;
-
-               mLogger.debug("<== closeCurrentFile(" + mCurrentLogfile + ")");
-       }
-
-       private void archiveCurrentFile() {
-               if(mCurrentLogfile != null) {
-                       File   logFile         = new File(mCurrentLogfile);
-                       String archiveDirName  = 
MiscUtil.replaceTokens(mFileLogBuffer.getArchiveDirectory(), 0);
-                       String archiveFilename = archiveDirName + 
File.separator +logFile.getName();
-
-                       try {
-                               if(logFile.exists()) {
-                                       File archiveFile = new 
File(archiveFilename);
-
-                                       MiscUtil.createParents(archiveFile);
-
-                                       if(! logFile.renameTo(archiveFile)) {
-                                               // TODO: renameTo() does not 
work in all cases. in case of failure, copy the file contents to the 
destination and delete the file
-                                               mLogger.warn("archiving failed 
to move file: " + mCurrentLogfile + " ==> " + archiveFilename);
-                                       }
-
-                                       File   archiveDir = new 
File(archiveDirName);
-                                       File[] files      = 
archiveDir.listFiles(new FileFilter() {
-                                                                               
        @Override
-                                                                               
        public boolean accept(File f) {
-                                                                               
                return f.isFile();
-                                                                               
        }
-                                                                               
});
-
-                                       int numOfFilesToDelete = files == null 
? 0 : (files.length - mFileLogBuffer.getArchiveFileCount());
-
-                                       if(numOfFilesToDelete > 0) {
-                                               Arrays.sort(files, new 
Comparator<File>() {
-                                                                               
                @Override
-                                                                               
                public int compare(File f1, File f2) {
-                                                                               
                        return (int)(f1.lastModified() - f2.lastModified());
-                                                                               
                }
-                                                                               
        });
-
-                                               for(int i = 0; i < 
numOfFilesToDelete; i++) {
-                                                       if(! files[i].delete()) 
{
-                                                               
mLogger.warn("archiving failed to delete file: " + files[i].getAbsolutePath());
-                                                       }
-                                               }
-                                       }
-                               }
-                       } catch(Exception excp) {
-                               mLogger.warn("archiveCurrentFile(): faile to 
move " + mCurrentLogfile + " to archive location " + archiveFilename, excp);
-                       }
-               }
-               mCurrentLogfile = null;
-       }
-
-       public InputStreamReader createReader(InputStream iStr) {
-               InputStreamReader reader = null;
-
-           if(iStr != null) {
-                       String encoding = mFileLogBuffer.getEncoding();
-
-                       if(encoding != null) {
-                               try {
-                                       reader = new InputStreamReader(iStr, 
encoding);
-                               } catch(UnsupportedEncodingException excp) {
-                                       mLogger.warn("createReader(): failed to 
create input reader.", excp);
-                               }
-                       }
-
-                       if(reader == null) {
-                               reader = new InputStreamReader(iStr);
-                       }
-           }
-
-           return reader;
-       }
-
-       @Override
-       public String toString() {
-               StringBuilder sb = new StringBuilder();
-
-               sb.append("DestinationDispatcherThread {");
-               sb.append("ThreadName=").append(this.getName()).append("; ");
-               
sb.append("CompletedLogfiles.size()=").append(mCompletedLogfiles.size()).append(";
 ");
-               sb.append("StopThread=").append(mStopThread).append("; ");
-               sb.append("CurrentLogfile=").append(mCurrentLogfile);
-               sb.append("}");
-
-               return sb.toString();
-       }
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/agents-audit/src/main/java/com/xasecure/audit/provider/Log4jAuditProvider.java
----------------------------------------------------------------------
diff --git 
a/agents-audit/src/main/java/com/xasecure/audit/provider/Log4jAuditProvider.java
 
b/agents-audit/src/main/java/com/xasecure/audit/provider/Log4jAuditProvider.java
deleted file mode 100644
index 65d5a6f..0000000
--- 
a/agents-audit/src/main/java/com/xasecure/audit/provider/Log4jAuditProvider.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 com.xasecure.audit.provider;
-
-import java.util.Properties;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.xasecure.audit.model.AuditEventBase;
-
-
-public class Log4jAuditProvider extends BaseAuditProvider {
-
-       private static final Log LOG      = 
LogFactory.getLog(Log4jAuditProvider.class);
-       private static final Log AUDITLOG = LogFactory.getLog("xaaudit." + 
Log4jAuditProvider.class.getName());
-
-       public static final String AUDIT_LOG4J_IS_ASYNC_PROP           = 
"xasecure.audit.log4j.is.async";
-       public static final String AUDIT_LOG4J_MAX_QUEUE_SIZE_PROP     = 
"xasecure.audit.log4j.async.max.queue.size" ;
-       public static final String AUDIT_LOG4J_MAX_FLUSH_INTERVAL_PROP = 
"xasecure.audit.log4j.async.max.flush.interval.ms";
-
-       private Gson mGsonBuilder = null;
-
-       public Log4jAuditProvider() {
-               LOG.info("Log4jAuditProvider: creating..");
-       }
-
-       @Override
-       public void init(Properties props) {
-               LOG.info("Log4jAuditProvider.init()");
-
-               super.init(props);
-
-               try {
-                       mGsonBuilder = new 
GsonBuilder().setDateFormat("yyyyMMdd-HH:mm:ss.SSS-Z").create();
-               } catch(Throwable excp) {
-                       LOG.warn("Log4jAuditProvider.init(): failed to create 
GsonBuilder object. events will be formated using toString(), instead of Json", 
excp);
-               }
-       }
-
-       @Override
-       public void log(AuditEventBase event) {
-               if(! AUDITLOG.isInfoEnabled())
-                       return;
-               
-               if(event != null) {
-                       String eventStr = mGsonBuilder != null ? 
mGsonBuilder.toJson(event) : event.toString();
-
-                       AUDITLOG.info(eventStr);
-               }
-       }
-
-       @Override
-       public void start() {
-               // intentionally left empty
-       }
-
-       @Override
-       public void stop() {
-               // intentionally left empty
-       }
-
-       @Override
-    public void waitToComplete() {
-               // intentionally left empty
-       }
-
-       @Override
-       public boolean isFlushPending() {
-               return false;
-       }
-       
-       @Override
-       public long getLastFlushTime() {
-               return 0;
-       }
-
-       @Override
-       public void flush() {
-               // intentionally left empty
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/agents-audit/src/main/java/com/xasecure/audit/provider/Log4jTracer.java
----------------------------------------------------------------------
diff --git 
a/agents-audit/src/main/java/com/xasecure/audit/provider/Log4jTracer.java 
b/agents-audit/src/main/java/com/xasecure/audit/provider/Log4jTracer.java
deleted file mode 100644
index 734ad8d..0000000
--- a/agents-audit/src/main/java/com/xasecure/audit/provider/Log4jTracer.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.xasecure.audit.provider;
-
-import org.apache.commons.logging.Log;
-
-public class Log4jTracer implements DebugTracer {
-       private Log mLogger = null;
-
-       public Log4jTracer(Log logger) {
-               mLogger = logger;
-       }
-
-       public void debug(String msg) {
-               mLogger.debug(msg);
-       }
-
-       public void debug(String msg, Throwable excp) {
-               mLogger.debug(msg, excp);
-       }
-
-       public void info(String msg) {
-               mLogger.info(msg);
-       }
-
-       public void info(String msg, Throwable excp) {
-               mLogger.info(msg, excp);
-       }
-
-       public void warn(String msg) {
-               mLogger.warn(msg);
-       }
-
-       public void warn(String msg, Throwable excp) {
-               mLogger.warn(msg, excp);
-       }
-
-       public void error(String msg) {
-               mLogger.error(msg);
-       }
-
-       public void error(String msg, Throwable excp) {
-               mLogger.error(msg, excp);
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/agents-audit/src/main/java/com/xasecure/audit/provider/LogBuffer.java
----------------------------------------------------------------------
diff --git 
a/agents-audit/src/main/java/com/xasecure/audit/provider/LogBuffer.java 
b/agents-audit/src/main/java/com/xasecure/audit/provider/LogBuffer.java
deleted file mode 100644
index d8ff10a..0000000
--- a/agents-audit/src/main/java/com/xasecure/audit/provider/LogBuffer.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 com.xasecure.audit.provider;
-
-
-public interface LogBuffer<T> {
-       public void start(LogDestination<T> destination);
-
-       public void stop();
-
-       boolean isAvailable();
-
-       public boolean isEmpty();
-
-       public boolean add(T log);
-}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/agents-audit/src/main/java/com/xasecure/audit/provider/LogDestination.java
----------------------------------------------------------------------
diff --git 
a/agents-audit/src/main/java/com/xasecure/audit/provider/LogDestination.java 
b/agents-audit/src/main/java/com/xasecure/audit/provider/LogDestination.java
deleted file mode 100644
index 18c740e..0000000
--- a/agents-audit/src/main/java/com/xasecure/audit/provider/LogDestination.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 com.xasecure.audit.provider;
-
-
-public interface LogDestination<T> {
-       public void start();
-
-       public void stop();
-
-       boolean isAvailable();
-
-       public boolean send(T log);
-
-       public boolean sendStringified(String log);
-
-       public boolean flush();
-}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/agents-audit/src/main/java/com/xasecure/audit/provider/MiscUtil.java
----------------------------------------------------------------------
diff --git 
a/agents-audit/src/main/java/com/xasecure/audit/provider/MiscUtil.java 
b/agents-audit/src/main/java/com/xasecure/audit/provider/MiscUtil.java
deleted file mode 100644
index 872420e..0000000
--- a/agents-audit/src/main/java/com/xasecure/audit/provider/MiscUtil.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.xasecure.audit.provider;
-
-import java.io.File;
-import java.net.InetAddress;
-import java.rmi.dgc.VMID;
-import java.text.SimpleDateFormat;
-import java.util.UUID;
-
-import org.apache.log4j.helpers.LogLog;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-
-public class MiscUtil {
-       public static final String TOKEN_START        = "%";
-       public static final String TOKEN_END          = "%";
-       public static final String TOKEN_HOSTNAME     = "hostname";
-       public static final String TOKEN_APP_TYPE     = "app-type";
-       public static final String TOKEN_JVM_INSTANCE = "jvm-instance";
-       public static final String TOKEN_TIME         = "time:";
-       public static final String TOKEN_PROPERTY     = "property:";
-       public static final String TOKEN_ENV          = "env:";
-       public static final String ESCAPE_STR           = "\\";
-
-       static VMID sJvmID = new VMID();
-
-       public static String LINE_SEPARATOR = 
System.getProperty("line.separator");
-
-       private static Gson   sGsonBuilder = null;
-       private static String sApplicationType = null;
-
-       static {
-               try {
-                       sGsonBuilder = new 
GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss.SSS").create();
-               } catch(Throwable excp) {
-                       LogLog.warn("failed to create GsonBuilder object. 
stringigy() will return obj.toString(), instead of Json", excp);
-               }
-       }
-
-       public static String replaceTokens(String str, long time) {
-               if(str == null) {
-                       return str;
-               }
-
-               if(time <= 0) {
-                       time = System.currentTimeMillis();
-               }
-
-        for(int startPos = 0; startPos < str.length(); ) {
-            int tagStartPos = str.indexOf(TOKEN_START, startPos);
-            
-            if(tagStartPos == -1) {
-               break;
-            }
-
-            int tagEndPos = str.indexOf(TOKEN_END, tagStartPos + 
TOKEN_START.length());
-
-            if(tagEndPos == -1) {
-               break;
-            }
-
-            String tag   = str.substring(tagStartPos, 
tagEndPos+TOKEN_END.length());
-            String token = tag.substring(TOKEN_START.length(), 
tag.lastIndexOf(TOKEN_END));
-            String val   = "";
-
-            if(token != null) {
-                   if(token.equals(TOKEN_HOSTNAME)) {
-                       val = getHostname();
-                   } else if(token.equals(TOKEN_APP_TYPE)) {
-                       val = getApplicationType();
-                   } else if(token.equals(TOKEN_JVM_INSTANCE)) {
-                       val = getJvmInstanceId();
-                   } else if(token.startsWith(TOKEN_PROPERTY)) {
-                       String propertyName = 
token.substring(TOKEN_PROPERTY.length());
-       
-                       val = getSystemProperty(propertyName);
-                   } else if(token.startsWith(TOKEN_ENV)) {
-                       String envName = token.substring(TOKEN_ENV.length());
-       
-                       val = getEnv(envName);
-                   } else if(token.startsWith(TOKEN_TIME)) {
-                       String dtFormat = token.substring(TOKEN_TIME.length());
-                       
-                       val = getFormattedTime(time, dtFormat);
-                   }
-            }
-
-            if(val == null) {
-               val = "";
-            }
-
-            str = str.substring(0, tagStartPos) + val + 
str.substring(tagEndPos + TOKEN_END.length());
-            startPos = tagStartPos + val.length();
-        }
-
-        return str;
-       }
-
-       public static String getHostname() {
-               String ret = null;
-
-               try {
-                       ret = InetAddress.getLocalHost().getHostName();
-               } catch (Exception excp) {
-                       LogLog.warn("getHostname()", excp);
-               }
-
-               return ret;
-       }
-
-       public static void setApplicationType(String applicationType) {
-               sApplicationType = applicationType;
-       }
-
-       public static String getApplicationType() {
-               return sApplicationType;
-       }
-
-       public static String getJvmInstanceId() {
-               String ret = 
Integer.toString(Math.abs(sJvmID.toString().hashCode()));
-
-               return ret;
-       }
-
-       public static String getSystemProperty(String propertyName) {
-               String ret = null;
-
-               try {
-                       ret = propertyName != null ? 
System.getProperty(propertyName) : null;
-               } catch (Exception excp) {
-                       LogLog.warn("getSystemProperty(" + propertyName + ") 
failed", excp);
-               }
-
-               return ret;
-       }
-
-       public static String getEnv(String envName) {
-               String ret = null;
-
-               try {
-                       ret = envName != null ? System.getenv(envName) : null;
-               } catch (Exception excp) {
-                       LogLog.warn("getenv(" + envName + ") failed", excp);
-               }
-
-               return ret;
-       }
-
-       public static String getFormattedTime(long time, String format) {
-               String ret = null;
-
-               try {
-            SimpleDateFormat sdf = new SimpleDateFormat(format);
-
-            ret = sdf.format(time);
-               } catch (Exception excp) {
-                       LogLog.warn("SimpleDateFormat.format() failed: " + 
format, excp);
-               }
-
-               return ret;
-       }
-
-       public static void createParents(File file) {
-               if(file != null) {
-                       String parentName = file.getParent();
-
-                       if (parentName != null) {
-                               File parentDir = new File(parentName);
-
-                               if(!parentDir.exists()) {
-                                       if(! parentDir.mkdirs()) {
-                                               LogLog.warn("createParents(): 
failed to create " + parentDir.getAbsolutePath());
-                                       }
-                               }
-                       }
-               }
-       }
-
-       public static long getNextRolloverTime(long lastRolloverTime, long 
interval) {
-               long now = System.currentTimeMillis() / 1000 * 1000; // round 
to second
-
-               if(lastRolloverTime <= 0) {
-                       // should this be set to the next 
multiple-of-the-interval from start of the day?
-                       return now + interval;
-               } else if(lastRolloverTime <= now) {
-                       long nextRolloverTime = now + interval;
-
-                       // keep it at 'interval' boundary
-                       long trimInterval = (nextRolloverTime - 
lastRolloverTime) % interval;
-
-                       return nextRolloverTime - trimInterval;
-               } else {
-                       return lastRolloverTime;
-               }
-       }
-
-       public static long getRolloverStartTime(long nextRolloverTime, long 
interval) {
-               return (nextRolloverTime <= interval) ? 
System.currentTimeMillis() : nextRolloverTime - interval;
-       }
-
-       public static int parseInteger(String str, int defValue) {
-               int ret = defValue;
-
-               if(str != null) {
-                       try {
-                               ret = Integer.parseInt(str);
-                       } catch(Exception excp) {
-                               // ignore
-                       }
-               }
-
-               return ret;
-       }
-       
-       public static String generateUniqueId() {
-               return UUID.randomUUID().toString();
-       }
-
-       public static <T> String stringify(T log) {
-               String ret = null;
-
-               if(log != null) {
-                       if(log instanceof String) {
-                               ret = (String)log;
-                       } else if(MiscUtil.sGsonBuilder != null) {
-                               ret = MiscUtil.sGsonBuilder.toJson(log);
-                       } else {
-                               ret = log.toString();
-                       }
-               }
-
-               return ret;
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/agents-audit/src/main/java/com/xasecure/audit/provider/MultiDestAuditProvider.java
----------------------------------------------------------------------
diff --git 
a/agents-audit/src/main/java/com/xasecure/audit/provider/MultiDestAuditProvider.java
 
b/agents-audit/src/main/java/com/xasecure/audit/provider/MultiDestAuditProvider.java
deleted file mode 100644
index f1b908d..0000000
--- 
a/agents-audit/src/main/java/com/xasecure/audit/provider/MultiDestAuditProvider.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 com.xasecure.audit.provider;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import com.xasecure.audit.model.AuditEventBase;
-import com.xasecure.audit.model.HBaseAuditEvent;
-import com.xasecure.audit.model.HdfsAuditEvent;
-import com.xasecure.audit.model.HiveAuditEvent;
-import com.xasecure.audit.model.KnoxAuditEvent;
-import com.xasecure.audit.model.StormAuditEvent;
-
-
-public class MultiDestAuditProvider extends BaseAuditProvider {
-
-       private static final Log LOG = 
LogFactory.getLog(MultiDestAuditProvider.class);
-
-       protected List<AuditProvider> mProviders = new 
ArrayList<AuditProvider>();
-
-
-       public MultiDestAuditProvider() {
-               LOG.info("MultiDestAuditProvider: creating..");
-       }
-
-       public MultiDestAuditProvider(AuditProvider provider) {
-               addAuditProvider(provider);
-       }
-
-       @Override
-       public void init(Properties props) {
-               LOG.info("MultiDestAuditProvider.init()");
-
-               super.init(props);
-
-               for(AuditProvider provider : mProviders) {
-               try {
-                provider.init(props);
-               } catch(Throwable excp) {
-                       LOG.info("MultiDestAuditProvider.init(): failed" + 
provider.getClass().getCanonicalName() + ")");
-               }
-        }
-       }
-
-       public void addAuditProvider(AuditProvider provider) {
-               if(provider != null) {
-                       
LOG.info("MultiDestAuditProvider.addAuditProvider(providerType=" + 
provider.getClass().getCanonicalName() + ")");
-
-                       mProviders.add(provider);
-               }
-       }
-
-       public void addAuditProviders(List<AuditProvider> providers) {
-               if(providers != null) {
-                       for(AuditProvider provider : providers) {
-                               addAuditProvider(provider);
-                       }
-               }
-       }
-
-       @Override
-       public void log(AuditEventBase event) {
-        for(AuditProvider provider : mProviders) {
-               try {
-                provider.log(event);
-               } catch(Throwable excp) {
-                       logFailedEvent(event, excp);
-               }
-        }
-       }
-
-       @Override
-       public void start() {
-               for(AuditProvider provider : mProviders) {
-               try {
-                               provider.start();
-               } catch(Throwable excp) {
-                       LOG.error("AsyncAuditProvider.start(): failed for 
provider { " + provider.getClass().getName() + " }", excp);
-               }
-               }
-       }
-
-       @Override
-       public void stop() {
-               for(AuditProvider provider : mProviders) {
-                       try {
-                               provider.stop();
-                       } catch(Throwable excp) {
-                       LOG.error("AsyncAuditProvider.stop(): failed for 
provider { " + provider.getClass().getName() + " }", excp);
-                       }
-               }
-       }
-
-       @Override
-    public void waitToComplete() {
-               for(AuditProvider provider : mProviders) {
-                       try {
-                               provider.waitToComplete();
-                       } catch(Throwable excp) {
-                       LOG.error("AsyncAuditProvider.waitToComplete(): failed 
for provider { " + provider.getClass().getName() + " }", excp);
-                       }
-               }
-       }
-       
-       @Override
-       public boolean isFlushPending() {
-               for(AuditProvider provider : mProviders) {
-                       if(provider.isFlushPending()) {
-                               return true;
-                       }
-               }
-               
-               return false;
-       }
-       
-       @Override
-       public long getLastFlushTime() {
-               long lastFlushTime = 0;
-               for(AuditProvider provider : mProviders) {
-                       long flushTime = provider.getLastFlushTime();
-                       
-                       if(flushTime != 0) {
-                               if(lastFlushTime == 0 || lastFlushTime > 
flushTime) {
-                                       lastFlushTime = flushTime;
-                               }
-                       }
-               }
-               
-               return lastFlushTime;
-       }
-       
-       @Override
-       public void flush() {
-               for(AuditProvider provider : mProviders) {
-                       try {
-                               provider.flush();
-                       } catch(Throwable excp) {
-                       LOG.error("AsyncAuditProvider.flush(): failed for 
provider { " + provider.getClass().getName() + " }", excp);
-                       }
-               }
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/agents-audit/src/main/java/com/xasecure/audit/provider/hdfs/HdfsAuditProvider.java
----------------------------------------------------------------------
diff --git 
a/agents-audit/src/main/java/com/xasecure/audit/provider/hdfs/HdfsAuditProvider.java
 
b/agents-audit/src/main/java/com/xasecure/audit/provider/hdfs/HdfsAuditProvider.java
deleted file mode 100644
index b6a50ab..0000000
--- 
a/agents-audit/src/main/java/com/xasecure/audit/provider/hdfs/HdfsAuditProvider.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.xasecure.audit.provider.hdfs;
-
-import java.util.Map;
-import java.util.Properties;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import com.xasecure.audit.model.AuditEventBase;
-import com.xasecure.audit.provider.BaseAuditProvider;
-import com.xasecure.audit.provider.BufferedAuditProvider;
-import com.xasecure.audit.provider.DebugTracer;
-import com.xasecure.audit.provider.LocalFileLogBuffer;
-import com.xasecure.audit.provider.Log4jTracer;
-import com.xasecure.audit.provider.MiscUtil;
-
-public class HdfsAuditProvider extends BufferedAuditProvider {
-       private static final Log LOG = 
LogFactory.getLog(HdfsAuditProvider.class);
-
-       public static final String AUDIT_HDFS_IS_ASYNC_PROP           = 
"xasecure.audit.hdfs.is.async";
-       public static final String AUDIT_HDFS_MAX_QUEUE_SIZE_PROP     = 
"xasecure.audit.hdfs.async.max.queue.size" ;
-       public static final String AUDIT_HDFS_MAX_FLUSH_INTERVAL_PROP = 
"xasecure.audit.hdfs.async.max.flush.interval.ms";
-
-       public HdfsAuditProvider() {
-       }
-
-       public void init(Properties props) {
-               LOG.info("HdfsAuditProvider.init()");
-
-               super.init(props);
-
-               Map<String, String> hdfsProps = 
BaseAuditProvider.getPropertiesWithPrefix(props, "xasecure.audit.hdfs.config.");
-
-               String encoding                                = 
hdfsProps.get("encoding");
-
-               String hdfsDestinationDirectory                = 
hdfsProps.get("destination.directory");
-               String hdfsDestinationFile                     = 
hdfsProps.get("destination.file");
-               int    hdfsDestinationFlushIntervalSeconds     = 
MiscUtil.parseInteger(hdfsProps.get("destination.flush.interval.seconds"), 15 * 
60);
-               int    hdfsDestinationRolloverIntervalSeconds  = 
MiscUtil.parseInteger(hdfsProps.get("destination.rollover.interval.seconds"), 
24 * 60 * 60);
-               int    hdfsDestinationOpenRetryIntervalSeconds = 
MiscUtil.parseInteger(hdfsProps.get("destination.open.retry.interval.seconds"), 
60);
-
-               String localFileBufferDirectory               = 
hdfsProps.get("local.buffer.directory");
-               String localFileBufferFile                    = 
hdfsProps.get("local.buffer.file");
-               int    localFileBufferFlushIntervalSeconds    = 
MiscUtil.parseInteger(hdfsProps.get("local.buffer.flush.interval.seconds"), 1 * 
60);
-               int    localFileBufferFileBufferSizeBytes     = 
MiscUtil.parseInteger(hdfsProps.get("local.buffer.file.buffer.size.bytes"), 8 * 
1024);
-               int    localFileBufferRolloverIntervalSeconds = 
MiscUtil.parseInteger(hdfsProps.get("local.buffer.rollover.interval.seconds"), 
10 * 60);
-               String localFileBufferArchiveDirectory        = 
hdfsProps.get("local.archive.directory");
-               int    localFileBufferArchiveFileCount        = 
MiscUtil.parseInteger(hdfsProps.get("local.archive.max.file.count"), 10);
-
-               DebugTracer tracer = new Log4jTracer(LOG);
-
-               HdfsLogDestination<AuditEventBase> mHdfsDestination = new 
HdfsLogDestination<AuditEventBase>(tracer);
-
-               mHdfsDestination.setDirectory(hdfsDestinationDirectory);
-               mHdfsDestination.setFile(hdfsDestinationFile);
-               
mHdfsDestination.setFlushIntervalSeconds(hdfsDestinationFlushIntervalSeconds);
-               mHdfsDestination.setEncoding(encoding);
-               
mHdfsDestination.setRolloverIntervalSeconds(hdfsDestinationRolloverIntervalSeconds);
-               
mHdfsDestination.setOpenRetryIntervalSeconds(hdfsDestinationOpenRetryIntervalSeconds);
-
-               LocalFileLogBuffer<AuditEventBase> mLocalFileBuffer = new 
LocalFileLogBuffer<AuditEventBase>(tracer);
-
-               mLocalFileBuffer.setDirectory(localFileBufferDirectory);
-               mLocalFileBuffer.setFile(localFileBufferFile);
-               
mLocalFileBuffer.setFlushIntervalSeconds(localFileBufferFlushIntervalSeconds);
-               
mLocalFileBuffer.setFileBufferSizeBytes(localFileBufferFileBufferSizeBytes);
-               mLocalFileBuffer.setEncoding(encoding);
-               
mLocalFileBuffer.setRolloverIntervalSeconds(localFileBufferRolloverIntervalSeconds);
-               
mLocalFileBuffer.setArchiveDirectory(localFileBufferArchiveDirectory);
-               
mLocalFileBuffer.setArchiveFileCount(localFileBufferArchiveFileCount);
-               
-               setBufferAndDestination(mLocalFileBuffer, mHdfsDestination);
-       }
-}
-
-
-

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/agents-audit/src/main/java/com/xasecure/audit/provider/hdfs/HdfsLogDestination.java
----------------------------------------------------------------------
diff --git 
a/agents-audit/src/main/java/com/xasecure/audit/provider/hdfs/HdfsLogDestination.java
 
b/agents-audit/src/main/java/com/xasecure/audit/provider/hdfs/HdfsLogDestination.java
deleted file mode 100644
index f81f526..0000000
--- 
a/agents-audit/src/main/java/com/xasecure/audit/provider/hdfs/HdfsLogDestination.java
+++ /dev/null
@@ -1,452 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 com.xasecure.audit.provider.hdfs;
-
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.UnsupportedEncodingException;
-import java.net.URI;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FSDataOutputStream;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-
-import com.xasecure.audit.provider.DebugTracer;
-import com.xasecure.audit.provider.LogDestination;
-import com.xasecure.audit.provider.MiscUtil;
-
-public class HdfsLogDestination<T> implements LogDestination<T> {
-       public final static String EXCP_MSG_FILESYSTEM_CLOSED = "Filesystem 
closed";
-
-       private String  mDirectory                = null;
-       private String  mFile                     = null;
-       private int     mFlushIntervalSeconds     = 1 * 60;
-       private String  mEncoding                 = null;
-       private boolean mIsAppend                 = false;
-       private int     mRolloverIntervalSeconds  = 24 * 60 * 60;
-       private int     mOpenRetryIntervalSeconds = 60;
-       private DebugTracer mLogger               = null;
-
-       private FSDataOutputStream mFsDataOutStream    = null;
-       private OutputStreamWriter mWriter             = null; 
-       private String             mHdfsFilename       = null;
-       private long               mNextRolloverTime   = 0;
-       private long               mNextFlushTime      = 0;
-       private long               mLastOpenFailedTime = 0;
-       private boolean            mIsStopInProgress   = false;
-
-       public HdfsLogDestination(DebugTracer tracer) {
-               mLogger = tracer;
-       }
-
-       public String getDirectory() {
-               return mDirectory;
-       }
-
-       public void setDirectory(String directory) {
-               this.mDirectory = directory;
-       }
-
-       public String getFile() {
-               return mFile;
-       }
-
-       public void setFile(String file) {
-               this.mFile = file;
-       }
-
-       public int getFlushIntervalSeconds() {
-               return mFlushIntervalSeconds;
-       }
-
-       public void setFlushIntervalSeconds(int flushIntervalSeconds) {
-               mFlushIntervalSeconds = flushIntervalSeconds;
-       }
-
-       public String getEncoding() {
-               return mEncoding;
-       }
-
-       public void setEncoding(String encoding) {
-               mEncoding = encoding;
-       }
-
-       public int getRolloverIntervalSeconds() {
-               return mRolloverIntervalSeconds;
-       }
-
-       public void setRolloverIntervalSeconds(int rolloverIntervalSeconds) {
-               this.mRolloverIntervalSeconds = rolloverIntervalSeconds;
-       }
-
-       public int getOpenRetryIntervalSeconds() {
-               return mOpenRetryIntervalSeconds;
-       }
-
-       public void setOpenRetryIntervalSeconds(int 
minIntervalOpenRetrySeconds) {
-               this.mOpenRetryIntervalSeconds = minIntervalOpenRetrySeconds;
-       }
-
-       @Override
-       public void start() {
-               mLogger.debug("==> HdfsLogDestination.start()");
-
-               openFile();
-
-               mLogger.debug("<== HdfsLogDestination.start()");
-       }
-
-       @Override
-       public void stop() {
-               mLogger.debug("==> HdfsLogDestination.stop()");
-
-               mIsStopInProgress = true;
-
-               closeFile();
-
-               mIsStopInProgress = false;
-
-               mLogger.debug("<== HdfsLogDestination.stop()");
-       }
-
-       @Override
-       public boolean isAvailable() {
-               return mWriter != null;
-       }
-
-       @Override
-       public boolean send(T log) {
-               boolean ret = false;
-               
-               if(log != null) {
-                       String msg = log.toString();
-
-                       ret = sendStringified(msg);
-               }
-
-               return ret;
-       }
-
-       @Override
-       public boolean sendStringified(String log) {
-               boolean ret = false;
-
-               checkFileStatus();
-
-               OutputStreamWriter writer = mWriter;
-
-               if(writer != null) {
-                       try {
-                               writer.write(log + MiscUtil.LINE_SEPARATOR);
-
-                               ret = true;
-                       } catch (IOException excp) {
-                               
mLogger.warn("HdfsLogDestination.sendStringified(): write failed", excp);
-
-                               closeFile();
-                       }
-               }
-
-               return ret;
-       }
-
-       @Override
-       public boolean flush() {
-               mLogger.debug("==> HdfsLogDestination.flush()");
-
-               boolean ret = false;
-
-               OutputStreamWriter writer  = mWriter;
-
-               if(writer != null) {
-                       try {
-                               writer.flush();
-                               
-                               ret = true;
-                       } catch (IOException excp) {
-                               logException("HdfsLogDestination: flush() 
failed", excp);
-                       }
-               }
-
-               FSDataOutputStream ostream = mFsDataOutStream;
-
-               if(ostream != null) {
-                       try {
-                               ostream.hflush();
-
-                               ret = true;
-                       } catch (IOException excp) {
-                               logException("HdfsLogDestination: hflush() 
failed", excp);
-                       }
-               }
-
-               if(ret) {
-                       mNextFlushTime = System.currentTimeMillis() + 
(mFlushIntervalSeconds * 1000L);
-               }
-
-               mLogger.debug("<== HdfsLogDestination.flush()");
-
-               return ret;
-       }
-
-       private void openFile() {
-               mLogger.debug("==> HdfsLogDestination.openFile()");
-
-               closeFile();
-
-               mNextRolloverTime = 
MiscUtil.getNextRolloverTime(mNextRolloverTime, (mRolloverIntervalSeconds * 
1000L));
-
-               long startTime = 
MiscUtil.getRolloverStartTime(mNextRolloverTime, (mRolloverIntervalSeconds * 
1000L));
-
-               mHdfsFilename = MiscUtil.replaceTokens(mDirectory + 
org.apache.hadoop.fs.Path.SEPARATOR + mFile, startTime);
-
-               FSDataOutputStream ostream     = null;
-               FileSystem         fileSystem  = null;
-               Path               pathLogfile = null;
-               Configuration      conf        = null;
-               boolean            bOverwrite  = false;
-
-               try {
-                       mLogger.debug("HdfsLogDestination.openFile(): opening 
file " + mHdfsFilename);
-
-                       URI uri = URI.create(mHdfsFilename);
-
-                       // TODO: mechanism to XA-HDFS plugin to disable 
auditing of access checks to the current HDFS file
-
-                       conf        = new Configuration();
-                       pathLogfile = new Path(mHdfsFilename);
-                       fileSystem  = FileSystem.get(uri, conf);
-
-                       try {
-                               if(fileSystem.exists(pathLogfile)) { // file 
already exists. either append to the file or write to a new file
-                                       if(mIsAppend) {
-                                               
mLogger.info("HdfsLogDestination.openFile(): opening file for append " + 
mHdfsFilename);
-
-                                               ostream = 
fileSystem.append(pathLogfile);
-                                       } else {
-                                               mHdfsFilename = 
getNewFilename(mHdfsFilename, fileSystem);
-                                               pathLogfile   = new 
Path(mHdfsFilename);
-                                       }
-                               }
-
-                               // if file does not exist or if 
mIsAppend==false, create the file
-                               if(ostream == null) {
-                                       
mLogger.info("HdfsLogDestination.openFile(): opening file for write " + 
mHdfsFilename);
-
-                                       createParents(pathLogfile, fileSystem);
-                                       ostream = 
fileSystem.create(pathLogfile, bOverwrite);
-                               }
-                       } catch(IOException excp) {
-                               // append may not be supported by the 
filesystem; or the file might already be open by another application. Try a 
different filename
-                               String failedFilename = mHdfsFilename;
-
-                               mHdfsFilename = getNewFilename(mHdfsFilename, 
fileSystem);
-                               pathLogfile   = new Path(mHdfsFilename);
-
-                               mLogger.info("HdfsLogDestination.openFile(): 
failed in opening file " + failedFilename + ". Will try opening " + 
mHdfsFilename);
-                       }
-
-                       if(ostream == null){
-                               mLogger.info("HdfsLogDestination.openFile(): 
opening file for write " + mHdfsFilename);
-
-                               createParents(pathLogfile, fileSystem);
-                               ostream = fileSystem.create(pathLogfile, 
bOverwrite);
-                       }
-               } catch(Throwable ex) {
-                       mLogger.warn("HdfsLogDestination.openFile() failed", 
ex);
-               } finally {
-                       // TODO: unset the property set above to exclude 
auditing of logfile opening
-                       //        
System.setProperty(hdfsCurrentFilenameProperty, null);
-               }
-
-               mWriter = createWriter(ostream);
-
-               if(mWriter != null) {
-                       mLogger.debug("HdfsLogDestination.openFile(): opened 
file " + mHdfsFilename);
-
-                       mFsDataOutStream    = ostream;
-                       mNextFlushTime      = System.currentTimeMillis() + 
(mFlushIntervalSeconds * 1000L);
-                       mLastOpenFailedTime = 0;
-               } else {
-                       mLogger.warn("HdfsLogDestination.openFile(): failed to 
open file for write " + mHdfsFilename);
-
-                       mHdfsFilename = null;
-                       mLastOpenFailedTime = System.currentTimeMillis();
-               }
-
-               mLogger.debug("<== HdfsLogDestination.openFile(" + 
mHdfsFilename + ")");
-       }
-
-       private void closeFile() {
-               mLogger.debug("==> HdfsLogDestination.closeFile()");
-               
-               flush();
-
-               OutputStreamWriter writer = mWriter;
-
-               mWriter          = null;
-               mFsDataOutStream = null;
-
-               if(writer != null) {
-                       try {
-                               mLogger.info("HdfsLogDestination.closeFile(): 
closing file " + mHdfsFilename);
-
-                               writer.close();
-                       } catch(IOException excp) {
-                               logException("HdfsLogDestination: failed to 
close file " + mHdfsFilename, excp);
-                       }
-               }
-
-               mLogger.debug("<== HdfsLogDestination.closeFile()");
-       }
-
-       private void rollover() {
-               mLogger.debug("==> HdfsLogDestination.rollover()");
-
-               closeFile();
-
-               openFile();
-
-               mLogger.debug("<== HdfsLogDestination.rollover()");
-       }
-
-       private void checkFileStatus() {
-               long now = System.currentTimeMillis();
-
-               if(mWriter == null) {
-                       if(now > (mLastOpenFailedTime + 
(mOpenRetryIntervalSeconds * 1000L))) {
-                               openFile();
-                       }
-               } else  if(now > mNextRolloverTime) {
-                       rollover();
-               } else if(now > mNextFlushTime) {
-                       flush();
-               }
-       }
-
-       private OutputStreamWriter createWriter(OutputStream os ) {
-           OutputStreamWriter writer = null;
-
-           if(os != null) {
-                       if(mEncoding != null) {
-                               try {
-                                       writer = new OutputStreamWriter(os, 
mEncoding);
-                               } catch(UnsupportedEncodingException excp) {
-                                       
mLogger.warn("HdfsLogDestination.createWriter(): failed to create output 
writer.", excp);
-                               }
-                       }
-       
-                       if(writer == null) {
-                               writer = new OutputStreamWriter(os);
-                       }
-           }
-
-           return writer;
-       }
-       
-       private void createParents(Path pathLogfile, FileSystem fileSystem) {
-               try {
-                       Path parentPath = pathLogfile != null ? 
pathLogfile.getParent() : null;
-
-                       if(parentPath != null && fileSystem != null && 
!fileSystem.exists(parentPath)) {
-                                fileSystem.mkdirs(parentPath);
-                       }
-               } catch (IOException e) {
-                       logException("HdfsLogDestination.createParents() 
failed", e);
-               } catch (Throwable e) {
-                       mLogger.warn("HdfsLogDestination.createParents() 
failed", e);
-               }
-       }
-
-    private String getNewFilename(String fileName, FileSystem fileSystem) {
-       if(fileName == null) {
-               return "";
-       }
-
-        for(int i = 1; ; i++) {
-               String ret = fileName;
-
-               String strToAppend = "-" + Integer.toString(i);
-       
-               int extnPos = ret.lastIndexOf(".");
-       
-               if(extnPos < 0) {
-                   ret += strToAppend;
-               } else {
-                   String extn = ret.substring(extnPos);
-       
-                   ret = ret.substring(0, extnPos) + strToAppend + extn;
-               }
-               
-               if(fileSystem != null && fileExists(ret, fileSystem)) {
-                       continue;
-               } else {
-                       return ret;
-               }
-       }
-    }
-    
-    private boolean fileExists(String fileName, FileSystem fileSystem) {
-       boolean ret = false;
-
-       if(fileName != null && fileSystem != null) {
-               Path path = new Path(fileName);
-
-               try {
-                       ret = fileSystem.exists(path);
-               } catch(IOException excp) {
-                       // ignore
-               }
-       }
- 
-       return ret;
-    }
-
-    private void logException(String msg, IOException excp) {
-               // during shutdown, the underlying FileSystem might already be 
closed; so don't print error details
-
-               if(mIsStopInProgress) {
-                       return;
-               }
-
-               String  excpMsgToExclude   = EXCP_MSG_FILESYSTEM_CLOSED;;
-               String  excpMsg            = excp != null ? excp.getMessage() : 
null;
-               boolean excpExcludeLogging = (excpMsg != null && 
excpMsg.contains(excpMsgToExclude));
-               
-               if(! excpExcludeLogging) {
-                       mLogger.warn(msg, excp);
-               }
-       }
-
-       @Override
-       public String toString() {
-               StringBuilder sb = new StringBuilder();
-
-               sb.append("HdfsLogDestination {");
-               sb.append("Directory=").append(mDirectory).append("; ");
-               sb.append("File=").append(mFile).append("; ");
-               
sb.append("RolloverIntervalSeconds=").append(mRolloverIntervalSeconds);
-               sb.append("}");
-               
-               return sb.toString();
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/agents-audit/src/main/java/com/xasecure/audit/test/TestEvents.java
----------------------------------------------------------------------
diff --git a/agents-audit/src/main/java/com/xasecure/audit/test/TestEvents.java 
b/agents-audit/src/main/java/com/xasecure/audit/test/TestEvents.java
deleted file mode 100644
index 92497f7..0000000
--- a/agents-audit/src/main/java/com/xasecure/audit/test/TestEvents.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 com.xasecure.audit.test;
-import org.apache.commons.logging.Log;
-import org.apache.log4j.xml.DOMConfigurator;
-import org.apache.commons.logging.LogFactory;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.util.Date;
-import java.util.Properties;
-
-import com.xasecure.audit.model.AuditEventBase;
-import com.xasecure.audit.model.HBaseAuditEvent;
-import com.xasecure.audit.model.HdfsAuditEvent;
-import com.xasecure.audit.model.HiveAuditEvent;
-import com.xasecure.audit.model.KnoxAuditEvent;
-import com.xasecure.audit.model.StormAuditEvent;
-import com.xasecure.audit.provider.AuditProvider;
-import com.xasecure.audit.provider.AuditProviderFactory;
-import com.xasecure.audit.provider.AuditProviderFactory.ApplicationType;
-
-public class TestEvents {
-
-       private static final Log LOG = LogFactory.getLog(TestEvents.class);
-
-    public static void main(String[] args) {
-       DOMConfigurator.configure("log4j.xml");
-
-        LOG.info("==> TestEvents.main()");
-        
-        try {
-               Properties auditProperties = new Properties();
-               
-               String AUDIT_PROPERTIES_FILE = "xasecure-audit.properties";
-               
-               File propFile = new File(AUDIT_PROPERTIES_FILE);
-               
-               if(propFile.exists()) {
-               LOG.info("Loading Audit properties file" + 
AUDIT_PROPERTIES_FILE);
-
-               auditProperties.load(new FileInputStream(propFile));
-               } else {
-               LOG.info("Audit properties file missing: " + 
AUDIT_PROPERTIES_FILE);
-
-               
auditProperties.setProperty("xasecure.audit.jpa.javax.persistence.jdbc.url", 
"jdbc:mysql://localhost:3306/xa_db");
-                       
auditProperties.setProperty("xasecure.audit.jpa.javax.persistence.jdbc.user", 
"xaaudit");
-                       
auditProperties.setProperty("xasecure.audit.jpa.javax.persistence.jdbc.password",
 "xaaudit");
-                       
auditProperties.setProperty("xasecure.audit.jpa.javax.persistence.jdbc.driver", 
"com.mysql.jdbc.Driver");
-       
-                       
auditProperties.setProperty("xasecure.audit.is.enabled", "true");
-                       
auditProperties.setProperty("xasecure.audit.log4j.is.enabled", "false");
-                       
auditProperties.setProperty("xasecure.audit.log4j.is.async", "false");
-                       
auditProperties.setProperty("xasecure.audit.log4j.async.max.queue.size", 
"100000");
-                       
auditProperties.setProperty("xasecure.audit.log4j.async.max.flush.interval.ms", 
"30000");
-                       
auditProperties.setProperty("xasecure.audit.db.is.enabled", "true");
-                       
auditProperties.setProperty("xasecure.audit.db.is.async", "true");
-                       
auditProperties.setProperty("xasecure.audit.db.async.max.queue.size", "100000");
-                       
auditProperties.setProperty("xasecure.audit.db.async.max.flush.interval.ms", 
"30000");
-                       
auditProperties.setProperty("xasecure.audit.db.batch.size", "100");
-               }
-               
-               AuditProviderFactory.getInstance().init(auditProperties, 
ApplicationType.Hdfs);
-
-               AuditProvider provider = 
AuditProviderFactory.getAuditProvider();
-
-               LOG.info("provider=" + provider.toString());
-
-               String strEventCount          = args.length > 0 ? args[0] : 
auditProperties.getProperty("xasecure.audit.test.event.count");
-               String strEventPauseTimeInMs  = args.length > 1 ? args[1] : 
auditProperties.getProperty("xasecure.audit.test.event.pause.time.ms");
-               String strSleepTimeBeforeExit = args.length > 2 ? args[2] : 
auditProperties.getProperty("xasecure.audit.test.sleep.time.before.exit.seconds");
-
-               int eventCount          = (strEventCount == null) ? 1024 : 
Integer.parseInt(strEventCount);
-               int eventPauseTime      = (strEventPauseTimeInMs == null) ? 0 : 
Integer.parseInt(strEventPauseTimeInMs);
-               int sleepTimeBeforeExit = ((strSleepTimeBeforeExit == null) ? 0 
: Integer.parseInt(strSleepTimeBeforeExit)) * 1000;
-
-               for(int i = 0; i < eventCount; i++) {
-                       AuditEventBase event = getTestEvent(i);
-
-                   LOG.info("==> TestEvents.main(" + (i+1) + "): adding " + 
event.getClass().getName());
-                       provider.log(event);
-
-                       if(eventPauseTime > 0) {
-                               Thread.sleep(eventPauseTime);
-                       }
-               }
-
-            provider.waitToComplete();
-            
-            // incase of HdfsAuditProvider, logs are saved to local file 
system which gets sent to HDFS asynchronusly in a separate thread.
-            // So, at this point it is possible that few local log files 
haven't made to HDFS.
-            if(sleepTimeBeforeExit > 0) {
-               LOG.info("waiting for " + sleepTimeBeforeExit + "ms before 
exiting..");
-
-               try {
-                       Thread.sleep(sleepTimeBeforeExit);
-               } catch(Exception excp) {
-                       LOG.info("error while waiting before exiting..");
-               }
-            }
-
-            provider.stop();
-        } catch(Exception excp) {
-            LOG.info(excp.getLocalizedMessage());
-               excp.printStackTrace();
-        }
-
-        LOG.info("<== TestEvents.main()");
-    }
-    
-    private static AuditEventBase getTestEvent(int idx) {
-       AuditEventBase event = null;
- 
-               switch(idx % 5) {
-                       case 0:
-                               event = new HdfsAuditEvent();
-                       break;
-                       case 1:
-                               event = new HBaseAuditEvent();
-                       break;
-                       case 2:
-                               event = new HiveAuditEvent();
-                       break;
-                       case 3:
-                               event = new KnoxAuditEvent();
-                       break;
-                       case 4:
-                               event = new StormAuditEvent();
-                       break;
-               }
-               event.setEventTime(new Date());
-               event.setResultReason(Integer.toString(idx));
-
-               return event;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/agents-audit/src/main/java/org/apache/ranger/audit/dao/BaseDao.java
----------------------------------------------------------------------
diff --git 
a/agents-audit/src/main/java/org/apache/ranger/audit/dao/BaseDao.java 
b/agents-audit/src/main/java/org/apache/ranger/audit/dao/BaseDao.java
new file mode 100644
index 0000000..8c42d86
--- /dev/null
+++ b/agents-audit/src/main/java/org/apache/ranger/audit/dao/BaseDao.java
@@ -0,0 +1,234 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.ranger.audit.dao;
+
+
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.EntityTransaction;
+import javax.persistence.NoResultException;
+import javax.persistence.TypedQuery;
+
+import org.apache.log4j.Logger;
+
+public abstract class BaseDao<T> {
+       static final Logger logger = Logger.getLogger(BaseDao.class);
+
+       protected DaoManager daoManager;
+
+       protected Class<T> tClass;
+
+       public BaseDao(DaoManagerBase daoManager) {
+               this.init(daoManager);
+       }
+
+       @SuppressWarnings("unchecked")
+       private void init(DaoManagerBase daoManager) {
+               this.daoManager = (DaoManager) daoManager;
+
+               ParameterizedType genericSuperclass = (ParameterizedType) 
getClass()
+                               .getGenericSuperclass();
+
+               Type type = genericSuperclass.getActualTypeArguments()[0];
+
+               if (type instanceof ParameterizedType) {
+                       this.tClass = (Class<T>) ((ParameterizedType) 
type).getRawType();
+               } else {
+                       this.tClass = (Class<T>) type;
+               }
+       }
+
+       public EntityManager getEntityManager() {
+               return daoManager.getEntityManager();
+       }
+
+       public boolean beginTransaction() {
+               boolean ret = false;
+
+               EntityManager em = getEntityManager();
+
+               if(em != null) {
+                       EntityTransaction et = em.getTransaction();
+                       
+                       // check the transaction is not already active
+                       if(et != null && !et.isActive()) {
+                               et.begin();
+                               ret = true;
+                       }
+               }
+               
+               return ret;
+       }
+
+       public void commitTransaction() {
+               EntityManager em = getEntityManager();
+
+               if(em != null) {
+                       em.flush();
+
+                       EntityTransaction et = em.getTransaction();
+
+                       if(et != null) {
+                               et.commit();
+                       }
+               }
+       }
+
+       public void rollbackTransaction() {
+               EntityManager em = getEntityManager();
+
+               if(em != null) {
+                       EntityTransaction et = em.getTransaction();
+
+                       if(et != null) {
+                               et.rollback();
+                       }
+               }
+       }
+
+       public T create(T obj) {
+               T ret = null;
+
+               boolean trxBegan = beginTransaction();
+
+               getEntityManager().persist(obj);
+
+               if(trxBegan) {
+                       commitTransaction();
+               }
+
+               ret = obj;
+
+               return ret;
+       }
+
+       public T update(T obj) {
+               boolean trxBegan = beginTransaction();
+
+               getEntityManager().merge(obj);
+
+               if(trxBegan) {
+                       commitTransaction();
+               }
+
+               return obj;
+       }
+
+       public boolean remove(Long id) {
+               return remove(getById(id));
+       }
+
+       public boolean remove(T obj) {
+               if (obj == null) {
+                       return true;
+               }
+
+               boolean ret = false;
+
+               boolean trxBegan = beginTransaction();
+
+               getEntityManager().remove(obj);
+
+               if(trxBegan) {
+                       commitTransaction();
+               }
+
+               ret = true;
+
+               return ret;
+       }
+
+       public T getById(Long id) {
+               if (id == null) {
+                       return null;
+               }
+               T ret = null;
+               try {
+                       ret = getEntityManager().find(tClass, id);
+               } catch (NoResultException e) {
+                       return null;
+               }
+               return ret;
+       }
+
+       public List<T> getAll() {
+               List<T> ret = null;
+
+               TypedQuery<T> qry = getEntityManager().createQuery(
+                               "SELECT t FROM " + tClass.getSimpleName() + " 
t", tClass);
+
+               ret = qry.getResultList();
+
+               return ret;
+       }
+
+       public Long getAllCount() {
+               Long ret = null;
+
+               TypedQuery<Long> qry = getEntityManager().createQuery(
+                               "SELECT count(t) FROM " + 
tClass.getSimpleName() + " t",
+                               Long.class);
+
+               ret = qry.getSingleResult();
+
+               return ret;
+       }
+
+       public T getUniqueResult(TypedQuery<T> qry) {
+               T ret = null;
+
+               try {
+                       ret = qry.getSingleResult();
+               } catch (NoResultException e) {
+                       // ignore
+               }
+               return ret;
+       }
+
+       public List<T> executeQuery(TypedQuery<T> qry) {
+               List<T> ret = null;
+
+               ret = qry.getResultList();
+
+               return ret;
+       }
+
+       public List<T> findByNamedQuery(String namedQuery, String paramName,
+                       Object refId) {
+               List<T> ret = new ArrayList<T>();
+
+               if (namedQuery == null) {
+                       return ret;
+               }
+               try {
+                       TypedQuery<T> qry = 
getEntityManager().createNamedQuery(namedQuery, tClass);
+                       qry.setParameter(paramName, refId);
+                       ret = qry.getResultList();
+               } catch (NoResultException e) {
+                       // ignore
+               }
+               return ret;
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/agents-audit/src/main/java/org/apache/ranger/audit/dao/DaoManager.java
----------------------------------------------------------------------
diff --git 
a/agents-audit/src/main/java/org/apache/ranger/audit/dao/DaoManager.java 
b/agents-audit/src/main/java/org/apache/ranger/audit/dao/DaoManager.java
new file mode 100644
index 0000000..6d81744
--- /dev/null
+++ b/agents-audit/src/main/java/org/apache/ranger/audit/dao/DaoManager.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.ranger.audit.dao;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.PersistenceContext;
+
+
+//@Component
+public class DaoManager extends DaoManagerBase {
+
+       @PersistenceContext
+       private EntityManagerFactory emf;
+
+       static ThreadLocal<EntityManager> sEntityManager;
+
+       public void setEntityManagerFactory(EntityManagerFactory emf) {
+               this.emf = emf;
+               sEntityManager = new ThreadLocal<EntityManager>();
+       }
+
+       @Override
+       public EntityManager getEntityManager() {
+               EntityManager em = null;
+
+               if(sEntityManager != null) {
+                       em = sEntityManager.get();
+
+                       if(em == null && this.emf != null) {
+                               em = this.emf.createEntityManager();
+
+                               sEntityManager.set(em);
+                       }
+               }
+
+               return em;
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/agents-audit/src/main/java/org/apache/ranger/audit/dao/DaoManagerBase.java
----------------------------------------------------------------------
diff --git 
a/agents-audit/src/main/java/org/apache/ranger/audit/dao/DaoManagerBase.java 
b/agents-audit/src/main/java/org/apache/ranger/audit/dao/DaoManagerBase.java
new file mode 100644
index 0000000..af7cfb4
--- /dev/null
+++ b/agents-audit/src/main/java/org/apache/ranger/audit/dao/DaoManagerBase.java
@@ -0,0 +1,80 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.ranger.audit.dao;
+
+import javax.persistence.EntityManager;
+
+import org.apache.log4j.Logger;
+
+
+public abstract class DaoManagerBase {
+       final static Logger logger = Logger.getLogger(DaoManagerBase.class);
+
+       abstract public EntityManager getEntityManager();
+
+       private RangerHBaseAuditEventDao mHBaseDao = null;
+       private RangerHdfsAuditEventDao  mHdfsDao  = null;
+       private RangerHiveAuditEventDao  mHiveDao  = null;
+       private RangerKnoxAuditEventDao  mKnoxDao  = null;
+       private RangerStormAuditEventDao mStormDao = null;
+
+    public DaoManagerBase() {
+       }
+
+       public RangerHBaseAuditEventDao getXAHBaseAuditEventDao() {
+               if(mHBaseDao == null) {
+                       mHBaseDao = new RangerHBaseAuditEventDao(this);
+               }
+
+               return mHBaseDao;
+       }
+
+       public RangerHdfsAuditEventDao getXAHdfsAuditEventDao() {
+               if(mHdfsDao == null) {
+                       mHdfsDao = new RangerHdfsAuditEventDao(this);
+               }
+
+               return mHdfsDao;
+       }
+
+       public RangerHiveAuditEventDao getXAHiveAuditEventDao() {
+               if(mHiveDao == null) {
+                       mHiveDao = new RangerHiveAuditEventDao(this);
+               }
+
+               return mHiveDao;
+       }
+
+       public RangerKnoxAuditEventDao getXAKnoxAuditEventDao() {
+               if(mKnoxDao == null) {
+                       mKnoxDao = new RangerKnoxAuditEventDao(this);
+               }
+
+               return mKnoxDao;
+       }
+
+       public RangerStormAuditEventDao getXAStormAuditEventDao() {
+               if(mStormDao == null) {
+                       mStormDao = new RangerStormAuditEventDao(this);
+               }
+
+               return mStormDao;
+       }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/agents-audit/src/main/java/org/apache/ranger/audit/dao/RangerHBaseAuditEventDao.java
----------------------------------------------------------------------
diff --git 
a/agents-audit/src/main/java/org/apache/ranger/audit/dao/RangerHBaseAuditEventDao.java
 
b/agents-audit/src/main/java/org/apache/ranger/audit/dao/RangerHBaseAuditEventDao.java
new file mode 100644
index 0000000..1d6cd93
--- /dev/null
+++ 
b/agents-audit/src/main/java/org/apache/ranger/audit/dao/RangerHBaseAuditEventDao.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.ranger.audit.dao;
+
+import org.apache.ranger.audit.entity.XXHBaseAuditEvent;
+
+public class RangerHBaseAuditEventDao extends BaseDao<XXHBaseAuditEvent> {
+
+       public RangerHBaseAuditEventDao(DaoManagerBase daoManager) {
+               super(daoManager);
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/agents-audit/src/main/java/org/apache/ranger/audit/dao/RangerHdfsAuditEventDao.java
----------------------------------------------------------------------
diff --git 
a/agents-audit/src/main/java/org/apache/ranger/audit/dao/RangerHdfsAuditEventDao.java
 
b/agents-audit/src/main/java/org/apache/ranger/audit/dao/RangerHdfsAuditEventDao.java
new file mode 100644
index 0000000..566dee9
--- /dev/null
+++ 
b/agents-audit/src/main/java/org/apache/ranger/audit/dao/RangerHdfsAuditEventDao.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.ranger.audit.dao;
+
+import org.apache.ranger.audit.entity.XXHdfsAuditEvent;
+
+public class RangerHdfsAuditEventDao extends BaseDao<XXHdfsAuditEvent> {
+
+       public RangerHdfsAuditEventDao(DaoManagerBase daoManager) {
+               super(daoManager);
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/agents-audit/src/main/java/org/apache/ranger/audit/dao/RangerHiveAuditEventDao.java
----------------------------------------------------------------------
diff --git 
a/agents-audit/src/main/java/org/apache/ranger/audit/dao/RangerHiveAuditEventDao.java
 
b/agents-audit/src/main/java/org/apache/ranger/audit/dao/RangerHiveAuditEventDao.java
new file mode 100644
index 0000000..f94523d
--- /dev/null
+++ 
b/agents-audit/src/main/java/org/apache/ranger/audit/dao/RangerHiveAuditEventDao.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.ranger.audit.dao;
+
+import org.apache.ranger.audit.entity.XXHiveAuditEvent;
+
+public class RangerHiveAuditEventDao extends BaseDao<XXHiveAuditEvent> {
+
+       public RangerHiveAuditEventDao(DaoManagerBase daoManager) {
+               super(daoManager);
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/agents-audit/src/main/java/org/apache/ranger/audit/dao/RangerKnoxAuditEventDao.java
----------------------------------------------------------------------
diff --git 
a/agents-audit/src/main/java/org/apache/ranger/audit/dao/RangerKnoxAuditEventDao.java
 
b/agents-audit/src/main/java/org/apache/ranger/audit/dao/RangerKnoxAuditEventDao.java
new file mode 100644
index 0000000..21ec1af
--- /dev/null
+++ 
b/agents-audit/src/main/java/org/apache/ranger/audit/dao/RangerKnoxAuditEventDao.java
@@ -0,0 +1,29 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.ranger.audit.dao;
+
+import org.apache.ranger.audit.entity.XXKnoxAuditEvent;
+
+public class RangerKnoxAuditEventDao extends BaseDao<XXKnoxAuditEvent> {
+
+       public RangerKnoxAuditEventDao(DaoManagerBase daoManager) {
+               super(daoManager);
+       }
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/413fcb68/agents-audit/src/main/java/org/apache/ranger/audit/dao/RangerStormAuditEventDao.java
----------------------------------------------------------------------
diff --git 
a/agents-audit/src/main/java/org/apache/ranger/audit/dao/RangerStormAuditEventDao.java
 
b/agents-audit/src/main/java/org/apache/ranger/audit/dao/RangerStormAuditEventDao.java
new file mode 100644
index 0000000..71b5e50
--- /dev/null
+++ 
b/agents-audit/src/main/java/org/apache/ranger/audit/dao/RangerStormAuditEventDao.java
@@ -0,0 +1,29 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.ranger.audit.dao;
+
+import org.apache.ranger.audit.entity.XXStormAuditEvent;
+
+public class RangerStormAuditEventDao extends BaseDao<XXStormAuditEvent> {
+
+       public RangerStormAuditEventDao(DaoManagerBase daoManager) {
+               super(daoManager);
+       }
+       
+}

Reply via email to