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;