/* * Copyright 2005-2010 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.wamblee.system.adapters; import org.wamblee.system.core.DefaultProvidedInterface; import org.wamblee.system.core.ProvidedInterface; import org.wamblee.system.core.RequiredInterface; import org.wamblee.system.core.RequiredInterfaceComparator; import org.wamblee.test.AssertionUtils; import java.util.Collections; import java.util.List; /** * * @author $author$ * @version $Revision$ */ public class ClassConfigurationTest extends AdapterTestCase { public void testConstructorConfig() { ClassConfiguration classConfig = new ClassConfiguration(X1.class); ConstructorConfiguration config = classConfig.getConstructorConfig() .greedy(); ProvidedInterface provided = new DefaultProvidedInterface("arg", String.class); List required = classConfig.getRequiredInterfaces(); assertEquals(1, required.size()); assertFalse(required.get(0).isOptional()); required.get(0).setProvider(provided); scope.publishInterface(provided, "hello"); classConfig.create(scope); AssertionUtils.assertEquals(new String[] { "x1(hello)" }, AdapterTestCase.EVENT_TRACKER.getEvents(Thread.currentThread()) .toArray()); } public void testConstructorConfigWithSetters() { ClassConfiguration classConfig = new ClassConfiguration(X7.class); classConfig.getConstructorConfig().select(Boolean.class); classConfig.getObjectConfig().getSetterConfig().initAllSetters() .values("setPort").setValue(0, 10); ProvidedInterface providedBoolean = new DefaultProvidedInterface( "boolean", Boolean.class); ProvidedInterface providedHost = new DefaultProvidedInterface("host", String.class); List required = classConfig.getRequiredInterfaces(); Collections.sort(required, new RequiredInterfaceComparator()); assertEquals(2, required.size()); assertEquals("arg0", required.get(0).getName()); required.get(0).setProvider(providedBoolean); required.get(1).setProvider(providedHost); scope.publishInterface(providedBoolean, true); scope.publishInterface(providedHost, "host.name.org"); Object obj = classConfig.create(scope); assertTrue(obj instanceof X7); X7 x7 = (X7) obj; assertNotNull(x7.getBoolean()); assertTrue(x7.getBoolean()); assertNull(x7.getHost()); assertNull(x7.getPort()); classConfig.inject(scope, obj); assertEquals("host.name.org", x7.getHost()); assertEquals(10, x7.getPort().intValue()); } }