Пример #1
0
 @Test
 public void testCreatedObject() throws RepositoryException {
   containerService.findOrCreate(session, "/testObject");
   session.save();
   session.logout();
   session = repo.login();
   final Container obj = containerService.findOrCreate(session, "/testObject");
   assertNotNull("Couldn't find object!", obj);
 }
Пример #2
0
  @Test
  public void testReplaceObjectGraphWithErrors() {
    final String pid = getRandomPid();
    final Container object = containerService.findOrCreate(session, pid);

    final Model model =
        createDefaultModel()
            .read(
                toInputStream(
                    "<> <info:some-property> <relative-url> . \n"
                        + "<> <info:some-other-property> <another-relative-url>"),
                subjects.reverse().convert(object).toString(),
                "TTL");
    MalformedRdfException e = null;
    try {
      object.replaceProperties(subjects, model, object.getTriples(subjects, emptySet()));
    } catch (final MalformedRdfException ex) {
      e = ex;
    }

    assertNotNull("Expected an exception to get thrown", e);
    assertEquals("Excepted two nested exceptions", 2, e.getMessage().split("\n").length);
    assertTrue(e.getMessage().contains("/relative-url"));
    assertTrue(e.getMessage().contains("/another-relative-url"));
  }
Пример #3
0
 @Test
 public void testGetObject() throws RepositoryException {
   final String testPath = "/foo";
   when(mockSession.getNode(testPath)).thenReturn(mockNode);
   when(mockJcrTools.findOrCreateNode(mockSession, "/foo", NT_FOLDER, NT_FOLDER))
       .thenReturn(mockNode);
   final Container actual = testObj.findOrCreate(mockSession, "/foo");
   assertEquals(mockNode, getJcrNode(actual));
 }
Пример #4
0
  @Test(expected = MalformedRdfException.class)
  public void testUpdatingObjectGraphWithOutOfDomainSubjects() throws MalformedRdfException {
    final Container object = containerService.findOrCreate(session, "/graphObject");

    object.updateProperties(
        subjects,
        "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n"
            + "INSERT { <http://example/egbook> dc:title "
            + "\"This is an example of an update that will be "
            + "ignored\" } WHERE {}",
        object.getTriples(subjects, PROPERTIES));
  }
Пример #5
0
  @Test
  public void testCreateObjectWithHierarchy() throws Exception {
    when(mockNode.getParent()).thenReturn(mockParent);
    when(mockParent.getParent()).thenReturn(mockRoot);
    when(mockParent.isNew()).thenReturn(true);
    when(mockRoot.getNode("foo/bar")).thenReturn(mockNode);
    when(mockNode.getDepth()).thenReturn(1);
    when(mockNode.isNew()).thenReturn(true);

    final Node actual = getJcrNode(testObj.findOrCreate(mockSession, "/foo/bar"));
    assertEquals(mockNode, actual);
    verify(mockParent).addMixin(FedoraTypes.FEDORA_PAIRTREE);
  }
Пример #6
0
  @Test(expected = TombstoneException.class)
  public void testThrowsTombstoneExceptionOnCreateOnTombstone() throws RepositoryException {

    when(mockNode.getParent()).thenReturn(mockParent);
    when(mockParent.getParent()).thenReturn(mockRoot);
    when(mockParent.isNew()).thenReturn(false);
    when(mockParent.isNodeType(FEDORA_TOMBSTONE)).thenReturn(true);
    when(mockSession.nodeExists("/foo")).thenReturn(true);
    when(mockSession.getNode("/foo")).thenReturn(mockParent);
    when(mockRoot.getNode("foo/bar")).thenReturn(mockNode);
    when(mockNode.isNew()).thenReturn(true);

    testObj.findOrCreate(mockSession, "/foo/bar");
  }
Пример #7
0
  @Test
  public void testUpdatingObjectGraphWithErrors() {
    final String pid = getRandomPid();
    final Container object = containerService.findOrCreate(session, pid);

    MalformedRdfException e = null;
    try {
      object.updateProperties(
          subjects,
          "INSERT DATA { <> <info:some-property> <relative-url> . \n"
              + "<> <info:some-other-property> <another-relative-url> }",
          object.getTriples(subjects, emptySet()));
    } catch (final MalformedRdfException ex) {
      e = ex;
    }

    assertNotNull("Expected an exception to get thrown", e);
    assertEquals("Excepted two nested exceptions", 2, e.getMessage().split("\n").length);
    assertTrue(e.getMessage().contains("/relative-url"));
    assertTrue(e.getMessage().contains("/another-relative-url"));
  }
Пример #8
0
 @Test
 public void testCreateObject() {
   final Node actual = getJcrNode(testObj.findOrCreate(mockSession, testPath));
   assertEquals(mockNode, actual);
 }
