Search in sources :

Example 66 with RDFNode

use of org.apache.jena.rdf.model.RDFNode in project jena by apache.

the class SecuredRDFListTest method testSetHead.

@Test
public void testSetHead() {
    try {
        RDFNode result = getSecuredRDFList().setHead(newResource1);
        if (!shouldRead() || !securityEvaluator.evaluate(Action.Update)) {
            fail("Should have thrown AccessDeniedException");
        }
        assertEquals(resource1, result);
        List<RDFNode> lst = ((RDFList) getBaseRDFNode()).asJavaList();
        Iterator<RDFNode> iter = lst.iterator();
        assertEquals(newResource1, iter.next());
        assertEquals(resource2, iter.next());
        assertEquals(resource3, iter.next());
        assertEquals(resource4, iter.next());
        assertFalse(iter.hasNext());
    } catch (final AccessDeniedException e) {
        if (shouldRead() && securityEvaluator.evaluate(Action.Update) && securityEvaluator.evaluate(Action.Delete)) {
            fail("Should not have thrown AccessDeniedException");
        }
    } catch (final EmptyListException e) {
        if (securityEvaluator.evaluate(Action.Read)) {
            fail("Should not have thrown EmptyListException");
        }
    }
}
Also used : AccessDeniedException(org.apache.jena.shared.AccessDeniedException) RDFList(org.apache.jena.rdf.model.RDFList) EmptyListException(org.apache.jena.rdf.model.EmptyListException) RDFNode(org.apache.jena.rdf.model.RDFNode) Test(org.junit.Test)

Example 67 with RDFNode

use of org.apache.jena.rdf.model.RDFNode in project jena by apache.

the class SecuredRDFListTest method testGet.

@Test
public void testGet() {
    try {
        RDFNode actual = getSecuredRDFList().get(0);
        if (!securityEvaluator.evaluate(Action.Read)) {
            if (securityEvaluator.isHardReadError()) {
                fail("Should have thrown ReadDeniedException");
            } else {
                fail("Should have thrown ListIndexException");
            }
        }
        assertEquals(resource1, actual);
        assertEquals(securedModel, actual.getModel());
    } catch (final ReadDeniedException e) {
        if (shouldRead()) {
            fail(String.format("Should not have thrown ReadDeniedException: %s - %s", e, e.getTriple()));
        }
    } catch (final ListIndexException e) {
        boolean expected = !securityEvaluator.isHardReadError();
        if (!expected) {
            fail("Should not have thrown ListIndexException");
        }
    }
}
Also used : ReadDeniedException(org.apache.jena.shared.ReadDeniedException) ListIndexException(org.apache.jena.rdf.model.ListIndexException) RDFNode(org.apache.jena.rdf.model.RDFNode) Test(org.junit.Test)

Example 68 with RDFNode

use of org.apache.jena.rdf.model.RDFNode in project jena by apache.

the class SecuredResourceTest method testAddProperty.

@Test
public void testAddProperty() {
    final Set<Action> perms = SecurityEvaluator.Util.asSet(new Action[] { Action.Update, Action.Create });
    final RDFNode rdfNode = ResourceFactory.createResource("http://example.com/newResource");
    try {
        getSecuredResource().addLiteral(SecuredRDFNodeTest.p, rdfNode);
        if (!securityEvaluator.evaluate(perms)) {
            Assert.fail("Should have thrown AccessDeniedException Exception");
        }
    } catch (final AccessDeniedException e) {
        if (securityEvaluator.evaluate(perms)) {
            Assert.fail(String.format("Should not have thrown AccessDeniedException Exception: %s - %s", e, e.getTriple()));
        }
    }
    try {
        getSecuredResource().addLiteral(SecuredRDFNodeTest.p, "string");
        if (!securityEvaluator.evaluate(perms)) {
            Assert.fail("Should have thrown AccessDeniedException Exception");
        }
    } catch (final AccessDeniedException e) {
        if (securityEvaluator.evaluate(perms)) {
            Assert.fail(String.format("Should not have thrown AccessDeniedException Exception: %s - %s", e, e.getTriple()));
        }
    }
    final Literal l = ResourceFactory.createTypedLiteral(3.14F);
    try {
        getSecuredResource().addProperty(SecuredRDFNodeTest.p, l.getLexicalForm(), l.getDatatype());
        if (!securityEvaluator.evaluate(perms)) {
            Assert.fail("Should have thrown AccessDeniedException Exception");
        }
    } catch (final AccessDeniedException e) {
        if (securityEvaluator.evaluate(perms)) {
            Assert.fail(String.format("Should not have thrown AccessDeniedException Exception: %s - %s", e, e.getTriple()));
        }
    }
    try {
        getSecuredResource().addProperty(SecuredRDFNodeTest.p, "dos", "sp");
        if (!securityEvaluator.evaluate(perms)) {
            Assert.fail("Should have thrown AccessDeniedException Exception");
        }
    } catch (final AccessDeniedException e) {
        if (securityEvaluator.evaluate(perms)) {
            Assert.fail(String.format("Should not have thrown AccessDeniedException Exception: %s - %s", e, e.getTriple()));
        }
    }
}
Also used : Action(org.apache.jena.permissions.SecurityEvaluator.Action) AccessDeniedException(org.apache.jena.shared.AccessDeniedException) Literal(org.apache.jena.rdf.model.Literal) RDFNode(org.apache.jena.rdf.model.RDFNode) Test(org.junit.Test)

