mneethiraj commented on code in PR #442: URL: https://github.com/apache/ranger/pull/442#discussion_r1880969089
########## agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerFileBasedTagRetriever.java: ########## @@ -25,200 +25,185 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.*; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; import java.net.MalformedURLException; import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.Map; public class RangerFileBasedTagRetriever extends RangerTagRetriever { - private static final Logger LOG = LoggerFactory.getLogger(RangerFileBasedTagRetriever.class); - - - private URL serviceTagsFileURL; - private String serviceTagsFileName; - int tagFilesCount = 0; - int currentTagFileIndex = 0; - boolean isInitial = true; - @Override - public void init(Map<String, String> options) { - - if (LOG.isDebugEnabled()) { - LOG.debug("==> init()" ); - } - - String serviceTagsFileNameProperty = "serviceTagsFileName"; - String serviceTagsDefaultFileName = "/testdata/test_servicetags_hive.json"; - String tagFilesCountProperty = "tagFileCount"; - - if (StringUtils.isNotBlank(serviceName) && serviceDef != null && StringUtils.isNotBlank(appId)) { - // Open specified file from options- it should contain service-tags - - serviceTagsFileName = options != null? options.get(serviceTagsFileNameProperty) : null; - - serviceTagsFileName = serviceTagsFileName == null ? serviceTagsDefaultFileName : serviceTagsFileName; - if (options != null) { - String tagFilesCountStr = options.get(tagFilesCountProperty); - if (!StringUtils.isNotEmpty(tagFilesCountStr)) { - try { - tagFilesCount = Integer.parseInt(tagFilesCountStr); - } catch (Exception e) { - LOG.error("Exception while parsing tagFileCount option value:[" + tagFilesCountStr + "]"); - LOG.error("Setting tagFilesCount to 0"); - } - } - } - - if (StringUtils.isNotBlank(serviceTagsFileName)) { - serviceTagsFileURL = getTagFileURL(serviceTagsFileName); - } - isInitial = true; - } else { - LOG.error("FATAL: Cannot find service/serviceDef/serviceTagsFile to use for retrieving tags. Will NOT be able to retrieve tags."); - } - - if (LOG.isDebugEnabled()) { - LOG.debug("<== init() : serviceTagsFileName=" + serviceTagsFileName); - } - } - - @Override - public ServiceTags retrieveTags(long lastKnownVersion, long lastActivationTimeInMillis) throws Exception { - if (LOG.isDebugEnabled()) { - LOG.debug("==> retrieveTags(lastKnownVersion=" + lastKnownVersion + ", lastActivationTimeInMillis=" + lastActivationTimeInMillis + ", serviceTagsFilePath=" + serviceTagsFileName); - } - - ServiceTags serviceTags = readFromFile(); - - if (LOG.isDebugEnabled()) { - LOG.debug("<== retrieveTags(lastKnownVersion=" + lastKnownVersion + ", lastActivationTimeInMillis=" + lastActivationTimeInMillis); - } - - return serviceTags; - } - - URL getTagFileURL(String fileName) { - URL fileURL = null; - - InputStream tagFileStream = null; - - File f = new File(fileName); - - if (f.exists() && f.isFile() && f.canRead()) { - try { - tagFileStream = new FileInputStream(f); - fileURL = f.toURI().toURL(); - } catch (FileNotFoundException exception) { - LOG.error("Error processing input file:" + fileName + " or no privilege for reading file " + fileName, exception); - } catch (MalformedURLException malformedException) { - LOG.error("Error processing input file:" + fileName + " cannot be converted to URL " + fileName, malformedException); - } - } else { - - fileURL = getClass().getResource(fileName); - if (fileURL == null) { - if (!fileName.startsWith("/")) { - fileURL = getClass().getResource("/" + fileName); - } - } - - if (fileURL == null) { - fileURL = ClassLoader.getSystemClassLoader().getResource(fileName); - if (fileURL == null) { - if (!fileName.startsWith("/")) { - fileURL = ClassLoader.getSystemClassLoader().getResource("/" + fileName); - } - } - } - - if (fileURL != null) { - - try { - tagFileStream = fileURL.openStream(); - } catch (Exception exception) { - fileURL = null; - LOG.error(fileName + " is not a file", exception); - } - } else { - LOG.warn("Error processing input file: URL not found for " + fileName + " or no privilege for reading file " + fileName); - } - } - - if (tagFileStream != null) { - try { - tagFileStream.close(); - } catch (Exception e) { - // Ignore - } - } - return fileURL; - } - - private ServiceTags readFromFile() { - - if (LOG.isDebugEnabled()) { - LOG.debug("==> RangerFileBasedTagRetriever.readFromFile: sourceFileName=" + serviceTagsFileName); - } - - ServiceTags ret = null; - - String fileName; - - fileName = serviceTagsFileName; - - if (isInitial) { - isInitial = false; - if (serviceTagsFileURL != null) { - try ( - InputStream fileStream = serviceTagsFileURL.openStream(); - Reader reader = new InputStreamReader(fileStream, StandardCharsets.UTF_8) - ) { - - ret = JsonUtils.jsonToObject(reader, ServiceTags.class); - if (ret.getIsTagsDeduped()) { - final int countOfDuplicateTags = ret.dedupTags(); - LOG.info("Number of duplicate tags removed from the received serviceTags:[" + countOfDuplicateTags + "]. Number of tags in the de-duplicated serviceTags :[" + ret.getTags().size() + "]."); - } - - } catch (IOException e) { - LOG.warn("Error processing input file: or no privilege for reading file " + fileName, e); - } - } else { - LOG.error("Error reading file: " + fileName); - } - - } else if (tagFilesCount > 0) { - - currentTagFileIndex = currentTagFileIndex % tagFilesCount; - fileName = serviceTagsFileName + "_" + currentTagFileIndex + ".json"; - URL fileURL = getTagFileURL(fileName); - if (fileURL != null) { - try ( - InputStream fileStream = fileURL.openStream(); - Reader reader = new InputStreamReader(fileStream, StandardCharsets.UTF_8) - ) { - - ret = JsonUtils.jsonToObject(reader, ServiceTags.class); - currentTagFileIndex++; - if (ret.getIsTagsDeduped()) { - final int countOfDuplicateTags = ret.dedupTags(); - LOG.info("Number of duplicate tags removed from the received serviceTags:[" + countOfDuplicateTags + "]. Number of tags in the de-duplicated serviceTags :[" + ret.getTags().size() + "]."); - } - } catch (IOException e) { - LOG.warn("Error processing input file: or no privilege for reading file " + fileName, e); - } - } else { - LOG.error("Error reading file: " + fileName); - } - - } - - if (LOG.isDebugEnabled()) { - LOG.debug("<== RangerFileBasedTagRetriever.readFromFile: sourceFileName=" + fileName); - } - - return ret; - } - + private static final Logger LOG = LoggerFactory.getLogger(RangerFileBasedTagRetriever.class); + + int tagFilesCount; + int currentTagFileIndex; + boolean isInitial = true; + + private URL serviceTagsFileURL; + private String serviceTagsFileName; + + @Override + public void init(Map<String, String> options) { + LOG.debug("==> init()"); + + String serviceTagsFileNameProperty = "serviceTagsFileName"; + String serviceTagsDefaultFileName = "/testdata/test_servicetags_hive.json"; + String tagFilesCountProperty = "tagFileCount"; + + if (StringUtils.isNotBlank(serviceName) && serviceDef != null && StringUtils.isNotBlank(appId)) { + // Open specified file from options- it should contain service-tags + serviceTagsFileName = options != null ? options.get(serviceTagsFileNameProperty) : null; + serviceTagsFileName = serviceTagsFileName == null ? serviceTagsDefaultFileName : serviceTagsFileName; + + if (options != null) { + String tagFilesCountStr = options.get(tagFilesCountProperty); + + if (!StringUtils.isNotEmpty(tagFilesCountStr)) { + try { + tagFilesCount = Integer.parseInt(tagFilesCountStr); + } catch (Exception e) { + LOG.error("Exception while parsing tagFileCount option value:[{}]", tagFilesCountStr); + LOG.error("Setting tagFilesCount to 0"); + } + } + } + + if (StringUtils.isNotBlank(serviceTagsFileName)) { + serviceTagsFileURL = getTagFileURL(serviceTagsFileName); + } + + isInitial = true; + } else { + LOG.error("FATAL: Cannot find service/serviceDef/serviceTagsFile to use for retrieving tags. Will NOT be able to retrieve tags."); + } + + LOG.debug("<== init() : serviceTagsFileName={}", serviceTagsFileName); + } + + @Override + public ServiceTags retrieveTags(long lastKnownVersion, long lastActivationTimeInMillis) { + LOG.debug("==> retrieveTags(lastKnownVersion={}, lastActivationTimeInMillis={}, serviceTagsFilePath={}", lastKnownVersion, lastActivationTimeInMillis, serviceTagsFileName); + + ServiceTags serviceTags = readFromFile(); + + LOG.debug("<== retrieveTags(lastKnownVersion={}, lastActivationTimeInMillis={}", lastKnownVersion, lastActivationTimeInMillis); + + return serviceTags; + } + + URL getTagFileURL(String fileName) { + URL fileURL = null; Review Comment: Would result in compliation error. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@ranger.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org