diff --git a/doc/list_view_configuration_guidelines.txt b/doc/list_view_configuration_guidelines.txt
index 596492fea..13af619b8 100644
--- a/doc/list_view_configuration_guidelines.txt
+++ b/doc/list_view_configuration_guidelines.txt
@@ -114,3 +114,5 @@ THE TEMPLATE
The query must have been constructed to return orgName (see above under "General query requirements"), or
alternatively the template can use the localname function: ${localname(org)}.
+- If a variable is in an OPTIONAL clause in the query, the display of the value in the template should
+include the default value operator ! to prevent an error on null values.
diff --git a/webapp/config/web.xml b/webapp/config/web.xml
index a4fded0fa..fd737ade9 100644
--- a/webapp/config/web.xml
+++ b/webapp/config/web.xml
@@ -1280,20 +1280,46 @@
entity
+ /entityold
+
+
+ entity
+ /entityold/*
+
+
+ entity
+ /individualold/*
+
+
+ entity
+ /displayold/*
+
+
+
+ individual
/entity
- entity
+ individual
/entity/*
+
+
+ individual
+ /individual
- entity
+ individual
/individual/*
+
+ individual
+ /display
+
- entity
+ individual
/display/*
-
+
+
updateEntityFlags
/updateEntityFlags
diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/EntityController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/EntityController.java
index 9eeea9dc3..95875f9a6 100644
--- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/EntityController.java
+++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/EntityController.java
@@ -287,8 +287,8 @@ public class EntityController extends VitroHttpServlet {
res.setStatus(res.SC_SEE_OTHER);
}
- private static Pattern LINKED_DATA_URL = Pattern.compile("^/individual/([^/]*)$");
- private static Pattern NS_PREFIX_URL = Pattern.compile("^/individual/([^/]*)/([^/]*)$");
+ private static Pattern LINKED_DATA_URL = Pattern.compile("^/individualold/([^/]*)$");
+ private static Pattern NS_PREFIX_URL = Pattern.compile("^/individualold/([^/]*)/([^/]*)$");
/**
Gets the entity id from the request.
@@ -402,7 +402,7 @@ public class EntityController extends VitroHttpServlet {
}
- private static Pattern URI_PATTERN = Pattern.compile("^/individual/([^/]*)$");
+ private static Pattern URI_PATTERN = Pattern.compile("^/individualold/([^/]*)$");
//Redirect if the request is for http://hostname/individual/localname
// if accept is nothing or text/html redirect to ???
// if accept is some RDF thing redirect to the URL for RDF
@@ -411,7 +411,7 @@ public class EntityController extends VitroHttpServlet {
if( m.matches() && m.groupCount() == 1 ){
ContentType c = checkForLinkedDataRequest(url, acceptHeader);
if( c != null ){
- String redirectUrl = "/individual/" + m.group(1) + "/" + m.group(1) ;
+ String redirectUrl = "/individualold/" + m.group(1) + "/" + m.group(1) ;
if( RDFXML_MIMETYPE.equals( c.getMediaType()) ){
return redirectUrl + ".rdf";
}else if( N3_MIMETYPE.equals( c.getMediaType() )){
@@ -427,10 +427,10 @@ public class EntityController extends VitroHttpServlet {
}
}
- private static Pattern RDF_REQUEST = Pattern.compile("^/individual/([^/]*)/\\1.rdf$");
- private static Pattern N3_REQUEST = Pattern.compile("^/individual/([^/]*)/\\1.n3$");
- private static Pattern TTL_REQUEST = Pattern.compile("^/individual/([^/]*)/\\1.ttl$");
- private static Pattern HTML_REQUEST = Pattern.compile("^/display/([^/]*)$");
+ private static Pattern RDF_REQUEST = Pattern.compile("^/individualold/([^/]*)/\\1.rdf$");
+ private static Pattern N3_REQUEST = Pattern.compile("^/individualold/([^/]*)/\\1.n3$");
+ private static Pattern TTL_REQUEST = Pattern.compile("^/individualold/([^/]*)/\\1.ttl$");
+ private static Pattern HTML_REQUEST = Pattern.compile("^/displayold/([^/]*)$");
/**
* @return null if this is not a linked data request, returns content type if it is a
diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualController.java
index 5944e02ab..92729eb88 100644
--- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualController.java
+++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualController.java
@@ -267,9 +267,8 @@ public class IndividualController extends FreemarkerHttpServlet {
return new RdfResponseValues(rdfFormat, newModel);
}
- // RY **** Remove "fm" from the patterns when switching web.xml to this controller.
- private static Pattern LINKED_DATA_URL = Pattern.compile("^/individualfm/([^/]*)$");
- private static Pattern NS_PREFIX_URL = Pattern.compile("^/individualfm/([^/]*)/([^/]*)$");
+ private static Pattern LINKED_DATA_URL = Pattern.compile("^/individual/([^/]*)$");
+ private static Pattern NS_PREFIX_URL = Pattern.compile("^/individual/([^/]*)/([^/]*)$");
/**
Gets the entity id from the request.
@@ -383,7 +382,7 @@ public class IndividualController extends FreemarkerHttpServlet {
}
- private static Pattern URI_PATTERN = Pattern.compile("^/individualfm/([^/]*)$");
+ private static Pattern URI_PATTERN = Pattern.compile("^/individual/([^/]*)$");
//Redirect if the request is for http://hostname/individual/localname
// if accept is nothing or text/html redirect to ???
// if accept is some RDF thing redirect to the URL for RDF
@@ -402,16 +401,16 @@ public class IndividualController extends FreemarkerHttpServlet {
}//else send them to html
}
//else redirect to HTML representation
- return UrlBuilder.getUrl("displayfm/" + m.group(1));
+ return UrlBuilder.getUrl("display/" + m.group(1));
}else{
return null;
}
}
- private static Pattern RDF_REQUEST = Pattern.compile("^/individualfm/([^/]*)/\\1.rdf$");
- private static Pattern N3_REQUEST = Pattern.compile("^/individualfm/([^/]*)/\\1.n3$");
- private static Pattern TTL_REQUEST = Pattern.compile("^/individualfm/([^/]*)/\\1.ttl$");
- private static Pattern HTML_REQUEST = Pattern.compile("^/displayfm/([^/]*)$");
+ private static Pattern RDF_REQUEST = Pattern.compile("^/individual/([^/]*)/\\1.rdf$");
+ private static Pattern N3_REQUEST = Pattern.compile("^/individual/([^/]*)/\\1.n3$");
+ private static Pattern TTL_REQUEST = Pattern.compile("^/individual/([^/]*)/\\1.ttl$");
+ private static Pattern HTML_REQUEST = Pattern.compile("^/display/([^/]*)$");
/**
* @return null if this is not a linked data request, returns content type if it is a