blob: 63f3d1ef7e41924d549652ef1f400e123fa2cb41 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007, 2010 Oracle Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Oracle Corporation - initial API and implementation and/or initial documentation
*******************************************************************************/
package org.eclipse.jst.jsf.common.metadata.tests;
import org.eclipse.jst.jsf.common.metadata.Entity;
import org.eclipse.jst.jsf.common.metadata.Model;
import org.eclipse.jst.jsf.common.metadata.Trait;
import org.eclipse.jst.jsf.common.metadata.internal.TaglibDomainMetaDataModelContextImpl;
import org.eclipse.jst.jsf.common.metadata.query.EmptyResultSet;
import org.eclipse.jst.jsf.common.metadata.query.IEntityQueryVisitor;
import org.eclipse.jst.jsf.common.metadata.query.IResultSet;
import org.eclipse.jst.jsf.common.metadata.query.ITaglibDomainMetaDataModelContext;
import org.eclipse.jst.jsf.common.metadata.query.ITraitQueryVisitor;
import org.eclipse.jst.jsf.common.metadata.query.MetaDataException;
import org.eclipse.jst.jsf.common.metadata.query.TaglibDomainMetaDataQueryHelper;
import org.eclipse.jst.jsf.common.metadata.query.internal.HierarchicalSearchControl;
import org.eclipse.jst.jsf.common.metadata.query.internal.SearchControl;
import org.eclipse.jst.jsf.common.metadata.query.internal.SimpleEntityQueryVisitorImpl;
import org.eclipse.jst.jsf.common.metadata.query.internal.SimpleTraitQueryVisitorImpl;
/**
* Thoroughly excercises the TaglibDomainMetaDataQueryHelper APIs that will end up touching many of the metadata areas in normal circumstances
* where there is only a single standard metadata model for a given URI.
*
*/
@SuppressWarnings("deprecation")
public class MetaDataQueryHelperTests extends AbstractBaseMetaDataTestCase {
protected ITaglibDomainMetaDataModelContext baseContext;
protected ITaglibDomainMetaDataModelContext nullProjectContext;
protected ITaglibDomainMetaDataModelContext negativeContextBadUri;
protected ITaglibDomainMetaDataModelContext negativeContextBadDomain;
public void setUp() throws Exception {
super.setUp();
//setup model contexts
baseContext = new TaglibDomainMetaDataModelContextImpl(domain, project, baseTestUri);
nullProjectContext = new TaglibDomainMetaDataModelContextImpl(domain, null, baseTestUri);
negativeContextBadUri = new TaglibDomainMetaDataModelContextImpl(domain, project, "blah");
negativeContextBadDomain = new TaglibDomainMetaDataModelContextImpl(badDomain, project, baseTestUri);
}
/**
* Test getModel method but also performs basic read unit tests on Model
*/
public void testGetModel() {
//base
//positive test
Model model = TaglibDomainMetaDataQueryHelper.getModel(baseContext);
assertNotNull(baseTestUri+" model should not be null.",model);
//null proj
model = TaglibDomainMetaDataQueryHelper.getModel(nullProjectContext);
assertNotNull(baseTestUri+" model should not be null.",model);
//id
assertNotNull(model.getId());
assertEquals(baseTestUri+" is not same as model.getId()",baseTestUri, model.getId() );
//negative tests
model = TaglibDomainMetaDataQueryHelper.getModel(negativeContextBadUri);
assertNull(model);
model = TaglibDomainMetaDataQueryHelper.getModel(negativeContextBadDomain);
assertNotNull(model);//will use default strategy to load
}
public void testGetEntityIMetaDataModelContextString() {
//positive
Entity entity = TaglibDomainMetaDataQueryHelper.getEntity(baseContext, "loaded");
assertNotNull(entity);
entity = TaglibDomainMetaDataQueryHelper.getEntity(baseContext, "loaded/att3");
assertNotNull(entity);
//negative
entity = TaglibDomainMetaDataQueryHelper.getEntity(baseContext, "doesnotexist");
assertNull(entity);
}
/**
* Return multiple entities
* Partially tests SimpleEntityQueryVisitorImpl searchControl
*/
public void testGetEntitiesIMetaDataModelContextStringIEntityQueryVisitor() {
IEntityQueryVisitor visitor = new SimpleEntityQueryVisitorImpl(new HierarchicalSearchControl(1, HierarchicalSearchControl.SCOPE_ALL_LEVELS));
IResultSet rs = TaglibDomainMetaDataQueryHelper.getEntities(baseContext, "loaded", visitor);
assertNotNull(rs);
Entity entity = null;
try {
assertFalse(rs instanceof EmptyResultSet);
assertEquals(1, rs.getResults().size());
entity = (Entity)rs.getResults().get(0);
assertNotNull(entity);
assertEquals(entity.getId(), "loaded");
rs.close();
} catch (MetaDataException e) {
//MetaDataException not currently being thrown
fail(e.getMessage());
}
//test returning multiple (2)
visitor = new SimpleEntityQueryVisitorImpl(new HierarchicalSearchControl(SearchControl.COUNT_LIMIT_NONE, HierarchicalSearchControl.SCOPE_ALL_LEVELS));
rs = TaglibDomainMetaDataQueryHelper.getEntities(baseContext, "loaded", visitor);
assertNotNull(rs);
try {
assertFalse(rs instanceof EmptyResultSet);
assertEquals(2, rs.getResults().size());
entity = (Entity)rs.getResults().get(0);
assertNotNull(entity);
assertEquals(entity.getId(), "loaded");
Entity secondentity = (Entity)rs.getResults().get(1);
assertNotNull(secondentity);
assertEquals("loaded", secondentity.getId());
assertFalse(secondentity == entity);
rs.close();
} catch (MetaDataException e) {
//MetaDataException not currently being thrown
fail(e.getMessage());
}
}
public void testGetTraitEntityString() {
Entity entity = TaglibDomainMetaDataQueryHelper.getEntity(baseContext, "loaded/att3");
//positive
Trait trait = TaglibDomainMetaDataQueryHelper.getTrait(entity, "A3");
assertNotNull(trait);
//negative
trait = TaglibDomainMetaDataQueryHelper.getTrait(entity, "Z3");
assertNull(trait);
}
/**
* Return multiple traits
* Also tests SimpleEntityQueryVisitorImpl and IResultSet
*/
public void testGetTraits() {
//TEST with 1 count
ITraitQueryVisitor visitor = new SimpleTraitQueryVisitorImpl(new SearchControl(1));
Model model = TaglibDomainMetaDataQueryHelper.getModel(baseContext);
IResultSet rs = TaglibDomainMetaDataQueryHelper.getTraits(model, "model-trait", visitor);
assertNotNull(rs);
Trait trait = null;
try {
assertFalse(rs instanceof EmptyResultSet);
assertEquals(1, rs.getResults().size());
trait = (Trait)rs.getResults().get(0);
assertNotNull(trait);
assertEquals("model-trait", trait.getId());
rs.close();
} catch (MetaDataException e) {
//MetaDataException not currently being thrown
fail(e.getMessage());
}
//test with COUNT_LIMIT_NONE
visitor = new SimpleTraitQueryVisitorImpl(new SearchControl(SearchControl.COUNT_LIMIT_NONE));
rs = TaglibDomainMetaDataQueryHelper.getTraits(model, "model-trait", visitor);
assertNotNull(rs);
try {
assertFalse(rs instanceof EmptyResultSet);
assertEquals(2, rs.getResults().size());
trait = (Trait)rs.getResults().get(0);
assertNotNull(trait);
assertEquals("model-trait", trait.getId());
Trait secondTrait = (Trait)rs.getResults().get(1);
assertNotNull(secondTrait);
assertEquals("model-trait", secondTrait.getId());
assertFalse(trait == secondTrait);
rs.close();
} catch (MetaDataException e) {
//MetaDataException not currently being thrown
fail(e.getMessage());
}
}
public void testGetEntityEntityString() {
Entity entity = TaglibDomainMetaDataQueryHelper.getEntity(baseContext, "loaded");
//positive
entity = TaglibDomainMetaDataQueryHelper.getEntity(entity, "att3");
assertNotNull(entity);
//negative
entity = TaglibDomainMetaDataQueryHelper.getEntity(entity, "zzz");
assertNull(entity);
}
public void testGetEntitiesEntityStringIEntityQueryVisitor() {
//negative test
IResultSet rs = TaglibDomainMetaDataQueryHelper.getEntities(negativeContextBadUri, "foo", new SimpleEntityQueryVisitorImpl());
assertNotNull(rs);
try {
assertEquals(0, rs.getResults().size());
} catch (MetaDataException e) {
fail(e.getMessage());
}
}
public void testGetTraitIMetaDataModelContextStringString() {
//positive
Trait trait = TaglibDomainMetaDataQueryHelper.getTrait(baseContext, "loaded/att3", "A3");
assertNotNull(trait);
//negative
trait = TaglibDomainMetaDataQueryHelper.getTrait(baseContext, "loaded/att3", "zzz");
assertNull(trait);
trait = TaglibDomainMetaDataQueryHelper.getTrait(baseContext, "doesnotexist", "A3");
assertNull(trait);
trait = TaglibDomainMetaDataQueryHelper.getTrait(negativeContextBadDomain, "doesnotexist", "A3");
assertNull(trait);
}
public void testResultSets() {
IResultSet rs = TaglibDomainMetaDataQueryHelper.getEntities(baseContext, "loaded", new SimpleEntityQueryVisitorImpl());
assertNotNull(rs);
try {
assertEquals(2, rs.getResults().size());
assertFalse(rs.isClosed());
rs.close();
assertTrue(rs.isClosed());
} catch (MetaDataException e1) {
fail(e1.getMessage());
}
try {
rs.getResults();
fail("Expected MetaDataException ");
} catch (MetaDataException e2) {
//pass
}
}
public void testGetEntityBeyondMDDepth() {
Entity entity = TaglibDomainMetaDataQueryHelper.getEntity(baseContext, "loaded/does_not_exist/nor_this");
assertNull(entity);
}
public void testGetEntityBadEntityKey() {
Entity entity = TaglibDomainMetaDataQueryHelper.getEntity(baseContext, "");
assertNull(entity);
entity = TaglibDomainMetaDataQueryHelper.getEntity(baseContext, null);
assertNull(entity);
entity = TaglibDomainMetaDataQueryHelper.getEntity(baseContext, "/");
assertNull(entity);
}
public void testNullProject() {
Model model = TaglibDomainMetaDataQueryHelper.getModel(nullProjectContext);
assertNotNull(model);
Model model1 = TaglibDomainMetaDataQueryHelper.getModel(nullProjectContext);
assertEquals(model, model1);
}
}