DATACMNS-322 - CdiRepositoryBean implements PassivationCapable.
To allow the CdiRepositoryBeans being used inside scoped CDI beans we need to implement PassivationCapable so that the CDI contain can serialize the bean instance and detect the contextual instance on deserialization. As the repositories are application scoped we simply consider a bean of a given type plus its qualifier annotations unique.
This commit is contained in:
@@ -44,7 +44,11 @@ import org.springframework.data.repository.Repository;
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class CdiRepositoryBeanUnitTests {
|
||||
|
||||
static final String PASSIVATION_ID = "javax.enterprise.inject.Default:org.springframework.data.repository.cdi.CdiRepositoryBeanUnitTests$SampleRepository";
|
||||
|
||||
static final Set<Annotation> NO_ANNOTATIONS = Collections.emptySet();
|
||||
static final Set<Annotation> SINGLE_ANNOTATION = Collections
|
||||
.singleton((Annotation) new CdiRepositoryExtensionSupport.DefaultAnnotationLiteral());
|
||||
|
||||
@Mock
|
||||
BeanManager beanManager;
|
||||
@@ -110,6 +114,17 @@ public class CdiRepositoryBeanUnitTests {
|
||||
assertThat(bean.getScope(), equalTo((Class) ApplicationScoped.class));
|
||||
}
|
||||
|
||||
/**
|
||||
* @see DATACMNS-322
|
||||
*/
|
||||
@Test
|
||||
public void createsPassivationId() {
|
||||
|
||||
CdiRepositoryBean<SampleRepository> bean = new DummyCdiRepositoryBean<SampleRepository>(SINGLE_ANNOTATION,
|
||||
SampleRepository.class, beanManager);
|
||||
assertThat(bean.getId(), is(PASSIVATION_ID));
|
||||
}
|
||||
|
||||
static class DummyCdiRepositoryBean<T> extends CdiRepositoryBean<T> {
|
||||
|
||||
public DummyCdiRepositoryBean(Set<Annotation> qualifiers, Class<T> repositoryType, BeanManager beanManager) {
|
||||
|
||||
Reference in New Issue
Block a user