@Override
public void markEdgeVisible(Edge edge, Visibility visibility, Authorizations authorizations) {
checkNotNull(edge);
Vertex out = edge.getVertex(Direction.OUT, FetchHint.ALL_INCLUDING_HIDDEN, authorizations);
if (out == null) {
throw new SecureGraphException(String.format("Unable to mark edge visible %s, can't find out vertex %s", edge.getId(), edge.getVertexId(Direction.OUT)));
}
Vertex in = edge.getVertex(Direction.IN, FetchHint.ALL_INCLUDING_HIDDEN, authorizations);
if (in == null) {
throw new SecureGraphException(String.format("Unable to mark edge visible %s, can't find in vertex %s", edge.getId(), edge.getVertexId(Direction.IN)));
}
ColumnVisibility columnVisibility = visibilityToAccumuloVisibility(visibility);
Mutation outMutation = new Mutation(AccumuloConstants.VERTEX_ROW_KEY_PREFIX + out.getId());
outMutation.putDelete(AccumuloVertex.CF_OUT_EDGE_HIDDEN, new Text(edge.getId()), columnVisibility);
Mutation inMutation = new Mutation(AccumuloConstants.VERTEX_ROW_KEY_PREFIX + in.getId());
inMutation.putDelete(AccumuloVertex.CF_IN_EDGE_HIDDEN, new Text(edge.getId()), columnVisibility);
addMutations(getVerticesWriter(), outMutation, inMutation);
addMutations(getEdgesWriter(), getMarkVisibleRowMutation(AccumuloConstants.EDGE_ROW_KEY_PREFIX + edge.getId(), columnVisibility));
if (out instanceof AccumuloVertex) {
((AccumuloVertex) out).addOutEdge(edge);
}
if (in instanceof AccumuloVertex) {
((AccumuloVertex) in).addInEdge(edge);
}
if (hasEventListeners()) {
queueEvent(new MarkVisibleEdgeEvent(this, edge));
}
}