Skip to content

Commit 106d695

Browse files
committed
Inferring lapp:endUserApplication/`lapp:adminApplication/ on the fly
1 parent cf727a7 commit 106d695

4 files changed

Lines changed: 77 additions & 13 deletions

File tree

config/system.trig

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
ldt:ontology <https://w3id.org/atomgraph/linkeddatahub/admin#> ;
2525
ldt:service <urn:linkeddatahub:services/admin> ;
2626
ac:stylesheet <static/xsl/admin/layout.xsl> ;
27-
lapp:endUserApplication <urn:linkeddatahub:apps/end-user> ;
2827
lapp:frontendProxy <http://varnish-frontend:6060/> .
2928

3029
}
@@ -53,7 +52,6 @@
5352
ldt:ontology <https://localhost:4443/ns#> ;
5453
ldt:service <urn:linkeddatahub:services/end-user> ;
5554
ac:stylesheet <static/xsl/layout.xsl> ;
56-
lapp:adminApplication <urn:linkeddatahub:apps/admin> ;
5755
lapp:frontendProxy <http://varnish-frontend:6060/> ;
5856
lapp:public true .
5957

@@ -71,3 +69,32 @@
7169
lapp:backendProxy <http://varnish-end-user/> .
7270

7371
}
72+
73+
# northwind-traders admin
74+
75+
<urn:linkeddatahub:apps/northwind-traders/admin>
76+
{
77+
<urn:linkeddatahub:apps/northwind-traders/admin> a lapp:Application, lapp:AdminApplication ;
78+
dct:title "Northwind Traders admin" ;
79+
lapp:origin <https://admin.northwind-traders.demo.localhost:4443> ;
80+
ldt:ontology <https://w3id.org/atomgraph/linkeddatahub/admin#> ;
81+
ldt:service <urn:linkeddatahub:services/admin> ;
82+
ac:stylesheet <static/xsl/admin/layout.xsl> ;
83+
lapp:frontendProxy <http://varnish-frontend:6060/> .
84+
85+
}
86+
87+
# northwind-traders end-user
88+
89+
<urn:linkeddatahub:apps/northwind-traders/end-user>
90+
{
91+
<urn:linkeddatahub:apps/northwind-traders/end-user> a lapp:Application, lapp:EndUserApplication ;
92+
dct:title "Northwind Traders" ;
93+
lapp:origin <https://northwind-traders.demo.localhost:4443> ;
94+
ldt:ontology <https://northwind-traders.demo.localhost:4443/ns#> ;
95+
ldt:service <urn:linkeddatahub:services/end-user> ;
96+
ac:stylesheet <static/xsl/layout.xsl> ;
97+
lapp:frontendProxy <http://varnish-frontend:6060/> ;
98+
lapp:public true .
99+
100+
}

src/main/java/com/atomgraph/linkeddatahub/apps/model/admin/impl/ApplicationImpl.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,10 @@
2020
import com.atomgraph.linkeddatahub.apps.model.EndUserApplication;
2121
import com.atomgraph.linkeddatahub.vocabulary.Admin;
2222
import com.atomgraph.linkeddatahub.vocabulary.LAPP;
23+
import java.net.URI;
2324
import org.apache.jena.enhanced.EnhGraph;
2425
import org.apache.jena.graph.Node;
26+
import org.apache.jena.rdf.model.ResIterator;
2527
import org.apache.jena.rdf.model.Resource;
2628
import org.slf4j.Logger;
2729
import org.slf4j.LoggerFactory;
@@ -50,9 +52,27 @@ public ApplicationImpl(Node n, EnhGraph g)
5052
@Override
5153
public EndUserApplication getEndUserApplication()
5254
{
53-
Resource app = getPropertyResourceValue(LAPP.endUserApplication);
54-
if (app != null) return app.as(EndUserApplication.class);
55-
55+
URI originURI = getOriginURI();
56+
if (originURI == null) return null;
57+
58+
// derive end-user origin by stripping the "admin." subdomain from the host
59+
String host = originURI.getHost();
60+
if (!host.startsWith("admin.")) return null;
61+
String endUserHost = host.substring("admin.".length());
62+
URI endUserOrigin = URI.create(originURI.getScheme() + "://" + endUserHost +
63+
(originURI.getPort() != -1 ? ":" + originURI.getPort() : ""));
64+
65+
ResIterator it = getModel().listSubjectsWithProperty(LAPP.origin,
66+
getModel().createResource(endUserOrigin.toString()));
67+
try
68+
{
69+
if (it.hasNext()) return it.next().as(EndUserApplication.class);
70+
}
71+
finally
72+
{
73+
it.close();
74+
}
75+
5676
return null;
5777
}
5878

src/main/java/com/atomgraph/linkeddatahub/apps/model/end_user/impl/ApplicationImpl.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@
1818

1919
import com.atomgraph.linkeddatahub.apps.model.AdminApplication;
2020
import com.atomgraph.linkeddatahub.apps.model.EndUserApplication;
21+
import java.net.URI;
2122
import org.apache.jena.enhanced.EnhGraph;
2223
import org.apache.jena.graph.Node;
23-
import org.apache.jena.rdf.model.Resource;
24+
import org.apache.jena.rdf.model.ResIterator;
2425
import org.slf4j.Logger;
2526
import org.slf4j.LoggerFactory;
2627
import com.atomgraph.linkeddatahub.vocabulary.LAPP;
@@ -49,9 +50,25 @@ public ApplicationImpl(Node n, EnhGraph g)
4950
@Override
5051
public AdminApplication getAdminApplication()
5152
{
52-
Resource app = getPropertyResourceValue(LAPP.adminApplication);
53-
if (app != null) return app.as(AdminApplication.class);
54-
53+
URI originURI = getOriginURI();
54+
if (originURI == null) return null;
55+
56+
// derive admin origin by prepending "admin." to the host
57+
String adminHost = "admin." + originURI.getHost();
58+
URI adminOrigin = URI.create(originURI.getScheme() + "://" + adminHost +
59+
(originURI.getPort() != -1 ? ":" + originURI.getPort() : ""));
60+
61+
ResIterator it = getModel().listSubjectsWithProperty(LAPP.origin,
62+
getModel().createResource(adminOrigin.toString()));
63+
try
64+
{
65+
if (it.hasNext()) return it.next().as(AdminApplication.class);
66+
}
67+
finally
68+
{
69+
it.close();
70+
}
71+
5572
return null;
5673
}
5774

src/main/java/com/atomgraph/linkeddatahub/vocabulary/LAPP.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,10 @@ public static String getURI()
6868
public static final OntClass Package = m_model.createClass( NS + "Package" );
6969

7070
/** Admin application class */
71-
public static final ObjectProperty adminApplication = m_model.createObjectProperty( NS + "adminApplication" );
72-
73-
/** End-user application class */
74-
public static final ObjectProperty endUserApplication = m_model.createObjectProperty( NS + "endUserApplication" );
71+
// public static final ObjectProperty adminApplication = m_model.createObjectProperty( NS + "adminApplication" );
72+
//
73+
// /** End-user application class */
74+
// public static final ObjectProperty endUserApplication = m_model.createObjectProperty( NS + "endUserApplication" );
7575

7676
/** Frontend proxy property */
7777
public static final ObjectProperty frontendProxy = m_model.createObjectProperty( NS + "frontendProxy" );

0 commit comments

Comments
 (0)