Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Added namespace-related triple production to JAX-RS producers
  • Loading branch information
ajs6f committed Nov 26, 2013
1 parent 436ff13 commit 1e018b8
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 17 deletions.
Expand Up @@ -88,8 +88,9 @@ public RdfStream getDatastreamFixity(@PathParam("path")

final Datastream ds = datastreamService.getDatastream(session, path);

return datastreamService.getFixityResultsModel(new HttpGraphSubjects(
session, FedoraNodes.class, uriInfo), ds);
return datastreamService.getFixityResultsModel(
new HttpGraphSubjects(session, FedoraNodes.class, uriInfo), ds)
.session(session);

}
}
Expand Up @@ -108,8 +108,9 @@ public RdfStream getNextPid(@PathParam("path")
new HttpGraphSubjects(session, FedoraNodes.class, uriInfo);

return new RdfStream(transform(
transform(identifiers, absolutize(path)),
identifier2triple(subjects, pidsResult))).topic(pidsResult);
transform(identifiers, absolutize(path)), identifier2triple(
subjects, pidsResult))).topic(pidsResult).session(
session);

}

Expand Down
Expand Up @@ -87,7 +87,8 @@ public class FedoraRepositoryWorkspaces extends AbstractResource {
public RdfStream getWorkspaces(@Context final UriInfo uriInfo)
throws RepositoryException {

return JcrRdfTools.withContext(null, session).getWorkspaceTriples(uriInfo);
return JcrRdfTools.withContext(null, session).getWorkspaceTriples(
uriInfo).session(session);

}

Expand Down
Expand Up @@ -38,6 +38,7 @@
import org.fcrepo.kernel.Datastream;
import org.fcrepo.kernel.rdf.GraphSubjects;
import org.fcrepo.kernel.services.DatastreamService;
import org.fcrepo.kernel.utils.iterators.RdfStream;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
Expand Down Expand Up @@ -81,6 +82,8 @@ public void testGetDatastreamFixity() throws RepositoryException,
when(mockDs.getNode()).thenReturn(mockNode);
when(mockDatastreams.getDatastream(mockSession, path)).thenReturn(
mockDs);
when(mockDatastreams.getFixityResultsModel(any(GraphSubjects.class),
eq(mockDs))).thenReturn(new RdfStream());
testObj.getDatastreamFixity(createPathList("objects", pid, "testDS"),
mockRequest, uriInfo);
verify(mockDatastreams).getFixityResultsModel(any(GraphSubjects.class),
Expand Down
Expand Up @@ -37,13 +37,15 @@
import java.nio.charset.Charset;

import javax.annotation.PostConstruct;
import javax.jcr.RepositoryException;
import javax.ws.rs.Produces;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.MessageBodyWriter;
import javax.ws.rs.ext.Provider;

import org.fcrepo.kernel.rdf.impl.NamespaceRdfContext;
import org.fcrepo.kernel.utils.LogoutCallback;
import org.fcrepo.kernel.utils.iterators.RdfStream;
import org.openrdf.rio.RDFFormat;
Expand Down Expand Up @@ -95,17 +97,24 @@ public long getSize(final RdfStream t, final Class<?> type,

@Override
public void writeTo(final RdfStream rdfStream, final Class<?> type,
final Type genericType, final Annotation[] annotations,
final MediaType mediaType,
final MultivaluedMap<String, Object> httpHeaders,
final OutputStream entityStream) throws IOException,
WebApplicationException {
final Type genericType, final Annotation[] annotations,
final MediaType mediaType,
final MultivaluedMap<String, Object> httpHeaders,
final OutputStream entityStream) throws IOException,
WebApplicationException {

LOGGER.debug("Serializing an RdfStream to mimeType: {}", mediaType);
final RdfStreamStreamingOutput streamOutput =
new RdfStreamStreamingOutput(rdfStream, mediaType);
addCallback(streamOutput, new LogoutCallback(rdfStream.session()));
streamOutput.write(entityStream);
try {
final RdfStreamStreamingOutput streamOutput =
new RdfStreamStreamingOutput(rdfStream
.concat(new NamespaceRdfContext(rdfStream.session())),
mediaType);
addCallback(streamOutput, new LogoutCallback(rdfStream.session()));
streamOutput.write(entityStream);
} catch (final RepositoryException e) {
throw new WebApplicationException(e);
}


}

Expand Down
Expand Up @@ -22,29 +22,48 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

import javax.jcr.NamespaceRegistry;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.Workspace;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;

import org.fcrepo.kernel.utils.iterators.RdfStream;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import com.hp.hpl.jena.graph.Triple;
import com.hp.hpl.jena.rdf.model.Model;

public class RdfStreamProviderTest {

private RdfStreamProvider testProvider = new RdfStreamProvider();

@Mock
private Session mockSession;

@Mock
private Workspace mockWorkspace;

@Mock
private NamespaceRegistry mockNamespaceRegistry;

@Before
public void setUp() {
public void setUp() throws RepositoryException {
initMocks(this);
testProvider.registerMimeTypes();
when(mockSession.getWorkspace()).thenReturn(mockWorkspace);
when(mockWorkspace.getNamespaceRegistry()).thenReturn(
mockNamespaceRegistry);
when(mockNamespaceRegistry.getPrefixes()).thenReturn(new String[] {});
}

@Test
Expand All @@ -71,7 +90,7 @@ public void testWriteTo() throws WebApplicationException,
final Triple t =
create(createURI("info:test"), createURI("property:test"),
createURI("info:test"));
final RdfStream rdfStream = new RdfStream(t).session(mock(Session.class));
final RdfStream rdfStream = new RdfStream(t).session(mockSession);
byte[] result;
try (ByteArrayOutputStream entityStream = new ByteArrayOutputStream();) {
testProvider.writeTo(rdfStream, RdfStream.class, null, null,
Expand Down

0 comments on commit 1e018b8

Please sign in to comment.