Skip to content

Commit

Permalink
Merge pull request #786 from timothyjward/cfg/location
Browse files Browse the repository at this point in the history
Annotations with location NOT_SET should use null locations
  • Loading branch information
timothyjward authored Feb 7, 2024
2 parents 0baf6b2 + 68e3d75 commit fa6f674
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ private ConfigurationHolder handleWithConfiguration(ExtensionContext context, Wi

Configuration configuration;
if (Property.NOT_SET.equals(configAnnotation.location())) {
configuration = configurationAdmin.getConfiguration(configAnnotation.pid());
configuration = configurationAdmin.getConfiguration(configAnnotation.pid(), null);
} else {
configuration = configurationAdmin.getConfiguration(configAnnotation.pid(),
configAnnotation.location());
Expand Down Expand Up @@ -197,7 +197,7 @@ private ConfigurationHolder handleWithFactoryConfiguration(ExtensionContext cont
Configuration configuration;
if (Property.NOT_SET.equals(configAnnotation.location())) {
configuration = configurationAdmin.getFactoryConfiguration(configAnnotation.factoryPid(),
configAnnotation.name());
configAnnotation.name(), null);
} else {
configuration = configurationAdmin.getFactoryConfiguration(configAnnotation.factoryPid(),
configAnnotation.name(), configAnnotation.location());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import static org.assertj.core.api.Assertions.assertThat;

import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.osgi.service.cm.Configuration;
import org.osgi.service.cm.ConfigurationAdmin;
Expand Down Expand Up @@ -151,4 +152,101 @@ public void testMethodConfigurationFactoryCreate() throws Exception {

}

@Nested
class LocationTests {

private static final String TEST = "test";

@Test
@WithConfiguration(pid = PARAM_PID, properties = {
@Property(key = "bar", value = "foo")
})
public void testMethodLevelNoLocation(@InjectService
ConfigurationAdmin ca) throws Exception {

Configuration cs = ConfigUtil.getConfigsByServicePid(ca, PARAM_PID);
assertThat(cs).isNotNull();
assertThat(cs.getBundleLocation()).isNull();
}

@Test
public void testInjectedNoLocation(
@InjectConfiguration(withConfig = @WithConfiguration(pid = PARAM_PID, properties = {
@Property(key = "bar", value = "foo")
}))
Configuration cs) throws Exception {

assertThat(cs).isNotNull();
assertThat(cs.getBundleLocation()).isNull();
}

@Test
@WithConfiguration(pid = PARAM_PID, location = "?", properties = {
@Property(key = "bar", value = "foo")
})
public void testMethodLevelWithLocation(@InjectService
ConfigurationAdmin ca) throws Exception {

Configuration cs = ConfigUtil.getConfigsByServicePid(ca, PARAM_PID);
assertThat(cs).isNotNull();
assertThat(cs.getBundleLocation()).isEqualTo("?");
}

@Test
public void testInjectedWithLocation(
@InjectConfiguration(withConfig = @WithConfiguration(pid = PARAM_PID, location = "?", properties = {
@Property(key = "bar", value = "foo")
}))
Configuration cs) throws Exception {

assertThat(cs).isNotNull();
assertThat(cs.getBundleLocation()).isEqualTo("?");
}

@Test
@WithFactoryConfiguration(factoryPid = PARAM_PID, name = TEST, properties = {
@Property(key = "bar", value = "foo")
})
public void testMethodLevelFactoryNoLocation(@InjectService
ConfigurationAdmin ca) throws Exception {

Configuration cs = ConfigUtil.getConfigsByServicePid(ca, PARAM_PID + "~" + TEST);
assertThat(cs).isNotNull();
assertThat(cs.getBundleLocation()).isNull();
}

@Test
public void testInjectedFactoryNoLocation(
@InjectConfiguration(withFactoryConfig = @WithFactoryConfiguration(factoryPid = PARAM_PID, name = TEST, properties = {
@Property(key = "bar", value = "foo")
}))
Configuration cs) throws Exception {

assertThat(cs).isNotNull();
assertThat(cs.getBundleLocation()).isNull();
}

@Test
@WithFactoryConfiguration(factoryPid = PARAM_PID, name=TEST, location = "?", properties = {
@Property(key = "bar", value = "foo")
})
public void testMethodLevelFactoryWithLocation(@InjectService
ConfigurationAdmin ca) throws Exception {

Configuration cs = ConfigUtil.getConfigsByServicePid(ca, PARAM_PID + "~" + TEST);
assertThat(cs).isNotNull();
assertThat(cs.getBundleLocation()).isEqualTo("?");
}

@Test
public void testInjectedFactoryWithLocation(
@InjectConfiguration(withFactoryConfig = @WithFactoryConfiguration(factoryPid = PARAM_PID, name = TEST, location = "?", properties = {
@Property(key = "bar", value = "foo")
}))
Configuration cs) throws Exception {

assertThat(cs).isNotNull();
assertThat(cs.getBundleLocation()).isEqualTo("?");
}
}
}

0 comments on commit fa6f674

Please sign in to comment.