/* * Copyright 2008 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 java.util.Collections; import java.util.List; 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; 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); provided.publish("hello", _scope); 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.getSetterConfiguration().values("port").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); providedBoolean.publish(true, _scope); providedHost.publish("host.name.org", _scope); 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()); } }