Continue to reduce the Model Madness!

Add OntModelCache to the top of the stack of RDF data structures.
Add DataStructuresProvider to the bottom of the stack.
Redesign ModelAccess method signatures.
Create the ShowSources page.
Remove RequestModelsPrep, except for setting the Collator.
Reduce the complexity of ContentModelsSetup and ConfigurationModelsSetup.

VIVO-225 VIVO-819 VIVO-820 VIVO-821 VIVO-823 VIVO-832
This commit is contained in:
Jim Blake 2014-10-10 10:07:56 -04:00
parent c9362db3c1
commit 78c8f102f8
171 changed files with 4196 additions and 2826 deletions

View file

@ -14,6 +14,7 @@ import org.junit.Test;
import stubs.edu.cornell.mannlib.vitro.webapp.dao.UserAccountsDaoStub;
import stubs.edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactoryStub;
import stubs.edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccessFactoryStub;
import stubs.javax.servlet.ServletContextStub;
import stubs.javax.servlet.http.HttpServletRequestStub;
import stubs.javax.servlet.http.HttpSessionStub;
@ -29,7 +30,6 @@ import edu.cornell.mannlib.vitro.webapp.auth.permissions.PermissionRegistry;
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.RequestedAction;
import edu.cornell.mannlib.vitro.webapp.beans.PermissionSet;
import edu.cornell.mannlib.vitro.webapp.beans.UserAccount;
import edu.cornell.mannlib.vitro.webapp.dao.ModelAccess;
/**
* Can we tell whether a user is logged in as root?
@ -80,7 +80,7 @@ public class HasPermissionFactoryTest extends AbstractTestClass {
wdf.setUserAccountsDao(uaDao);
ctx = new ServletContextStub();
ModelAccess.on(ctx).setWebappDaoFactory(wdf);
new ModelAccessFactoryStub().get(ctx).setWebappDaoFactory(wdf);
session = new HttpSessionStub();
session.setServletContext(ctx);

View file

@ -9,6 +9,7 @@ import org.junit.Test;
import stubs.edu.cornell.mannlib.vitro.webapp.dao.UserAccountsDaoStub;
import stubs.edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactoryStub;
import stubs.edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccessFactoryStub;
import stubs.javax.servlet.ServletContextStub;
import stubs.javax.servlet.http.HttpServletRequestStub;
import stubs.javax.servlet.http.HttpSessionStub;
@ -19,7 +20,6 @@ import edu.cornell.mannlib.vitro.webapp.auth.identifier.ArrayIdentifierBundle;
import edu.cornell.mannlib.vitro.webapp.auth.identifier.IdentifierBundle;
import edu.cornell.mannlib.vitro.webapp.auth.identifier.common.IsRootUser;
import edu.cornell.mannlib.vitro.webapp.beans.UserAccount;
import edu.cornell.mannlib.vitro.webapp.dao.ModelAccess;
/**
* Can we tell whether a user is logged in as root?
@ -57,7 +57,7 @@ public class IsRootUserFactoryTest extends AbstractTestClass {
wdf.setUserAccountsDao(uaDao);
ctx = new ServletContextStub();
ModelAccess.on(ctx).setWebappDaoFactory(wdf);
new ModelAccessFactoryStub().get(ctx).setWebappDaoFactory(wdf);
session = new HttpSessionStub();
session.setServletContext(ctx);

View file

@ -9,6 +9,7 @@ import org.junit.Test;
import stubs.edu.cornell.mannlib.vitro.webapp.dao.UserAccountsDaoStub;
import stubs.edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactoryStub;
import stubs.edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccessFactoryStub;
import stubs.javax.servlet.ServletContextStub;
import stubs.javax.servlet.http.HttpServletRequestStub;
import stubs.javax.servlet.http.HttpSessionStub;
@ -19,7 +20,6 @@ import edu.cornell.mannlib.vitro.webapp.auth.identifier.ArrayIdentifierBundle;
import edu.cornell.mannlib.vitro.webapp.auth.identifier.IdentifierBundle;
import edu.cornell.mannlib.vitro.webapp.auth.identifier.common.IsUser;
import edu.cornell.mannlib.vitro.webapp.beans.UserAccount;
import edu.cornell.mannlib.vitro.webapp.dao.ModelAccess;
/**
* The simplest of the IdentifierBundleFactory classes.
@ -42,12 +42,12 @@ public class IsUserFactoryTest extends AbstractTestClass {
@Before
public void setup() {
uaDao = new UserAccountsDaoStub();
wdf = new WebappDaoFactoryStub();
wdf.setUserAccountsDao(uaDao);
ctx = new ServletContextStub();
ModelAccess.on(ctx).setWebappDaoFactory(wdf);
new ModelAccessFactoryStub().get(ctx).setWebappDaoFactory(wdf);
session = new HttpSessionStub();
session.setServletContext(ctx);
@ -70,7 +70,7 @@ public class IsUserFactoryTest extends AbstractTestClass {
LoginStatusBean lsb = new LoginStatusBean(USER_URI,
AuthenticationSource.EXTERNAL);
LoginStatusBean.setBean(session, lsb);
UserAccount user = new UserAccount();
user.setUri(USER_URI);
uaDao.addUser(user);

View file

@ -27,6 +27,7 @@ import stubs.edu.cornell.mannlib.vitro.webapp.dao.IndividualDaoStub;
import stubs.edu.cornell.mannlib.vitro.webapp.dao.UserAccountsDaoStub;
import stubs.edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactoryStub;
import stubs.edu.cornell.mannlib.vitro.webapp.i18n.I18nStub;
import stubs.edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccessFactoryStub;
import stubs.javax.servlet.ServletConfigStub;
import stubs.javax.servlet.ServletContextStub;
import stubs.javax.servlet.http.HttpServletRequestStub;
@ -48,7 +49,6 @@ import edu.cornell.mannlib.vitro.webapp.controller.authenticate.Authenticator;
import edu.cornell.mannlib.vitro.webapp.controller.authenticate.AuthenticatorStub;
import edu.cornell.mannlib.vitro.webapp.controller.login.LoginProcessBean;
import edu.cornell.mannlib.vitro.webapp.controller.login.LoginProcessBean.State;
import edu.cornell.mannlib.vitro.webapp.dao.ModelAccess;
/**
*/
@ -132,11 +132,15 @@ public class AuthenticateTest extends AbstractTestClass {
authenticator.setAssociatedUri(OLD_SELF.username,
"old_self_associated_uri");
servletContext = new ServletContextStub();
servletContext.setAttribute(AuthenticatorStub.FACTORY_ATTRIBUTE_NAME,
authenticatorFactory);
PermissionSet adminPermissionSet = new PermissionSet();
adminPermissionSet.setUri(URI_DBA);
adminPermissionSet.setPermissionUris(Collections
.singleton(SimplePermission.SEE_SITE_ADMIN_PAGE.getUri()));
userAccountsDao = new UserAccountsDaoStub();
userAccountsDao.addPermissionSet(adminPermissionSet);
userAccountsDao.addUser(createUserFromUserInfo(NEW_DBA));
@ -150,10 +154,8 @@ public class AuthenticateTest extends AbstractTestClass {
webappDaoFactory.setUserAccountsDao(userAccountsDao);
webappDaoFactory.setIndividualDao(individualDao);
servletContext = new ServletContextStub();
ModelAccess.on(servletContext).setWebappDaoFactory(webappDaoFactory);
servletContext.setAttribute(AuthenticatorStub.FACTORY_ATTRIBUTE_NAME,
authenticatorFactory);
ModelAccessFactoryStub mafs = new ModelAccessFactoryStub();
mafs.get(servletContext).setWebappDaoFactory(webappDaoFactory);
setLoggerLevel(ServletPolicyList.class, Level.WARN);
ServletPolicyList.addPolicy(servletContext, new PermissionsPolicy());

View file

@ -5,6 +5,7 @@ package edu.cornell.mannlib.vitro.webapp.controller.individual;
import static com.hp.hpl.jena.ontology.OntModelSpec.OWL_MEM;
import static edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary.LABEL;
import static edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary.RDF_TYPE;
import static edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccess.LanguageOption.LANGUAGE_NEUTRAL;
import static org.junit.Assert.fail;
import java.io.IOException;
@ -22,6 +23,7 @@ import org.apache.log4j.Level;
import org.junit.Before;
import org.junit.Test;
import stubs.edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccessFactoryStub;
import stubs.javax.servlet.ServletContextStub;
import stubs.javax.servlet.http.HttpServletRequestStub;
import stubs.javax.servlet.http.HttpSessionStub;
@ -45,8 +47,8 @@ import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.RequestedAction;
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.publish.PublishDataPropertyStatement;
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.publish.PublishObjectPropertyStatement;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
import edu.cornell.mannlib.vitro.webapp.dao.ModelAccess;
import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
import edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccess;
import edu.cornell.mannlib.vitro.webapp.rdfservice.impl.jena.model.RDFServiceModel;
import edu.cornell.mannlib.vitro.webapp.web.ContentType;
@ -349,8 +351,7 @@ public class IndividualRdfAssemblerTest extends AbstractTestClass {
private void setupIndividualRdfAssembler() {
rdfService = new RDFServiceModel(rawRdf);
req.setAttribute("rdfService", rdfService);
req.setAttribute("unfilteredRDFService", rdfService);
new ModelAccessFactoryStub().get(req).setRDFService(rdfService, LANGUAGE_NEUTRAL);
vreq = new VitroRequest(req);
ira = new IndividualRdfAssembler(vreq, INDIVIDUAL_URI, ContentType.N3);
}

View file

@ -20,6 +20,7 @@ import org.junit.Test;
import stubs.edu.cornell.mannlib.vitro.webapp.dao.VClassDaoStub;
import stubs.edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactoryStub;
import stubs.edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccessFactoryStub;
import stubs.edu.cornell.mannlib.vitro.webapp.modules.ApplicationStub;
import stubs.edu.cornell.mannlib.vitro.webapp.modules.searchEngine.SearchEngineStub;
import stubs.javax.servlet.ServletConfigStub;
@ -29,7 +30,7 @@ import stubs.javax.servlet.http.HttpServletResponseStub;
import stubs.javax.servlet.http.HttpSessionStub;
import edu.cornell.mannlib.vitro.testing.AbstractTestClass;
import edu.cornell.mannlib.vitro.webapp.beans.VClass;
import edu.cornell.mannlib.vitro.webapp.dao.ModelAccess;
import edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccess;
/**
* TODO
@ -107,7 +108,7 @@ public class JsonServletTest extends AbstractTestClass {
resp = new HttpServletResponseStub();
wadf = new WebappDaoFactoryStub();
ModelAccess.on(ctx).setWebappDaoFactory(wadf);
new ModelAccessFactoryStub().get(req).setWebappDaoFactory(wadf);
vcDao = new VClassDaoStub();
wadf.setVClassDao(vcDao);
@ -185,9 +186,9 @@ public class JsonServletTest extends AbstractTestClass {
/**
* TODO test successful responses. This will require figuring out how to
* stub SearchEngine. Since we are no longer dealing with an abstract class
* (like SolrServer), so we just need to figure out
* what sort of NamedList is required as a response to a request.
* stub SearchEngine. Since we are no longer dealing with an abstract class
* (like SolrServer), so we just need to figure out what sort of NamedList
* is required as a response to a request.
*/
@Test
public void individualsByClassNoIndividuals() throws ServletException,
@ -230,8 +231,10 @@ public class JsonServletTest extends AbstractTestClass {
assertEquals("count", count, getFieldValue(actual, "totalCount"));
JSONObject vclassObj = (JSONObject) getFieldValue(actual, "vclass");
assertEquals("vclass name", vclassId.split("://")[1], getFieldValue(vclassObj, "name"));
assertEquals("vclass uri", vclassId, getFieldValue(vclassObj, "URI"));
assertEquals("vclass name", vclassId.split("://")[1],
getFieldValue(vclassObj, "name"));
assertEquals("vclass uri", vclassId,
getFieldValue(vclassObj, "URI"));
assertEquals("status", SC_OK, resp.getStatus());
} catch (JSONException e) {

View file

@ -28,7 +28,8 @@ import com.hp.hpl.jena.shared.DoesNotExistException;
import edu.cornell.mannlib.vitro.testing.AbstractTestClass;
/**
* TODO
* Test the functions of a ListCachingModelMaker. Does it properly register the
* presence of a model with no triples?
*/
public class ListCachingModelMakerTest extends AbstractTestClass {
private static final String URI_ONE = "http://model.one";

View file

@ -31,7 +31,8 @@ import com.hp.hpl.jena.rdf.model.Statement;
import edu.cornell.mannlib.vitro.testing.AbstractTestClass;
/**
* TODO
* Checks the function of a MemoryMappingModelMaker, testing the difference in
* behavior between an mapped model and an unmapped model.
*/
public class MemoryMappingModelMakerTest extends AbstractTestClass {
private static final String URI_MAPPED = "http://memory.mapped.model";

View file

@ -1,259 +0,0 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
package edu.cornell.mannlib.vitro.webapp.modelaccess.adapters;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import stubs.com.hp.hpl.jena.rdf.model.ModelMaker.ModelMakerStub;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.ModelMaker;
import com.hp.hpl.jena.shared.AlreadyExistsException;
import com.hp.hpl.jena.shared.CannotCreateException;
import com.hp.hpl.jena.shared.DoesNotExistException;
import edu.cornell.mannlib.vitro.testing.AbstractTestClass;
import edu.cornell.mannlib.vitro.webapp.modelaccess.adapters.UnionModelsModelMaker.UnionSpec;
/**
* Test the functionality of the UnionModelsModelMaker.
*/
public class UnionModelsModelMakerTest extends AbstractTestClass {
private static final String URI_ONE = "http://model.one";
private static final String URI_TWO = "http://model.two";
private static final String URI_THREE = "http://model.three";
private static final String URI_UNION = "http://model.union";
private static final String URI_NONE = "http://model.does.not.exist";
private static final Model MODEL_ONE = createModel();
private static final Model MODEL_TWO = createModel();
private static final Model MODEL_THREE = createModel();
private static final Model MODEL_DEFAULT = createModel();
private static final Model MODEL_FRESH = createModel();
private static Model createModel() {
return ModelFactory.createDefaultModel();
}
private ModelMaker inner;
private ModelMaker mm;
@Before
public void setup() {
/*
* Use a rigorous inner model maker, but it doesn't make much difference.
*/
inner = ModelMakerStub.rigorous(MODEL_DEFAULT, MODEL_FRESH)
.put(URI_ONE, MODEL_ONE).put(URI_TWO, MODEL_TWO)
.put(URI_THREE, MODEL_THREE);
mm = new UnionModelsModelMaker(inner, UnionSpec.base(URI_ONE)
.plus(URI_TWO).yields(URI_UNION));
}
@SuppressWarnings("unused")
@Test(expected = NullPointerException.class)
public void nullInnerModel() {
new UnionModelsModelMaker(null, UnionSpec.base(URI_ONE).plus(URI_TWO)
.yields(URI_UNION));
}
@SuppressWarnings("unused")
@Test(expected = IllegalArgumentException.class)
public void duplicateUnionUri() {
new UnionModelsModelMaker(inner, UnionSpec.base(URI_ONE).plus(URI_TWO)
.yields(URI_UNION), UnionSpec.base(URI_ONE).plus(URI_THREE)
.yields(URI_UNION));
}
@SuppressWarnings("unused")
@Test(expected = IllegalArgumentException.class)
public void nestedUnions() {
new UnionModelsModelMaker(inner, UnionSpec.base(URI_ONE).plus(URI_TWO)
.yields(URI_UNION), UnionSpec.base(URI_UNION).plus(URI_THREE)
.yields("http://nestedUnion"));
}
@Test
public void hasModelActual() {
assertTrue(mm.hasModel(URI_ONE));
}
@Test
public void hasModelNone() {
assertFalse(mm.hasModel(URI_NONE));
}
@Test
public void hasModelUnion() {
assertTrue(mm.hasModel(URI_UNION));
}
@Test
public void listModels() {
assertExpectedModelsList(URI_ONE, URI_TWO, URI_THREE, URI_UNION);
}
@Test
public void createModelActual() {
assertEquals(MODEL_ONE, mm.createModel(URI_ONE));
}
@Test
public void createModelNone() {
assertEquals(MODEL_FRESH, mm.createModel(URI_NONE));
}
@Test
public void createModelUnion() {
assertTrue(isUnionModel(mm.createModel(URI_UNION)));
}
@Test(expected = AlreadyExistsException.class)
public void createModelActualStrict() {
mm.createModel(URI_ONE, true);
}
@Test
public void createModelNoneStrict() {
assertEquals(MODEL_FRESH, mm.createModel(URI_NONE, true));
}
@Test(expected = AlreadyExistsException.class)
public void createModelUnionStrict() {
mm.createModel(URI_UNION, true);
}
@Test
public void openModelActual() {
assertEquals(MODEL_ONE, mm.openModel(URI_ONE));
}
@Test(expected = DoesNotExistException.class)
public void openModelNone() {
mm.openModel(URI_NONE);
}
@Test
public void openModelUnion() {
assertTrue(isUnionModel(mm.openModel(URI_UNION)));
}
@Test
public void openModelActualStrict() {
assertEquals(MODEL_ONE, mm.openModel(URI_ONE, true));
}
@Test(expected = DoesNotExistException.class)
public void openModelNoneStrict() {
mm.openModel(URI_NONE, true);
}
@Test
public void openModelUnionStrict() {
assertTrue(isUnionModel(mm.openModel(URI_UNION, true)));
}
@Test
public void openModelIfPresentActual() {
assertEquals(MODEL_ONE, mm.openModelIfPresent(URI_ONE));
}
@Test
public void openModelIfPresentNone() {
assertNull(mm.openModelIfPresent(URI_NONE));
}
@Test
public void openModelIfPresentUnion() {
assertTrue(isUnionModel(mm.openModelIfPresent(URI_UNION)));
}
@Test
public void removeModelActual() {
mm.removeModel(URI_ONE);
assertExpectedModelsList(URI_TWO, URI_THREE, URI_UNION);
}
@Test(expected = DoesNotExistException.class)
public void removeModelNone() {
mm.removeModel(URI_NONE);
}
@Test
public void removeModelUnion() {
mm.removeModel(URI_UNION);
assertExpectedModelsList(URI_ONE, URI_TWO, URI_THREE);
}
@Test
public void getModelActual() {
assertEquals(MODEL_ONE, mm.getModel(URI_ONE));
}
@Test
public void getModelNone() {
assertEquals(null, mm.getModel(URI_NONE));
}
@Test
public void getModelUnion() {
assertTrue(isUnionModel(mm.getModel(URI_UNION)));
}
@Test
public void getModelLoadIfAbsentActual() {
assertEquals(MODEL_ONE, mm.getModel(URI_ONE, null));
}
@Test(expected = CannotCreateException.class)
public void getModelLoadIfAbsentNone() {
mm.getModel(URI_NONE, null);
}
@Test
public void getModelLoadIfAbsentUnion() {
assertTrue(isUnionModel(mm.getModel(URI_UNION, null)));
}
// ----------------------------------------------------------------------
// Helper methods
// ----------------------------------------------------------------------
/**
* No easy way to assert that this is actually the union model, but we can
* assert that it is not null, and not any model we know of.
*/
private boolean isUnionModel(Model m) {
Model[] knownModels = { MODEL_ONE, MODEL_TWO, MODEL_THREE,
MODEL_DEFAULT, MODEL_FRESH };
if (m == null) {
return false;
}
for (Model knownModel : knownModels) {
if (m == knownModel) {
return false;
}
}
return true;
}
private void assertExpectedModelsList(String... uris) {
Set<String> expected = new HashSet<>(Arrays.asList(uris));
assertEquals(expected, mm.listModels().toSet());
}
}

View file

@ -2,6 +2,8 @@
package edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual;
import static edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccess.ReasoningOption.ASSERTIONS_AND_INFERENCES;
import static edu.cornell.mannlib.vitro.webapp.modelaccess.ModelNames.FULL_UNION;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
@ -27,6 +29,7 @@ import org.junit.rules.ExpectedException;
import stubs.edu.cornell.mannlib.vitro.webapp.dao.ObjectPropertyDaoStub;
import stubs.edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactoryStub;
import stubs.edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccessFactoryStub;
import stubs.freemarker.cache.TemplateLoaderStub;
import stubs.javax.servlet.ServletContextStub;
import stubs.javax.servlet.http.HttpServletRequestStub;
@ -41,9 +44,7 @@ import edu.cornell.mannlib.vitro.webapp.beans.Individual;
import edu.cornell.mannlib.vitro.webapp.beans.IndividualImpl;
import edu.cornell.mannlib.vitro.webapp.beans.ObjectProperty;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
import edu.cornell.mannlib.vitro.webapp.dao.ModelAccess;
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
import edu.cornell.mannlib.vitro.webapp.modelaccess.ModelNames;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.customlistview.InvalidConfigurationException;
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.customlistview.PropertyListConfig;
import freemarker.cache.TemplateLoader;
@ -70,6 +71,8 @@ public class ObjectPropertyTemplateModel_PropertyListConfigTest extends
private TemplateLoaderStub tl;
private StringWriter logMessages;
private ModelAccessFactoryStub mafs;
/**
* In general, we expect no exception, but individual tests may override,
@ -130,7 +133,9 @@ public class ObjectPropertyTemplateModel_PropertyListConfigTest extends
hreq.setSession(session);
vreq = new VitroRequest(hreq);
ModelAccess.on(vreq).setWebappDaoFactory(wadf);
mafs = new ModelAccessFactoryStub();
mafs.get(vreq).setWebappDaoFactory(wadf, ASSERTIONS_AND_INFERENCES);
subject = new IndividualImpl();
@ -280,7 +285,7 @@ public class ObjectPropertyTemplateModel_PropertyListConfigTest extends
@Test
public void constructQueryNodeMissing()
throws InvalidConfigurationException {
ModelAccess.on(vreq).setOntModel(ModelNames.FULL_UNION, emptyOntModel());
mafs.get(vreq).setOntModel(emptyOntModel(), FULL_UNION);
op = buildOperation("constructQueryMissing");
optm = new NonCollatingOPTM(op, subject, vreq, true);
// Not an error.
@ -289,7 +294,7 @@ public class ObjectPropertyTemplateModel_PropertyListConfigTest extends
@Test
public void constructQueryMultipleValues()
throws InvalidConfigurationException {
ModelAccess.on(vreq).setOntModel(ModelNames.FULL_UNION, emptyOntModel());
mafs.get(vreq).setOntModel(emptyOntModel(), FULL_UNION);
op = buildOperation("constructQueryMultiple");
optm = new NonCollatingOPTM(op, subject, vreq, true);
assertConstructQueries("multiple construct queries", "ONE", "TWO",