
io.shiftleft.cpgloading.ProtoToCpg Maven / Gradle / Ivy
package io.shiftleft.cpgloading;
import io.shiftleft.codepropertygraph.generated.NodeTypes;
import io.shiftleft.proto.cpg.Cpg.CpgStruct.Edge;
import io.shiftleft.proto.cpg.Cpg.CpgStruct.Node;
import io.shiftleft.proto.cpg.Cpg.CpgStruct.Node.Property;
import io.shiftleft.proto.cpg.Cpg.PropertyValue;
import io.shiftleft.proto.cpg.Cpg.PropertyValue.ValueCase;
import io.shiftleft.queryprimitives.steps.starters.Cpg;
import io.shiftleft.queryprimitives.steps.Implicits.JavaIteratorDeco;
import org.apache.commons.configuration.Configuration;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import org.apache.tinkerpop.gremlin.structure.T;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
import java.util.*;
public class ProtoToCpg {
TinkerGraph tinkerGraph;
private Logger logger = LogManager.getLogger(getClass());
private NodeFilter nodeFilter = new NodeFilter();
public final Optional ignoredProtoEntries;
public ProtoToCpg(Optional ignoredProtoEntries) {
this(Optional.empty(), ignoredProtoEntries);
}
public ProtoToCpg(
Optional onDiskOverflowConfig,
Optional ignoredProtoEntries) {
Configuration configuration = TinkerGraph.EMPTY_CONFIGURATION();
onDiskOverflowConfig.ifPresent(config -> {
configuration.setProperty(TinkerGraph.GREMLIN_TINKERGRAPH_ONDISK_OVERFLOW_ENABLED, true);
configuration.setProperty(TinkerGraph.GREMLIN_TINKERGRAPH_ONDISK_OVERFLOW_CACHE_MAX_HEAP_PERCENTAGE, config.cacheHeapPercentage());
if (config.alternativeParentDirectory().isDefined()) {
configuration.setProperty(TinkerGraph.GREMLIN_TINKERGRAPH_ONDISK_ROOT_DIR, config.alternativeParentDirectory().get());
}
});
this.ignoredProtoEntries = ignoredProtoEntries;
this.tinkerGraph = TinkerGraph.open(
configuration,
io.shiftleft.codepropertygraph.generated.nodes.Factories$.MODULE$.AllAsJava(),
io.shiftleft.codepropertygraph.generated.edges.Factories$.MODULE$.AllAsJava());
}
public void addNodes(List nodes) {
for (Node node : nodes) {
try {
if (nodeFilter.filterNode(node)) {
List properties = node.getPropertyList();
final ArrayList
© 2015 - 2025 Weber Informatics LLC | Privacy Policy