public DataAccessPointRegistry getDataAccessPointRegistry() { return DataAccessPointRegistry.get(servletContext) ; }
/** Add a {@link DataAccessPoint}. */ private Builder addDataAccessPoint(DataAccessPoint dap) { if ( dataAccessPoints.isRegistered(dap.getName()) ) throw new FusekiConfigException("Data service name already registered: "+dap.getName()); dataAccessPoints.register(dap); return this; }
private void adjustForFuseki(ServletContext cxt) { // For Fuseki servlets added directly. // This enables servlets inheriting from {@link ActionBase} to work in the // plain Jetty server, e.g. to use Fuseki logging. try { Fuseki.setVerbose(cxt, verbose); ServiceDispatchRegistry.set(cxt, new ServiceDispatchRegistry(false)); DataAccessPointRegistry.set(cxt, new DataAccessPointRegistry()); } catch (NoClassDefFoundError err) { LOG.info("Fuseki classes not found"); } }
/** * Return a collection of the names registered. This collection does not change as the * server changes. */ public static Collection<String> names(FusekiServer server) { DataAccessPointRegistry dataAccessPoints = DataAccessPointRegistry.get(server.getServletContext()); int N = dataAccessPoints.size(); Stream<String> stream = DataAccessPointRegistry.get(server.getServletContext()).keys().stream(); // Correct size, no reallocate. List<String> names = stream.collect(Collectors.toCollection(() -> new ArrayList<>(N))); return names; }
private void statsTxt(HttpServletResponse resp, DataAccessPointRegistry registry) throws IOException { ServletOutputStream out = resp.getOutputStream() ; resp.setContentType(contentTypeTextPlain); resp.setCharacterEncoding(charsetUTF8) ; Iterator<String> iter = registry.keys().iterator() ; while(iter.hasNext()) { String ds = iter.next() ; DataAccessPoint desc = registry.get(ds) ; statsTxt(out, desc) ; if ( iter.hasNext() ) out.println() ; } out.flush() ; }
DataAccessPointRegistry registry = DataAccessPointRegistry.get(request.getServletContext()) ; if ( registry.isRegistered(datasetUri) ) { if ( LogFilter ) log.info("Filter: dispatch") ; DataAccessPoint dap = registry.get(dsKey) ; String dsName = dap.getName() ; if ( datasetUri.startsWith(dsName) ) {
action.log.info(format("[%d] DELETE ds=%s", action.id, name)) ; if ( ! action.getDataAccessPointRegistry().isRegistered(name) ) ServletOps.errorNotFound("No such dataset registered: "+name); DataAccessPoint ref = action.getDataAccessPointRegistry().get(name) ; action.getDataAccessPointRegistry().remove(name);
@Test public void embedded_02() { DatasetGraph dsg = dataset() ; int port = 0 ;//FusekiEnv.choosePort() ; FusekiServer server = FusekiServer.make(port, "/ds2", dsg) ; DataAccessPointRegistry registry = server.getDataAccessPointRegistry() ; // But no /ds assertEquals(1, registry.size()) ; assertTrue(registry.isRegistered("/ds2")) ; assertFalse(registry.isRegistered("/ds")) ; try { server.start() ; } finally { server.stop() ; } }
private void register(String name, DataAccessPoint accessPt) { if ( isRegistered(name) ) throw new FusekiException("Already registered: "+name) ; super.put(name, accessPt); } // Debugging
/** Build one configured Fuseki processor (ServletContext), same dispatch ContextPath */ private ServletContextHandler buildFusekiContext() { ServletContextHandler handler = buildServletContext(contextPath); ServletContext cxt = handler.getServletContext(); Fuseki.setVerbose(cxt, verbose); servletAttr.forEach((n,v)->cxt.setAttribute(n, v)); // Clone to isolate from any future changes (reusing the builder). DataAccessPointRegistry dapRegistry = new DataAccessPointRegistry(dataAccessPoints); ServiceDispatchRegistry svcRegistry = new ServiceDispatchRegistry(serviceDispatch); ServiceDispatchRegistry.set(cxt, svcRegistry); DataAccessPointRegistry.set(cxt, dapRegistry); JettyLib.setMimeTypes(handler); servletsAndFilters(handler); buildAccessControl(handler); if ( hasDataAccessControl ) { // Consider making this "always" and changing the standard operation bindings. FusekiLib.modifyForAccessCtl(svcRegistry, DataAccessCtl.requestUserServlet); } // Start services. dapRegistry.forEach((name, dap)->dap.getDataService().goActive()); return handler; }
private static Map<String, List<String>> description(DataAccessPointRegistry reg) { Map<String, List<String>> desc = new LinkedHashMap<>(); reg.forEach((ds,dap)->{ List<String> endpoints = new ArrayList<>(); desc.put(ds, endpoints); DataService dSrv = dap.getDataService(); dSrv.getOperations().forEach((op)->{ dSrv.getEndpoints(op).forEach(ep-> { String x = ep.getName(); if ( x.isEmpty() ) x = "quads"; endpoints.add(x); }); }); }); return desc; }
public void register(DataAccessPoint accessPt) { register(accessPt.getName(), accessPt); }
public static void removeDataset(DataAccessPointRegistry dataAccessPoints, String name) { name = DataAccessPoint.canonical(name); dataAccessPoints.remove(name); }
/** Implementation of mapRequestToDataset(String) that looks for * the longest match in the registry. * This includes use in direct naming GSP. */ public static String mapRequestToDatasetLongest$(String uri, DataAccessPointRegistry registry) { if ( uri == null ) return null ; // This covers local, using the URI as a direct name for // a graph, not just using the indirect ?graph= or ?default // forms. String ds = null ; for ( String ds2 : registry.keys() ) { if ( ! uri.startsWith(ds2) ) continue ; if ( ds == null ) { ds = ds2 ; continue ; } if ( ds.length() < ds2.length() ) { ds = ds2 ; continue ; } } return ds ; }
DataAccessPointRegistry registry = DataAccessPointRegistry.get(request.getServletContext()) ; if ( registry.isRegistered(datasetUri) ) { if ( LogFilter ) log.info("Filter: dispatch") ; DataAccessPoint dap = registry.get(dsKey) ; String dsName = dap.getName() ; if ( datasetUri.startsWith(dsName) ) {
private void statsTxt(HttpServletResponse resp, DataAccessPointRegistry registry) throws IOException { ServletOutputStream out = resp.getOutputStream() ; resp.setContentType(contentTypeTextPlain); resp.setCharacterEncoding(charsetUTF8) ; Iterator<String> iter = registry.keys().iterator() ; while(iter.hasNext()) { String ds = iter.next() ; DataAccessPoint desc = registry.get(ds) ; statsTxt(out, desc) ; if ( iter.hasNext() ) out.println() ; } out.flush() ; }
action.log.info(format("[%d] DELETE ds=%s", action.id, name)) ; if ( ! action.getDataAccessPointRegistry().isRegistered(name) ) ServletOps.errorNotFound("No such dataset registered: "+name); DataAccessPoint ref = action.getDataAccessPointRegistry().get(name) ; action.getDataAccessPointRegistry().remove(name);
/** * Return a collection of the names registered. This collection does not change as the * server changes. */ public static Collection<String> names(FusekiServer server) { DataAccessPointRegistry dataAccessPoints = DataAccessPointRegistry.get(server.getServletContext()); int N = dataAccessPoints.size(); Stream<String> stream = DataAccessPointRegistry.get(server.getServletContext()).keys().stream(); // Correct size, no reallocate. List<String> names = stream.collect(Collectors.toCollection(() -> new ArrayList<>(N))); return names; }