<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.scr.annotations</artifactId>
<version>1.9.14</version>
</dependency>
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Modified;
import org.osgi.service.component.annotations.Deactivate;
import org.osgi.service.metatype.annotations.AttributeDefinition;
import org.osgi.service.metatype.annotations.ObjectClassDefinition;
@Component(service = LocalizationService.class)
public class LocalizationService {
@ObjectClassDefinition(name = "Localization Service Configuration")
public @interface Configuration {
@AttributeDefinition(name = "Default Locale")
String defaultLocale() default "en_US";
}
private String defaultLocale;
@Activate
protected void activate(Configuration configuration) {
this.defaultLocale = configuration.defaultLocale();
}
@Modified
protected void modified(Configuration configuration) {
this.defaultLocale = configuration.defaultLocale();
}
@Deactivate
protected void deactivate() {
}
public String getMessage(String key) {
return ResourceBundle.getBundle("messages", new Locale(this.defaultLocale)).getString(key);
}
}
import org.osgi.service.component.annotations.*;
import org.osgi.service.component.annotations.Component;
@Component
public class MyComponent {
@Reference
private LocalizationService localizationService;
public void doSomething() {
String message = localizationService.getMessage("hello");
System.out.println(message);
}
}