/*
* Copyright (C) 2007 the original author or authors.
*
* 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.
*/
package org.codehaus.plexus.metadata;
import java.io.StringWriter;
import java.util.List;
import org.codehaus.plexus.PlexusTestCase;
import org.codehaus.plexus.classworlds.ClassWorld;
import org.codehaus.plexus.classworlds.realm.ClassRealm;
import org.codehaus.plexus.component.repository.ComponentSetDescriptor;
import org.codehaus.plexus.component.repository.ComponentDescriptor;
import org.codehaus.plexus.component.repository.io.PlexusTools;
import org.codehaus.plexus.configuration.PlexusConfiguration;
/**
* Test for the {@link DefaultComponentDescriptorWriter} class.
*
* @version $Rev$ $Date$
*/
public class DefaultComponentDescriptorWriterTest
extends PlexusTestCase
{
private DefaultComponentDescriptorWriter descriptorWriter;
// @Override
protected void setUp() throws Exception {
super.setUp();
descriptorWriter = (DefaultComponentDescriptorWriter) lookup(ComponentDescriptorWriter.class);
assertNotNull(descriptorWriter);
}
// @Override
protected void tearDown() throws Exception {
descriptorWriter = null;
super.tearDown();
}
public void testBasic() throws Exception {
ComponentSetDescriptor set = new ComponentSetDescriptor();
ComponentDescriptor component = new ComponentDescriptor();
component.setImplementation("java.lang.String");
component.setRole("foo");
component.setRoleHint("bar");
component.setComponentFactory("baz");
set.addComponentDescriptor(component);
StringWriter writer = new StringWriter();
descriptorWriter.writeDescriptorSet(writer, set, false);
writer.flush();
writer.close();
String xml = writer.toString();
assertTrue(xml.length() != 0);
PlexusConfiguration config = PlexusTools.buildConfiguration(xml);
assertNotNull(config);
ClassWorld classWorld = new ClassWorld( "test", Thread.currentThread().getContextClassLoader() );
ClassRealm realm = classWorld.getRealm( "test" );
org.codehaus.plexus.component.repository.ComponentSetDescriptor set2 = PlexusTools.buildComponentSet(config, realm);
assertNotNull(set2);
List components = set2.getComponents();
assertNotNull(components);
assertEquals(1, components.size());
org.codehaus.plexus.component.repository.ComponentDescriptor component2 =
(org.codehaus.plexus.component.repository.ComponentDescriptor) components.get(0);
assertNotNull(component2);
assertEquals(component.getRole(), component2.getRole());
assertEquals(component.getRoleHint(), component2.getRoleHint());
assertEquals(component.getComponentFactory(), component2.getComponentFactory());
//
// TODO: Verify requirements and configuration too... but I'm too lazy for that right now
//
}
}