Skip to content

Instantly share code, notes, and snippets.

View Kotlin-Native's full-sized avatar

Pierre Liebsch Kotlin-Native

View GitHub Profile
public class SpringCdiExtension implements Extension {
}
@Kotlin-Native
Kotlin-Native / SpringCdiExtension.java
Created July 9, 2015 13:35
SpringCdiExtension connectCdiAndSpring
public void connectCdiAndSpring(@Observes AfterBeanDiscovery event, BeanManager manager) throws ClassNotFoundException {
ConfigurableApplicationContext springContext = new ClassPathXmlApplicationContext("classpath:context.xml");
for (String beanName: applicationContext.getBeanDefinitionNames()) {
BeanDefinition beanDefinition = applicationContext.getBeanFactory().getBeanDefinition(beanName);
event.addBean(createBean(beanDefinition));
}
}
public class SpringBean implements Bean<Object> {
private String beanName;
private Class<?> beanClass;
private Set<Type> beanTypes;
private Set<Annotation> qualifiers;
private Set<Class<? extends Annotation>> stereotypes;
private ConfigurableBeanFactory beanFactory;
public SpringBean(String beanName,
public class CdiScope implements Scope {
private BeanManager beanManager;
private Map<string,><object>>beans;
public CdiScope(BeanManager beanManager,
Map<string,><object>>beans) {
this.beanManager = beanManager;
this.beans = beans;
}
@Kotlin-Native
Kotlin-Native / SpringCdiExtension.java
Last active August 29, 2015 14:24
SpringCdiExtension
public class SpringCdiExtension implements Extension {
private List<Bean<Object>> cdiBeans = new ArrayList<Bean<Object>>();
public void addBean(@Observes ProcessBean<Object> bean) {
cdiBeans.add(bean.getBean());
}
public void connectCdiAndSpring(@Observes AfterBeanDiscovery event,
BeanManager manager)
@Kotlin-Native
Kotlin-Native / DependencyRegisteringPostProcessor.java
Last active August 29, 2015 14:24
DependencyRegisteringPostProcessor
public class DependencyRegisteringPostProcessor
implements BeanFactoryPostProcessor {
private BeanManager beanManager;
private List<Bean<Object>> cdiBeans;
public DependencyRegisteringPostProcessor(BeanManager beanManager, List<bean><object>>cdiBeans) {
this.beanManager = beanManager;
this.cdiBeans = cdiBeans;
}
private BeanDefinition createBeanDefinition(Bean bean) {
GenericBeanDefinition beanDefinition = new GenericBeanDefinition();
beanDefinition.setBeanClass(bean.getBeanClass());
beanDefinition.setScope(CdiScope.class.getName());
beanDefinition.setLazyInit(true);
return beanDefinition;
}
public void connectCdiAndSpring(@Observes AfterBeanDiscovery event, BeanManager manager)
throws ClassNotFoundException {
ConfigurableApplicationContext springContext
= new ClassPathXmlApplicationContext(new String[] { "classpath:application-context.xml"}, false);
springContext.addBeanFactoryPostProcessor(new DependencyRegisteringPostProcessor(manager, cdiBeans));
springContext.refresh();
for (String beanName: springContext.getBeanDefinitionNames()) {
public void marry(String newLastName) {
lastName = notBlank(newLastName);
married = true;
}
public class Address {
public Address(String street,
String streetNumber,
String zipCode,
String city,
String state,
String country) {
...
}
}