diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/VitroRequest.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/VitroRequest.java index a76a9c717..581f0b29e 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/VitroRequest.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/VitroRequest.java @@ -58,6 +58,18 @@ public class VitroRequest extends HttpServletRequestWrapper { return (WebappDaoFactory) getAttribute("webappDaoFactory"); } + public void setUnfilteredWebappDaoFactory(WebappDaoFactory wdf) { + setAttribute("unfilteredWebappDaoFactory", wdf); + } + + /** Gets a WebappDaoFactory with request-specific dataset but no filtering. + * Use this for any servlets that need to bypass filtering. + * @return + */ + public WebappDaoFactory getUnfilteredWebappDaoFactory() { + return (WebappDaoFactory) getAttribute("unfilteredWebappDaoFactory"); + } + public void setFullWebappDaoFactory(WebappDaoFactory wdf) { setAttribute("fullWebappDaoFactory", wdf); } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/filters/VitroRequestPrep.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/filters/VitroRequestPrep.java index 45fea6574..a191dd400 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/filters/VitroRequestPrep.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/filters/VitroRequestPrep.java @@ -47,7 +47,9 @@ import edu.cornell.mannlib.vitro.webapp.dao.filtering.WebappDaoFactoryFiltering; import edu.cornell.mannlib.vitro.webapp.dao.filtering.filters.FilterFactory; import edu.cornell.mannlib.vitro.webapp.dao.filtering.filters.HideFromDisplayByPolicyFilter; import edu.cornell.mannlib.vitro.webapp.dao.filtering.filters.VitroFilters; +import edu.cornell.mannlib.vitro.webapp.dao.jena.ModelContext; import edu.cornell.mannlib.vitro.webapp.dao.jena.WebappDaoFactoryJena; +import edu.cornell.mannlib.vitro.webapp.dao.jena.WebappDaoFactorySDB; import edu.cornell.mannlib.vitro.webapp.servlet.setup.JenaDataSourceSetupBase; /** @@ -165,6 +167,11 @@ public class VitroRequestPrep implements Filter { vreq.setDataset(dataset); } + vreq.setUnfilteredWebappDaoFactory(new WebappDaoFactorySDB( + ModelContext.getUnionOntModelSelector( + vreq.getSession().getServletContext()), + vreq.getDataset())); + req.setAttribute("VitroRequestPrep.setup", new Integer(1)); chain.doFilter(req, response); } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/BaseIndividualTemplateModel.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/BaseIndividualTemplateModel.java index 5da698329..5db8cc503 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/BaseIndividualTemplateModel.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/BaseIndividualTemplateModel.java @@ -172,7 +172,7 @@ public abstract class BaseIndividualTemplateModel extends BaseTemplateModel { if (! StringUtils.isBlank(idMatchingProperty)) { // Use assertions model to side-step filtering. We need to get the value regardless of whether the property // is visible to the current user. - WebappDaoFactory wdf = vreq.getAssertionsWebappDaoFactory(); + WebappDaoFactory wdf = vreq.getUnfilteredWebappDaoFactory(); Collection ids = wdf.getDataPropertyStatementDao().getDataPropertyStatementsForIndividualByDataPropertyURI(individual, idMatchingProperty); if (ids.size() > 0) { diff --git a/webapp/web/edit/editDatapropStmtRequestDispatch.jsp b/webapp/web/edit/editDatapropStmtRequestDispatch.jsp index 4d720341c..432e0372e 100644 --- a/webapp/web/edit/editDatapropStmtRequestDispatch.jsp +++ b/webapp/web/edit/editDatapropStmtRequestDispatch.jsp @@ -89,7 +89,7 @@ } vreq.setAttribute("subject", subject); - WebappDaoFactory unfilteredWdf = vreq.getAssertionsWebappDaoFactory(); + WebappDaoFactory unfilteredWdf = vreq.getUnfilteredWebappDaoFactory(); DataProperty dataproperty = unfilteredWdf.getDataPropertyDao().getDataPropertyByURI( predicateUri ); if( dataproperty == null) { // No dataproperty will be returned for rdfs:label, but we shouldn't throw an error.