/******************************************************************************* * Copyright (c) 2004, 2006 * Thomas Hallgren, Kenneth Olwing, Mitch Sonies * Pontus Rydin, Nils Unden, Peer Torngren * The code, documentation and other materials contained herein have been * licensed under the Eclipse Public License - v 1.0 by the individual * copyright holders listed above, as Initial Contributors under such license. * The text of such license is available at www.eclipse.org. *******************************************************************************/ package org.eclipse.buckminster.core.test.rmap; import java.io.File; import java.net.URL; import java.util.regex.Pattern; import org.eclipse.buckminster.core.CorePlugin; import org.eclipse.buckminster.core.cspec.model.ComponentRequest; import org.eclipse.buckminster.core.parser.IParser; import org.eclipse.buckminster.core.query.builder.AdvisorNodeBuilder; import org.eclipse.buckminster.core.query.builder.ComponentQueryBuilder; import org.eclipse.buckminster.core.query.model.ComponentQuery; import org.eclipse.buckminster.core.resolver.MainResolver; import org.eclipse.buckminster.core.resolver.ResolutionContext; import org.eclipse.buckminster.core.rmap.model.ResourceMap; import org.eclipse.buckminster.core.test.AbstractTestCase; import org.eclipse.buckminster.sax.Utils; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProjectDescription; import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; /** * @author Thomas Hallgren */ public class RMapTest extends AbstractTestCase { public void testLocal() throws Exception { ComponentQueryBuilder queryBld = new ComponentQueryBuilder(); queryBld.setRootRequest(new ComponentRequest("buckminster.test.build_a", null, null)); //$NON-NLS-1$ URL rmapURL = getClass().getResource("/testData/rmaps/local_main.rmap"); //$NON-NLS-1$ queryBld.setResourceMapURL(rmapURL.toString()); ComponentQuery query = queryBld.createComponentQuery(); ResolutionContext ctx = new ResolutionContext(query); MainResolver resolver = new MainResolver(ctx); resolver.resolve(new NullProgressMonitor()); } public void testRMAPSerialization() throws Exception { CorePlugin plugin = CorePlugin.getDefault(); IParser<ResourceMap> rmapParser = plugin.getParserFactory().getResourceMapParser(true); ResourceMap rmap = rmapParser.parse("test.rmap", this.getClass().getResourceAsStream("/testData/rmaps/local_main.rmap")); //$NON-NLS-1$ //$NON-NLS-2$ rmapParser.parse("generated.rmap", Utils.getInputStream(rmap)); //$NON-NLS-1$ } public void testRMAPWithWorkspaceExpansion() throws Exception { URL dotProjectResource = getClass().getResource("/testData/projects/buckminster.test.build_a/.project"); // $NON-NLS assertNotNull("No resource found for .project file", dotProjectResource); dotProjectResource = FileLocator.toFileURL(dotProjectResource); assertNotNull("Unable to resolve .project resource into a file", dotProjectResource); File dotProjectFile = new File(dotProjectResource.toURI()); IWorkspace workspace = ResourcesPlugin.getWorkspace(); IProject project = workspace.getRoot().getProject("buckminster.test.build_a"); if (!project.isOpen()) { IProgressMonitor monitor = new NullProgressMonitor(); if (!project.exists()) { IProjectDescription projectDesc = workspace.loadProjectDescription(Path.fromOSString(dotProjectFile.getAbsolutePath())); project.create(projectDesc, monitor); } project.open(monitor); } assertTrue("No open project was found after materialization", project.isOpen()); URL rmapURL = getClass().getResource("/testData/rmaps/local_wsexp.rmap"); //$NON-NLS-1$ ComponentQueryBuilder queryBld = new ComponentQueryBuilder(); queryBld.setRootRequest(new ComponentRequest("buckminster.test.build_a", null, null)); //$NON-NLS-1$ queryBld.setResourceMapURL(rmapURL.toString()); AdvisorNodeBuilder nodeBld = new AdvisorNodeBuilder(); nodeBld.setNamePattern(Pattern.compile(".*")); nodeBld.setUseWorkspace(false); queryBld.addAdvisorNode(nodeBld); ComponentQuery query = queryBld.createComponentQuery(); ResolutionContext ctx = new ResolutionContext(query); MainResolver resolver = new MainResolver(ctx); assertTrue("Resolution failed", resolver.resolve(new NullProgressMonitor()).isFullyResolved(query, ctx)); rmapURL = getClass().getResource("/testData/rmaps/local_wsexp2.rmap"); //$NON-NLS-1$ queryBld.setResourceMapURL(rmapURL.toString()); query = queryBld.createComponentQuery(); ctx = new ResolutionContext(query); resolver = new MainResolver(ctx); assertTrue("Resolution failed", resolver.resolve(new NullProgressMonitor()).isFullyResolved(query, ctx)); } }