/* * 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.server; import javax.servlet.ServletContext ; import org.apache.jena.atlas.lib.Registry ; import org.apache.jena.atlas.logging.Log ; import org.apache.jena.fuseki.FusekiException ; public class DataAccessPointRegistry extends Registry<String, DataAccessPoint> { public DataAccessPointRegistry() {} // Add error checking. public void register(String name, DataAccessPoint accessPt) { if ( isRegistered(name) ) throw new FusekiException("Already registered: "+name) ; super.put(name, accessPt); } // Debugging public void print(String string) { System.out.flush() ; if ( string == null ) string = "DataAccessPointRegistry" ; System.out.println("== "+string) ; this.forEach((k,ref)->{ System.out.printf(" (key=%s, ref=%s)\n", k, ref.getName()) ; ref.getDataService().getOperations().forEach((opName)->{ ref.getDataService().getOperation(opName).forEach(ep->{ System.out.printf(" %s : %s\n", opName, ep.getEndpoint()) ; }); }); }) ; } // The server DataAccessPointRegistry is held in the ServletContext for the server. private static final String attrNameRegistry = "jena-fuseki:dataAccessPointRegistry" ; // Policy for the location of the server-wide DataAccessPointRegistry public static DataAccessPointRegistry get(ServletContext cxt) { DataAccessPointRegistry registry = (DataAccessPointRegistry)cxt.getAttribute(attrNameRegistry) ; if ( registry == null ) Log.warn(DataAccessPointRegistry.class, "No registry for ServletContext") ; return registry ; } public static void set(ServletContext cxt, DataAccessPointRegistry registry) { cxt.setAttribute(attrNameRegistry, registry) ; } }