Skip to content

Instantly share code, notes, and snippets.

@mathieuancelin
Created September 13, 2011 10:40
Show Gist options
  • Save mathieuancelin/1213575 to your computer and use it in GitHub Desktop.
Save mathieuancelin/1213575 to your computer and use it in GitHub Desktop.
@Inject Bundle bundle;
@Inject BundleContext context;
@Inject @BundleHeaders Map<String, String> headers;
@Inject @BundleHeader("Bundle-SymbolicName") String symbolicName;
@Inject @BundleDataFile("text.txt") File text;
@Publish
@ApplicationScoped
@Lang(EN)
public class MyServiceImpl implements MyService {
    ...
}
@Inject Instance<Object> instance;
@Inject ServiceRegistry registry;
MyService service = instance.select(MyService.class).get();
Registration<MyService> reg = registry.register(service);
...
reg.unregister();
@Inject @OSGiService MyService service;
service.doSomething(); // échoue si pas de service disponible
@Inject Service<MyService> service;
for (MyService actualService : service.first()) {
    actualService.doSomething(); // appelé sur 0-1 service
}
for (MyService actualService : service) {
    actualService.doSomething(); // appelé sur 0-n service(s)
}
service.get().doSomething(); // peut échouer, non dynamique
service.size();
service.isUnsatisfied();
service.isAmbiguous();
@Publish
@Lang(EN) @Country(US)
public class MyServiceImpl implements MyService {
    ...
}
@Inject @OSGiService @Filter("(&(lang=*)(country=US))") MyService service;
@Inject @Filter("(&(lang=EN)(country=*))") Service<MyService> service;
@Inject @OSGiService @Filter @Lang(EN) @Country(US) MyService service;
@Inject @Filter @Lang(EN) @Country(US) Service<MyService> service;
@Inject @OSGiService @Required MyService service;
@Inject @Required Service<MyService> service;
public void start(@Observes Valid valid) {
    System.out.println("service is available");
    service.doSomething();
}
public void stop(@Observes Invalid valid) {
    System.out.println("service is unavailable");
}
public void start(@Observes BundleContainerInitialized event) {}
public void stop(@Observes BundleContainerShutdown event) {}
public void bindBundle(@Observes BundleInstalled evt) {}
public void unbindBundle(@Observes BundleUninstalled evt) {}
public void upBundle(@Observes BundleUpdated evt) {}
public void bindBundle(@Observes @BundleName("com.foo.bar") BundleInstalled evt) {}
public void bindBundle(@Observes @BundleVersion("1.2.3") BundleInstalled evt) {}
public void bindBundle(@Observes @BundleName("com.foo.bar") @BundleVersion("1.2.3")  BundleInstalled evt) {}
public void bindService(@Observes ServiceArrival evt) {}
public void unbindService(@Observes ServiceDeparture evt) {}
public void upService(@Observes ServiceChanged evt) {}
public void bindService(@Observes @Specification(MyService.class) ServiceArrival evt) {}
public void bindService(@Observes @Filter("(lang=US)") ServiceArrival evt) {}
public void bindService(@Observes @Specification(MyService.class) @Filter("(lang=US)") ServiceArrival evt) {}
@Inject Event<InterBundleEvent> event;
event.fire(new InterBundleEvent("Hello bundles"));
public void listenAll(@Observes InterBundleEvent event) { }
public void listenAllFromOthers(@Observes @Sent InterBundleEvent event) { }
public void listenStringsFromOthers(@Observes @Sent @Specification(String.class) InterBundleEvent event) { }
EmbeddedCDIContainer cdi = 
           new EmbeddedContainer(bundleContext).initialize();
MyService service = 
           cdi.instance().select(MyService.class).get();
service.doSomething();
cdi.stop();
WeldContainer weld = 
           new WeldContainer(bundleContext).initialize();
MyService service =
           weld.instance().select(MyService.class).get();
service.doSomething();
weld.stop();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment