package org.codehaus.plexus.component.repository; /* * Copyright 2001-2006 Codehaus Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import junit.framework.TestCase; import org.codehaus.plexus.component.repository.io.PlexusTools; import org.codehaus.plexus.classworlds.ClassWorld; import org.codehaus.plexus.classworlds.realm.ClassRealm; import java.util.List; /** * * * @author Jason van Zyl * * @version $Id$ */ public class ComponentSetTest extends TestCase { public void testSimpleComponentResolution() throws Exception { String xml = "<component-set>" + " <components>" + " <component>" + " <implementation>java.lang.String</implementation>" + " <role>c1</role>" + " <role-hint>role-hint</role-hint>" + " <component-profile>component-profile</component-profile>" + " <requirements>" + " <requirement>" + " <role>c2</role>" + " </requirement>" + " <requirement>" + " <role>c3</role>" + " </requirement>" + " </requirements>" + " </component>" + " </components>" + " <dependencies>" + " <dependency>" + " <group-id>plexus</group-id>" + " <artifact-id>wedgy</artifact-id>" + " <version>1.0</version>" + " </dependency>" + " </dependencies>" + "</component-set>"; ClassWorld classWorld = new ClassWorld( "test", Thread.currentThread().getContextClassLoader() ); ClassRealm realm = classWorld.getRealm( "test" ); ComponentSetDescriptor cs = PlexusTools.buildComponentSet( PlexusTools.buildConfiguration( xml ), realm ); ComponentDescriptor<?> c1 = cs.getComponents().get( 0 ); assertEquals( "c1", c1.getRole() ); assertEquals( "role-hint", c1.getRoleHint() ); assertEquals( "component-profile", c1.getComponentProfile() ); List<ComponentRequirement> requirements = c1.getRequirements(); assertEquals( 2, requirements.size() ); boolean containsC2 = false; boolean containsC3 = false; for ( ComponentRequirement requirement : requirements ) { if ( requirement.getRole().equals( "c2" ) ) { containsC2 = true; } else if ( requirement.getRole().equals( "c3" ) ) { containsC3 = true; } } assertTrue( containsC2 ); assertTrue( containsC3 ); ComponentDependency d1 = cs.getDependencies().get( 0 ); assertEquals( "plexus", d1.getGroupId() ); assertEquals( "wedgy", d1.getArtifactId() ); assertEquals( "1.0", d1.getVersion() ); } }