Example 69 with RDFNode

use of org.apache.jena.rdf.model.RDFNode in project jena by apache.

the class ShLib method printReport.

public static void printReport(Resource report) {
    // report.getModel().write(System.out, FileUtils.langTurtle);
    String qs = StrUtils.strjoinNL(PREFIXES, "SELECT * {", // , "    [ a sh:ValidationReport ; sh:result ?R ]
    "    [] sh:result ?R .", "    ?R", "       sh:focusNode ?focusNode ;", "       sh:resultMessage ?message ;", "       sh:resultSeverity  ?severity ; ", "       .", "    OPTIONAL { ?R sh:sourceConstraintComponent ?component }", "    OPTIONAL { ?R sh:sourceShape ?sourceShape }", "    OPTIONAL { ?R sh:resultPath    ?path}", "}");
    try (QueryExecution qExec = QueryExecutionFactory.create(qs, report.getModel())) {
        ResultSet rs = qExec.execSelect();
        if (!rs.hasNext()) {
            System.out.println("No violations");
        } else {
            rs.forEachRemaining(row -> {
                RDFNode focusNode = row.get("focusNode");
                String msg = row.getLiteral("message").getLexicalForm();
                RDFNode pathNode = row.get("path");
                if (pathNode != null)
                    System.out.printf("Node=%s   Path=%s\n", displayStr(focusNode), pathNode);
                else
                    System.out.printf("Node=%s\n", displayStr(focusNode));
                System.out.printf("  %s\n", msg);
                Path path = null;
                if (pathNode != null)
                    path = ShaclPaths.parsePath(report.getModel().getGraph(), pathNode.asNode());
            // Better (?) to build a report entry.
            // ReportEntry e = ReportEntry.create()
            // .focusNode(focusNode.asNode())
            // .resultPath(path)
            // .message(msg)
            // .severity(Severity.Violation)
            // .source(shape.getShapeNode())
            // .sourceConstraint(constraint)
            // //.detail(null)
            // .value(focusNode)
            // .triple(triple)
            // ;
            });
        }
    }
}
Also used : Path(org.apache.jena.sparql.path.Path) RDFNode(org.apache.jena.rdf.model.RDFNode)

Example 70 with RDFNode

use of org.apache.jena.rdf.model.RDFNode in project jena by apache.

the class SparqlValidation method parameterMapToPreBinding.

private static QuerySolutionMap parameterMapToPreBinding(Map<Parameter, Node> parameterMap, Node thisNode, Path path, Model model) {
    QuerySolutionMap qsm = new QuerySolutionMap();
    if (parameterMap != null) {
        parameterMap.forEach((p, n) -> qsm.add(p.getSparqlName(), ModelUtils.convertGraphNodeToRDFNode(n, model)));
    }
    qsm.add("this", ModelUtils.convertGraphNodeToRDFNode(thisNode, model));
    if (path != null) {
        Node pn = ShaclPaths.pathNode(path);
        // done by textually substitution of the SPARQL query string.
        if (pn != null) {
            RDFNode z = ModelUtils.convertGraphNodeToRDFNode(pn, model);
            qsm.add("PATH", z);
        }
    }
    return qsm;
}
Also used : RDFNode(org.apache.jena.rdf.model.RDFNode) Node(org.apache.jena.graph.Node) RDFNode(org.apache.jena.rdf.model.RDFNode)

Aggregations

RDFNode (org.apache.jena.rdf.model.RDFNode)145 Resource (org.apache.jena.rdf.model.Resource)51 Model (org.apache.jena.rdf.model.Model)30 Statement (org.apache.jena.rdf.model.Statement)27 Test (org.junit.Test)26 ArrayList (java.util.ArrayList)22 Node (org.apache.jena.graph.Node)20 QuerySolution (org.apache.jena.query.QuerySolution)20 TextIndexException (org.apache.jena.query.text.TextIndexException)17 Property (org.apache.jena.rdf.model.Property)17 Literal (org.apache.jena.rdf.model.Literal)15 SecuredRDFNode (org.apache.jena.permissions.model.SecuredRDFNode)13 Dataset (org.apache.jena.query.Dataset)13 Triple (org.apache.jena.graph.Triple)12 QueryExecution (org.apache.jena.query.QueryExecution)10 StmtIterator (org.apache.jena.rdf.model.StmtIterator)9 Query (org.apache.jena.query.Query)8 NodeIterator (org.apache.jena.rdf.model.NodeIterator)8 RDFList (org.apache.jena.rdf.model.RDFList)8 AccessDeniedException (org.apache.jena.shared.AccessDeniedException)7