use of org.apache.jackrabbit.oak.remote.RemoteSession in project jackrabbit-oak by apache.
the class GetLastRevisionHandler method handle.
@Override
public void handle(HttpServletRequest request, HttpServletResponse response) throws IOException {
RemoteSession session = (RemoteSession) request.getAttribute("session");
if (session == null) {
sendInternalServerError(response, "session not found");
return;
}
RemoteRevision revision = session.readLastRevision();
response.setStatus(HttpServletResponse.SC_OK);
response.setContentType("application/json");
ServletOutputStream stream = response.getOutputStream();
JsonGenerator generator = new JsonFactory().createJsonGenerator(stream, JsonEncoding.UTF8);
generator.writeStartObject();
generator.writeStringField("revision", revision.asString());
generator.writeEndObject();
generator.flush();
stream.close();
}
use of org.apache.jackrabbit.oak.remote.RemoteSession in project jackrabbit-oak by apache.
the class HeadBinaryHandler method handle.
@Override
public void handle(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
RemoteSession session = (RemoteSession) request.getAttribute("session");
if (session == null) {
sendInternalServerError(response, "session not found");
return;
}
String providedBinaryId = readBinaryId(request);
if (providedBinaryId == null) {
sendBadRequest(response, "unable to read the provided binary ID");
return;
}
RemoteBinaryId binaryId = session.readBinaryId(providedBinaryId);
if (binaryId == null) {
sendNotFound(response, "binary ID not found");
return;
}
response.setStatus(HttpServletResponse.SC_OK);
response.setHeader("Accept-Ranges", "bytes");
}
use of org.apache.jackrabbit.oak.remote.RemoteSession in project jackrabbit-oak by apache.
the class PostBinaryHandler method handle.
@Override
public void handle(HttpServletRequest request, HttpServletResponse response) throws IOException {
RemoteSession session = (RemoteSession) request.getAttribute("session");
if (session == null) {
sendInternalServerError(response, "session not found");
return;
}
RemoteBinaryId binaryId = session.writeBinary(request.getInputStream());
response.setStatus(HttpServletResponse.SC_CREATED);
response.setContentType("application/json");
ServletOutputStream stream = response.getOutputStream();
JsonGenerator generator = new JsonFactory().createJsonGenerator(stream, JsonEncoding.UTF8);
generator.writeStartObject();
generator.writeStringField("binaryId", binaryId.asString());
generator.writeEndObject();
generator.flush();
stream.close();
}
use of org.apache.jackrabbit.oak.remote.RemoteSession in project jackrabbit-oak by apache.
the class AuthenticationWrapperHandler method handle.
@Override
public void handle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
RemoteSession session = (RemoteSession) request.getAttribute("session");
if (session != null) {
authenticated.handle(request, response);
return;
}
RemoteRepository repository = (RemoteRepository) request.getAttribute("repository");
if (repository == null) {
sendInternalServerError(response, "repository not found");
return;
}
RemoteCredentials credentials = extractCredentials(request, repository);
if (credentials == null) {
notAuthenticated.handle(request, response);
return;
}
try {
session = repository.login(credentials);
} catch (RemoteLoginException e) {
logger.warn("unable to authenticate to the repository", e);
notAuthenticated.handle(request, response);
return;
}
request.setAttribute("session", session);
authenticated.handle(request, response);
}
use of org.apache.jackrabbit.oak.remote.RemoteSession in project jackrabbit-oak by apache.
the class SearchRevisionHandler method handle.
@Override
public void handle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
RemoteSession session = (RemoteSession) request.getAttribute("session");
if (session == null) {
sendInternalServerError(response, "session not found");
return;
}
RemoteRevision revision = readRevision(request, session);
if (revision == null) {
sendGone(response, "unable to read the revision");
return;
}
String query = readQuery(request);
if (query == null) {
sendBadRequest(response, "query not specified");
return;
}
String language = readLanguage(request);
if (language == null) {
sendBadRequest(response, "language not specified");
return;
}
Long offset = readOffset(request);
if (offset == null) {
sendBadRequest(response, "offset not specified");
return;
}
Long limit = readLimit(request);
if (limit == null) {
sendBadRequest(response, "limit not specified");
return;
}
RemoteResults results;
try {
results = session.search(revision, query, language, offset, limit);
} catch (RemoteQueryParseException e) {
sendBadRequest(response, "malformed query");
return;
}
response.setStatus(HttpServletResponse.SC_OK);
response.setHeader("Oak-Revision", revision.asString());
response.setContentType("application/json");
ServletOutputStream stream = response.getOutputStream();
JsonGenerator generator = new JsonFactory().createJsonGenerator(stream, JsonEncoding.UTF8);
renderResponse(generator, results);
generator.flush();
stream.close();
}
Aggregations