/****************************************************************************** * Copyright (c) 2006, 2010 VMware Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Apache License v2.0 which accompanies this distribution. * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html and the Apache License v2.0 * is available at http://www.opensource.org/licenses/apache2.0.php. * You may elect to redistribute this code under either of these licenses. * * Contributors: * VMware Inc. *****************************************************************************/ package org.eclipse.gemini.blueprint.blueprint.metadata; import java.io.Serializable; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Map; import org.osgi.service.blueprint.reflect.ComponentMetadata; import org.osgi.service.blueprint.reflect.MapEntry; import org.osgi.service.blueprint.reflect.RefMetadata; import org.osgi.service.blueprint.reflect.RegistrationListener; import org.osgi.service.blueprint.reflect.ServiceMetadata; import org.osgi.service.blueprint.reflect.Target; /** * @author Costin Leau */ public class ExporterMetadataTest extends BaseMetadataTest { @Override protected String getConfig() { return "/org/eclipse/gemini/blueprint/blueprint/config/exporter-elements.xml"; } private ServiceMetadata getReferenceMetadata(String name) { ComponentMetadata metadata = blueprintContainer.getComponentMetadata(name); assertTrue(metadata instanceof ServiceMetadata); ServiceMetadata referenceMetadata = (ServiceMetadata) metadata; assertEquals("the registered name doesn't match the component name", name, referenceMetadata.getId()); return referenceMetadata; } public void testSimpleBean() throws Exception { ServiceMetadata metadata = getReferenceMetadata("simple"); assertEquals(ServiceMetadata.AUTO_EXPORT_DISABLED, metadata.getAutoExport()); List<String> intfs = metadata.getInterfaces(); assertEquals(1, intfs.size()); assertEquals(Map.class.getName(), intfs.iterator().next()); assertEquals(123, metadata.getRanking()); assertTrue(metadata.getRegistrationListeners().isEmpty()); assertTrue(metadata.getServiceComponent() instanceof RefMetadata); List<MapEntry> props = metadata.getServiceProperties(); System.out.println(props); // assertEquals("lip", props.get("fat")); } public void testNestedBean() throws Exception { ServiceMetadata metadata = getReferenceMetadata("nested"); //assertEquals(ServiceMetadata.AUTO_EXPORT_ALL_CLASSES, metadata.getAutoExport()); List<String> intfs = metadata.getInterfaces(); assertEquals(2, intfs.size()); Iterator<String> iterator = intfs.iterator(); assertEquals(Map.class.getName(), iterator.next()); assertEquals(Serializable.class.getName(), iterator.next()); assertEquals(0, metadata.getRanking()); Collection<RegistrationListener> listeners = metadata.getRegistrationListeners(); Iterator<RegistrationListener> iter = listeners.iterator(); RegistrationListener listener = iter.next(); assertEquals("up", listener.getRegistrationMethod()); assertEquals("down", listener.getUnregistrationMethod()); assertEquals("listener", ((RefMetadata) listener.getListenerComponent()).getComponentId()); listener = iter.next(); assertEquals("up", listener.getRegistrationMethod()); assertEquals("down", listener.getUnregistrationMethod()); assertTrue(listener.getListenerComponent() instanceof Target); assertTrue(metadata.getServiceComponent() instanceof Target); } }