/** * Copyright OPS4J * * 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.ops4j.pax.wicket.spi.blueprint; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import org.apache.aries.blueprint.ParserContext; import org.apache.aries.blueprint.mutable.MutableBeanMetadata; import org.apache.aries.blueprint.mutable.MutableCollectionMetadata; import org.apache.aries.blueprint.mutable.MutableMapMetadata; import org.apache.aries.blueprint.mutable.MutableRefMetadata; import org.apache.aries.blueprint.mutable.MutableValueMetadata; import org.ops4j.pax.wicket.spi.blueprint.injection.blueprint.AbstractBlueprintBeanDefinitionParser; import org.osgi.service.blueprint.reflect.BeanMetadata; import org.w3c.dom.Element; public class BlueprintParserTestUtil { private MutableBeanMetadata mutableBeanMetadataMock; private MutableRefMetadata mutableRefMetadataMock; private MutableValueMetadata mutableValueMetadataMock; private MutableMapMetadata mutableMapMetadataMock; private MutableCollectionMetadata mutableCollectionMetadataMock; private final AbstractBlueprintBeanDefinitionParser parserToTest; public BlueprintParserTestUtil(String element, AbstractBlueprintBeanDefinitionParser parserToTest) throws Exception { this.parserToTest = parserToTest; Element blueprintElement = BlueprintTestUtil.loadFirstElementThatMatches(element); ParserContext parserContextMock = mock(ParserContext.class); mutableBeanMetadataMock = mock(MutableBeanMetadata.class); mutableRefMetadataMock = mock(MutableRefMetadata.class); when(parserContextMock.createMetadata(MutableBeanMetadata.class)).thenReturn(mutableBeanMetadataMock); mutableValueMetadataMock = mock(MutableValueMetadata.class); when(parserContextMock.createMetadata(MutableRefMetadata.class)).thenReturn(mutableRefMetadataMock); mutableMapMetadataMock = mock(MutableMapMetadata.class); when(parserContextMock.createMetadata(MutableValueMetadata.class)).thenReturn(mutableValueMetadataMock); mutableCollectionMetadataMock = mock(MutableCollectionMetadata.class); when(parserContextMock.createMetadata(MutableCollectionMetadata.class)).thenReturn( mutableCollectionMetadataMock); when(parserContextMock.createMetadata(MutableMapMetadata.class)).thenReturn(mutableMapMetadataMock); parserToTest.parse(blueprintElement, parserContextMock); verifyBaseFunctionality(); } private void verifyBaseFunctionality() { verify(mutableBeanMetadataMock).setRuntimeClass(parserToTest.getRuntimeClass()); verify(mutableBeanMetadataMock).setActivation(BeanMetadata.ACTIVATION_EAGER); verify(mutableBeanMetadataMock).setScope(BeanMetadata.SCOPE_SINGLETON); verify(mutableBeanMetadataMock).setInitMethod("start"); verify(mutableBeanMetadataMock).setDestroyMethod("stop"); verify(mutableRefMetadataMock).setComponentId("blueprintBundleContext"); verify(mutableBeanMetadataMock).addProperty("bundleContext", mutableRefMetadataMock); } public void verifyId(String id) { verify(mutableBeanMetadataMock).setId(id); } public void verifyPropertyValue(String equalNameAndObject) { verify(mutableValueMetadataMock).setStringValue(equalNameAndObject); verify(mutableBeanMetadataMock).addProperty(equalNameAndObject, mutableValueMetadataMock); } public void verifyPropertyReference(String equalNameAndObject) { verify(mutableRefMetadataMock).setComponentId(equalNameAndObject); verify(mutableBeanMetadataMock).addProperty(equalNameAndObject, mutableRefMetadataMock); } public void verifyPropertyValue(String name, String value) { verify(mutableValueMetadataMock).setStringValue(name); verify(mutableBeanMetadataMock).addProperty(name, mutableValueMetadataMock); } public void verifyMapValue(String field, String name, String value, String name2, String value2) { verify(mutableValueMetadataMock).setStringValue(name); verify(mutableValueMetadataMock).setStringValue(value); verify(mutableValueMetadataMock).setStringValue(name2); verify(mutableValueMetadataMock).setStringValue(value2); verify(mutableMapMetadataMock, times(2)).addEntry(mutableValueMetadataMock, mutableValueMetadataMock); verify(mutableBeanMetadataMock).addProperty(field, mutableMapMetadataMock); } public void verifyListValue(String field, String... values) { for (String value : values) { verify(mutableValueMetadataMock).setStringValue(value); } verify(mutableMapMetadataMock, times(values.length)).addEntry(mutableValueMetadataMock, mutableValueMetadataMock); verify(mutableBeanMetadataMock).addProperty(field, mutableCollectionMetadataMock); } }