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:
Oliver Gierke
2013-04-26 18:46:15 +02:00
parent 0cf875b358
commit 02cacf59bc
3 changed files with 55 additions and 3 deletions

View File

@@ -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) {