Пример #9
0
  @Test
  public void testObjectGraph() throws Exception {
    final Container object = containerService.findOrCreate(session, "/graphObject");
    final Model model = object.getTriples(subjects, PROPERTIES).collect(toModel());

    final Resource graphSubject = subjects.reverse().convert(object);

    assertFalse(
        "Graph store should not contain JCR prefixes",
        compile("jcr").matcher(model.toString()).find());
    assertFalse(
        "Graph store should contain our fcrepo prefix",
        compile("fcrepo").matcher(model.toString()).find());

    object.updateProperties(
        subjects,
        "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n"
            + "INSERT { <"
            + graphSubject
            + "> dc:title "
            + "\"This is an example title\" } WHERE {}",
        object.getTriples(subjects, PROPERTIES));

    final Value[] values = getJcrNode(object).getProperty("dc:title").getValues();
    assertTrue(values.length > 0);

    assertTrue(values[0].getString(), values[0].getString().equals("This is an example title"));

    object.updateProperties(
        subjects,
        "PREFIX myurn: <info:myurn/>\n"
            + "INSERT { <"
            + graphSubject
            + "> myurn:info "
            + "\"This is some example data\"} WHERE {}",
        object.getTriples(subjects, PROPERTIES));

    final Value value =
        getJcrNode(object)
            .getProperty(
                getJcrNode(object).getSession().getNamespacePrefix("info:myurn/") + ":info")
            .getValues()[0];

    assertEquals("This is some example data", value.getString());

    object.updateProperties(
        subjects,
        "PREFIX dcterms: <http://purl.org/dc/terms/>\n"
            + "INSERT { <"
            + graphSubject
            + "> dcterms:"
            + "isPartOf <"
            + graphSubject
            + "> } WHERE {}",
        object.getTriples(subjects, PROPERTIES));

    final Value refValue = getJcrNode(object).getProperty("dcterms:isPartOf_ref").getValues()[0];
    assertTrue(
        refValue.getString(), refValue.getString().equals(getJcrNode(object).getIdentifier()));

    object.updateProperties(
        subjects,
        "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n"
            + "DELETE { <"
            + graphSubject
            + "> dc:title "
            + "\"This is an example title\" } WHERE {}",
        object.getTriples(subjects, PROPERTIES));

    assertFalse("Found unexpected dc:title", getJcrNode(object).hasProperty("dc:title"));

    object.updateProperties(
        subjects,
        "PREFIX dcterms: <http://purl.org/dc/terms/>\n"
            + "DELETE { <"
            + graphSubject
            + "> "
            + "dcterms:isPartOf <"
            + graphSubject
            + "> "
            + "} WHERE {}",
        object.getTriples(subjects, PROPERTIES));
    assertFalse("found unexpected reference", getJcrNode(object).hasProperty("dcterms:isPartOf"));

    session.save();
  }
Пример #10
0
  @Test
  public void testObjectGraphWithUriProperty() throws RepositoryException {
    final Container object = containerService.findOrCreate(session, "/graphObject");
    final Resource graphSubject = subjects.reverse().convert(object);

    object.updateProperties(
        subjects,
        "PREFIX some: <info:some#>\n"
            + "INSERT { <"
            + graphSubject
            + "> some:urlProperty "
            + "<"
            + graphSubject
            + "> } WHERE {}",
        object.getTriples(subjects, PROPERTIES));

    final String prefix = session.getWorkspace().getNamespaceRegistry().getPrefix("info:some#");
    final String propertyName = prefix + ":urlProperty";
    final String referencePropertyName = getReferencePropertyName(propertyName);

    assertTrue(getJcrNode(object).hasProperty(referencePropertyName));
    assertFalse(getJcrNode(object).hasProperty(propertyName));

    assertEquals(
        getJcrNode(object),
        session.getNodeByIdentifier(
            getJcrNode(object)
                .getProperty(prefix + ":urlProperty_ref")
                .getValues()[0]
                .getString()));

    object.updateProperties(
        subjects,
        "PREFIX some: <info:some#>\n"
            + "DELETE { <"
            + graphSubject
            + "> some:urlProperty "
            + "<"
            + graphSubject
            + "> } WHERE {}",
        object.getTriples(subjects, PROPERTIES));

    assertFalse(getJcrNode(object).hasProperty(referencePropertyName));
    assertFalse(getJcrNode(object).hasProperty(propertyName));

    object.updateProperties(
        subjects,
        "PREFIX some: <info:some#>\n"
            + "INSERT DATA { <"
            + graphSubject
            + "> some:urlProperty <"
            + graphSubject
            + ">;\n"
            + "       some:urlProperty <info:somewhere/else> . }",
        object.getTriples(subjects, PROPERTIES));

    assertTrue(getJcrNode(object).hasProperty(referencePropertyName));
    assertTrue(getJcrNode(object).hasProperty(propertyName));

    assertEquals(1, getJcrNode(object).getProperty(prefix + ":urlProperty_ref").getValues().length);
    assertEquals(
        getJcrNode(object),
        session.getNodeByIdentifier(
            getJcrNode(object)
                .getProperty(prefix + ":urlProperty_ref")
                .getValues()[0]
                .getString()));
  }