/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jena.fuseki.mgt; import org.apache.jena.fuseki.Fuseki ; import org.apache.jena.fuseki.server.DataAccessPoint ; import org.apache.jena.fuseki.server.DataService ; import org.apache.jena.fuseki.servlets.ActionBase ; import org.apache.jena.fuseki.servlets.HttpAction ; import org.apache.jena.fuseki.servlets.ServletOps ; /** Control/admin request lifecycle */ public abstract class ActionCtl extends ActionBase { private static final long serialVersionUID = 3129123436565022299L; protected ActionCtl() { super(Fuseki.adminLog) ; } @Override final protected void execCommonWorker(HttpAction action) { DataAccessPoint dataAccessPoint ; DataService dSrv ; String datasetUri = mapRequestToDatasetName(action) ; if ( datasetUri != null ) { dataAccessPoint = action.getDataAccessPointRegistry().get(datasetUri) ; if ( dataAccessPoint == null ) { ServletOps.errorNotFound("Not found: "+datasetUri) ; return ; } } else { // This is a placeholder when creating new DatasetRefs // and also if addressing a container, not a dataset dataAccessPoint = null ; dSrv = DataService.serviceOnlyDataService() ; } action.setControlRequest(dataAccessPoint, datasetUri) ; action.setEndpoint(null, null) ; // No operation or service name. executeAction(action) ; } protected String mapRequestToDatasetName(HttpAction action) { return extractItemName(action) ; } // Execute - no stats. // Intercept point for the UberServlet protected void executeAction(HttpAction action) { executeLifecycle(action) ; } // This is the service request lifecycle. final protected void executeLifecycle(HttpAction action) { startRequest(action) ; try { perform(action) ; } finally { finishRequest(action) ; } } final protected boolean isContainerAction(HttpAction action) { return (action.getDataAccessPoint() == null ) ; } protected abstract void perform(HttpAction action) ; // /** Map request to uri in the registry. // * null means no mapping done (passthrough). // */ // protected String mapRequestToDataset(HttpAction action) // { // return ActionLib.mapRequestToDataset(action.request.getRequestURI()) ; // } }