/** * Create an instance of the SecuredGraph * * @param securityEvaluator The security evaluator to use * @param graphIRI The IRI for the graph. * @param graph The graph that we are wrapping. * @return the secured graph */ public static SecuredGraph getInstance( final SecurityEvaluator securityEvaluator, final String graphIRI, final Graph graph) { final ItemHolder<Graph, SecuredGraphImpl> holder = new ItemHolder<Graph, SecuredGraphImpl>(graph); final SecuredGraphImpl checker = new SecuredGraphImpl(securityEvaluator, graphIRI, holder) {}; // If we going to create a duplicate proxy return this one. if (graph instanceof SecuredGraphImpl) { if (checker.isEquivalent((SecuredGraphImpl) graph)) { return (SecuredGraph) graph; } } return holder.setSecuredItem(new SecuredItemInvoker(graph.getClass(), checker)); }