diff --git a/platform/web.xsl b/platform/web.xsl index 55f427545..94e233d58 100644 --- a/platform/web.xsl +++ b/platform/web.xsl @@ -8,7 +8,8 @@ xmlns:jee="https://jakarta.ee/xml/ns/jakartaee" - + + diff --git a/src/main/java/com/atomgraph/linkeddatahub/server/model/impl/Dispatcher.java b/src/main/java/com/atomgraph/linkeddatahub/server/model/impl/Dispatcher.java index d2c190384..4dd22a94a 100644 --- a/src/main/java/com/atomgraph/linkeddatahub/server/model/impl/Dispatcher.java +++ b/src/main/java/com/atomgraph/linkeddatahub/server/model/impl/Dispatcher.java @@ -66,31 +66,39 @@ public Dispatcher(@Context UriInfo uriInfo, Optional dataset, com.atomg } /** - * Returns JAX-RS resource that will handle this request. + * Returns proxy class that takes precedence over the default JAX-RS path matching. * The request is proxied in two cases: *
    *
  • externally (URI specified by the ?uri query param)
  • *
  • internally if it matches a lapp:Dataset specified in the system app config
  • *
- * Otherwise, fall back to SPARQL Graph Store backed by the app's service. - * - * @return resource + * @return optional class */ - @Path("{path: .*}") - public Object getSubResource() + public Optional getProxyClass() { if (getUriInfo().getQueryParameters().containsKey(AC.uri.getLocalName())) { if (log.isDebugEnabled()) log.debug("No Application matched request URI <{}>, dispatching to ProxyResourceBase", getUriInfo().getQueryParameters().getFirst(AC.uri.getLocalName())); - return ProxyResourceBase.class; + return Optional.of(ProxyResourceBase.class); } if (getDataset().isPresent()) { if (log.isDebugEnabled()) log.debug("Serving request URI <{}> from Dataset <{}>, dispatching to ProxyResourceBase", getUriInfo().getAbsolutePath(), getDataset().get()); - return ProxyResourceBase.class; + return Optional.of(ProxyResourceBase.class); } - - return getResourceClass(); + + return Optional.empty(); + } + + /** + * Returns JAX-RS resource that will handle this request. + * + * @return resource + */ + @Path("{path: .*}") + public Class getSubResource() + { + return getProxyClass().orElse(getResourceClass()); } // TO-DO: move @Path annotations onto respective classes? @@ -101,9 +109,9 @@ public Object getSubResource() * @return endpoint resource */ @Path("sparql") - public Object getSPARQLEndpoint() + public Class getSPARQLEndpoint() { - return SPARQLEndpointImpl.class; + return getProxyClass().orElse(SPARQLEndpointImpl.class); } /** @@ -112,9 +120,9 @@ public Object getSPARQLEndpoint() * @return endpoint resource */ @Path("service") - public Object getGraphStore() + public Class getGraphStore() { - return GraphStoreImpl.class; + return getProxyClass().orElse(GraphStoreImpl.class); } /** @@ -123,9 +131,9 @@ public Object getGraphStore() * @return endpoint resource */ @Path("ns") - public Object getNamespace() + public Class getNamespace() { - return Namespace.class; + return getProxyClass().orElse(Namespace.class); } /** @@ -134,9 +142,9 @@ public Object getNamespace() * @return namespace resource */ @Path("ns/{slug}/") - public Object getSubOntology() + public Class getSubOntology() { - return Namespace.class; + return getProxyClass().orElse(Namespace.class); } /** @@ -145,9 +153,9 @@ public Object getSubOntology() * @return endpoint resource */ @Path("sign up") - public Object getSignUp() + public Class getSignUp() { - return SignUp.class; + return getProxyClass().orElse(SignUp.class); } /** @@ -156,9 +164,9 @@ public Object getSignUp() * @return endpoint resource */ @Path("request access") - public Object getRequestAccess() + public Class getRequestAccess() { - return RequestAccess.class; + return getProxyClass().orElse(RequestAccess.class); } /** @@ -168,9 +176,9 @@ public Object getRequestAccess() * @see com.atomgraph.linkeddatahub.apps.model.Application#UPLOADS_PATH */ @Path("uploads/{sha1sum}") - public Object getFileItem() + public Class getFileItem() { - return com.atomgraph.linkeddatahub.resource.upload.sha1.Item.class; + return getProxyClass().orElse(com.atomgraph.linkeddatahub.resource.upload.sha1.Item.class); } /** @@ -179,9 +187,9 @@ public Object getFileItem() * @return endpoint resource */ @Path("importer") - public Object getImportEndpoint() + public Class getImportEndpoint() { - return Importer.class; + return getProxyClass().orElse(Importer.class); } /** @@ -190,9 +198,9 @@ public Object getImportEndpoint() * @return endpoint resource */ @Path("add") - public Object getAddEndpoint() + public Class getAddEndpoint() { - return Add.class; + return getProxyClass().orElse(Add.class); } /** @@ -201,9 +209,9 @@ public Object getAddEndpoint() * @return endpoint resource */ @Path("transform") - public Object getTransformEndpoint() + public Class getTransformEndpoint() { - return Transform.class; + return getProxyClass().orElse(Transform.class); } /** @@ -212,9 +220,9 @@ public Object getTransformEndpoint() * @return endpoint resource */ @Path("generate") - public Object getGenerateEndpoint() + public Class getGenerateEndpoint() { - return Generate.class; + return getProxyClass().orElse(Generate.class); } /** @@ -223,9 +231,9 @@ public Object getGenerateEndpoint() * @return endpoint resource */ @Path("clear") - public Object getClearEndpoint() + public Class getClearEndpoint() { - return Clear.class; + return getProxyClass().orElse(Clear.class); } /** @@ -234,9 +242,9 @@ public Object getClearEndpoint() * @return endpoint resource */ @Path("oauth2/authorize/google") - public Object getAuthorizeGoogle() + public Class getAuthorizeGoogle() { - return com.atomgraph.linkeddatahub.resource.admin.oauth2.google.Authorize.class; + return getProxyClass().orElse(com.atomgraph.linkeddatahub.resource.admin.oauth2.google.Authorize.class); } /** @@ -245,9 +253,9 @@ public Object getAuthorizeGoogle() * @return endpoint resource */ @Path("oauth2/login") - public Object getOAuth2Login() + public Class getOAuth2Login() { - return com.atomgraph.linkeddatahub.resource.admin.oauth2.Login.class; + return getProxyClass().orElse(com.atomgraph.linkeddatahub.resource.admin.oauth2.Login.class); } /** diff --git a/src/main/java/com/atomgraph/linkeddatahub/server/model/impl/ProxyResourceBase.java b/src/main/java/com/atomgraph/linkeddatahub/server/model/impl/ProxyResourceBase.java index a510504f2..a8b4d20a6 100644 --- a/src/main/java/com/atomgraph/linkeddatahub/server/model/impl/ProxyResourceBase.java +++ b/src/main/java/com/atomgraph/linkeddatahub/server/model/impl/ProxyResourceBase.java @@ -299,6 +299,7 @@ public ContainerRequestContext getContainerRequestContext() * * @return URI info */ + @Override public UriInfo getUriInfo() { return uriInfo;