in nifi-extension-bundles/nifi-hadoop-bundle/nifi-hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/GetHDFSFileInfo.java [452:524]
protected void processHDFSObject(
final ProcessSession session,
final ExecutionContext executionContext,
FlowFile origFF,
final HDFSFileInfoRequest req,
final HDFSObjectInfoDetails o,
final boolean isRoot
) {
if (o.isFile() && req.getGrouping() != NONE) {
return;
}
if (o.isDirectory() && o.isSymlink() && req.getGrouping() != NONE) {
return;
}
if (o.isDirectory() && req.getGrouping() == ALL && !isRoot) {
return;
}
FlowFile ff = getReadyFlowFile(executionContext, session, origFF);
//if destination type is content - always add mime type
if (req.isDestContent()) {
ff = session.putAttribute(ff, CoreAttributes.MIME_TYPE.key(), APPLICATION_JSON);
}
//won't combine conditions for similar actions for better readability and maintenance.
if (o.isFile() && isRoot && req.isDestContent()) {
ff = addAsContent(executionContext, session, o, ff);
// ------------------------------
} else if (o.isFile() && isRoot && !req.isDestContent()) {
ff = addAsAttributes(session, o, ff);
// ------------------------------
} else if (o.isFile() && req.isDestContent()) {
ff = addAsContent(executionContext, session, o, ff);
// ------------------------------
} else if (o.isFile() && !req.isDestContent()) {
ff = addAsAttributes(session, o, ff);
// ------------------------------
} else if (o.isDirectory() && o.isSymlink() && req.isDestContent()) {
ff = addAsContent(executionContext, session, o, ff);
// ------------------------------
} else if (o.isDirectory() && o.isSymlink() && !req.isDestContent()) {
ff = addAsAttributes(session, o, ff);
// ------------------------------
} else if (o.isDirectory() && req.getGrouping() == NONE && req.isDestContent()) {
o.setChildren(null);
ff = addAsContent(executionContext, session, o, ff);
// ------------------------------
} else if (o.isDirectory() && req.getGrouping() == NONE && !req.isDestContent()) {
ff = addAsAttributes(session, o, ff);
// ------------------------------
} else if (o.isDirectory() && req.getGrouping() == DIR && req.isDestContent()) {
ff = addAsContent(executionContext, session, o, ff);
// ------------------------------
} else if (o.isDirectory() && req.getGrouping() == DIR && !req.isDestContent()) {
ff = addAsAttributes(session, o, ff);
ff = addFullTreeToAttribute(session, o, ff);
// ------------------------------
} else if (o.isDirectory() && req.getGrouping() == ALL && req.isDestContent()) {
ff = addAsContent(executionContext, session, o, ff);
// ------------------------------
} else if (o.isDirectory() && req.getGrouping() == ALL && !req.isDestContent()) {
ff = addAsAttributes(session, o, ff);
ff = addFullTreeToAttribute(session, o, ff);
} else {
getLogger().error("Illegal State!");
session.remove(ff);
return;
}
executionContext.flowfile = ff;
finishProcessing(req, executionContext, session);
}