AbstractRepositoryController.java
/*******************************************************************************
* Copyright (c) 2022 Eclipse RDF4J contributors.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Distribution License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*******************************************************************************/
package org.eclipse.rdf4j.http.server.repository;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.rdf4j.http.server.repository.handler.QueryRequestHandler;
import org.eclipse.rdf4j.http.server.repository.handler.RepositoryRequestHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContextException;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
public abstract class AbstractRepositoryController extends AbstractController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
public AbstractRepositoryController() throws ApplicationContextException {
setSupportedMethods(METHOD_GET, METHOD_POST, "PUT", "DELETE", METHOD_HEAD);
}
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
throws Exception {
logger.debug("Request method: {}", request.getMethod());
RequestMethod requestMethod = RequestMethod.valueOf(request.getMethod());
switch (requestMethod) {
case DELETE: {
logger.debug("handleDeleteRepositoryRequest");
return getRepositoryRequestHandler().handleDeleteRepositoryRequest(request);
}
case PUT: {
logger.debug("handleCreateOrUpdateRepositoryRequest");
return getRepositoryRequestHandler().handleCreateOrUpdateRepositoryRequest(request);
}
}
logger.debug("handleQueryRequest");
return getQueryRequestHandler().handleQueryRequest(request, requestMethod, response);
}
protected abstract QueryRequestHandler getQueryRequestHandler();
protected abstract RepositoryRequestHandler getRepositoryRequestHandler();
}