/* * Copyright (C) 2011 Harald Wellmann * * 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.exam.regression.multi.cm; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.ops4j.pax.exam.CoreOptions.junitBundles; import static org.ops4j.pax.exam.CoreOptions.mavenBundle; import static org.ops4j.pax.exam.CoreOptions.options; import static org.ops4j.pax.exam.regression.multi.RegressionConfiguration.regressionDefaults; import java.io.IOException; import java.util.Dictionary; import javax.inject.Inject; import org.junit.Test; import org.junit.runner.RunWith; import org.ops4j.pax.exam.Configuration; import org.ops4j.pax.exam.Option; import org.ops4j.pax.exam.cm.ConfigurationAdminOptions; import org.ops4j.pax.exam.junit.PaxExam; import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy; import org.osgi.framework.InvalidSyntaxException; import org.osgi.service.cm.ConfigurationAdmin; @RunWith(PaxExam.class) @ExamReactorStrategy public class ConfigurationOptionTest { private static final String TEST_KEY = "test.key"; private static final String TEST_PROPERTY = "test.property"; private static final String TEST_PID = "org.ops4j.pax.exam.regression.multi.cm.ConfigurationOptionTest"; private static final String TEST_FACTORY_PID = TEST_PID + ".factory"; @Inject private ConfigurationAdmin configAdmin; @Configuration() public Option[] config() { return options( regressionDefaults(), mavenBundle("org.apache.felix", "org.apache.felix.configadmin").versionAsInProject(), junitBundles(), // Prepare a new configuration... ConfigurationAdminOptions.newConfiguration(TEST_PID) .put(TEST_KEY, TEST_PROPERTY) .asOption(), // Prepare a new factory-configuration... ConfigurationAdminOptions.factoryConfiguration(TEST_FACTORY_PID) .put(TEST_KEY, TEST_PROPERTY) .asOption() ); } @Test public void testNewConfiguration() throws IOException { org.osgi.service.cm.Configuration config = configAdmin.getConfiguration(TEST_PID); assertNotNull(config); Dictionary<String, ?> dictionary = config.getProperties(); assertNotNull(dictionary); assertEquals(dictionary.get(TEST_KEY), TEST_PROPERTY); } @Test public void testNewFactoryConfiguration() throws IOException, InvalidSyntaxException { org.osgi.service.cm.Configuration[] configurations = configAdmin .listConfigurations("(service.factoryPid=" + TEST_FACTORY_PID + ")"); assertNotNull(configurations); assertTrue("one configuration expected, but " + configurations.length + " found", configurations.length == 1); org.osgi.service.cm.Configuration config = configurations[0]; Dictionary<String, ?> dictionary = config.getProperties(); assertNotNull(dictionary); assertEquals(dictionary.get(TEST_KEY), TEST_PROPERTY); } }