Merge r5968, r5972 from nihvivo-rel-1.1.-maint. Externally-linked namespaces.
This commit is contained in:
parent
717cbc68ce
commit
3975d9aa01
5 changed files with 64 additions and 9 deletions
|
@ -2,10 +2,14 @@
|
||||||
|
|
||||||
package edu.cornell.mannlib.vitro.webapp.dao;
|
package edu.cornell.mannlib.vitro.webapp.dao;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface ApplicationDao {
|
public interface ApplicationDao {
|
||||||
|
|
||||||
public boolean isFlag1Active();
|
public boolean isFlag1Active();
|
||||||
|
|
||||||
public boolean isFlag2Active();
|
public boolean isFlag2Active();
|
||||||
|
|
||||||
|
public List<String> getExternallyLinkedNamespaces();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,8 @@ public class VitroVocabulary {
|
||||||
// an OWL DL-compatible surrogate for rdf:value for use with boxing idiom
|
// an OWL DL-compatible surrogate for rdf:value for use with boxing idiom
|
||||||
public static final String value = vitroURI + "value";
|
public static final String value = vitroURI + "value";
|
||||||
|
|
||||||
|
public static final String DISPLAY = "http://vitro.mannlib.cornell.edu/ontologies/display/1.1#";
|
||||||
|
|
||||||
// properties found on the beans
|
// properties found on the beans
|
||||||
|
|
||||||
public static final String DESCRIPTION = vitroURI+"description";
|
public static final String DESCRIPTION = vitroURI+"description";
|
||||||
|
|
|
@ -2,19 +2,23 @@
|
||||||
|
|
||||||
package edu.cornell.mannlib.vitro.webapp.dao.jena;
|
package edu.cornell.mannlib.vitro.webapp.dao.jena;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.ArrayList;
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.hp.hpl.jena.ontology.OntModel;
|
import com.hp.hpl.jena.ontology.OntModel;
|
||||||
|
import com.hp.hpl.jena.rdf.model.Literal;
|
||||||
|
import com.hp.hpl.jena.rdf.model.NodeIterator;
|
||||||
|
import com.hp.hpl.jena.rdf.model.Property;
|
||||||
|
import com.hp.hpl.jena.rdf.model.RDFNode;
|
||||||
|
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.Portal;
|
import edu.cornell.mannlib.vitro.webapp.beans.Portal;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.ApplicationDao;
|
import edu.cornell.mannlib.vitro.webapp.dao.ApplicationDao;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
|
import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
|
||||||
|
|
||||||
public class ApplicationDaoJena extends JenaBaseDao implements ApplicationDao {
|
public class ApplicationDaoJena extends JenaBaseDao implements ApplicationDao {
|
||||||
|
|
||||||
Integer portalCount = null;
|
Integer portalCount = null;
|
||||||
|
List<String> externallyLinkedNamespaces = null;
|
||||||
|
|
||||||
public ApplicationDaoJena(WebappDaoFactoryJena wadf) {
|
public ApplicationDaoJena(WebappDaoFactoryJena wadf) {
|
||||||
super(wadf);
|
super(wadf);
|
||||||
|
@ -39,4 +43,22 @@ public class ApplicationDaoJena extends JenaBaseDao implements ApplicationDao {
|
||||||
return (getFlag2ValueMap().isEmpty()) ? false : true;
|
return (getFlag2ValueMap().isEmpty()) ? false : true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public List<String> getExternallyLinkedNamespaces() {
|
||||||
|
if (externallyLinkedNamespaces == null) {
|
||||||
|
externallyLinkedNamespaces = new ArrayList<String>();
|
||||||
|
OntModel ontModel = getOntModelSelector().getDisplayModel();
|
||||||
|
Property linkedNamespaceProp = ontModel.getProperty(VitroVocabulary.DISPLAY + "linkedNamespace");
|
||||||
|
NodeIterator nodes = ontModel.listObjectsOfProperty(linkedNamespaceProp);
|
||||||
|
while (nodes.hasNext()) {
|
||||||
|
RDFNode node = nodes.next();
|
||||||
|
if (node.isLiteral()) {
|
||||||
|
String namespace = ((Literal)node).getLexicalForm();
|
||||||
|
externallyLinkedNamespaces.add(namespace);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return externallyLinkedNamespaces;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,4 +42,6 @@ public interface OntModelSelector {
|
||||||
*/
|
*/
|
||||||
public OntModel getTBoxModel(String ontologyURI);
|
public OntModel getTBoxModel(String ontologyURI);
|
||||||
|
|
||||||
|
public OntModel getDisplayModel();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@ import org.openrdf.model.URI;
|
||||||
import org.openrdf.model.impl.URIImpl;
|
import org.openrdf.model.impl.URIImpl;
|
||||||
|
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.Portal;
|
import edu.cornell.mannlib.vitro.webapp.beans.Portal;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.dao.ApplicationDao;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
|
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
|
||||||
import edu.cornell.mannlib.vitro.webapp.utils.NamespaceMapper;
|
import edu.cornell.mannlib.vitro.webapp.utils.NamespaceMapper;
|
||||||
import edu.cornell.mannlib.vitro.webapp.utils.NamespaceMapperFactory;
|
import edu.cornell.mannlib.vitro.webapp.utils.NamespaceMapperFactory;
|
||||||
|
@ -152,11 +153,12 @@ public class URLRewritingHttpServletResponse implements HttpServletResponse {
|
||||||
NamespaceMapper nsMap = NamespaceMapperFactory.getNamespaceMapper(_context);
|
NamespaceMapper nsMap = NamespaceMapperFactory.getNamespaceMapper(_context);
|
||||||
try {
|
try {
|
||||||
URI uri = new URIImpl(keyAndValue[1]);
|
URI uri = new URIImpl(keyAndValue[1]);
|
||||||
if ( (uri.getNamespace() != null) && (uri.getLocalName() != null) ) {
|
String namespace = uri.getNamespace();
|
||||||
String prefix = nsMap.getPrefixForNamespace(uri.getNamespace());
|
String localName = uri.getLocalName();
|
||||||
String localName = uri.getLocalName();
|
if ( (namespace != null) && (localName != null) ) {
|
||||||
|
String prefix = nsMap.getPrefixForNamespace(namespace);
|
||||||
if (wadf.getDefaultNamespace().
|
if (wadf.getDefaultNamespace().
|
||||||
equals(uri.getNamespace())
|
equals(namespace)
|
||||||
&& prefix == null) {
|
&& prefix == null) {
|
||||||
// make a URI that matches the URI
|
// make a URI that matches the URI
|
||||||
// of the resource to support
|
// of the resource to support
|
||||||
|
@ -164,6 +166,21 @@ public class URLRewritingHttpServletResponse implements HttpServletResponse {
|
||||||
url.pathParts.add(localName);
|
url.pathParts.add(localName);
|
||||||
// remove the ugly uri parameter
|
// remove the ugly uri parameter
|
||||||
indexToRemove = qpIndex;
|
indexToRemove = qpIndex;
|
||||||
|
} else if (isExternallyLinkedNamespace(namespace)) {
|
||||||
|
namespace = removeFinalSlash(namespace);
|
||||||
|
log.debug("Found externally linked namespace " + namespace);
|
||||||
|
// Use the externally linked namespace in the url
|
||||||
|
url.pathParts = new ArrayList<String>();
|
||||||
|
url.pathParts.add(namespace);
|
||||||
|
url.pathParts.add(localName);
|
||||||
|
// remove the ugly uri parameter
|
||||||
|
indexToRemove = qpIndex;
|
||||||
|
// remove protocol, host, and port, since the external namespace
|
||||||
|
// includes these elements
|
||||||
|
url.protocol = null;
|
||||||
|
url.host = null;
|
||||||
|
url.port = null;
|
||||||
|
url.pathBeginsWithSlash = false;
|
||||||
} else if (prefix != null) {
|
} else if (prefix != null) {
|
||||||
// add the pretty path parts
|
// add the pretty path parts
|
||||||
url.pathParts.add(prefix);
|
url.pathParts.add(prefix);
|
||||||
|
@ -450,8 +467,16 @@ public class URLRewritingHttpServletResponse implements HttpServletResponse {
|
||||||
}
|
}
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isExternallyLinkedNamespace(String namespace) {
|
||||||
|
namespace = removeFinalSlash(namespace);
|
||||||
|
List<String> externallyLinkedNamespaces = wadf.getApplicationDao().getExternallyLinkedNamespaces();
|
||||||
|
return externallyLinkedNamespaces.contains(namespace);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String removeFinalSlash(String str) {
|
||||||
|
return str.replaceAll("/$", "");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue